From bf17d8f433395556772e3a490d9e340bfc642292 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 20:34:49 -0800 Subject: [PATCH 01/26] backend upload --- lab-dalton/trendly-back-end/.eslintignore | 5 + lab-dalton/trendly-back-end/.eslintrc | 31 + lab-dalton/trendly-back-end/.gitignore | 119 + lab-dalton/trendly-back-end/.travis.yml | 18 + lab-dalton/trendly-back-end/LICENSE | 21 + lab-dalton/trendly-back-end/README.md | 244 + .../trendly-back-end/__test__/account.test.js | 106 + .../__test__/lib/accountmock-factory.js | 34 + .../__test__/lib/profilemock-factory.js | 35 + .../trendly-back-end/__test__/profile.test.js | 122 + .../__test__/scheduler.test.js | 31 + .../__test__/sms-profile.test.js | 188 + .../assets/Trendly-flowchart.png | Bin 0 -> 344612 bytes lab-dalton/trendly-back-end/index.js | 5 + lab-dalton/trendly-back-end/lib/logger.js | 23 + .../lib/middleware/basic-auth-middleware.js | 38 + .../lib/middleware/bearer-auth-middleware.js | 46 + .../lib/middleware/error-middleware.js | 48 + .../lib/middleware/logger-middleware.js | 8 + lab-dalton/trendly-back-end/lib/scheduler.js | 96 + lab-dalton/trendly-back-end/lib/server.js | 89 + lab-dalton/trendly-back-end/lib/sms.js | 16 + lab-dalton/trendly-back-end/model/account.js | 63 + lab-dalton/trendly-back-end/model/profile.js | 26 + .../trendly-back-end/model/sms-profile.js | 26 + lab-dalton/trendly-back-end/package-lock.json | 6211 +++++++++++++++++ lab-dalton/trendly-back-end/package.json | 46 + .../trendly-back-end/route/account-router.js | 36 + .../trendly-back-end/route/profile-router.js | 41 + .../route/sms-profile-router.js | 203 + 30 files changed, 7975 insertions(+) create mode 100644 lab-dalton/trendly-back-end/.eslintignore create mode 100644 lab-dalton/trendly-back-end/.eslintrc create mode 100644 lab-dalton/trendly-back-end/.gitignore create mode 100644 lab-dalton/trendly-back-end/.travis.yml create mode 100644 lab-dalton/trendly-back-end/LICENSE create mode 100644 lab-dalton/trendly-back-end/README.md create mode 100644 lab-dalton/trendly-back-end/__test__/account.test.js create mode 100644 lab-dalton/trendly-back-end/__test__/lib/accountmock-factory.js create mode 100644 lab-dalton/trendly-back-end/__test__/lib/profilemock-factory.js create mode 100644 lab-dalton/trendly-back-end/__test__/profile.test.js create mode 100644 lab-dalton/trendly-back-end/__test__/scheduler.test.js create mode 100644 lab-dalton/trendly-back-end/__test__/sms-profile.test.js create mode 100644 lab-dalton/trendly-back-end/assets/Trendly-flowchart.png create mode 100644 lab-dalton/trendly-back-end/index.js create mode 100644 lab-dalton/trendly-back-end/lib/logger.js create mode 100644 lab-dalton/trendly-back-end/lib/middleware/basic-auth-middleware.js create mode 100644 lab-dalton/trendly-back-end/lib/middleware/bearer-auth-middleware.js create mode 100644 lab-dalton/trendly-back-end/lib/middleware/error-middleware.js create mode 100644 lab-dalton/trendly-back-end/lib/middleware/logger-middleware.js create mode 100644 lab-dalton/trendly-back-end/lib/scheduler.js create mode 100644 lab-dalton/trendly-back-end/lib/server.js create mode 100644 lab-dalton/trendly-back-end/lib/sms.js create mode 100644 lab-dalton/trendly-back-end/model/account.js create mode 100644 lab-dalton/trendly-back-end/model/profile.js create mode 100644 lab-dalton/trendly-back-end/model/sms-profile.js create mode 100644 lab-dalton/trendly-back-end/package-lock.json create mode 100644 lab-dalton/trendly-back-end/package.json create mode 100644 lab-dalton/trendly-back-end/route/account-router.js create mode 100644 lab-dalton/trendly-back-end/route/profile-router.js create mode 100644 lab-dalton/trendly-back-end/route/sms-profile-router.js diff --git a/lab-dalton/trendly-back-end/.eslintignore b/lab-dalton/trendly-back-end/.eslintignore new file mode 100644 index 00000000..82ff623c --- /dev/null +++ b/lab-dalton/trendly-back-end/.eslintignore @@ -0,0 +1,5 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/.eslintrc b/lab-dalton/trendly-back-end/.eslintrc new file mode 100644 index 00000000..eab91cab --- /dev/null +++ b/lab-dalton/trendly-back-end/.eslintrc @@ -0,0 +1,31 @@ +{ + "env": { + "browser": true, + "node": true, + "commonjs": true, + "jest": true, + "es6": true + }, + "globals": { + "err": true, + "req": true, + "res": true, + "next": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 6, + "ecmaFeatures": { + "experimentalObjectRestSpread": true + } + }, + "rules": { + "no-console": "off", + "indent": [ "error", 2, { "SwitchCase": 1 } ], + "quotes": ["error", "single", { "allowTemplateLiterals": true }], + "space-infix-ops": ["error", {"int32Hint": false}], + "comma-dangle": ["error", "always-multiline"], + "semi": [ "error", "always" ] + } +} \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/.gitignore b/lab-dalton/trendly-back-end/.gitignore new file mode 100644 index 00000000..bcbeb2f0 --- /dev/null +++ b/lab-dalton/trendly-back-end/.gitignore @@ -0,0 +1,119 @@ + +# Created by https://www.gitignore.io/api/node,linux,macos,visualstudiocode + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +log.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +# End of https://www.gitignore.io/api/node,linux,macos,visualstudiocode + +# mongoDB +db/ \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/.travis.yml b/lab-dalton/trendly-back-end/.travis.yml new file mode 100644 index 00000000..38ae491d --- /dev/null +++ b/lab-dalton/trendly-back-end/.travis.yml @@ -0,0 +1,18 @@ +language: node_js +node_js: + - '8.4.0' +services: + - mongodb +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.8 + - g++-4.8 +env: + - CXX=g++-4.8 +sudo: required +before_script: npm i +script: + - npm test \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/LICENSE b/lab-dalton/trendly-back-end/LICENSE new file mode 100644 index 00000000..d2621977 --- /dev/null +++ b/lab-dalton/trendly-back-end/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Google-Trendly + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/lab-dalton/trendly-back-end/README.md b/lab-dalton/trendly-back-end/README.md new file mode 100644 index 00000000..0ad2ee34 --- /dev/null +++ b/lab-dalton/trendly-back-end/README.md @@ -0,0 +1,244 @@ + +``` +.___________..______ _______ .__ __. _______ __ ____ ____ +| || _ \ | ____|| \ | | | \ | | \ \ / / +`---| |----`| |_) | | |__ | \| | | .--. || | \ \/ / + | | | / | __| | . ` | | | | || | \_ _/ + | | | |\ \----.| |____ | |\ | | '--' || `----. | | + |__| | _| `._____||_______||__| \__| |_______/ |_______| |__| + +``` + + +## Code Fellows: Seattle 401 JavaScript - 401d19 + +### Authors: + Cameron Moorehead, Catherine Looper, Dalton Carr, Matt LeBlanc + +--- +### Motivation + +Trendly is a RESTful API that connects users via (Short Message Service) SMS to Meetup (`https://www.meetup.com/`). This app allows users to sign up with their Meetup User ID via text message. Once signed up, users will automatically receive a text notification 24 hours before any of their upcoming meetup events. With the Trendly application, users no longer need to worry about missing a Meetup event as text notifications will keep users up to date on all of their Meetup groups. + +Trendly is built with a (Hypertext Transfer Protocol) HTTP server and basic and bearer authentication using Express. This server handles POST and GET requests/responses. This API uses MongoDB and Mongoose to write data to a db directory for persistence. This app is using Travis CI for continuous integration, and Heroku for deployment. + +--- + +### How to use? + +#### To sign up for Twilio Meetup SMS notifications: + +* Send a text message to `+1 (206) 565-1148` with your Meetup User ID in the following format: `123456789` +* If you do not know your Meetup User ID, you can find it by visiting: https://www.meetup.com/account/ + +#### To use the Twilio Meetup SMS interface, you can issue the following commands: + +* Send a text message to `+1 (206) 565-1148` with the command: `'my groups'` to see a list of your Meetup groups. +* Send a text message to `+1 (206) 565-1148` with the command: `'update me'` to be notified of any events that your Meetup groups are having during the next week. +* Send a text message to `+1 (206) 565-1148` with the command: `'stop'` to opt out of text notifications. + +--- +### Developer Tools: + +* Step 1. Fork and Clone the Repository. +* Step 2. `npm install`. +* Step 3. touch a .env file and add the following environment variables: +``` + PORT=3000 + MONGODB_URI=mongodb://localhost/testing + CLOUD_SALT='AddYourOwnSecretKey' + API_KEY=AddYourOwnMeetupAPIKey + TWILIO_ACCOUNT_SID=AddYourOwnTwilioAccountSecretID + TWILIO_AUTH_TOKEN=AddYourOwnTwilioAuthToken + TWILIO_NUMBER=AddYourOwnTwilioNumber +``` +* Step 4. start MongoDB by calling `npm run dbon`. +* Step 5. to test the API, open a second terminal window and run the command `npm run test`. +* Step 6. If you would like to start the server, you can run the command `npm run start`. + +### If you would like to contribute: + +* PR: If you would like to contribute to the Repo, please open a Pull Request and we will review it +* Bug Reporting: If you find a bug - please report it by opening up an issue in this git repository. + +--- +### Build + +![Trendly FlowChart](./assets/Trendly-flowchart.png) + +#### `Staging` : [![Build Status](https://travis-ci.org/Meetup-Trendly/trendly-server.svg?branch=staging)](https://travis-ci.org/Meetup-Trendly/trendly-server) + +#### `Master` : [![Build Status](https://travis-ci.org/Meetup-Trendly/trendly-server.svg?branch=master)](https://travis-ci.org/Meetup-Trendly/trendly-server) + +--- +#### Server Module + +The server module is creating an http server, defining server-on behavior and exporting an interface for starting and stopping the server. The server module exports an object containing start and stop methods. + +The server module requires in express, mongoose, logger, fs-extra, dotenv, logger-middleware, error-middleware, account-router.js, profile-router.js and the sms-profile-router.js file. The server.start and stop methods return a new Promise with resolve and reject parameters. The start method contains an app.listen function that listens for the server start. The server.stop method has an httpServer.close function that turns the server off by setting the isServerOn variable to false. + +##### Scheduler Module + +The `scheduler.js` file requires in node-schedule, the sms-profile model, superagent, the sms.js file, and the winston logger file. Inside of this module. There is a method called `runEventsNextDay()` which sends out an sms notification at noon, if the user has any events coming up within the next 24 hours. The file also contains a method called `runUpdateAllGroups()` which checks the meetup api everyday at 9am for updates on every user's meetup groups, if a user has joined a new meetup group recently it will be added to the notification list. + +##### SMS Module +The `sms.js` file requires in the twilio accountSID and authToken environment variables, as well as twilio. This module contains a method called `sendMessage()` which accepts a specified message and phoneNumber and creates the message we want to send back to the user. + +#### Route Module + +##### `account-router.js` + +`account-router.js` requires in the Router object from express, the jsonParser(body-parser), http-errors, the account.js model, and basic-auth-middleware.js. Inside the module, there is a function declared for `accountRouter.get` with the route `/login`. There is a function declared for `authRouter.post` with the route `/signup`. If a username, email, or password are not provided, then the user will receive a 400 error notifying them that those pieces of information are required. Otherwise, if all pieces of information are provided - then the method `createToken()` is called to send a response with the token. If all information is provided, then the `Account.create()` method is called and will create an account with a username, email and password. + +##### `profile-router.js` + +`profile-router.js` requires in the Router object from express, the jsonParser(body-parser), http-errors, the profile.js model, superagent, and bearer-auth-middleware.js. Inside the module, there is a function declared for `profileRouter.post` with the route `/profiles` and a `profileRouter.get` method with the route `/profiles/:id`. These routes handle posting a profile and retrieving a profile based on its id. + +##### `sms-profile-router.js` + +`sms-profile-router.js` requires in the Router object from express, body-parser, http-errors, superagent, the logger.js file, twilio, the sms model and the sms-profile model. Inside the module, there is a function declared for `smsProfileRouter.post` with the route `/sms-profile`. This method handles the Twilio SMS correspondence between users and the Twilio API. + + +#### Model Module + +##### `account.js` + +`account.js` requires in mongoose, crypto (which generates random strings), bcrypt (for hash passwords), http-errors, and jsonwebtoken. The account model includes the parameters: passwordHash, email, username, tokenSeed, and dateCreated. The account model has the methods: `accountSchema.methods.verifyPassword()` and `accountSchema.methods.createToken()` which are for authentication and token creation. There is also an `Account.create()` method with the parameters: username, email, and password that actually creates the account. + +##### `profile.js` + +`profile.js` requires in mongoose. The profile model includes the parameters: meetupMemberId, name, phoneNumber, account, and meetups. The profileSchema is being exported from the file. This model has a one to one relationship with the account.js model. + + +##### `sms-profile.js` + +`sms-profile.js` requires in mongoose. The sms profile model includes the parameters: meetupMemberId, meetupMemberName, phoneNumber, and meetups. The smsProfileSchema is being exported from the file. + + +#### Test Module + +Contains a `lib/` directory with the files: `setup.js`, `account-mock-factory.js`, and `profile-mock-factory.js`. These files assist in the tests by setting up the environment variables and mock objects to test. + +* `POST` - tests for status codes: + * `200` - successful post request + * `400` - if an incomplete post request is sent + * `401`/`404 ` - if unauthorized request + * `409` - if keys are unique + +* `GET` - tests for status codes: + * `200` - successful post request + * `400` - if an incomplete post request is sent + * `401`/`404 ` - if unauthorized request + * `409` - if keys are unique + + +#### Middleware + +##### `basic-auth-middleware.js` + +The basic auth middleware sets up the authentication for username/password verification. + +##### `bearer-auth-middleware.js` + +The bearer auth middleware handles the error checking for the authorization. It checks that the token is authorized. + +##### `error-middleware.js` + +The error-middleware module handles error messages for a variety of different use cases, including HTTP errors and MONGODB errors. + +* HTTP errors include the following logs: + + ``` + log('info','__ERROR_MIDDLEWARE__'); + log('info',error); + + if(error.status){ + log('info',Responding with a ${error.status} status and message: ${error.message}); + return response.sendStatus(error.status); + } + ``` +* MONGODB errors include the following logs: + +``` + if(message.includes('validation failed')) { + log('info','Responding with a 400 status code'); + return response.sendStatus(400); + } + + if(message.includes('duplicate key')) { + log('info','Responding with a 409 status code'); + return response.sendStatus(409); + } + + if(message.includes('objectid failed')) { + log('info','Responding with a 404 status code'); + return response.sendStatus(404); + } + + if(message.includes('unauthorized')) { + log('info','Responding with a 401 status code'); + return response.sendStatus(401); + } +``` + +* If there is an error that doesn't match the above, then: + +``` + log('info', 'Responding with a 500 status code'); + log('info', error); + return response.sendStatus(500); +``` + +##### `logger-middleware.js` + +The logger-middleware module logs the request method processes and request urls and returns next to continue on in the promise chain. + +--- +### Limitations + +This app is developed with a backend only - future versions of this app will include a user interface with signup/login capabilities. + +--- + +### Code Style + +Standard JavaScript with ES6 + +--- + +### Tech/Framework used + +* JavaScript / ES6 +* Node.js +* Jest +* Eslint +* Superagent +* Mongoose +* Winston +* Express +* Dotenv +* Body-Parser +* http-errors +* bcrypt +* crypto +* jsonwebtoken +* fs-extra +* multer +* node-schedule + +--- + +### Credits + +* Code Fellows +* Heroku - for deployment +* Meetup - for api reference +* Travis.ci - for continuous integration +* MongoDB - for persistence +* Twilio - for sms interface + +--- + +### License + +MIT © Trendly \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/__test__/account.test.js b/lab-dalton/trendly-back-end/__test__/account.test.js new file mode 100644 index 00000000..d4d0bc61 --- /dev/null +++ b/lab-dalton/trendly-back-end/__test__/account.test.js @@ -0,0 +1,106 @@ +'use strict'; + +require('dotenv').config(); + +const superagent = require('superagent'); +const server = require('../lib/server'); +const accountMock = require('./lib/accountmock-factory'); +const Account = require('../model/account'); + +const __API_URL__ = `http://localhost:${process.env.PORT}`; + +describe('ACCOUNTS', () => { + beforeAll(server.start); + afterAll(server.stop); + afterEach(accountMock.remove); + + describe('POST /signup', () => { + test(': creating account responds with a 200 and a token if no errors', () => { + return superagent.post(`${__API_URL__}/signup`) + .send({ + username: 'sno', + password: 'beard', + email: 'sno@balz.com', + }) + .then(response => { + expect(response.status).toEqual(200); + expect(response.body.token).toBeTruthy(); + }); + }); + + test(': sending an incomplete account results in a 400 status', () => { + return superagent.post(`${__API_URL__}/signup`) + .send({ + username: 'sno', + email: 'sno@balz.com', + }) + .then(Promise.reject) + .catch(error => { + expect(error.status).toEqual(400); + }); + }); + + test(': sending a duplicate key results in a 409 status', () => { + return Account.create('sno', 'beard', 'sno@ballz.com') + .then(() => { + return superagent.post(`${__API_URL__}/signup`) + .send({ + username: 'sno', + password: 'beard', + email: 'sno@ballz.com', + }) + .then(Promise.reject) + .catch(error => { + expect(error.status).toEqual(409); + }); + }); + }); + + describe('GET /login', () => { + test(': should respond with a 200 status code and a token if no errors', () => { + return accountMock.create() + .then(mock => { + return superagent.get(`${__API_URL__}/login`) + .auth(mock.request.username, mock.request.password); + }) + .then(response => { + expect(response.status).toEqual(200); + expect(response.body.token).toBeTruthy(); + }); + }); + + test(': should respond with a 401 due to a bad token', () => { + return accountMock.create() + .then(mock => { + return superagent.get(`${__API_URL__}/login`) + .auth(mock.request.username, 'password'); + }) + .then(Promise.reject) + .catch(error => { + expect(error.status).toEqual(401); + }); + }); + + test(': should respond with a 400 due to a bad request', () => { + return accountMock.create() + .then(mock => { + return superagent.get(`${__API_URL__}/login`) + .auth(mock.request.username); + }) + .then(Promise.reject) + .catch(error => { + expect(error.status).toEqual(400); + }); + }); + + test(': should respond with a 404 if the account was not found', () => { + return superagent.get(`${__API_URL__}/login`) + .auth('username that doesn\'t exsist', 'password') + .then(Promise.reject) + .catch(error => { + expect(error.status).toEqual(404); + }); + }); + }); + }); +}); \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/__test__/lib/accountmock-factory.js b/lab-dalton/trendly-back-end/__test__/lib/accountmock-factory.js new file mode 100644 index 00000000..4103e9d8 --- /dev/null +++ b/lab-dalton/trendly-back-end/__test__/lib/accountmock-factory.js @@ -0,0 +1,34 @@ +'use strict'; + +const faker = require('faker'); +const Account = require('../../model/account'); + +const accountMock = module.exports = {}; + +accountMock.create = () => { + let mock = {}; + + mock.request = { + username: faker.internet.userName(), + password: faker.lorem.words(10), + email: faker.internet.email(), + }; + + return Account.create(mock.request.username, mock.request.password, mock.request.email) + .then(newAccount => { + mock.account = newAccount; + return newAccount.createToken(); + }) + .then(newToken => { + mock.token = newToken; + return Account.findById(mock.account._id); + }) + .then(accountFound => { + mock.account = accountFound; + return mock; + }); +}; + +accountMock.remove = () => { + return Account.remove({}); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/__test__/lib/profilemock-factory.js b/lab-dalton/trendly-back-end/__test__/lib/profilemock-factory.js new file mode 100644 index 00000000..fe160be3 --- /dev/null +++ b/lab-dalton/trendly-back-end/__test__/lib/profilemock-factory.js @@ -0,0 +1,35 @@ +'use strict'; + +const faker = require('faker'); +const accountMockFactory = require('./accountmock-factory'); +const Profile = require('../../model/profile'); + +const profileMockFactory = module.exports = {}; + +profileMockFactory.create = () => { + let resultMock = {}; + + return accountMockFactory.create() + .then(accountMock => { + resultMock.accountMock = accountMock; + + return new Profile ({ + alias: faker.name.firstName(), + phoneNumber: faker.phone.phoneNumber(), + location: `${faker.address.latitude()}.${faker.address.longitude()}`, + + account: accountMock.account._id, + }).save(); + }) + .then(profile => { + resultMock.profile = profile; + return resultMock; + }); +}; + +profileMockFactory.remove = () => { + return Promise.all([ + accountMockFactory.remove(), + Profile.remove({}), + ]); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/__test__/profile.test.js b/lab-dalton/trendly-back-end/__test__/profile.test.js new file mode 100644 index 00000000..440891f2 --- /dev/null +++ b/lab-dalton/trendly-back-end/__test__/profile.test.js @@ -0,0 +1,122 @@ +'use strict'; + +require('dotenv').config(); + +const superagent = require('superagent'); +const server = require('../lib/server'); +const accountMockFactory = require('./lib/accountmock-factory'); +const profileMockFactory = require('./lib/profilemock-factory'); + +const __API_URL__ = `http://localhost:${process.env.PORT}`; + +describe('PROFILE router', () => { + beforeAll(server.start); + afterAll(server.stop); + afterEach(profileMockFactory.remove); + + describe('POST /profiles', () => { + test('Should return a 200 and a profile if there are no errors', () => { + let accountMock = null; + + return accountMockFactory.create() + .then(mock => { + accountMock = mock; + return superagent.post(`${__API_URL__}/profiles`) + .set('Authorization', `Bearer ${accountMock.token}`) + .send({ + phoneNumber: '8675309', + meetupMemberId: '240616151', // wanderly_wagon + }); + }) + .then(response => { + expect(response.status).toEqual(200); + expect(response.body.account).toEqual(accountMock.account._id.toString()); + expect(response.body.name).toEqual('wanderly_wagon'); + expect(response.body.phoneNumber).toEqual('8675309'); + }); + }); + + test('Should return a 400 if a bad request is sent', () => { + let accountMock = null; + + return accountMockFactory.create() + .then(mock => { + accountMock = mock; + return superagent.post(`${__API_URL__}/profiles`) + .set('Authorization', `Bearer ${accountMock.token}`) + .send({ + name: {}, + phoneNumber: {}, + }); + }) + .then(Promise.reject) + .catch(response => { + expect(response.status).toEqual(400); + }); + }); + + test('Should return a 401 if unauthorized request', () => { + return accountMockFactory.create() + .then(() => { + return superagent.post(`${__API_URL__}/profiles`) + .set('Authorization', 'Bearer invalidtoken') + .send({ + name: {}, + phoneNumber: {}, + }); + }) + .then(Promise.reject) + .catch(response => { + expect(response.status).toEqual(401); + }); + }); + }); + + describe('GET /profiles/:id', () => { + test('GET /profiles/:id Should return a 200 and a profile if there are no errors', () => { + let resultMock = null; + + return profileMockFactory.create() + .then(mock => { + resultMock = mock; + return superagent.get(`${__API_URL__}/profiles/${resultMock.profile._id}`) + .set('Authorization', `Bearer ${resultMock.accountMock.token}`); + }) + .then(response => { + expect(response.status).toEqual(200); + expect(response.body.account).toEqual(resultMock.accountMock.account._id.toString()); + expect(response.body.name).toEqual(resultMock.profile.name); + expect(response.body.phoneNumber).toEqual(resultMock.profile.phoneNumber); + }); + }); + + test('GET /profiles/:id Should return a 400 if authentication is invalid', () => { + let resultMock = null; + + return profileMockFactory.create() + .then(mock => { + resultMock = mock; + return superagent.get(`${__API_URL__}/profiles/${resultMock.profile._id}`); + }) + .then(Promise.reject) + .catch(response => { + expect(response.status).toEqual(400); + }); + }); + + test('GET /profiles/:id Should return a 404 if authentication is invalid', () => { + let resultMock = null; + + return profileMockFactory.create() + .then(mock => { + resultMock = mock; + return superagent.get(`${__API_URL__}/profiles/invalidId`) + .set('Authorization', `Bearer ${resultMock.accountMock.token}`); + }) + .then(Promise.reject) + .catch(response => { + expect(response.status).toEqual(404); + }); + }); + }); +}); \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/__test__/scheduler.test.js b/lab-dalton/trendly-back-end/__test__/scheduler.test.js new file mode 100644 index 00000000..bc2beb50 --- /dev/null +++ b/lab-dalton/trendly-back-end/__test__/scheduler.test.js @@ -0,0 +1,31 @@ +'use strict'; + +require('dotenv').config(); + +const server = require('../lib/server'); +const smsProfile = require('../model/sms-profile'); + +describe('scheduler.js', () => { + beforeAll(server.start); + afterAll(server.stop); + + describe('updating all groups', () => { + beforeAll(() => { + return smsProfile.remove({}); + }); + test('testing that smsProfile is being saved to the database', () => { + return new smsProfile({ + meetupMemberId: 240616151, + meetupMemberName: 'wanderly_wagon', + phoneNumber: '8675309', + meetups: [], + }).save() + .then(() => { + smsProfile.findOne({phoneNumber: '8675309'}) + .then(foundSMSProfile => { + expect(foundSMSProfile.meetups).toHaveLength(0); + }); + }); + }); + }); +}); diff --git a/lab-dalton/trendly-back-end/__test__/sms-profile.test.js b/lab-dalton/trendly-back-end/__test__/sms-profile.test.js new file mode 100644 index 00000000..bea5b029 --- /dev/null +++ b/lab-dalton/trendly-back-end/__test__/sms-profile.test.js @@ -0,0 +1,188 @@ +'use strict'; + +require('dotenv').config(); + +const superagent = require('superagent'); +const server = require('../lib/server'); +const smsProfile = require('../model/sms-profile'); + +const __API_URL__ = `http://localhost:${process.env.PORT}`; + +describe('POST /sms-profile', () => { + beforeAll(server.start); + afterAll(server.stop); + beforeEach(() => { + return smsProfile.remove({}); + }); + afterEach(() => { + return smsProfile.remove({}); + }); + + describe('text memberID to sign up', () => { + test('testing that a text from a phone number should create an sms profile and return a 200 status code', () => { + // -- application/x-www-form-urlencoded -- + const phone = 'Body=240616151&From=8675309'; // wanderly_wagon + + return superagent.post(`${__API_URL__}/sms-profile`) + .send(phone) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain(`Congratulations, wanderly_wagon!`); + }); + }); + + test('testing that response will be sent to the user if a duplicate phone number is sent', () => { + const phone = 'Body=240616151&From=8675309'; // wanderly_wagon + + return new smsProfile({ + meetupMemberId: 240616151, + phoneNumber: 8675309, + meetups: ['seattlejs'], + }).save() + .then(() => { + return superagent.post(`${__API_URL__}/sms-profile`) + .send(phone) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('You are already signed up'); + }); + }); + }); + + test('expect a 404 status code if message is not sent from a phone number', () => { + const phone = 'Body=240616151'; // wanderly_wagon + + return superagent.post(`${__API_URL__}/sms-profile`) + .send(phone) + .then(Promise.reject) + .catch(response => { + expect(response.status).toEqual(404); + }); + }); + }); + + describe('text -my groups- command to get a list of your meetup groups', () => { + test('testing that the -my groups- command returns a list of Meetup groups and a 200 status code', () => { + const getGroups = 'Body=My groups&From=8675309'; + + return new smsProfile({ + meetupMemberId: 240616151, + phoneNumber: 8675309, + meetups: ['seattlejs'], + }).save() + .then(() => { + return superagent.post(`${__API_URL__}/sms-profile`) + .send(getGroups) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('Your Groups'); + }); + }); + }); + + test('testing that a response will be sent to the user if there is no stored sms profile for the current phone number', () => { + const getGroups = 'Body=My groups&From=8675309'; + + return superagent.post(`${__API_URL__}/sms-profile`) + .send(getGroups) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('We are unable to send your groups'); + }); + }); + }); + + test('testing that the -my groups- command replies to the user if they have no groups connected to the account', () => { + const getGroups = 'Body=My groups&From=8675309'; + + return new smsProfile({ + meetupMemberId: 240616151, + phoneNumber: 8675309, + meetups: [], + }).save() + .then(() => { + return superagent.post(`${__API_URL__}/sms-profile`) + .send(getGroups) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('You have no groups connected to your account'); + }); + }); + }); + + describe('text -update me- command to get a list of meetups within a week\'s time', () => { + test('testing that the -update me- command returns a list of meetups that occur within a week and a 200 status code', () => { + const updateMe = 'Body=Update me&From=8675309'; + + return new smsProfile({ + meetupMemberId: 240616151, + phoneNumber: '8675309', + meetups: ['seattlejs', 'seattlejshackers'], + }).save() + .then(() => { + return superagent.post(`${__API_URL__}/sms-profile`) + .send(updateMe) + .then(response => { + expect(response.status).toEqual(200); + }); + }); + }); + + test('-update me- sends a response to the user if no profile is found with the number', () => { + const updateMe = 'Body=Update me&From=8675309'; + + return superagent.post(`${__API_URL__}/sms-profile`) + .send(updateMe) + .then(reponse => { + expect(reponse.status).toEqual(200); + expect(reponse.text).toContain('We are unable to send you an update'); + }); + }); + + test('-update me- sends a response to the user if no meetups are found with their number', () => { + const updateMe = 'Body=Update me&From=8675309'; + + return new smsProfile({ + meetupMemberId: 240616155, // this user has no groups + phoneNumber: '8675309', + }).save() + .then(() => { + return superagent.post(`${__API_URL__}/sms-profile`) + .send(updateMe) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('No Meetups listed with your account'); + }); + }); + }); + }); + + describe('non-sms commands', () => { + test('any non-sms command sent from the user without being signed up will return a response of how to sign up', () => { + const updateMe = 'Body=hi&From=8675309'; + return superagent.post(`${__API_URL__}/sms-profile`) + .send(updateMe) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('If you\'d like to sign up'); + }); + }); + + test('any non-sms command sent from the user while being signed up will return a list of commands to the user', () => { + const updateMe = 'Body=hi&From=8675309'; + + return new smsProfile({ + meetupMemberId: 240616155, // this user has no groups + phoneNumber: '8675309', + }).save() + .then(() => { + return superagent.post(`${__API_URL__}/sms-profile`) + .send(updateMe) + .then(response => { + expect(response.status).toEqual(200); + expect(response.text).toContain('List of Commands:'); + }); + }); + }); + }); +}); diff --git a/lab-dalton/trendly-back-end/assets/Trendly-flowchart.png b/lab-dalton/trendly-back-end/assets/Trendly-flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..297ca181608a2c59663961fee6199c8ce88c373f GIT binary patch literal 344612 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 GKmR|kPSgSb literal 0 HcmV?d00001 diff --git a/lab-dalton/trendly-back-end/index.js b/lab-dalton/trendly-back-end/index.js new file mode 100644 index 00000000..525cf8c6 --- /dev/null +++ b/lab-dalton/trendly-back-end/index.js @@ -0,0 +1,5 @@ +'use strict'; + +const server = require('./lib/server'); + +server.start(); diff --git a/lab-dalton/trendly-back-end/lib/logger.js b/lab-dalton/trendly-back-end/lib/logger.js new file mode 100644 index 00000000..dbca5aac --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/logger.js @@ -0,0 +1,23 @@ +'use strict'; + +const winston = require('winston'); + +const logger = new (winston.Logger)({ + levels: { verbose: 0, warn: 1, info: 2, error: 3, debug: 4, silly: 5 }, + + transports: [ + new (winston.transports.File)({ + filename: 'logs/log.json', + level: 'silly', // logs ALL + }), + new (winston.transports.Console)({ + level: 'verbose', // 'verbose' + }), + ], +}); + +let log = (method, text) => { + logger.log(method, text); +}; + +module.exports = log; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/middleware/basic-auth-middleware.js b/lab-dalton/trendly-back-end/lib/middleware/basic-auth-middleware.js new file mode 100644 index 00000000..c4022857 --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/middleware/basic-auth-middleware.js @@ -0,0 +1,38 @@ +'use strict'; + +const httpError = require('http-errors'); +const Account = require('../../model/account'); + +module.exports = (request, response, next) => { + if (!request.headers.authorization) { + return next(httpError(400, '__ERROR__ Authorization header required')); + } + + let base64AuthHeader = request.headers.authorization.split('Basic ')[1]; + + if (!base64AuthHeader) { + return next(httpError(400, '__ERROR__ Basic authorization required')); + } + + let stringAuthHeader = new Buffer(base64AuthHeader, 'base64').toString(); + + let [username, password] = stringAuthHeader.split(':'); + + if (!username || !password) { + return next(httpError(400, '__ERROR__ Username and Password required')); + } + + return Account.findOne({username}) + .then(accountFound => { + if (!accountFound) { + throw new httpError(404, '__ERROR__ not found'); + } + + return accountFound.verifyPassword(password); + }) + .then(verifiedAccount => { + request.account = verifiedAccount; + return next(); + }) + .catch(next); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/middleware/bearer-auth-middleware.js b/lab-dalton/trendly-back-end/lib/middleware/bearer-auth-middleware.js new file mode 100644 index 00000000..b828fd35 --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/middleware/bearer-auth-middleware.js @@ -0,0 +1,46 @@ +'use strict'; + +const jsonWebToken = require('jsonwebtoken'); +const httpError = require('http-errors'); + +const Account = require('../../model/account'); + +const promisify = (fn) => { + return (...args) => { + return new Promise((resolve, reject) => { + fn(...args, (error, data) => { + if (error) { + return reject(error); + } + return resolve(data); + }); + }); + }; +}; + +module.exports = (request, response, next) => { + if (!request.headers.authorization) { + return next(new httpError(400, '__ERROR__ authorization header required')); + } + + const token = request.headers.authorization.split('Bearer ')[1]; + + if (!token) { + return next(new httpError(400, '__ERROR__ token required')); + } + + return promisify(jsonWebToken.verify)(token, process.env.CLOUD_SALT) + .then(decryptedData => { + return Account.findOne({ + tokenSeed: decryptedData.tokenSeed, + }); + }) + .then(accountFound => { + if (!accountFound) { + throw new httpError(404, '__ERROR__ not found'); + } + request.account = accountFound; + return next(); + }) + .catch(next); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/middleware/error-middleware.js b/lab-dalton/trendly-back-end/lib/middleware/error-middleware.js new file mode 100644 index 00000000..51f50b9a --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/middleware/error-middleware.js @@ -0,0 +1,48 @@ +'use strict'; + +const log = require('../../lib/logger'); + +module.exports = (error, request, response, next) => { // eslint-disable-line + // ================ HTTP ERRORS ================ + log('info', `__MIDDLEWARE_IS_HANDLING_ERROR__ `); + log('error', error); + + if (error.status) { + log('info', `Responding with a ${error.status} status due to: '${error.message}'`); + return response.sendStatus(error.status); + } + + // ================ MONGO ERRORS ================ + let message = error.message.toLowerCase(); + + if (message.includes('objectid failed')) { + log('info', 'Responding with a 404 status code - objectid failed'); + return response.sendStatus(404); + } + + // if (message.includes('validation failed')) { + // log('info', 'Responding with a 400 status code - validation failed'); + // return response.sendStatus(400); + // } + + if (message.includes('duplicate key')) { + log('info', 'Responding with a 409 status code - duplicate key'); + return response.sendStatus(409); + } + + // if (message.includes('unauthorized')) { + // log('info', 'Responding with a 401 status code - unauthorized'); + // return response.sendStatus(401); + // } + + // ================ JSON_WEB_TOKEN ERRORS ================ + if (message.includes('jwt malformed')) { + log('info', 'Responding with a 401 status code - jsonWebToken Malformed'); + return response.sendStatus(401); + } + + // ================ ELSE ================ + // log('info', 'Responding with a 500 status code'); + // log('error', error); + // return response.sendStatus(500); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/middleware/logger-middleware.js b/lab-dalton/trendly-back-end/lib/middleware/logger-middleware.js new file mode 100644 index 00000000..a7fc40df --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/middleware/logger-middleware.js @@ -0,0 +1,8 @@ +'use strict'; + +const log = require('../logger'); + +module.exports = (request, response, next) => { + log('verbose', `Processing: ${request.method} On: ${request.url}`); + return next(); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/scheduler.js b/lab-dalton/trendly-back-end/lib/scheduler.js new file mode 100644 index 00000000..1bf4147e --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/scheduler.js @@ -0,0 +1,96 @@ +'use strict'; + +const schedule = require('node-schedule'); +const smsProfile = require('../model/sms-profile'); +const superagent = require('superagent'); +const sms = require('../lib/sms'); +const log = require('./logger'); + +let runEventsNextDay = (time = '00 00 12 * * *') => { + let i = schedule.scheduleJob(time, function(){ // eslint-disable-line + eventsNextDay(); + }); +}; + + +let runUpdateAllGroups = (time = '00 00 9 * * *') => { + let j = schedule.scheduleJob(time, function(){ // eslint-disable-line + updateAllGroups(); + }); +}; + +const eventsNextDay = () => { + smsProfile.find({}) + .then(allProfiles => { + const ONE_DAY = 86400000; + allProfiles.forEach(eachProfile => { + eachProfile.meetups.forEach(eachMeetupGroup => { + superagent.get(`https://api.meetup.com/${eachMeetupGroup}/events?key=${process.env.API_KEY}`) + .then(response => { + return response.body; + }) + .then(eventsArray => { + let aDaysTime = Date.now() + ONE_DAY; + let filteredEvents = eventsArray.filter(event => { + return event.time < aDaysTime; + }); + return filteredEvents.reduce((acc, each) => { + return `${acc}Hey You have an upcoming event for${each.name}\n${each.group.name}\n${new Date(each.time).toString().match(/\D+ \d+ \d+/)[0]}\n@${each.local_time}\n\n`; + }, ''); + }) + .then(filteredEventsString => { + if (filteredEventsString.length === 0) { + return; + } + sms.sendMessage(filteredEventsString, eachProfile.phoneNumber); + return; + }) + .catch(console.log); + }); + }); + }) + .catch(console.log); +}; + +const updateAllGroups = () => { + return smsProfile.find({}) + .then(allProfiles => { + + allProfiles.forEach(eachProfile => { + superagent.get(`https://api.meetup.com/groups?member_id=${eachProfile.meetupMemberId}&key=${process.env.API_KEY}`) + .then(response => { + return response.body; + }) + .then(meetupObject => { + const results = meetupObject.results; + let groups = []; + let isTheSame = true; + + results.forEach((eachResult, index) => { + + groups.push(eachResult); + try { + if (eachProfile.meetups[index].group_urlname !== eachResult.group_urlname) { + isTheSame = false; + } + } catch(e) { + isTheSame = false; + } + }); + + if (isTheSame) { + return; + } else { + smsProfile.findByIdAndUpdate(eachProfile._id, {meetups: groups}) + .then(() => { + log('Account updated'); + }) + .catch(console.log); + } + }) + .catch(console.log); + }); + }); +}; + +module.exports = { runUpdateAllGroups, runEventsNextDay ,updateAllGroups, eventsNextDay }; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/server.js b/lab-dalton/trendly-back-end/lib/server.js new file mode 100644 index 00000000..21490736 --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/server.js @@ -0,0 +1,89 @@ +'use strict'; + +require('dotenv').config(); + +const express = require('express'); +const mongoose = require('mongoose'); +const log = require('./logger'); +const fs = require('fs-extra'); +require('./scheduler').runEventsNextDay(); +require('./scheduler').runUpdateAllGroups(); + + +// ================ MONGO DB SETUP =================== +mongoose.Promise = Promise; + +// ================ SERVER SETUP =================== +const server = module.exports = {}; + +const app = express(); + +// ================ ROUTE SETUP =================== +app.use(require('./middleware/logger-middleware')); + +app.get('/', (request, response) => { + response.send('Welcome to Code Fellows 401 Meetup Notification App'); +}); + +app.use(require('../route/account-router')); +app.use(require('../route/profile-router')); +app.use(require('../route/sms-profile-router')); + +app.all('*', (request, response) => { + return response.status(404).send('__404__ NOT FOUND - They Don\'t think it be like it is, but it do'); +}); + +app.use(require('./middleware/error-middleware')); + + +// ================ SERVER USE =================== +let isServerOn = false; +let httpServer = null; + +server.start = () => { + fs.pathExists('logs/') + .then(exists => { + if (!exists) { + fs.mkdir('logs/'); + } + }); + + return new Promise((resolve, reject) => { + + if (isServerOn) { + log('error', '__SERVER_ERROR__ Server is already on'); + return reject(new Error('__SERVER_ERROR__ Server is already on')); + } + httpServer = app.listen(process.env.PORT, () => { + isServerOn = true; + log('verbose', `Server is listening on port: ${process.env.PORT}`); + return resolve(); + }); + }) + .then(() => { + mongoose.connect(process.env.MONGODB_URI); + }); +}; + +server.stop = () => { + return new Promise((resolve, reject) => { + + if (!isServerOn) { + log('error', '__SERVER_ERROR__ Server is already off'); + return reject(new Error('__SERVER_ERROR__ Server is already off')); + } + if (!httpServer) { + log('error', '__SERVER_ERROR__ There is no server to close'); + return reject(new Error('__SERVER_ERROR__ There is no server to close')); + } + httpServer.close(() => { + isServerOn = false; + httpServer = null; + log('info', `Server is shutting down`); + return resolve(); + }); + }) + .then(() => { + mongoose.disconnect(); + }); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/lib/sms.js b/lab-dalton/trendly-back-end/lib/sms.js new file mode 100644 index 00000000..3250a458 --- /dev/null +++ b/lab-dalton/trendly-back-end/lib/sms.js @@ -0,0 +1,16 @@ +'use strict'; + +const accountSid = process.env.TWILIO_ACCOUNT_SID; +const authToken = process.env.TWILIO_AUTH_TOKEN; + +const client = require('twilio')(accountSid, authToken); + +const sms = module.exports = {}; + +sms.sendMessage = (message, phoneNumber) => { + client.messages.create({ + to: phoneNumber, + from: `+1${process.env.TWILIO_NUMBER}`, + body: message, + }); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/model/account.js b/lab-dalton/trendly-back-end/model/account.js new file mode 100644 index 00000000..eff00516 --- /dev/null +++ b/lab-dalton/trendly-back-end/model/account.js @@ -0,0 +1,63 @@ +'use strict'; + +const mongoose = require('mongoose'); +const httpError = require('http-errors'); +const jsonWebToken = require('jsonwebtoken'); +const bcrypt = require('bcrypt'); +const crypto = require('crypto'); + +const accountSchema = mongoose.Schema({ + passwordHash: { + type: String, + required: true, + }, + email: { + type: String, + required: true, + unique: true, + }, + username: { + type: String, + required: true, + unique: true, + }, + tokenSeed: { + type: String, + required: true, + unique: true, + }, + dateCreated: { + type: Date, + default: () => new Date(), + }, +}); + +accountSchema.methods.verifyPassword = function(password) { + return bcrypt.compare(password, this.passwordHash) + .then(response => { + if (!response) { + throw new httpError(401, '__AUTHORIZATION__ Incorrect username or password'); + } else + return this; + }); +}; + +accountSchema.methods.createToken = function() { + this.tokenSeed = crypto.randomBytes(64).toString('hex'); + + return this.save() + .then(account => { + return jsonWebToken.sign({tokenSeed: account.tokenSeed}, process.env.CLOUD_SALT); + }); +}; + +const Account = module.exports = mongoose.model('account', accountSchema); + +Account.create = (username, password, email) => { + const HASH_SALT_ROUNDS = 8; + return bcrypt.hash(password, HASH_SALT_ROUNDS) + .then(passwordHash => { + let tokenSeed = crypto.randomBytes(64).toString('hex'); + return new Account({username, email, passwordHash, tokenSeed}).save(); + }); +}; \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/model/profile.js b/lab-dalton/trendly-back-end/model/profile.js new file mode 100644 index 00000000..b056fb3c --- /dev/null +++ b/lab-dalton/trendly-back-end/model/profile.js @@ -0,0 +1,26 @@ +'use strict'; + +const mongoose = require('mongoose'); + +const profileSchema = mongoose.Schema ({ + meetupMemberId: { + type: Number, + }, + name: { + type: String, + }, + phoneNumber: { + type: String, + unique: true, + }, + account: { + type: mongoose.Schema.Types.ObjectId, + required: true, + unique: true, + }, + meetups: [{ + type: String, // use group url name + }], +}); + +module.exports = mongoose.model('profile', profileSchema); diff --git a/lab-dalton/trendly-back-end/model/sms-profile.js b/lab-dalton/trendly-back-end/model/sms-profile.js new file mode 100644 index 00000000..42ab3ced --- /dev/null +++ b/lab-dalton/trendly-back-end/model/sms-profile.js @@ -0,0 +1,26 @@ +'use strict'; + +const mongoose = require('mongoose'); + +const smsProfileSchema = mongoose.Schema ({ + meetupMemberId: { + type: Number, + required: true, + }, + meetupMemberName: { + type: String, + }, + phoneNumber: { + type: String, + unique: true, + required: true, + }, + meetups: { + type: Array, // use group url name + }, + categories: [{ + type: String, + }], +}); + +module.exports = mongoose.model('smsProfile', smsProfileSchema); diff --git a/lab-dalton/trendly-back-end/package-lock.json b/lab-dalton/trendly-back-end/package-lock.json new file mode 100644 index 00000000..58af2055 --- /dev/null +++ b/lab-dalton/trendly-back-end/package-lock.json @@ -0,0 +1,6211 @@ +{ + "name": "trendly-server", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.36", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz", + "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@types/node": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.2.tgz", + "integrity": "sha512-KA4GKOpgXnrqEH2eCVhiv2CsxgXGQJgV1X0vsGlh+WCnxbeAE1GT44ZsTU1IN5dEeV/gDupKa7gWo08V5IxWVQ==", + "dev": true + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "5.3.0" + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-field": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-0.1.0.tgz", + "integrity": "sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo=" + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sdk": { + "version": "2.176.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.176.0.tgz", + "integrity": "sha1-JyPBThxiOsRcW4kKP8c27ugIX2c=", + "requires": { + "buffer": "4.9.1", + "crypto-browserify": "1.0.9", + "events": "1.1.1", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.1.0", + "xml2js": "0.4.17", + "xmlbuilder": "4.2.1" + }, + "dependencies": { + "sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + } + } + }, + "aws-sdk-mock": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-1.7.0.tgz", + "integrity": "sha1-dpizuoL0k/cf8GCuISPNCAathnY=", + "requires": { + "aws-sdk": "2.176.0", + "sinon": "1.17.7", + "traverse": "0.6.6" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.0.4.tgz", + "integrity": "sha512-/Yt61fUpdFjetYlnpj280BPKEsPnK4mqzxDdo8DybPvrPNrLurbAF/WBjn2nnoi1Hc2Ippsf12/aOp8ys/Vl1A==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "22.0.3" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.3.tgz", + "integrity": "sha512-Z0pOZFs0xDctwF0bPEKrnAzvbbgDi2vDFbQ0EdofnLI2bOa3P1H66gNLb2vMJJaa00VDjfiGhIocsHvBkqtyEQ==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-preset-jest": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.0.3.tgz", + "integrity": "sha512-FbMMniSMXFvkKldCf+e4Tuol/v3XMaIpIp8xiT1WFlEW3ZapTKDW9YgVt3hqcpZXsIGFf6eUF3Owxom7yFlI8w==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "22.0.3", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" + }, + "bcrypt": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-1.0.3.tgz", + "integrity": "sha512-pRyDdo73C8Nim3jwFJ7DWe3TZCgwDfWZ6nHS5LSdU77kWbj1frruvdndP02AOavtD4y8v6Fp2dolbHgp4SDrfg==", + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bindings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", + "dev": true, + "optional": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "bson": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", + "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=" + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "requires": { + "object-assign": "4.1.1", + "vary": "1.1.2" + } + }, + "cron-parser": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.4.3.tgz", + "integrity": "sha512-IcAjsFKIF7C3zCIqRDs5sKMNtiyPuj07JN94LP4IjwaZYgKm/Tc4pihanHqJhq6FeqMp0SG0wUTb+LAmPqexAw==", + "requires": { + "is-nan": "1.2.1", + "moment-timezone": "0.5.14" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" + }, + "crypto-browserify": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", + "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=" + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "deprecate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.14", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", + "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", + "dev": true + }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", + "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "eslint": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.14.0.tgz", + "integrity": "sha512-Ul6CSGRjKscEyg0X/EeNs7o2XdnbTEOD1OM8cTjmx85RPcBJQrEhZLevhuJZNAE/vS2iVl5Uhgiqf3h5uLMCJQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.2", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.1.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.3.0", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "dev": true, + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expect": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.0.3.tgz", + "integrity": "sha512-QapzeQkcA3jCx4pDnD07I4SPPxScKbey8TD/WwrnzmpHmL5q0dUtXfUt5OIFOjVBCg+C4zn4Y1zK9Rb9SIDL1g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "jest-diff": "22.0.3", + "jest-get-type": "22.0.3", + "jest-matcher-utils": "22.0.3", + "jest-message-util": "22.0.3", + "jest-regex-util": "22.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "faker": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/faker/-/faker-4.1.0.tgz", + "integrity": "sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "requires": { + "samsam": "1.1.2" + } + }, + "formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", + "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-nan": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz", + "integrity": "sha1-n69ltvttskt/XAYoR16nH5iEAeI=", + "requires": { + "define-properties": "1.1.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isemail": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", + "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "dev": true, + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-22.0.4.tgz", + "integrity": "sha512-S0tmgK5psULvt/11QzgAZWGpY5y5TkMRzd3T21Q13JzTx37Vx6F0Nw022c9Kc/IbEy+AHkKkGFVO5QafE8MrDg==", + "dev": true, + "requires": { + "jest-cli": "22.0.4" + }, + "dependencies": { + "jest-cli": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.0.4.tgz", + "integrity": "sha512-f1lZRM13IwIINzjE3RebXQKtQLiKncpSrbJZ/aTZJXmzEWGdgSayW4ESyhU+xK3uGiJEUSzbHjwPY6nGJ8VbUA==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "22.0.3", + "jest-config": "22.0.4", + "jest-environment-jsdom": "22.0.4", + "jest-get-type": "22.0.3", + "jest-haste-map": "22.0.3", + "jest-message-util": "22.0.3", + "jest-regex-util": "22.0.3", + "jest-resolve-dependencies": "22.0.3", + "jest-runner": "22.0.4", + "jest-runtime": "22.0.4", + "jest-snapshot": "22.0.3", + "jest-util": "22.0.4", + "jest-worker": "22.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "realpath-native": "1.0.0", + "rimraf": "2.6.2", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "yargs": "10.0.3" + } + } + } + }, + "jest-changed-files": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.0.3.tgz", + "integrity": "sha512-CG7eNJNO9x1O/3J4Uhe2QXra1MnC9+KS1f2NeOg+7iQ+8dDCgxCtpusmKfu44TnEyKwkIDhDr6htPfPaI+Fwbw==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-config": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.0.4.tgz", + "integrity": "sha512-NcBeixqHjHDZO9+pUj+365LQV2s65d2f0/IrwlUyv0xaJovRNc6eDvoJ/r2UUlHnqjP3Go+R0ECUsXPXjk4SHw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "22.0.4", + "jest-environment-node": "22.0.4", + "jest-get-type": "22.0.3", + "jest-jasmine2": "22.0.4", + "jest-regex-util": "22.0.3", + "jest-resolve": "22.0.4", + "jest-util": "22.0.4", + "jest-validate": "22.0.3", + "pretty-format": "22.0.3" + } + }, + "jest-diff": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.0.3.tgz", + "integrity": "sha512-Y7xN9Lc/NgFvR14lvjrJXB6x2x1LLe5NnMyzLvilBSSOyjy9uAVnR2Bt1YgzdfRrfaxsx7xFUVcqXLUnPkrJcA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.4.0", + "jest-get-type": "22.0.3", + "pretty-format": "22.0.3" + } + }, + "jest-docblock": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.0.3.tgz", + "integrity": "sha512-LhviP2rqIg2IzS6m97W7T032oMrT699Tr6Njjhhl4FCLj+75BUy9CsSmGgfoVEql1uc+myBkssvcbn7T9xDR+A==", + "dev": true, + "requires": { + "detect-newline": "2.1.0" + } + }, + "jest-environment-jsdom": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.0.4.tgz", + "integrity": "sha512-vnjefLZlsNsmnjKcaXkx2IxTBNG40vfRVOdMfcfkPkq85JxFB7wzNtjLx+RIfiNpIZd04C1PXbF0aJIenY85Ng==", + "dev": true, + "requires": { + "jest-mock": "22.0.3", + "jest-util": "22.0.4", + "jsdom": "11.5.1" + } + }, + "jest-environment-node": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.0.4.tgz", + "integrity": "sha512-9vjNKb86UivvKCZCudMNixQgdMnOG7ql6iVYnaiK0CmvZ0WQD+mlM10NvgiWpRv4HstcnRL1pY/GSIHXAD6qXw==", + "dev": true, + "requires": { + "jest-mock": "22.0.3", + "jest-util": "22.0.4" + } + }, + "jest-get-type": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.0.3.tgz", + "integrity": "sha512-TaJnc/lnJQ3jwry+NUWkqaJmKrM/Ut3XdK89HfiqdI3DMRLd6Zb4wyKjwuNP37MEQqlNg0YWH4sbBR8D4exjCA==", + "dev": true + }, + "jest-haste-map": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.0.3.tgz", + "integrity": "sha512-VosIMOFQFu1rTF+MvOWVuv2KVmZ9eTkRgfwW2yUAs6/AhwmIfXRl/tih+fIOYcHzU4Auu1G8Fvl2kkF5g0k6/A==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "22.0.3", + "jest-worker": "22.0.3", + "micromatch": "2.3.11", + "sane": "2.2.0" + } + }, + "jest-jasmine2": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.0.4.tgz", + "integrity": "sha512-pn1XPHUkffHK6oNY1Dfl/+Rg0UuTdlg3aGDnjyK6dZzGEBeiH1uKuSgZEjy3Lj461l3atpzsQyw7ilXPyjFnUw==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "expect": "22.0.3", + "graceful-fs": "4.1.11", + "jest-diff": "22.0.3", + "jest-matcher-utils": "22.0.3", + "jest-message-util": "22.0.3", + "jest-snapshot": "22.0.3", + "source-map-support": "0.5.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-leak-detector": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.0.3.tgz", + "integrity": "sha512-xyVdAmcG8M3jWtVeadDUU6MAHLBrjkP4clz2UtTZ1gpe5bRLk27VjQOpzTwK20MkV/6iZQhSuRVuzHS5kD0HpA==", + "dev": true, + "requires": { + "pretty-format": "22.0.3", + "weak": "1.0.1" + } + }, + "jest-matcher-utils": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.0.3.tgz", + "integrity": "sha512-FJbKpCR3K7YYE/Pnvy5OrLFgPEswpYWIfVtdwT2NC6pBARbYGX39KF3bTxS9yg2mv0YL2zHe3UbwzFsi9nFpVA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.0.3", + "pretty-format": "22.0.3" + } + }, + "jest-message-util": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.0.3.tgz", + "integrity": "sha512-AVBdCx7Oj5wBpMOH089lx7Zgwpdz9HbReA82HuVAlIT4kEQRvCy6Sl9yVWDGJwHTgB/OYQGkgmbv/P/K8TkWNw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.36", + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0", + "stack-utils": "1.0.1" + } + }, + "jest-mock": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.0.3.tgz", + "integrity": "sha512-donODXcDG03EAEavc9xfJ7fBF/LNVjoZYkmj9DLrQ1B9YcT6wh8Xx7IYg25b8V/8F/eXPMAE0KK5q6Fqe6yAeg==", + "dev": true + }, + "jest-regex-util": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.0.3.tgz", + "integrity": "sha512-mplC9chiAotES3ClzNhy0SJcfHB2DivooKJZW+2hDdvP8LLB+OUI+D6bJd7sncbKUsyFcmblEvpm/zz/hef7HA==", + "dev": true + }, + "jest-resolve": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.0.4.tgz", + "integrity": "sha512-yoxHsX4MTT2Ra/dFia9VCunzsA/4jMBENMmLjREIUkCIP1edk/PZUOGVVf680Gw04CtmT5stETylcbmbL7hJBw==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0" + } + }, + "jest-resolve-dependencies": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.3.tgz", + "integrity": "sha512-u9MUNJIa9GJ0YFhvM0+Scr4tyX84nC42d3w18Cly1doY7pTT+9momm+TncpuDlFyB2aNmS8SfdEbiLr1e6tBwg==", + "dev": true, + "requires": { + "jest-regex-util": "22.0.3" + } + }, + "jest-runner": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.0.4.tgz", + "integrity": "sha512-srBkbqmiSB+jzSaG652fmi3kS6rV6wS/4fOG8dxxBg3dCqNQcM2/L3TI3ZK0SwIAcdGJh5Gybs8aDboT8K9Cdw==", + "dev": true, + "requires": { + "jest-config": "22.0.4", + "jest-docblock": "22.0.3", + "jest-haste-map": "22.0.3", + "jest-jasmine2": "22.0.4", + "jest-leak-detector": "22.0.3", + "jest-message-util": "22.0.3", + "jest-runtime": "22.0.4", + "jest-util": "22.0.4", + "jest-worker": "22.0.3", + "throat": "4.1.0" + } + }, + "jest-runtime": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.0.4.tgz", + "integrity": "sha512-+7uEwf/4f8k1E/eViyGK6/M5yA4O3f6TdWViuqF9MV7vXwG2OVJu8YEZa5239nEnHJiwinXp4eZXX+HB4pQRPg==", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "22.0.4", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.3.0", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "22.0.4", + "jest-haste-map": "22.0.3", + "jest-regex-util": "22.0.3", + "jest-resolve": "22.0.4", + "jest-util": "22.0.4", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "realpath-native": "1.0.0", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "10.0.3" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.0.3.tgz", + "integrity": "sha512-e/a/EvMsY5XROWy4QWX6PvYziuJ8ttD6+QcnbogODWtx2LGhvVQOb7pmqGTo0tL/p0vzFetZA9GlZSh/EfMepg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "22.0.3", + "jest-matcher-utils": "22.0.3", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "22.0.3" + } + }, + "jest-util": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.0.4.tgz", + "integrity": "sha512-gNNPtcCFkVh7daKIl3/06eoQ90QXGXCyDOfyZ3IEyTWmHBdX3GvklcOtyGcdOvrYEubaZTfMcMKmEeo/6sRTog==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "jest-message-util": "22.0.3", + "jest-validate": "22.0.3", + "mkdirp": "0.5.1" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-validate": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.0.3.tgz", + "integrity": "sha512-GmlLmPCtrSQ3iB4A1uxcfjawaaQnwESCDcUg5tMxJKeBbmPdcWPAb6EWzvANxULPUV7hfPKLwg4xIPpi7cx1/g==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.0.3", + "leven": "2.1.0", + "pretty-format": "22.0.3" + } + }, + "jest-worker": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.0.3.tgz", + "integrity": "sha512-fPdCTnogFQiR0CP6whEsIly2RfcHxvalqyLjhui6qa1SnOmHiX7L8k4Umo8CBIp5ndWY0+ej1o7OTE5MlzPabg==", + "dev": true, + "requires": { + "merge-stream": "1.0.1" + } + }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + }, + "joi": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", + "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", + "requires": { + "hoek": "2.16.3", + "isemail": "1.2.0", + "moment": "2.18.1", + "topo": "1.1.0" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsdom": { + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", + "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.3.0", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.0", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "3.0.3", + "pn": "1.0.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.4.0", + "xml-name-validator": "2.0.1" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", + "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", + "requires": { + "jws": "3.1.4", + "lodash.includes": "4.3.0", + "lodash.isboolean": "3.0.3", + "lodash.isinteger": "4.0.4", + "lodash.isnumber": "3.0.3", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.once": "4.1.1", + "ms": "2.0.0", + "xtend": "4.0.1" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", + "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "requires": { + "base64url": "2.0.0", + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.9", + "safe-buffer": "5.1.1" + } + }, + "jws": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", + "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "requires": { + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "kareem": { + "version": "2.0.0-rc5", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.0.0-rc5.tgz", + "integrity": "sha512-r1k8pO2ebXZvEMI0blJWLT5hvxReDdSKTUoxdaDj4ntSCFuTj9tNs9yQlmFXQeb5vbm0bJgn/AZ0yUHaQ9EywA==" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=" + }, + "long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + }, + "moment-timezone": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", + "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", + "requires": { + "moment": "2.18.1" + } + }, + "mongodb": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.1.tgz", + "integrity": "sha1-J47oAGJX7CJ5hZSmJZVGgl1t4bI=", + "requires": { + "mongodb-core": "3.0.1" + } + }, + "mongodb-core": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.1.tgz", + "integrity": "sha1-/23Dbulv9ZaVPYCmhA1nMbyS7+0=", + "requires": { + "bson": "1.0.4", + "require_optional": "1.0.1" + } + }, + "mongoose": { + "version": "5.0.0-rc0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.0-rc0.tgz", + "integrity": "sha512-nAYq4EKAPuL2XP5kS3TriCGH4Kd27gsfBQReALKdjfy2dBtMdRILM7I9woN589XdgMxSBRTIRXUebIeAJJCtZg==", + "requires": { + "async": "2.1.4", + "bson": "1.0.4", + "kareem": "2.0.0-rc5", + "lodash.get": "4.4.2", + "mongodb": "3.0.1", + "mongoose-legacy-pluralize": "1.0.1", + "mpath": "0.3.0", + "mquery": "3.0.0-rc0", + "ms": "2.0.0", + "regexp-clone": "0.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "async": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", + "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", + "requires": { + "lodash": "4.17.4" + } + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.1.tgz", + "integrity": "sha512-X5/N3sNj1p+y7Bg1vouQdST1vkInEzNAwqVjfDpNrhnugih2p2rV7jLrrb71sbQUPMJPm0Hhe6rH5fQV1Ve4XQ==" + }, + "mpath": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.3.0.tgz", + "integrity": "sha1-elj3iem1/TyUUgY0FXlg8mvV70Q=" + }, + "mquery": { + "version": "3.0.0-rc0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0-rc0.tgz", + "integrity": "sha512-tEAVSvlmd22irKJ8Q/tyI0LKRv8cV3aEkQ/EHW391ktGRWDDlfcpZyq6GYqu8yXGoz2JkC4aMJdNGca19wU1NQ==", + "requires": { + "bluebird": "3.5.0", + "debug": "2.6.9", + "regexp-clone": "0.0.1", + "sliced": "0.0.5" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "sliced": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", + "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.3.0.tgz", + "integrity": "sha1-CSsmcPaEb6SRSWXvyM+Uwg/sbNI=", + "requires": { + "append-field": "0.1.0", + "busboy": "0.2.14", + "concat-stream": "1.6.0", + "mkdirp": "0.5.1", + "object-assign": "3.0.0", + "on-finished": "2.3.0", + "type-is": "1.6.15", + "xtend": "4.0.1" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "node-pre-gyp": { + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.2", + "rc": "1.2.2", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.4.1", + "tar": "2.2.1", + "tar-pack": "3.4.1" + } + }, + "node-schedule": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.2.5.tgz", + "integrity": "sha512-15EhURVgJz1kIms3H6rKcOOcZGSaHGCwB6mTRUBWZnpv4OPbX6e01OTPeSzx0W+f5Hx7iWafmk17+PyhD9fejg==", + "requires": { + "cron-parser": "2.4.3", + "long-timeout": "0.1.1", + "sorted-array-functions": "1.1.0" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "8.5.2" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", + "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=", + "dev": true + }, + "pop-iterate": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", + "integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "22.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.0.3.tgz", + "integrity": "sha512-qXbDFJ2/Kk3HFIaLdOblbsCKQ09kZu4MKbXB+m/EaqD7PZ/wXe2XcRREmQleMh4wmerxlma6eJTh3nxCXYUmmA==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", + "integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=", + "requires": { + "asap": "2.0.6", + "pop-iterate": "1.0.1", + "weak-map": "1.0.5" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", + "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "realpath-native": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", + "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", + "dev": true, + "requires": { + "util.promisify": "1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexp-clone": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", + "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.4.1" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "rootpath": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", + "integrity": "sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms=" + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=" + }, + "sane": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", + "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scmp": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz", + "integrity": "sha1-NkjfLXKUZB5/eGc//CloHZutkHM=" + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sinon": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", + "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "util": "0.10.3" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "sorted-array-functions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.1.0.tgz", + "integrity": "sha512-zq6fLdGQixb9VZfT/tLgU+LzoedJyTbcf1I/TKETFeUVoWIfcs5HNr+SJSvQJLXRlEZjB1gpILTrxamxAdCcgA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "superagent": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.1", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.4.1", + "qs": "6.5.1", + "readable-stream": "2.3.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", + "integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", + "requires": { + "debug": "2.6.9", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.3", + "rimraf": "2.6.2", + "tar": "2.2.1", + "uid-number": "0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "topo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", + "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", + "requires": { + "hoek": "2.16.3" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "twilio": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.11.0.tgz", + "integrity": "sha512-sbI91XITI3AQdKTHcMJ5q4bPWPPQvE+QWZ3C7ZQzT7dnVO1k9T2WaswuIiGtK7uG21jfLetV+BT9ZrGMmTSC7w==", + "requires": { + "deprecate": "1.0.0", + "jsonwebtoken": "7.4.3", + "lodash": "4.0.0", + "moment": "2.18.1", + "q": "2.0.3", + "request": "2.83.0", + "rootpath": "0.1.2", + "scmp": "0.0.3", + "xmlbuilder": "9.0.1" + }, + "dependencies": { + "jsonwebtoken": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz", + "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=", + "requires": { + "joi": "6.10.1", + "jws": "3.1.4", + "lodash.once": "4.1.1", + "ms": "2.0.0", + "xtend": "4.0.1" + } + }, + "lodash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.0.0.tgz", + "integrity": "sha1-msQ4RMWV4o0wEIt7pYNwM5WSLfw=" + }, + "xmlbuilder": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.1.tgz", + "integrity": "sha1-kc1wiXdVNj66V8Et3uq0o0GmH2U=" + } + } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "0.2.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "weak": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz", + "integrity": "sha1-q5mqswcGlZqgIAy4z1RbucszuZ4=", + "dev": true, + "optional": true, + "requires": { + "bindings": "1.3.0", + "nan": "2.8.0" + } + }, + "weak-map": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", + "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=" + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "requires": { + "string-width": "1.0.2" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "winston": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", + "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=", + "requires": { + "async": "1.0.0", + "colors": "1.0.3", + "cycle": "1.0.3", + "eyes": "0.1.8", + "isstream": "0.1.2", + "stack-trace": "0.0.10" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + } + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xml2js": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", + "requires": { + "sax": "1.2.4", + "xmlbuilder": "4.2.1" + } + }, + "xmlbuilder": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "requires": { + "lodash": "4.17.4" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } +} diff --git a/lab-dalton/trendly-back-end/package.json b/lab-dalton/trendly-back-end/package.json new file mode 100644 index 00000000..10dfd844 --- /dev/null +++ b/lab-dalton/trendly-back-end/package.json @@ -0,0 +1,46 @@ +{ + "name": "trendly-server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest -i --coverage || exit 0", + "lint": "eslint ./", + "dbon": "mkdir -p ./db && mongod --dbpath ./db", + "dboff": "killall mongod", + "start": "node index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Google-Trendly/trendly-server.git" + }, + "author": "Catherine Looper, Matthew LeBlanc, Cameron Moorehead, Dalton Carr", + "license": "MIT", + "bugs": { + "url": "https://github.com/Google-Trendly/trendly-server/issues" + }, + "homepage": "https://github.com/Google-Trendly/trendly-server#readme", + "devDependencies": { + "eslint": "^4.14.0", + "jest": "^22.0.4" + }, + "dependencies": { + "aws-sdk-mock": "^1.7.0", + "bcrypt": "^1.0.3", + "body-parser": "^1.18.2", + "cors": "^2.8.4", + "crypto": "^1.0.1", + "dotenv": "^4.0.0", + "express": "^4.16.2", + "faker": "^4.1.0", + "fs-extra": "^5.0.0", + "http-errors": "^1.6.2", + "jsonwebtoken": "^8.1.0", + "mongoose": "^5.0.0-rc0", + "multer": "^1.3.0", + "node-schedule": "^1.2.5", + "superagent": "^3.8.2", + "twilio": "^3.11.0", + "winston": "^2.4.0" + } +} diff --git a/lab-dalton/trendly-back-end/route/account-router.js b/lab-dalton/trendly-back-end/route/account-router.js new file mode 100644 index 00000000..d66bca11 --- /dev/null +++ b/lab-dalton/trendly-back-end/route/account-router.js @@ -0,0 +1,36 @@ +'use strict'; + +const {Router} = require('express'); +const jsonParser = require('body-parser').json(); +const Account = require('../model/account'); +const httpError = require('http-errors'); +const basicAuthMiddleware = require('../lib/middleware/basic-auth-middleware'); + +const accountRouter = module.exports = new Router(); + +// ============================= GET ============================= +accountRouter.get('/login', basicAuthMiddleware, (request, response, next) => { + if (!request.account) { + return next(new httpError(404, '__ERROR__ not found')); + } + + return request.account.createToken() + .then(newToken => response.json({token: newToken})) + .catch(next); +}); + +// ============================= POST ============================= +accountRouter.post('/signup', jsonParser, (request, response, next) => { + if (!request.body.username || !request.body.password || !request.body.email) { + return next(new httpError(400, '__ERROR__ Insufficient data: Requires username, password, and email')); + } + + Account.create(request.body.username, request.body.password, request.body.email) + .then(newUser => { + return newUser.createToken(); + }) + .then(newToken => { + return response.json({token: newToken}); + }) + .catch(next); +}); diff --git a/lab-dalton/trendly-back-end/route/profile-router.js b/lab-dalton/trendly-back-end/route/profile-router.js new file mode 100644 index 00000000..3c1370ca --- /dev/null +++ b/lab-dalton/trendly-back-end/route/profile-router.js @@ -0,0 +1,41 @@ +'use strict'; + +const {Router} = require('express'); +const jsonParser = require('body-parser').json(); +const httpErrors = require('http-errors'); +const Profile = require('../model/profile'); +const superagent = require('superagent'); + +const bearerAuthMiddleware = require('../lib/middleware/bearer-auth-middleware'); + +const profileRouter = module.exports = new Router(); + +profileRouter.post('/profiles', bearerAuthMiddleware, jsonParser, (request, response, next) => { + if(!request.account && !request.phoneNumber) + return next(new httpErrors(404, '__ERROR__ no account, or phonenumber given')); + + return superagent.get(`https://api.meetup.com/members/${request.body.meetupMemberId}?key=${process.env.API_KEY}&?fields=groups?%22`) + .then(response => { + return response.body; + }) + .then(meetupObject => { + return new Profile ({ + ...request.body, + meetupMemberId: meetupObject.id, + name: meetupObject.name, + account: request.account._id, + }).save() + .then(profile => response.json(profile)) + .catch(next); + }) + .catch(next); +}); + + +profileRouter.get('/profiles/:id', bearerAuthMiddleware, (request, response, next) => { + if(!request.account) + return next(new httpErrors(404, '__ERROR__ Not Found')); + return Profile.findById(request.params.id) + .then(profile => response.json(profile)) + .catch(next); +}); \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/route/sms-profile-router.js b/lab-dalton/trendly-back-end/route/sms-profile-router.js new file mode 100644 index 00000000..898a4aef --- /dev/null +++ b/lab-dalton/trendly-back-end/route/sms-profile-router.js @@ -0,0 +1,203 @@ +'use strict'; + +const { Router } = require('express'); +const bodyParser = require('body-parser').urlencoded({extended:false}); +const httpErrors = require('http-errors'); +const superagent = require('superagent'); +const MessagingResponse = require('twilio').twiml.MessagingResponse; +const sms = require('../lib/sms'); + +const smsProfile = require('../model/sms-profile'); +const log = require('../lib/logger'); + +const smsProfileRouter = module.exports = new Router(); + +smsProfileRouter.post('/sms-profile', bodyParser, (request, response, next) => { + logText(request); + + const twiml = new MessagingResponse(); + if(!request.body.Body || !request.body.From) { + return next(new httpErrors(404, 'Please provide a text message and a proper phone number')); + } + + const userInput = request.body.Body.toLowerCase().trim(); + const phoneNumber = request.body.From; + log('info' , `userInput= ${userInput}`); + log('info' , `phoneNumber= ${phoneNumber}`); + + const isANumber = str => { + return /\d+$/.test(str); + }; + + if (isANumber(userInput)) { // assume member id + smsProfile.findOne({phoneNumber}) + .then(foundProfile => { + if (!foundProfile) { + const meetupMemberId = userInput.match(/\d+$/)[0]; + const API_URL = `https://api.meetup.com/groups?member_id=${meetupMemberId}&key=${process.env.API_KEY}`; + const API_GET_MEMBER_PROFILE = `https://api.meetup.com/members/${meetupMemberId}?key=${process.env.API_KEY}&?fields=groups?%22`; + return superagent.get(API_URL) + .then(response => { + return response.body; + }) + .then(meetupObject => { + return superagent.get(API_GET_MEMBER_PROFILE) + .then(memberAccount => { + meetupObject.name = memberAccount.body.name; + return meetupObject; + }) + .then(newMeetupObject => { + const results = newMeetupObject.results; + const groups = []; + + results.forEach(result => { + groups.push(result.group_urlname); + }); + + return new smsProfile ({ + meetupMemberId, + meetupMemberName: newMeetupObject.name, + phoneNumber, + meetups: groups, + }).save() + .then(() => { + twiml.message(` +Congratulations, ${newMeetupObject.name}! +You are all signed up for meetup notifications with #${phoneNumber}! +You will receive a text notification 24 hours before any of your upcoming meetup events. +Here's a list of commands, text: +'my groups' - to see a list of your meetup groups +'update me' - to get upcoming events +'stop' - to opt out of text notifications`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + }) + .catch(next); + }) + .catch(next); + }); + + } else { + twiml.message(` +Thanks, ${foundProfile.meetupMemberName}! +You are already signed up +Here's a list of commands: +'my groups' - to see a list of your meetup groups +'update me' - to get upcoming events +'stop' - to opt out of text notifications`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + } + }); + + } else if (userInput === 'update me') { + const ONE_WEEK = 604800000; + smsProfile.find({phoneNumber}) + .then(smsProfile => { + if (smsProfile.length === 0) { + twiml.message(` +We are unable to send you an update, please first create an account by sending a text message reply with your meetup user ID: +example: 123456789 +which can be found at https://www.meetup.com/account/`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + } + + if (!smsProfile[0].meetups[0]) { + twiml.message(`No Meetups listed with your account`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + } + return smsProfile[0].meetups.forEach(each => { + superagent.get(`https://api.meetup.com/${each}/events?key=${process.env.API_KEY}`) + .then(response => { + return response.body; + }) + .then(eventsArray => { + let aWeeksTime = Date.now() + ONE_WEEK; + let filteredEvents = eventsArray.filter(event => { + return event.time < aWeeksTime; + }); + return filteredEvents.reduce((acc, each) => { + return `${acc}${each.group.name}: ${each.name}\n${new Date(each.time).toString().match(/\D+ \d+ \d+/)[0]}\n@${each.local_time}\n\n`; + }, ''); + }) + .then(filteredEvents => { + if (filteredEvents.length === 0) { + sms.sendMessage(`There are no upcoming events this week for ${each}`, phoneNumber); + return; + } + sms.sendMessage(filteredEvents, phoneNumber); + return; + }) + .catch(next); + }); + }) + .then(() => { + response.end(); + }) + .catch(next); + + } else if (userInput === 'my groups') { + smsProfile.find({phoneNumber}) + .then(foundSMSProfile => { + if (foundSMSProfile.length === 0) { + twiml.message(` +We are unable to send your groups, please first create an account by sending a text message reply with your meetup user ID: +example: 123456789 +which can be found at https://www.meetup.com/account/`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + } + if (foundSMSProfile[0].meetups.length === 0) { + twiml.message(`You have no groups connected to your account`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + } + let message = foundSMSProfile[0].meetups.reduce((accumulator, eachMeetup) => { + return `${accumulator}${eachMeetup}\n\n`; + }, 'Your Groups:\n'); + twiml.message(message); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + }) + .catch(next); + + } else { + smsProfile.findOne({phoneNumber}) + .then(foundProfile => { + if (!foundProfile) { + twiml.message(` +Welcome to meetup-trendly notifications! +If you'd like to sign up, +please send a text message reply with your meetup user ID: +example: 123456789 +which can be found at https://www.meetup.com/account/`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + } else { + twiml.message(` +List of Commands: +'my groups' - to see a list of your meetup groups +'update me' - to get upcoming events +'stop' - to opt out of text notifications`); + response.writeHead(200, {'Content-Type': 'text/xml'}); + response.end(twiml.toString()); + return; + } + }) + .catch(next); + } +}); + +function logText(request) { + const text = request.body.Body; + const number = request.body.From; + log('verbose', `From: ${number} Text= ${text}`); +} \ No newline at end of file From 6bfc9fd37be532296e01e219c39d34d5709515c9 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 20:37:19 -0800 Subject: [PATCH 02/26] initalizing front-end; --- lab-dalton/trendly-front-end/.babelrc | 4 + lab-dalton/trendly-front-end/.eslintignore | 5 + lab-dalton/trendly-front-end/.eslintrc.json | 39 + lab-dalton/trendly-front-end/.gitignore | 115 + .../trendly-front-end/package-lock.json | 9715 +++++++++++++++++ lab-dalton/trendly-front-end/package.json | 37 + .../trendly-front-end/webpack.config.js | 49 + 7 files changed, 9964 insertions(+) create mode 100644 lab-dalton/trendly-front-end/.babelrc create mode 100644 lab-dalton/trendly-front-end/.eslintignore create mode 100644 lab-dalton/trendly-front-end/.eslintrc.json create mode 100644 lab-dalton/trendly-front-end/.gitignore create mode 100644 lab-dalton/trendly-front-end/package-lock.json create mode 100644 lab-dalton/trendly-front-end/package.json create mode 100644 lab-dalton/trendly-front-end/webpack.config.js diff --git a/lab-dalton/trendly-front-end/.babelrc b/lab-dalton/trendly-front-end/.babelrc new file mode 100644 index 00000000..acfa5b24 --- /dev/null +++ b/lab-dalton/trendly-front-end/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["env", "react"], + "plugins": ["transform-object-rest-spread"] + } \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/.eslintignore b/lab-dalton/trendly-front-end/.eslintignore new file mode 100644 index 00000000..82ff623c --- /dev/null +++ b/lab-dalton/trendly-front-end/.eslintignore @@ -0,0 +1,5 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/.eslintrc.json b/lab-dalton/trendly-front-end/.eslintrc.json new file mode 100644 index 00000000..6b7944d9 --- /dev/null +++ b/lab-dalton/trendly-front-end/.eslintrc.json @@ -0,0 +1,39 @@ +{ + "env": { + "browser": true, + "node": true, + "commonjs": true, + "jest": true, + "es6": true + }, + "globals": { + "err": true, + "req": true, + "res": true, + "next": true, + "__API_URI__": false, + "__TITLE__": false, + "__DEBUG__": false + }, + "extends": ["eslint:recommended", "plugin:react/recommended"], + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 6, + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "module": true, + "jsx": true + } + }, + "rules": { + "no-console": "off", + "no-unused-vars": "off", + "indent": [ "error", 2, { "SwitchCase": 1 } ], + "react/prop-types": [0], + "quotes": ["error", "single", { "allowTemplateLiterals": true }], + "space-infix-ops": ["error", {"int32Hint": false}], + "comma-dangle": ["error", "always-multiline"], + "semi": [ "error", "always" ] + }, + "plugins": ["react"] + } \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/.gitignore b/lab-dalton/trendly-front-end/.gitignore new file mode 100644 index 00000000..ff5f13c9 --- /dev/null +++ b/lab-dalton/trendly-front-end/.gitignore @@ -0,0 +1,115 @@ +# Created by https://www.gitignore.io/api/node,macos,visualstudiocode + +db +build + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### VisualStudioCode ### +.vscode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +# End of https://www.gitignore.io/api/node,macos,visualstudiocode +© 2017 GitHub, Inc. +Terms +Privacy +Security +Status +Help +Contact GitHub +API +Training +Shop +Blog +About \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/package-lock.json b/lab-dalton/trendly-front-end/package-lock.json new file mode 100644 index 00000000..1eefb9f0 --- /dev/null +++ b/lab-dalton/trendly-front-end/package-lock.json @@ -0,0 +1,9715 @@ +{ + "name": "lab-dalton", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + } + } + }, + "adjust-sourcemap-loader": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz", + "integrity": "sha1-QS2SQE62HkETY1ASy6U6M9AI4OI=", + "requires": { + "assert": "1.4.1", + "camelcase": "1.2.1", + "loader-utils": "1.1.0", + "lodash.assign": "4.2.0", + "lodash.defaults": "3.1.2", + "object-path": "0.9.2", + "regex-parser": "2.2.8" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "requires": { + "lodash.assign": "3.2.0", + "lodash.restparam": "3.6.1" + }, + "dependencies": { + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } + } + } + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=" + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000794", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000794", + "electron-to-chromium": "1.3.31" + } + } + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "2.11.3", + "invariant": "2.2.2", + "semver": "5.5.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-preset-flow": "6.23.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.0", + "pascalcase": "0.1.1" + } + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.2", + "multicast-dns-service-types": "1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "1.0.6" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "requires": { + "caniuse-lite": "1.0.30000792", + "electron-to-chromium": "1.3.31" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "requires": { + "browserslist": "1.7.7", + "caniuse-db": "1.0.30000794", + "lodash.memoize": "4.1.2", + "lodash.uniq": "4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000794", + "electron-to-chromium": "1.3.31" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000794", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000794.tgz", + "integrity": "sha1-u+cRBPonfOSzYjh9VJBei4jlLzU=" + }, + "caniuse-lite": { + "version": "1.0.30000792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", + "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=" + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + }, + "dependencies": { + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + } + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "requires": { + "chalk": "1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "requires": { + "source-map": "0.5.7" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + }, + "clone-deep": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "3.2.2", + "shallow-clone": "0.1.2" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "requires": { + "q": "1.5.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "1.1.3" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "requires": { + "color": "0.11.4", + "css-color-names": "0.0.4", + "has": "1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "compressible": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", + "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", + "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "requires": { + "accepts": "1.3.4", + "bytes": "3.0.0", + "compressible": "2.0.12", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "4.1.1", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.3" + } + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "requires": { + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.3.1", + "urix": "0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-loader": { + "version": "0.28.9", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.9.tgz", + "integrity": "sha512-r3dgelMm/mkPz5Y7m9SeiGE46i2VsEU/OYbez+1llfxtv8b2y5/b5StaeEvPK3S5tlNQI+tDW/xDIhKJoZgDtw==", + "requires": { + "babel-code-frame": "6.26.0", + "css-selector-tokenizer": "0.7.0", + "cssnano": "3.10.0", + "icss-utils": "2.1.0", + "loader-utils": "1.1.0", + "lodash.camelcase": "4.3.0", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-modules-extract-imports": "1.2.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0", + "postcss-value-parser": "3.3.0", + "source-list-map": "2.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "1.0.0", + "css-what": "2.1.0", + "domutils": "1.5.1", + "nth-check": "1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "requires": { + "cssesc": "0.1.0", + "fastparse": "1.1.1", + "regexpu-core": "1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "6.7.7", + "decamelize": "1.2.0", + "defined": "1.0.0", + "has": "1.0.1", + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-calc": "5.3.1", + "postcss-colormin": "2.2.2", + "postcss-convert-values": "2.6.1", + "postcss-discard-comments": "2.0.4", + "postcss-discard-duplicates": "2.1.0", + "postcss-discard-empty": "2.1.0", + "postcss-discard-overridden": "0.1.1", + "postcss-discard-unused": "2.2.3", + "postcss-filter-plugins": "2.0.2", + "postcss-merge-idents": "2.1.7", + "postcss-merge-longhand": "2.0.2", + "postcss-merge-rules": "2.1.2", + "postcss-minify-font-values": "1.0.5", + "postcss-minify-gradients": "1.0.5", + "postcss-minify-params": "1.2.2", + "postcss-minify-selectors": "2.1.1", + "postcss-normalize-charset": "1.1.1", + "postcss-normalize-url": "3.0.8", + "postcss-ordered-values": "2.2.3", + "postcss-reduce-idents": "2.4.0", + "postcss-reduce-initial": "1.0.1", + "postcss-reduce-transforms": "1.0.4", + "postcss-svgo": "2.1.6", + "postcss-unique-selectors": "2.0.2", + "postcss-value-parser": "3.3.0", + "postcss-zindex": "2.2.0" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "1.2.3", + "source-map": "0.5.7" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "0.10.38" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz", + "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA==" + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "errno": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", + "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.38", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", + "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.16.0.tgz", + "integrity": "sha512-YVXV4bDhNoHHcv0qzU4Meof7/P26B4EuaktMi5L1Tnt52Aov85KmYA8c5D+xyZr/BkhvwUqr011jDSD/QTULxg==", + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.2", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.1.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "globals": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", + "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==" + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz", + "integrity": "sha512-YGSjB9Qu6QbVTroUZi66pYky3DfoIPLdHQ/wmrBGyBRnwxQsBXAov9j2rpXt/55i8nyMv6IRWJv2s4d4YnduzQ==", + "requires": { + "doctrine": "2.1.0", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "requires": { + "acorn": "5.3.0", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.38" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "requires": { + "original": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "requires": { + "async": "2.6.0", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0", + "webpack-sources": "1.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "requires": { + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + }, + "dependencies": { + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "minimatch": "3.0.4" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", + "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.9", + "commander": "2.12.2", + "he": "1.1.1", + "ncname": "1.0.0", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.8" + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "requires": { + "bluebird": "3.5.1", + "html-minifier": "3.5.8", + "loader-utils": "0.2.17", + "lodash": "4.17.4", + "pretty-error": "2.1.1", + "toposort": "1.0.6" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "requires": { + "domelementtype": "1.3.0" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=" + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "requires": { + "http-proxy": "1.16.2", + "is-glob": "3.1.0", + "lodash": "4.17.4", + "micromatch": "2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "6.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "requires": { + "meow": "3.7.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-my-json-valid": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "requires": { + "is-number": "3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "1.1.1" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "js-base64": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.2.tgz", + "integrity": "sha512-lLkz3IRPTNeATsKQGeltbzRK/5+bWsXBHfpZrxJAi4N30RtCtNA+rJznp4uR2+4OgkBsoeeFwONVLr4gzIVErQ==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "requires": { + "array-includes": "3.0.3" + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=" + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" + }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "requires": { + "pify": "3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "0.1.6", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "0.1.8", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.2.tgz", + "integrity": "sha512-xTO41ApiRHMVDBYhNL9bEhx7kRf1hq3OqPOnOy8bpTi0JZSxVPDre7ZRpTHLDlxmhf6d/FL+10E8VX1QRd+0DA==", + "requires": { + "dns-packet": "1.3.1", + "thunky": "0.1.0" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "ncname": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "requires": { + "xml-char-classes": "1.0.0" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "1.1.4" + } + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-forge": { + "version": "0.6.33", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", + "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=" + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "requires": { + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.4", + "request": "2.79.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "node-sass": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", + "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.0", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.8.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + } + }, + "obuf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "opn": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "requires": { + "is-wsl": "1.1.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + } + } + }, + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "requires": { + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.2.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "2.3.2" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.2", + "source-map": "0.5.7", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "requires": { + "postcss": "5.2.18", + "postcss-message-helpers": "2.0.0", + "reduce-css-calc": "1.3.0" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "requires": { + "colormin": "1.1.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "requires": { + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "requires": { + "postcss": "5.2.18", + "uniqid": "4.1.1" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "requires": { + "browserslist": "1.7.7", + "caniuse-api": "1.6.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3", + "vendors": "1.0.1" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "1.0.30000794", + "electron-to-chromium": "1.3.31" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "requires": { + "object-assign": "4.1.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "uniqs": "2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "requires": { + "alphanum-sort": "1.0.2", + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-selector-parser": "2.2.3" + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "requires": { + "postcss": "6.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "requires": { + "css-selector-tokenizer": "0.7.0", + "postcss": "6.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "postcss": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "requires": { + "chalk": "2.3.0", + "source-map": "0.6.1", + "supports-color": "5.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "requires": { + "is-absolute-url": "2.1.0", + "normalize-url": "1.9.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "requires": { + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "requires": { + "postcss": "5.2.18" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "1.0.2", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "requires": { + "is-svg": "2.1.0", + "postcss": "5.2.18", + "postcss-value-parser": "3.3.0", + "svgo": "0.7.2" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "requires": { + "alphanum-sort": "1.0.2", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "requires": { + "has": "1.0.1", + "postcss": "5.2.18", + "uniqs": "2.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } + }, + "react-dom": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", + "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "0.4.2", + "math-expression-evaluator": "1.2.17", + "reduce-function-call": "1.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "requires": { + "balanced-match": "0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "redux-devtools-extension": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.2.tgz", + "integrity": "sha1-4Pmo6N/KfBe+kscSSVijuU6ykR0=" + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "requires": { + "extend-shallow": "2.0.1" + } + }, + "regex-parser": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.8.tgz", + "integrity": "sha1-2kwM2lqChVkJQWiTD0VfUytv+6w=" + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + } + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "resolve-url-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.2.1.tgz", + "integrity": "sha512-ywToZt/yttp4qG/SiiGMLAgaGuSaWSujAaf3WCadXehvQLxIgKFmMOSegaoH9Laa70Ayl4kti0zCAqLR48H/Mw==", + "requires": { + "adjust-sourcemap-loader": "1.1.0", + "camelcase": "4.1.0", + "convert-source-map": "1.5.1", + "loader-utils": "1.1.0", + "lodash.defaults": "4.2.0", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.5.7", + "urix": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "requires": { + "convert-source-map": "0.3.5", + "css": "2.2.1" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "requires": { + "glob": "7.1.2", + "lodash": "4.17.4", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "sass-loader": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==", + "requires": { + "async": "2.6.0", + "clone-deep": "0.3.0", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "pify": "3.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "5.5.2" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "2.4.2", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", + "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "requires": { + "node-forge": "0.6.33" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "requires": { + "is-extendable": "0.1.1", + "kind-of": "2.0.1", + "lazy-cache": "0.2.7", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "2.16.3" + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "requires": { + "atob": "1.1.3", + "resolve-url": "0.2.1", + "source-map-url": "0.3.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.1", + "select-hose": "2.0.0", + "spdy-transport": "2.0.20" + } + }, + "spdy-transport": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "wbuf": "1.7.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "superagent": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "requires": { + "component-emitter": "1.2.1", + "cookiejar": "2.1.1", + "debug": "3.1.0", + "extend": "3.0.1", + "form-data": "2.3.1", + "formidable": "1.1.1", + "methods": "1.1.2", + "mime": "1.6.0", + "qs": "6.5.1", + "readable-stream": "2.3.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "requires": { + "coa": "1.0.4", + "colors": "1.1.2", + "csso": "2.3.2", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "sax": "1.2.4", + "whet.extend": "0.9.9" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "thunky": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=" + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=" + }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "requires": { + "setimmediate": "1.0.5" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "toposort": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", + "integrity": "sha1-wxdI5V0hDv/AD9zcfW5o19e7nOw=" + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "requires": { + "glob": "6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + } + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + }, + "uglify-js": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.8.tgz", + "integrity": "sha512-X0jAGtpSZRtd4RhbVNuGHyjZNa/h2MrVkKrR3Ew5iL2MJw6d7FmBke+fhVCALWySv1ygHnjjROG1KI1FAPvddw==", + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "requires": { + "macaddress": "0.2.8" + } + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + } + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "requires": { + "async": "2.6.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "wbuf": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "requires": { + "minimalistic-assert": "1.0.0" + } + }, + "webpack": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", + "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "requires": { + "acorn": "5.3.0", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.1.0", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.1.0", + "source-map": "0.5.7", + "supports-color": "4.5.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.1.0", + "yargs": "8.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + }, + "webpack-dev-server": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz", + "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==", + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.0", + "compression": "1.7.1", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.2.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.1.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "requires": { + "has-flag": "2.0.0" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "requires": { + "camelcase": "3.0.0" + } + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "requires": { + "string-width": "1.0.2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "requires": { + "mkdirp": "0.5.1" + } + }, + "xml-char-classes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + } + } +} diff --git a/lab-dalton/trendly-front-end/package.json b/lab-dalton/trendly-front-end/package.json new file mode 100644 index 00000000..b0067038 --- /dev/null +++ b/lab-dalton/trendly-front-end/package.json @@ -0,0 +1,37 @@ +{ + "name": "lab-dalton", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest -i --coverage", + "watch": "webpack-dev-server --inline --hot", + "build": "webpack" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "babel-core": "^6.26.0", + "babel-loader": "^7.1.2", + "babel-plugin-transform-object-rest-spread": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-preset-es2015": "^6.24.1", + "babel-preset-react": "^6.24.1", + "css-loader": "^0.28.9", + "eslint": "^4.16.0", + "eslint-plugin-react": "^7.5.1", + "extract-text-webpack-plugin": "^3.0.2", + "html-webpack-plugin": "^2.30.1", + "node-sass": "^4.7.2", + "react": "^16.2.0", + "react-dom": "^16.2.0", + "redux-devtools-extension": "^2.13.2", + "resolve-url-loader": "^2.2.1", + "sass-loader": "^6.0.6", + "superagent": "^3.8.2", + "uuid": "^3.2.1", + "webpack": "^3.10.0", + "webpack-dev-server": "^2.11.1" + } +} diff --git a/lab-dalton/trendly-front-end/webpack.config.js b/lab-dalton/trendly-front-end/webpack.config.js new file mode 100644 index 00000000..b9b7e2c1 --- /dev/null +++ b/lab-dalton/trendly-front-end/webpack.config.js @@ -0,0 +1,49 @@ +'use strict'; + +const HTMLPlugin = require('html-webpack-plugin'); +const ExtractTextPlugin = require('extract-text-webpack-plugin'); + +const webPackConfig = module.exports = {}; + +webPackConfig.entry = `${__dirname}/src/main.js`; +webPackConfig.output = { + filename : 'bundle.[hash].js', + path : `${__dirname}/build`, +}; + +webPackConfig.plugins = [ + new HTMLPlugin(), + new ExtractTextPlugin('bundle.[hash].css'), +]; + +webPackConfig.module = { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader', + }, + { + test: /\.scss$/, + loader: ExtractTextPlugin.extract({ + use: [ + 'css-loader', + 'resolve-url-loader', + { + loader: 'sass-loader', + options: { + sourceMap: true, + includePaths: [`${__dirname}/src/style`], + }, + }, + ], + }), + }, + ], +}; + +webPackConfig.devtool = 'eval-source-map'; + +webPackConfig.devServer = { + historyApiFallback: true, +}; \ No newline at end of file From 16bca81d2b7e2848f0c436b30d55abf137bc9e13 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 20:38:38 -0800 Subject: [PATCH 03/26] file creation --- lab-dalton/trendly-front-end/src/main.js | 0 lab-dalton/trendly-front-end/src/routes.js | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lab-dalton/trendly-front-end/src/main.js create mode 100644 lab-dalton/trendly-front-end/src/routes.js diff --git a/lab-dalton/trendly-front-end/src/main.js b/lab-dalton/trendly-front-end/src/main.js new file mode 100644 index 00000000..e69de29b diff --git a/lab-dalton/trendly-front-end/src/routes.js b/lab-dalton/trendly-front-end/src/routes.js new file mode 100644 index 00000000..e69de29b From 7fa6991fe8a5500503e6b96ef755a5cd8968d9a9 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 20:39:35 -0800 Subject: [PATCH 04/26] main.js --- lab-dalton/trendly-front-end/src/main.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lab-dalton/trendly-front-end/src/main.js b/lab-dalton/trendly-front-end/src/main.js index e69de29b..648a14e8 100644 --- a/lab-dalton/trendly-front-end/src/main.js +++ b/lab-dalton/trendly-front-end/src/main.js @@ -0,0 +1,22 @@ +import React from 'react' +import ReactDom from 'react-dom' +import {Provider} from 'react-redux' +import {createStore, applyMiddleware} from 'redux' + +import reducer from './reducer' +import App from './component/app' +import thunk from './lib/redux-thunk.js' +import reporter from './lib/redux-reporter.js' +import { composeWithDevTools } from 'redux-devtools-extension'; + +const store = createStore(reducer, composeWithDevTools( + applyMiddleware(thunk,reporter), +)) + +const container = document.createElement('div'); +document.body.appendChild(container); + +ReactDom.render( + + + ,container); \ No newline at end of file From 44b74785c0f0b52d41f85aa3423ac9844a5edb77 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 20:40:07 -0800 Subject: [PATCH 05/26] routes.js --- lab-dalton/trendly-front-end/src/routes.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lab-dalton/trendly-front-end/src/routes.js b/lab-dalton/trendly-front-end/src/routes.js index e69de29b..0fb7179f 100644 --- a/lab-dalton/trendly-front-end/src/routes.js +++ b/lab-dalton/trendly-front-end/src/routes.js @@ -0,0 +1,4 @@ +export const LOGIN_ROUTE = '/login'; +export const SIGNUP_ROUTE = '/signup'; +export const ROOT_ROUTE = '/'; +export const DASHBOARD_ROUTE = '/dashboard'; \ No newline at end of file From 20c9549122b81d16d648ca45f37e80d2ce23c309 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 20:59:57 -0800 Subject: [PATCH 06/26] app index --- .../src/component/app/index.js | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/app/index.js diff --git a/lab-dalton/trendly-front-end/src/component/app/index.js b/lab-dalton/trendly-front-end/src/component/app/index.js new file mode 100644 index 00000000..8e7ee943 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/app/index.js @@ -0,0 +1,25 @@ +import React from 'react'; +import {connect} from 'redux-react'; +import {BrowserRouter, Route} from 'react-router-dom'; + +import Landing from '../landing'; +import Dashboard from '../dashboard'; +import AuthRedirect from '../auth-redirect'; + +class App extends React.Component { + render() { + return( +

+ +
+ + + + + +
+
+
+ ); + } +} \ No newline at end of file From 297ad9a3d52e9217761d159ca396d1c0624d093f Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:07:30 -0800 Subject: [PATCH 07/26] dashboard --- .../src/component/dashboard/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/dashboard/index.js diff --git a/lab-dalton/trendly-front-end/src/component/dashboard/index.js b/lab-dalton/trendly-front-end/src/component/dashboard/index.js new file mode 100644 index 00000000..23fc5197 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/dashboard/index.js @@ -0,0 +1,13 @@ +import React from 'react'; + +class Dashboard extends React.Component { + render(){ + return ( +
+

Hello from Dashboard

+
+ ); + } +} + +export default Dashboard; \ No newline at end of file From 986ffe41e841747ede580523c0a244775282b2df Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:25:50 -0800 Subject: [PATCH 08/26] landing --- .../src/component/landing/index.js | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/landing/index.js diff --git a/lab-dalton/trendly-front-end/src/component/landing/index.js b/lab-dalton/trendly-front-end/src/component/landing/index.js new file mode 100644 index 00000000..cbe693a2 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/landing/index.js @@ -0,0 +1,80 @@ +import React from 'react'; +import {Link} from 'react-router-dom'; +import {connect} from 'react-redux'; + +import AuthForm from '../auth-form'; +import * as authActions from '../../action/auth'; + +import * as routes from '../../routes'; + +class Landing extends React.Component{ + constructor(props){ + super(props); + + let memberFunctions = Object.getOwnPropertyNames(Landing.prototype); + for(let functionName of memberFunctions){ + if(functionName.startsWith('handle')){ + this[functionName] = this[functionName].bind(this); + } + } + } + + handleLogin(user){ + this.props.doLogin(user) + .then(() => { + this.props.history.push(routes.DASHBOARD_ROUTE); + + }) + .catch(console.error); + } + handleSignup(user){ + this.props.doSignup(user) + .then(() => { + this.props.history.push(routes.DASHBOARD_ROUTE); + }) + .catch(console.error); + } + + + render(){ + let {location} = this.props; + + let rootJSX = +
+

welcome

+ signup + login +
; + + let signUpJSX = +
+

signup

+ +

already have an account?

+ login +
; + + let loginJSX = +
+

login

+ +

Don't have an account?

+ signup +
; + return( +
+ {location.pathname === routes.ROOT_ROUTE ? rootJSX : undefined} + {location.pathname === routes.SIGNUP_ROUTE ? signUpJSX : undefined} + {location.pathname === routes.LOGIN_ROUTE ? loginJSX : undefined} +
+ ); + } +} +const mapStateToProps = (state) => ({ + token : state.token, +}); +const mapDispatchToProps = (dispatch) => ({ + doSignup : (user) => dispatch(authActions.signupAction(user)), + doLogin : (user) => dispatch(authActions.loginAction(user)), +}); +export default connect(mapStateToProps,mapDispatchToProps)(Landing); \ No newline at end of file From 1a505f26d214134eea3f2b8a24af5b08ea43a1cf Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:32:04 -0800 Subject: [PATCH 09/26] auth form --- .../src/component/auth-form/index.js | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/auth-form/index.js diff --git a/lab-dalton/trendly-front-end/src/component/auth-form/index.js b/lab-dalton/trendly-front-end/src/component/auth-form/index.js new file mode 100644 index 00000000..e8dad3de --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/auth-form/index.js @@ -0,0 +1,84 @@ +import React from 'react'; + +let emptyState = { + username: '', + email: '', + password: '', +}; + +class AuthForm extends React.Component { + constructor(props){ + super(props); + this.state = emptyState; + //------------------------------------------------------------- + // Binding Handlers + //------------------------------------------------------------- + let memberFunctions = Object.getOwnPropertyNames(AuthForm.prototype); + for(let functionName of memberFunctions){ + if(functionName.startsWith('handle')){ + this[functionName] = this[functionName].bind(this); + } + } + //------------------------------------------------------------- + } + //--------------------------------------------------------------- + // Member Functions + //--------------------------------------------------------------- + handleChange(e){ + let {name, value} = e.target; + this.setState({[name]: value}); + } + + handleSubmit(e){ + e.preventDefault(); + this.props.onComplete(this.state); + this.setState(emptyState); + } + //--------------------------------------------------------------- + // Life-cycle Hooks + //--------------------------------------------------------------- + + render(){ + let { type } = this.props; + + type = type === 'login' ? type : 'signup'; + + let signupJSX = + ; + + let signupRenderedJSX = (type !== 'login') ? signupJSX : undefined; + + return ( +
+ + + + {signupRenderedJSX} + + + + +
+ ); + } +} + +export default AuthForm; \ No newline at end of file From 0a38db714ad7ffe41bb9c717ff4b97f0f28f41d6 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:32:45 -0800 Subject: [PATCH 10/26] redirect --- .../src/component/auth-redirect/index.js | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/auth-redirect/index.js diff --git a/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js b/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js new file mode 100644 index 00000000..ace90060 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js @@ -0,0 +1,36 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import {Redirect} from 'react-router-dom'; +import * as routes from '../../routes'; + +class AuthRedirect extends React.Component { + render(){ + // vinicio - location and history comes from props directly + // token comes from the store + let {location,history,token} = this.props; + let {pathname} = location; + let destinationRoute = null; + + if(pathname === routes.LOGIN_ROUTE || pathname === routes.SIGNUP_ROUTE || pathname === routes.ROOT_ROUTE){ + if(token){ + // vinicio - optional GET request + destinationRoute = routes.DASHBOARD_ROUTE; + } + } + else{ // vinicio - any other route + if(!token) + destinationRoute = routes.ROOT_ROUTE; + } + return( +
+ { destinationRoute ? : undefined } +
+ ); + } +} + +const mapStateToProps = state => ({ + token : state.token, +}); + +export default connect(mapStateToProps)(AuthRedirect); \ No newline at end of file From b296d8ebdd4840c5588033a38c44a1225ee9ff43 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:35:36 -0800 Subject: [PATCH 11/26] redux stuff --- .../trendly-front-end/src/lib/redux-reporter.js | 12 ++++++++++++ .../trendly-front-end/src/lib/redux-session.js | 9 +++++++++ lab-dalton/trendly-front-end/src/lib/redux-thunk.js | 2 ++ 3 files changed, 23 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/lib/redux-reporter.js create mode 100644 lab-dalton/trendly-front-end/src/lib/redux-session.js create mode 100644 lab-dalton/trendly-front-end/src/lib/redux-thunk.js diff --git a/lab-dalton/trendly-front-end/src/lib/redux-reporter.js b/lab-dalton/trendly-front-end/src/lib/redux-reporter.js new file mode 100644 index 00000000..52623e9e --- /dev/null +++ b/lab-dalton/trendly-front-end/src/lib/redux-reporter.js @@ -0,0 +1,12 @@ +export default store => next => action => { + try{ + console.log('__ACTION__',action); + let result = next(action); //vinicio - this line updates the store + console.log('__STATE__',store.getState()); + return result; + }catch(error){ + console.log('__ERROR__', error); + action.error = error; + return action; + } +}; \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/lib/redux-session.js b/lab-dalton/trendly-front-end/src/lib/redux-session.js new file mode 100644 index 00000000..fe4b0ab1 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/lib/redux-session.js @@ -0,0 +1,9 @@ +export default store => next => action => { + let result = next(action);// vinicio - making sure the chain completes + let state = store.getState(); // vinicio - getting the final state + + for(let key in state){ + localStorage[key] = JSON.stringify(state[key]); + } + return result; +}; \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/lib/redux-thunk.js b/lab-dalton/trendly-front-end/src/lib/redux-thunk.js new file mode 100644 index 00000000..abd9a6be --- /dev/null +++ b/lab-dalton/trendly-front-end/src/lib/redux-thunk.js @@ -0,0 +1,2 @@ +export default store => next => action => + typeof action === 'function' ? action(store) : next(action); \ No newline at end of file From 04edb5ec446bce705dc9e42a3b9d917c2fd8407b Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:37:23 -0800 Subject: [PATCH 12/26] reducer --- lab-dalton/trendly-front-end/src/reducer/index.js | 3 +++ lab-dalton/trendly-front-end/src/reducer/token.js | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/reducer/index.js create mode 100644 lab-dalton/trendly-front-end/src/reducer/token.js diff --git a/lab-dalton/trendly-front-end/src/reducer/index.js b/lab-dalton/trendly-front-end/src/reducer/index.js new file mode 100644 index 00000000..27f16de5 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/reducer/index.js @@ -0,0 +1,3 @@ +import {combineReducers} from 'redux'; +import token from './token.js'; +export default combineReducers({token}); \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/reducer/token.js b/lab-dalton/trendly-front-end/src/reducer/token.js new file mode 100644 index 00000000..12611b09 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/reducer/token.js @@ -0,0 +1,13 @@ + +let initialState = null; + +export default (state=initialState, {type, payload}) => { + switch(type){ + case 'TOKEN_SET': + return payload; + case 'TOKEN_REMOVE': + return null; + default: + return state; + } +} \ No newline at end of file From 96854b03dba37a1693e94d5cd13c1c8be46c25cf Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:38:35 -0800 Subject: [PATCH 13/26] everything coming together --- .../trendly-front-end/src/action/auth.js | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/action/auth.js diff --git a/lab-dalton/trendly-front-end/src/action/auth.js b/lab-dalton/trendly-front-end/src/action/auth.js new file mode 100644 index 00000000..a0293b20 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/action/auth.js @@ -0,0 +1,37 @@ +import superagent from 'superagent'; +import * as routes from '../routes'; + +//---------------------------------------------- +// SYNC +//---------------------------------------------- +export const setTokenAction = (token) => ({ + type : 'TOKEN_SET', + payload : token, +}); + +export const removeTokenAction = () => ({ + type : 'TOKEN_REMOVE', +}); + +//---------------------------------------------- +// ASYNC +//---------------------------------------------- +export const signupAction = (user) => (store) => { + return superagent.post(`${__API_URL__}${routes.SIGNUP_ROUTE}`) + .send(user) + .withCredentials() + .then(response => { + console.log({response}); + return store.dispatch(setTokenAction(response.text)); + }); +}; + +export const loginAction = (user) => (store) => { + return superagent.get(`${__API_URL__}${routes.LOGIN_ROUTE}`) + .auth(user.username,user.password) + .withCredentials() + .then(response => { + console.log({response}); + return store.dispatch(setTokenAction(response.text)); + }); +}; \ No newline at end of file From 1f48722159eba0415b9c3da854db62c7030eade2 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Wed, 24 Jan 2018 21:47:49 -0800 Subject: [PATCH 14/26] didnt export app component, working now --- lab-dalton/trendly-front-end/README.md | 244 ++++++++++++++++++ .../trendly-front-end/package-lock.json | 106 ++++++++ lab-dalton/trendly-front-end/package.json | 3 + .../src/component/app/index.js | 6 +- 4 files changed, 357 insertions(+), 2 deletions(-) create mode 100644 lab-dalton/trendly-front-end/README.md diff --git a/lab-dalton/trendly-front-end/README.md b/lab-dalton/trendly-front-end/README.md new file mode 100644 index 00000000..0ad2ee34 --- /dev/null +++ b/lab-dalton/trendly-front-end/README.md @@ -0,0 +1,244 @@ + +``` +.___________..______ _______ .__ __. _______ __ ____ ____ +| || _ \ | ____|| \ | | | \ | | \ \ / / +`---| |----`| |_) | | |__ | \| | | .--. || | \ \/ / + | | | / | __| | . ` | | | | || | \_ _/ + | | | |\ \----.| |____ | |\ | | '--' || `----. | | + |__| | _| `._____||_______||__| \__| |_______/ |_______| |__| + +``` + + +## Code Fellows: Seattle 401 JavaScript - 401d19 + +### Authors: + Cameron Moorehead, Catherine Looper, Dalton Carr, Matt LeBlanc + +--- +### Motivation + +Trendly is a RESTful API that connects users via (Short Message Service) SMS to Meetup (`https://www.meetup.com/`). This app allows users to sign up with their Meetup User ID via text message. Once signed up, users will automatically receive a text notification 24 hours before any of their upcoming meetup events. With the Trendly application, users no longer need to worry about missing a Meetup event as text notifications will keep users up to date on all of their Meetup groups. + +Trendly is built with a (Hypertext Transfer Protocol) HTTP server and basic and bearer authentication using Express. This server handles POST and GET requests/responses. This API uses MongoDB and Mongoose to write data to a db directory for persistence. This app is using Travis CI for continuous integration, and Heroku for deployment. + +--- + +### How to use? + +#### To sign up for Twilio Meetup SMS notifications: + +* Send a text message to `+1 (206) 565-1148` with your Meetup User ID in the following format: `123456789` +* If you do not know your Meetup User ID, you can find it by visiting: https://www.meetup.com/account/ + +#### To use the Twilio Meetup SMS interface, you can issue the following commands: + +* Send a text message to `+1 (206) 565-1148` with the command: `'my groups'` to see a list of your Meetup groups. +* Send a text message to `+1 (206) 565-1148` with the command: `'update me'` to be notified of any events that your Meetup groups are having during the next week. +* Send a text message to `+1 (206) 565-1148` with the command: `'stop'` to opt out of text notifications. + +--- +### Developer Tools: + +* Step 1. Fork and Clone the Repository. +* Step 2. `npm install`. +* Step 3. touch a .env file and add the following environment variables: +``` + PORT=3000 + MONGODB_URI=mongodb://localhost/testing + CLOUD_SALT='AddYourOwnSecretKey' + API_KEY=AddYourOwnMeetupAPIKey + TWILIO_ACCOUNT_SID=AddYourOwnTwilioAccountSecretID + TWILIO_AUTH_TOKEN=AddYourOwnTwilioAuthToken + TWILIO_NUMBER=AddYourOwnTwilioNumber +``` +* Step 4. start MongoDB by calling `npm run dbon`. +* Step 5. to test the API, open a second terminal window and run the command `npm run test`. +* Step 6. If you would like to start the server, you can run the command `npm run start`. + +### If you would like to contribute: + +* PR: If you would like to contribute to the Repo, please open a Pull Request and we will review it +* Bug Reporting: If you find a bug - please report it by opening up an issue in this git repository. + +--- +### Build + +![Trendly FlowChart](./assets/Trendly-flowchart.png) + +#### `Staging` : [![Build Status](https://travis-ci.org/Meetup-Trendly/trendly-server.svg?branch=staging)](https://travis-ci.org/Meetup-Trendly/trendly-server) + +#### `Master` : [![Build Status](https://travis-ci.org/Meetup-Trendly/trendly-server.svg?branch=master)](https://travis-ci.org/Meetup-Trendly/trendly-server) + +--- +#### Server Module + +The server module is creating an http server, defining server-on behavior and exporting an interface for starting and stopping the server. The server module exports an object containing start and stop methods. + +The server module requires in express, mongoose, logger, fs-extra, dotenv, logger-middleware, error-middleware, account-router.js, profile-router.js and the sms-profile-router.js file. The server.start and stop methods return a new Promise with resolve and reject parameters. The start method contains an app.listen function that listens for the server start. The server.stop method has an httpServer.close function that turns the server off by setting the isServerOn variable to false. + +##### Scheduler Module + +The `scheduler.js` file requires in node-schedule, the sms-profile model, superagent, the sms.js file, and the winston logger file. Inside of this module. There is a method called `runEventsNextDay()` which sends out an sms notification at noon, if the user has any events coming up within the next 24 hours. The file also contains a method called `runUpdateAllGroups()` which checks the meetup api everyday at 9am for updates on every user's meetup groups, if a user has joined a new meetup group recently it will be added to the notification list. + +##### SMS Module +The `sms.js` file requires in the twilio accountSID and authToken environment variables, as well as twilio. This module contains a method called `sendMessage()` which accepts a specified message and phoneNumber and creates the message we want to send back to the user. + +#### Route Module + +##### `account-router.js` + +`account-router.js` requires in the Router object from express, the jsonParser(body-parser), http-errors, the account.js model, and basic-auth-middleware.js. Inside the module, there is a function declared for `accountRouter.get` with the route `/login`. There is a function declared for `authRouter.post` with the route `/signup`. If a username, email, or password are not provided, then the user will receive a 400 error notifying them that those pieces of information are required. Otherwise, if all pieces of information are provided - then the method `createToken()` is called to send a response with the token. If all information is provided, then the `Account.create()` method is called and will create an account with a username, email and password. + +##### `profile-router.js` + +`profile-router.js` requires in the Router object from express, the jsonParser(body-parser), http-errors, the profile.js model, superagent, and bearer-auth-middleware.js. Inside the module, there is a function declared for `profileRouter.post` with the route `/profiles` and a `profileRouter.get` method with the route `/profiles/:id`. These routes handle posting a profile and retrieving a profile based on its id. + +##### `sms-profile-router.js` + +`sms-profile-router.js` requires in the Router object from express, body-parser, http-errors, superagent, the logger.js file, twilio, the sms model and the sms-profile model. Inside the module, there is a function declared for `smsProfileRouter.post` with the route `/sms-profile`. This method handles the Twilio SMS correspondence between users and the Twilio API. + + +#### Model Module + +##### `account.js` + +`account.js` requires in mongoose, crypto (which generates random strings), bcrypt (for hash passwords), http-errors, and jsonwebtoken. The account model includes the parameters: passwordHash, email, username, tokenSeed, and dateCreated. The account model has the methods: `accountSchema.methods.verifyPassword()` and `accountSchema.methods.createToken()` which are for authentication and token creation. There is also an `Account.create()` method with the parameters: username, email, and password that actually creates the account. + +##### `profile.js` + +`profile.js` requires in mongoose. The profile model includes the parameters: meetupMemberId, name, phoneNumber, account, and meetups. The profileSchema is being exported from the file. This model has a one to one relationship with the account.js model. + + +##### `sms-profile.js` + +`sms-profile.js` requires in mongoose. The sms profile model includes the parameters: meetupMemberId, meetupMemberName, phoneNumber, and meetups. The smsProfileSchema is being exported from the file. + + +#### Test Module + +Contains a `lib/` directory with the files: `setup.js`, `account-mock-factory.js`, and `profile-mock-factory.js`. These files assist in the tests by setting up the environment variables and mock objects to test. + +* `POST` - tests for status codes: + * `200` - successful post request + * `400` - if an incomplete post request is sent + * `401`/`404 ` - if unauthorized request + * `409` - if keys are unique + +* `GET` - tests for status codes: + * `200` - successful post request + * `400` - if an incomplete post request is sent + * `401`/`404 ` - if unauthorized request + * `409` - if keys are unique + + +#### Middleware + +##### `basic-auth-middleware.js` + +The basic auth middleware sets up the authentication for username/password verification. + +##### `bearer-auth-middleware.js` + +The bearer auth middleware handles the error checking for the authorization. It checks that the token is authorized. + +##### `error-middleware.js` + +The error-middleware module handles error messages for a variety of different use cases, including HTTP errors and MONGODB errors. + +* HTTP errors include the following logs: + + ``` + log('info','__ERROR_MIDDLEWARE__'); + log('info',error); + + if(error.status){ + log('info',Responding with a ${error.status} status and message: ${error.message}); + return response.sendStatus(error.status); + } + ``` +* MONGODB errors include the following logs: + +``` + if(message.includes('validation failed')) { + log('info','Responding with a 400 status code'); + return response.sendStatus(400); + } + + if(message.includes('duplicate key')) { + log('info','Responding with a 409 status code'); + return response.sendStatus(409); + } + + if(message.includes('objectid failed')) { + log('info','Responding with a 404 status code'); + return response.sendStatus(404); + } + + if(message.includes('unauthorized')) { + log('info','Responding with a 401 status code'); + return response.sendStatus(401); + } +``` + +* If there is an error that doesn't match the above, then: + +``` + log('info', 'Responding with a 500 status code'); + log('info', error); + return response.sendStatus(500); +``` + +##### `logger-middleware.js` + +The logger-middleware module logs the request method processes and request urls and returns next to continue on in the promise chain. + +--- +### Limitations + +This app is developed with a backend only - future versions of this app will include a user interface with signup/login capabilities. + +--- + +### Code Style + +Standard JavaScript with ES6 + +--- + +### Tech/Framework used + +* JavaScript / ES6 +* Node.js +* Jest +* Eslint +* Superagent +* Mongoose +* Winston +* Express +* Dotenv +* Body-Parser +* http-errors +* bcrypt +* crypto +* jsonwebtoken +* fs-extra +* multer +* node-schedule + +--- + +### Credits + +* Code Fellows +* Heroku - for deployment +* Meetup - for api reference +* Travis.ci - for continuous integration +* MongoDB - for persistence +* Twilio - for sms interface + +--- + +### License + +MIT © Trendly \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/package-lock.json b/lab-dalton/trendly-front-end/package-lock.json index 1eefb9f0..b4b61923 100644 --- a/lab-dalton/trendly-front-end/package-lock.json +++ b/lab-dalton/trendly-front-end/package-lock.json @@ -4156,6 +4156,18 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" }, + "history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "requires": { + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "resolve-pathname": "2.2.0", + "value-equal": "0.4.0", + "warning": "3.0.0" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -4171,6 +4183,11 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, + "hoist-non-react-statics": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", + "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" + }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -5114,6 +5131,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, + "lodash-es": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", + "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" + }, "lodash._baseassign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", @@ -7016,6 +7038,56 @@ "prop-types": "15.6.0" } }, + "react-redux": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.6.tgz", + "integrity": "sha512-8taaaGu+J7PMJQDJrk/xiWEYQmdo3mkXw6wPr3K3LxvXis3Fymiq7c13S+Tpls/AyNUAsoONkU81AP0RA6y6Vw==", + "requires": { + "hoist-non-react-statics": "2.3.1", + "invariant": "2.2.2", + "lodash": "4.17.4", + "lodash-es": "4.17.4", + "loose-envify": "1.3.1", + "prop-types": "15.6.0" + } + }, + "react-router": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", + "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", + "requires": { + "history": "4.7.2", + "hoist-non-react-statics": "2.3.1", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "path-to-regexp": "1.7.0", + "prop-types": "15.6.0", + "warning": "3.0.0" + }, + "dependencies": { + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", + "requires": { + "history": "4.7.2", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "prop-types": "15.6.0", + "react-router": "4.2.0", + "warning": "3.0.0" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -7146,6 +7218,17 @@ } } }, + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "4.17.4", + "lodash-es": "4.17.4", + "loose-envify": "1.3.1", + "symbol-observable": "1.1.0" + } + }, "redux-devtools-extension": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.2.tgz", @@ -7340,6 +7423,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -8345,6 +8433,11 @@ "whet.extend": "0.9.9" } }, + "symbol-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz", + "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw==" + }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -8993,6 +9086,11 @@ "spdx-expression-parse": "1.0.4" } }, + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -9028,6 +9126,14 @@ "indexof": "0.0.1" } }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "1.3.1" + } + }, "watchpack": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", diff --git a/lab-dalton/trendly-front-end/package.json b/lab-dalton/trendly-front-end/package.json index b0067038..755ccb8f 100644 --- a/lab-dalton/trendly-front-end/package.json +++ b/lab-dalton/trendly-front-end/package.json @@ -26,6 +26,9 @@ "node-sass": "^4.7.2", "react": "^16.2.0", "react-dom": "^16.2.0", + "react-redux": "^5.0.6", + "react-router-dom": "^4.2.2", + "redux": "^3.7.2", "redux-devtools-extension": "^2.13.2", "resolve-url-loader": "^2.2.1", "sass-loader": "^6.0.6", diff --git a/lab-dalton/trendly-front-end/src/component/app/index.js b/lab-dalton/trendly-front-end/src/component/app/index.js index 8e7ee943..32d7629d 100644 --- a/lab-dalton/trendly-front-end/src/component/app/index.js +++ b/lab-dalton/trendly-front-end/src/component/app/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import {connect} from 'redux-react'; +import {connect} from 'react-redux'; import {BrowserRouter, Route} from 'react-router-dom'; import Landing from '../landing'; @@ -22,4 +22,6 @@ class App extends React.Component { ); } -} \ No newline at end of file +} + +export default App; \ No newline at end of file From 07f92a899c2c4ab3b19456c82eac41b0af86aeb2 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Thu, 25 Jan 2018 09:10:01 -0800 Subject: [PATCH 15/26] done --- lab-dalton/trendly-front-end/src/action/auth.js | 12 ++++++------ .../src/component/auth-redirect/index.js | 10 +++++----- lab-dalton/trendly-front-end/src/reducer/token.js | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lab-dalton/trendly-front-end/src/action/auth.js b/lab-dalton/trendly-front-end/src/action/auth.js index a0293b20..c29c3f13 100644 --- a/lab-dalton/trendly-front-end/src/action/auth.js +++ b/lab-dalton/trendly-front-end/src/action/auth.js @@ -18,12 +18,12 @@ export const removeTokenAction = () => ({ //---------------------------------------------- export const signupAction = (user) => (store) => { return superagent.post(`${__API_URL__}${routes.SIGNUP_ROUTE}`) - .send(user) - .withCredentials() - .then(response => { - console.log({response}); - return store.dispatch(setTokenAction(response.text)); - }); + .send(user) + .withCredentials() + .then(response => { + console.log({response}); + return store.dispatch(setTokenAction(response.text)); + }); }; export const loginAction = (user) => (store) => { diff --git a/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js b/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js index ace90060..acc8da87 100644 --- a/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js +++ b/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js @@ -21,11 +21,11 @@ class AuthRedirect extends React.Component { if(!token) destinationRoute = routes.ROOT_ROUTE; } - return( -
- { destinationRoute ? : undefined } -
- ); + return( +
+ { destinationRoute ? : undefined } +
+ ); } } diff --git a/lab-dalton/trendly-front-end/src/reducer/token.js b/lab-dalton/trendly-front-end/src/reducer/token.js index 12611b09..d94cd0db 100644 --- a/lab-dalton/trendly-front-end/src/reducer/token.js +++ b/lab-dalton/trendly-front-end/src/reducer/token.js @@ -1,7 +1,7 @@ let initialState = null; -export default (state=initialState, {type, payload}) => { +export default (state = initialState, {type, payload}) => { switch(type){ case 'TOKEN_SET': return payload; @@ -10,4 +10,4 @@ export default (state=initialState, {type, payload}) => { default: return state; } -} \ No newline at end of file +}; \ No newline at end of file From 0f78f1a74e4d8e068c15cfdc5cf427d962367e01 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Thu, 25 Jan 2018 10:19:38 -0800 Subject: [PATCH 16/26] thought it was working but signup is having a 404 error --- lab-dalton/trendly-back-end/package-lock.json | 2037 ++++++++++++++--- lab-dalton/trendly-back-end/package.json | 1 + .../trendly-front-end/package-lock.json | 355 +++ lab-dalton/trendly-front-end/package.json | 6 + .../trendly-front-end/src/action/auth.js | 23 +- .../trendly-front-end/webpack.config.js | 35 +- 6 files changed, 2173 insertions(+), 284 deletions(-) diff --git a/lab-dalton/trendly-back-end/package-lock.json b/lab-dalton/trendly-back-end/package-lock.json index 58af2055..c76cf546 100644 --- a/lab-dalton/trendly-back-end/package-lock.json +++ b/lab-dalton/trendly-back-end/package-lock.json @@ -107,6 +107,14 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "2.1.1" + } + }, "ansi-escapes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", @@ -183,8 +191,12 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-equal": { "version": "1.0.0", @@ -239,6 +251,11 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -254,11 +271,21 @@ "lodash": "4.17.4" } }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=" + }, "aws-sdk": { "version": "2.176.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.176.0.tgz", @@ -560,6 +587,27 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.0", + "pascalcase": "0.1.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "base64-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", @@ -595,6 +643,11 @@ "tweetnacl": "0.14.5" } }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, "bindings": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", @@ -650,6 +703,27 @@ "hoek": "4.2.0" } }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", @@ -757,6 +831,29 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -779,6 +876,11 @@ "dev": true, "optional": true }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -799,7 +901,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", @@ -810,7 +911,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, "requires": { "color-convert": "1.9.1" } @@ -819,7 +919,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, "requires": { "has-flag": "2.0.0" } @@ -832,6 +931,254 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + } + } + }, "ci-info": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", @@ -844,6 +1191,88 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -890,11 +1319,19 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -902,8 +1339,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { "version": "1.0.3", @@ -938,6 +1374,19 @@ "typedarray": "0.0.6" } }, + "configstore": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", + "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.1.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -980,6 +1429,11 @@ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, "core-js": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", @@ -1000,6 +1454,14 @@ "vary": "1.1.2" } }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "1.0.0" + } + }, "cron-parser": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.4.3.tgz", @@ -1013,7 +1475,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", @@ -1048,6 +1509,11 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=" }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", @@ -1090,6 +1556,11 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", @@ -1119,6 +1590,14 @@ "object-keys": "1.0.11" } }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -1227,11 +1706,29 @@ "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", "dev": true }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "requires": { + "is-obj": "1.0.1" + } + }, "dotenv": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -1301,8 +1798,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.0", @@ -1438,6 +1934,20 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -1456,7 +1966,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -1562,6 +2071,14 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, "external-editor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", @@ -1718,8 +2235,7 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { "version": "0.1.5", @@ -1768,11 +2284,24 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" + }, "fs-extra": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", @@ -1792,7 +2321,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", - "dev": true, "optional": true, "requires": { "nan": "2.8.0", @@ -1802,13 +2330,11 @@ "abbrev": { "version": "1.1.0", "bundled": true, - "dev": true, "optional": true }, "ajv": { "version": "4.11.8", "bundled": true, - "dev": true, "optional": true, "requires": { "co": "4.6.0", @@ -1817,19 +2343,16 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "dev": true + "bundled": true }, "aproba": { "version": "1.1.1", "bundled": true, - "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", "bundled": true, - "dev": true, "optional": true, "requires": { "delegates": "1.0.0", @@ -1839,42 +2362,35 @@ "asn1": { "version": "0.2.3", "bundled": true, - "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", "bundled": true, - "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", "bundled": true, - "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", "bundled": true, - "dev": true, "optional": true }, "aws4": { "version": "1.6.0", "bundled": true, - "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", - "bundled": true, - "dev": true + "bundled": true }, "bcrypt-pbkdf": { "version": "1.0.1", "bundled": true, - "dev": true, "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -1883,7 +2399,6 @@ "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true, "requires": { "inherits": "2.0.3" } @@ -1891,7 +2406,6 @@ "boom": { "version": "2.10.1", "bundled": true, - "dev": true, "requires": { "hoek": "2.16.3" } @@ -1899,7 +2413,6 @@ "brace-expansion": { "version": "1.1.7", "bundled": true, - "dev": true, "requires": { "balanced-match": "0.4.2", "concat-map": "0.0.1" @@ -1907,53 +2420,44 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "caseless": { "version": "0.12.0", "bundled": true, - "dev": true, "optional": true }, "co": { "version": "4.6.0", "bundled": true, - "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "dev": true + "bundled": true }, "combined-stream": { "version": "1.0.5", "bundled": true, - "dev": true, "requires": { "delayed-stream": "1.0.0" } }, "concat-map": { "version": "0.0.1", - "bundled": true, - "dev": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "dev": true + "bundled": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true }, "cryptiles": { "version": "2.0.5", "bundled": true, - "dev": true, "requires": { "boom": "2.10.1" } @@ -1961,7 +2465,6 @@ "dashdash": { "version": "1.14.1", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0" @@ -1970,7 +2473,6 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } @@ -1978,7 +2480,6 @@ "debug": { "version": "2.6.8", "bundled": true, - "dev": true, "optional": true, "requires": { "ms": "2.0.0" @@ -1987,30 +2488,25 @@ "deep-extend": { "version": "0.4.2", "bundled": true, - "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "delegates": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, - "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -2019,24 +2515,20 @@ "extend": { "version": "3.0.1", "bundled": true, - "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true }, "forever-agent": { "version": "0.6.1", "bundled": true, - "dev": true, "optional": true }, "form-data": { "version": "2.1.4", "bundled": true, - "dev": true, "optional": true, "requires": { "asynckit": "0.4.0", @@ -2046,13 +2538,11 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "fstream": { "version": "1.0.11", "bundled": true, - "dev": true, "requires": { "graceful-fs": "4.1.11", "inherits": "2.0.3", @@ -2063,7 +2553,6 @@ "fstream-ignore": { "version": "1.0.5", "bundled": true, - "dev": true, "optional": true, "requires": { "fstream": "1.0.11", @@ -2074,7 +2563,6 @@ "gauge": { "version": "2.7.4", "bundled": true, - "dev": true, "optional": true, "requires": { "aproba": "1.1.1", @@ -2090,7 +2578,6 @@ "getpass": { "version": "0.1.7", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0" @@ -2099,7 +2586,6 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } @@ -2107,7 +2593,6 @@ "glob": { "version": "7.1.2", "bundled": true, - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -2119,19 +2604,16 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, - "dev": true + "bundled": true }, "har-schema": { "version": "1.0.5", "bundled": true, - "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", "bundled": true, - "dev": true, "optional": true, "requires": { "ajv": "4.11.8", @@ -2141,13 +2623,11 @@ "has-unicode": { "version": "2.0.1", "bundled": true, - "dev": true, "optional": true }, "hawk": { "version": "3.1.3", "bundled": true, - "dev": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -2157,13 +2637,11 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, - "dev": true + "bundled": true }, "http-signature": { "version": "1.1.1", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "0.2.0", @@ -2174,7 +2652,6 @@ "inflight": { "version": "1.0.6", "bundled": true, - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -2182,19 +2659,16 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "dev": true + "bundled": true }, "ini": { "version": "1.3.4", "bundled": true, - "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -2202,24 +2676,20 @@ "is-typedarray": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "isstream": { "version": "0.1.2", "bundled": true, - "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -2228,19 +2698,16 @@ "jsbn": { "version": "0.1.1", "bundled": true, - "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", "bundled": true, - "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", "bundled": true, - "dev": true, "optional": true, "requires": { "jsonify": "0.0.0" @@ -2249,19 +2716,16 @@ "json-stringify-safe": { "version": "5.0.1", "bundled": true, - "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", "bundled": true, - "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0", @@ -2273,20 +2737,17 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } }, "mime-db": { "version": "1.27.0", - "bundled": true, - "dev": true + "bundled": true }, "mime-types": { "version": "2.1.15", "bundled": true, - "dev": true, "requires": { "mime-db": "1.27.0" } @@ -2294,20 +2755,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "dev": true, "requires": { "brace-expansion": "1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "dev": true + "bundled": true }, "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true, "requires": { "minimist": "0.0.8" } @@ -2315,13 +2773,11 @@ "ms": { "version": "2.0.0", "bundled": true, - "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.39", "bundled": true, - "dev": true, "optional": true, "requires": { "detect-libc": "1.0.2", @@ -2340,7 +2796,6 @@ "nopt": { "version": "4.0.1", "bundled": true, - "dev": true, "optional": true, "requires": { "abbrev": "1.1.0", @@ -2350,7 +2805,6 @@ "npmlog": { "version": "4.1.0", "bundled": true, - "dev": true, "optional": true, "requires": { "are-we-there-yet": "1.1.4", @@ -2361,25 +2815,21 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "dev": true + "bundled": true }, "oauth-sign": { "version": "0.8.2", "bundled": true, - "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, - "dev": true, "optional": true }, "once": { "version": "1.4.0", "bundled": true, - "dev": true, "requires": { "wrappy": "1.0.2" } @@ -2387,19 +2837,16 @@ "os-homedir": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, "osenv": { "version": "0.1.4", "bundled": true, - "dev": true, "optional": true, "requires": { "os-homedir": "1.0.2", @@ -2408,36 +2855,30 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, - "dev": true + "bundled": true }, "performance-now": { "version": "0.2.0", "bundled": true, - "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", - "bundled": true, - "dev": true + "bundled": true }, "punycode": { "version": "1.4.1", "bundled": true, - "dev": true, "optional": true }, "qs": { "version": "6.4.0", "bundled": true, - "dev": true, "optional": true }, "rc": { "version": "1.2.1", "bundled": true, - "dev": true, "optional": true, "requires": { "deep-extend": "0.4.2", @@ -2449,7 +2890,6 @@ "minimist": { "version": "1.2.0", "bundled": true, - "dev": true, "optional": true } } @@ -2457,7 +2897,6 @@ "readable-stream": { "version": "2.2.9", "bundled": true, - "dev": true, "requires": { "buffer-shims": "1.0.0", "core-util-is": "1.0.2", @@ -2471,7 +2910,6 @@ "request": { "version": "2.81.0", "bundled": true, - "dev": true, "optional": true, "requires": { "aws-sign2": "0.6.0", @@ -2501,38 +2939,32 @@ "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.0.1", - "bundled": true, - "dev": true + "bundled": true }, "semver": { "version": "5.3.0", "bundled": true, - "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, - "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, - "dev": true, "optional": true }, "sntp": { "version": "1.0.9", "bundled": true, - "dev": true, "requires": { "hoek": "2.16.3" } @@ -2540,7 +2972,6 @@ "sshpk": { "version": "1.13.0", "bundled": true, - "dev": true, "optional": true, "requires": { "asn1": "0.2.3", @@ -2557,7 +2988,6 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } @@ -2565,7 +2995,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -2575,7 +3004,6 @@ "string_decoder": { "version": "1.0.1", "bundled": true, - "dev": true, "requires": { "safe-buffer": "5.0.1" } @@ -2583,13 +3011,11 @@ "stringstream": { "version": "0.0.5", "bundled": true, - "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -2597,13 +3023,11 @@ "strip-json-comments": { "version": "2.0.1", "bundled": true, - "dev": true, "optional": true }, "tar": { "version": "2.2.1", "bundled": true, - "dev": true, "requires": { "block-stream": "0.0.9", "fstream": "1.0.11", @@ -2613,7 +3037,6 @@ "tar-pack": { "version": "3.4.0", "bundled": true, - "dev": true, "optional": true, "requires": { "debug": "2.6.8", @@ -2629,7 +3052,6 @@ "tough-cookie": { "version": "2.3.2", "bundled": true, - "dev": true, "optional": true, "requires": { "punycode": "1.4.1" @@ -2638,7 +3060,6 @@ "tunnel-agent": { "version": "0.6.0", "bundled": true, - "dev": true, "optional": true, "requires": { "safe-buffer": "5.0.1" @@ -2647,30 +3068,25 @@ "tweetnacl": { "version": "0.14.5", "bundled": true, - "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", "bundled": true, - "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true }, "uuid": { "version": "3.0.1", "bundled": true, - "dev": true, "optional": true }, "verror": { "version": "1.3.6", "bundled": true, - "dev": true, "optional": true, "requires": { "extsprintf": "1.0.2" @@ -2679,7 +3095,6 @@ "wide-align": { "version": "1.1.2", "bundled": true, - "dev": true, "optional": true, "requires": { "string-width": "1.0.2" @@ -2687,8 +3102,7 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true } } }, @@ -2777,8 +3191,12 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, "getpass": { "version": "0.1.7", @@ -2820,6 +3238,14 @@ "is-glob": "2.0.1" } }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "1.3.5" + } + }, "globals": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", @@ -2840,6 +3266,24 @@ "pinkie-promise": "2.0.1" } }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -2915,14 +3359,67 @@ "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", @@ -3008,11 +3505,20 @@ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", "dev": true }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "inflight": { "version": "1.0.6", @@ -3075,17 +3581,39 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.11.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -3111,12 +3639,44 @@ "ci-info": "1.1.2" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -3135,8 +3695,7 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "1.0.0", @@ -3156,8 +3715,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { "version": "2.0.1", @@ -3168,6 +3726,15 @@ "is-extglob": "1.0.0" } }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, "is-nan": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz", @@ -3176,6 +3743,11 @@ "define-properties": "1.1.2" } }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -3185,30 +3757,67 @@ "kind-of": "3.2.2" } }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, - "is-path-in-cwd": { + "is-odd": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", "requires": { - "is-path-inside": "1.0.1" - } - }, - "is-path-inside": { + "is-number": "3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, "requires": { "path-is-inside": "1.0.2" } }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -3227,6 +3836,11 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -3242,11 +3856,15 @@ "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", "dev": true }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-symbol": { "version": "1.0.1", @@ -3278,8 +3896,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "2.1.0", @@ -3926,11 +4543,18 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "4.0.1" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -4068,16 +4692,35 @@ "js-tokens": "3.0.2" } }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, + "make-dir": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", + "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -4087,6 +4730,24 @@ "tmpl": "1.0.4" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4184,6 +4845,25 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -4323,9 +5003,43 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", - "dev": true, "optional": true }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -4381,6 +5095,22 @@ "sorted-array-functions": "1.1.0" } }, + "nodemon": { + "version": "1.14.11", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.14.11.tgz", + "integrity": "sha512-323uPopdzYcyDR2Ze1UOLF9zocwoQEyGPiKaLm/Y8Mbfjylt/YueAJUVHqox+vgG8TqZqZApcHv5lmUvrn/KQw==", + "requires": { + "chokidar": "2.0.0", + "debug": "3.1.0", + "ignore-by-default": "1.0.1", + "minimatch": "3.0.4", + "pstree.remy": "1.1.0", + "semver": "5.4.1", + "touch": "3.1.0", + "undefsafe": "2.0.1", + "update-notifier": "2.3.0" + } + }, "nopt": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", @@ -4406,7 +5136,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, "requires": { "remove-trailing-separator": "1.1.0" } @@ -4415,7 +5144,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { "path-key": "2.0.1" } @@ -4452,11 +5180,79 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + } + } + }, "object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -4477,6 +5273,21 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -4567,8 +5378,7 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { "version": "1.1.0", @@ -4585,6 +5395,17 @@ "p-limit": "1.1.0" } }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + } + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -4620,6 +5441,16 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -4634,14 +5465,12 @@ "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.5", @@ -4665,6 +5494,14 @@ "pinkie-promise": "2.0.1" } }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "requires": { + "through": "2.3.8" + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -4708,12 +5545,22 @@ "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", "integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=" }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -4773,11 +5620,26 @@ "ipaddr.js": "1.5.2" } }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "requires": { + "event-stream": "3.3.4" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "pstree.remy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", + "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", + "requires": { + "ps-tree": "1.1.0" + } }, "punycode": { "version": "1.4.1", @@ -4935,6 +5797,17 @@ "util-deprecate": "1.0.2" } }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, "realpath-native": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", @@ -4959,28 +5832,50 @@ "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "requires": { + "extend-shallow": "2.0.1" + } + }, "regexp-clone": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "requires": { + "rc": "1.2.2", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "1.2.2" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", @@ -5090,6 +5985,11 @@ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -5196,6 +6096,14 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "5.4.1" + } + }, "send": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", @@ -5242,6 +6150,30 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "requires": { + "to-object-path": "0.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -5251,7 +6183,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "1.0.0" } @@ -5259,8 +6190,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shellwords": { "version": "0.1.1", @@ -5304,63 +6234,223 @@ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.2.0" - } - }, - "sorted-array-functions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.1.0.tgz", - "integrity": "sha512-zq6fLdGQixb9VZfT/tLgU+LzoedJyTbcf1I/TKETFeUVoWIfcs5HNr+SJSvQJLXRlEZjB1gpILTrxamxAdCcgA==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", - "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", - "dev": true, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", "requires": { - "source-map": "0.6.1" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.0" + } + }, + "sorted-array-functions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.1.0.tgz", + "integrity": "sha512-zq6fLdGQixb9VZfT/tLgU+LzoedJyTbcf1I/TKETFeUVoWIfcs5HNr+SJSvQJLXRlEZjB1gpILTrxamxAdCcgA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-support": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", + "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", "dev": true }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "requires": { + "through": "2.3.8" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -5393,6 +6483,76 @@ "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -5404,6 +6564,14 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "requires": { + "duplexer": "0.1.1" + } + }, "streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", @@ -5423,7 +6591,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -5446,7 +6613,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "3.0.0" }, @@ -5454,8 +6620,7 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" } } }, @@ -5471,8 +6636,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { "version": "2.0.1", @@ -5557,6 +6721,14 @@ } } }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "0.7.0" + } + }, "test-exclude": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", @@ -5585,8 +6757,12 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "tmp": { "version": "0.0.33", @@ -5609,6 +6785,104 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "topo": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", @@ -5624,6 +6898,24 @@ } } }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1.1.1" + } + } + } + }, "tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", @@ -5776,6 +7068,56 @@ "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" }, + "undefsafe": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.1.tgz", + "integrity": "sha1-A7LyoWyUVW4Usu3vMmzWaq+CcHo=", + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "1.0.0" + } + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", @@ -5786,6 +7128,73 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "update-notifier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", + "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.0", + "configstore": "3.1.1", + "import-lazy": "2.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, "url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", @@ -5802,6 +7211,98 @@ } } }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "1.0.4" + } + }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "requires": { + "set-getter": "0.1.0" + } + } + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -5940,7 +7441,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, "requires": { "isexe": "2.0.0" } @@ -5987,6 +7487,14 @@ } } }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "requires": { + "string-width": "2.1.1" + } + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -6079,13 +7587,17 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "dev": true, "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", "signal-exit": "3.0.2" } }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", @@ -6123,8 +7635,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "10.0.3", diff --git a/lab-dalton/trendly-back-end/package.json b/lab-dalton/trendly-back-end/package.json index 10dfd844..2a78098c 100644 --- a/lab-dalton/trendly-back-end/package.json +++ b/lab-dalton/trendly-back-end/package.json @@ -39,6 +39,7 @@ "mongoose": "^5.0.0-rc0", "multer": "^1.3.0", "node-schedule": "^1.2.5", + "nodemon": "^1.14.11", "superagent": "^3.8.2", "twilio": "^3.11.0", "winston": "^2.4.0" diff --git a/lab-dalton/trendly-front-end/package-lock.json b/lab-dalton/trendly-front-end/package-lock.json index b4b61923..791a383e 100644 --- a/lab-dalton/trendly-front-end/package-lock.json +++ b/lab-dalton/trendly-front-end/package-lock.json @@ -4,6 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/node": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.3.0.tgz", + "integrity": "sha512-wNBfvNjzsJl4tswIZKXCFQY0lss9nKUyJnG6T94X/eqjRgI2jHZ4evdjhQYBSan/vGtF6XVXPApOmNH2rf0KKw==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1449,6 +1455,75 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-serializer": "0.1.0", + "entities": "1.1.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.4", + "parse5": "3.0.3" + }, + "dependencies": { + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -1567,6 +1642,15 @@ "source-map": "0.5.7" } }, + "clean-webpack-plugin": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.17.tgz", + "integrity": "sha512-Bts/V725v8Ijosp4K1cqppQXgXcrohxoMsg0CV2xL4y/vua1G5pAfHEW/eJIiKF+GNNG72mdjbipxMRFEms7yg==", + "dev": true, + "requires": { + "rimraf": "2.6.2" + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -2193,6 +2277,12 @@ "randombytes": "2.0.6" } }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -2281,6 +2371,12 @@ "domelementtype": "1.3.0" } }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2348,6 +2444,56 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, + "enzyme": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz", + "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==", + "dev": true, + "requires": { + "cheerio": "1.0.0-rc.2", + "function.prototype.name": "1.1.0", + "has": "1.0.1", + "is-boolean-object": "1.0.0", + "is-callable": "1.1.3", + "is-number-object": "1.0.3", + "is-string": "1.0.4", + "is-subset": "0.1.1", + "lodash": "4.17.4", + "object-inspect": "1.5.0", + "object-is": "1.0.1", + "object.assign": "4.1.0", + "object.entries": "1.0.4", + "object.values": "1.0.4", + "raf": "3.4.0", + "rst-selector-parser": "2.2.3" + } + }, + "enzyme-adapter-react-16": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz", + "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==", + "dev": true, + "requires": { + "enzyme-adapter-utils": "1.3.0", + "lodash": "4.17.4", + "object.assign": "4.1.0", + "object.values": "1.0.4", + "prop-types": "15.6.0", + "react-reconciler": "0.7.0", + "react-test-renderer": "16.2.0" + } + }, + "enzyme-adapter-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz", + "integrity": "sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA==", + "dev": true, + "requires": { + "lodash": "4.17.4", + "object.assign": "4.1.0", + "prop-types": "15.6.0" + } + }, "errno": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", @@ -3889,6 +4035,17 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", + "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "is-callable": "1.1.3" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -4071,6 +4228,12 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -4684,6 +4847,12 @@ "binary-extensions": "1.11.0" } }, + "is-boolean-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", + "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", + "dev": true + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -4805,6 +4974,12 @@ "kind-of": "3.2.2" } }, + "is-number-object": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", + "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", + "dev": true + }, "is-odd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", @@ -4895,6 +5070,18 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, "is-svg": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", @@ -5195,6 +5382,12 @@ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -5617,6 +5810,17 @@ "xml-char-classes": "1.0.0" } }, + "nearley": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.11.0.tgz", + "integrity": "sha512-clqqhEuP0ZCJQ85Xv2I/4o2Gs/fvSR6fCg5ZHVE2c8evWyNk2G++ih4JOO3lMb/k/09x6ihQ2nzKUlB/APCWjg==", + "dev": true, + "requires": { + "nomnom": "1.6.2", + "railroad-diagrams": "1.0.0", + "randexp": "0.4.6" + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -5756,6 +5960,24 @@ "true-case-path": "1.0.2" } }, + "nomnom": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", + "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", + "dev": true, + "requires": { + "colors": "0.5.1", + "underscore": "1.4.4" + }, + "dependencies": { + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", + "dev": true + } + } + }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -5899,6 +6121,18 @@ } } }, + "object-inspect": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.5.0.tgz", + "integrity": "sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, "object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", @@ -5917,6 +6151,30 @@ "isobject": "3.0.1" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" + } + }, + "object.entries": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", + "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1", + "has": "1.0.1" + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -5944,6 +6202,18 @@ "isobject": "3.0.1" } }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0", + "function-bind": "1.1.1", + "has": "1.0.1" + } + }, "obuf": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", @@ -6132,6 +6402,15 @@ "error-ex": "1.3.1" } }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "9.3.0" + } + }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -6206,6 +6485,12 @@ "sha.js": "2.4.10" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -6946,6 +7231,31 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "dev": true, + "requires": { + "performance-now": "2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "0.1.15" + } + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -7038,6 +7348,18 @@ "prop-types": "15.6.0" } }, + "react-reconciler": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", + "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==", + "dev": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } + }, "react-redux": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.6.tgz", @@ -7088,6 +7410,17 @@ "warning": "3.0.0" } }, + "react-test-renderer": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.2.0.tgz", + "integrity": "sha512-Kd4gJFtpNziR9ElOE/C23LeflKLZPRpNQYWP3nQBY43SJ5a+xyEGSeMrm2zxNKXcnCbBS/q1UpD9gqd5Dv+rew==", + "dev": true, + "requires": { + "fbjs": "0.8.16", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -7465,6 +7798,12 @@ "signal-exit": "3.0.2" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "rework": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", @@ -7511,6 +7850,16 @@ "inherits": "2.0.3" } }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "4.4.0", + "nearley": "2.11.0" + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -8833,6 +9182,12 @@ } } }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", + "dev": true + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", diff --git a/lab-dalton/trendly-front-end/package.json b/lab-dalton/trendly-front-end/package.json index 755ccb8f..c54355df 100644 --- a/lab-dalton/trendly-front-end/package.json +++ b/lab-dalton/trendly-front-end/package.json @@ -36,5 +36,11 @@ "uuid": "^3.2.1", "webpack": "^3.10.0", "webpack-dev-server": "^2.11.1" + }, + "devDependencies": { + "clean-webpack-plugin": "^0.1.17", + "dotenv": "^4.0.0", + "enzyme": "^3.3.0", + "enzyme-adapter-react-16": "^1.1.1" } } diff --git a/lab-dalton/trendly-front-end/src/action/auth.js b/lab-dalton/trendly-front-end/src/action/auth.js index c29c3f13..ae822d3c 100644 --- a/lab-dalton/trendly-front-end/src/action/auth.js +++ b/lab-dalton/trendly-front-end/src/action/auth.js @@ -1,37 +1,32 @@ import superagent from 'superagent'; import * as routes from '../routes'; -//---------------------------------------------- -// SYNC -//---------------------------------------------- +// Sync + export const setTokenAction = (token) => ({ - type : 'TOKEN_SET', - payload : token, + type: 'TOKEN_SET', + payload: token, }); export const removeTokenAction = () => ({ - type : 'TOKEN_REMOVE', + type: 'TOKEN_REMOVE', }); -//---------------------------------------------- -// ASYNC -//---------------------------------------------- +// Async + export const signupAction = (user) => (store) => { return superagent.post(`${__API_URL__}${routes.SIGNUP_ROUTE}`) .send(user) - .withCredentials() .then(response => { - console.log({response}); return store.dispatch(setTokenAction(response.text)); }); + }; export const loginAction = (user) => (store) => { return superagent.get(`${__API_URL__}${routes.LOGIN_ROUTE}`) - .auth(user.username,user.password) - .withCredentials() + .auth(user.username, user.password) .then(response => { - console.log({response}); return store.dispatch(setTokenAction(response.text)); }); }; \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/webpack.config.js b/lab-dalton/trendly-front-end/webpack.config.js index b9b7e2c1..915d4dd9 100644 --- a/lab-dalton/trendly-front-end/webpack.config.js +++ b/lab-dalton/trendly-front-end/webpack.config.js @@ -1,38 +1,59 @@ 'use strict'; +require('dotenv').config(); +const {DefinePlugin, EnvironmentPlugin} = require('webpack'); +const CleanPlugin = require('clean-webpack-plugin'); +const UglifyPlugin = require('uglifyjs-webpack-plugin'); + const HTMLPlugin = require('html-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const webPackConfig = module.exports = {}; +const PRODUCTION = process.env.NODE_ENV === 'production'; + webPackConfig.entry = `${__dirname}/src/main.js`; webPackConfig.output = { filename : 'bundle.[hash].js', path : `${__dirname}/build`, + publicPath : process.env.CDN_URL, }; webPackConfig.plugins = [ - new HTMLPlugin(), - new ExtractTextPlugin('bundle.[hash].css'), + new HTMLPlugin({title: 'Full Stack Application! ^-^'}), + new EnvironmentPlugin(['NODE_ENV']), + new DefinePlugin({ + __API_URL__ : JSON.stringify(process.env.API_URL), + __CDN_URL__ : JSON.stringify(process.env.CDN_URL), + }), + new ExtractTextPlugin('bundle[hash].css'), ]; +if(PRODUCTION) { + webPackConfig.plugins = webPackConfig.plugins.concat([ + new UglifyPlugin(), + new CleanPlugin(), + ]); +} + webPackConfig.module = { rules: [ { test: /\.js$/, exclude: /node_modules/, - loader: 'babel-loader', + loader: 'babel-loader', }, { test: /\.scss$/, loader: ExtractTextPlugin.extract({ + fallback: 'style-loader', use: [ - 'css-loader', - 'resolve-url-loader', + 'css-loader', + 'resolve-url-loader', { loader: 'sass-loader', options: { - sourceMap: true, + sourceMap: true, includePaths: [`${__dirname}/src/style`], }, }, @@ -42,7 +63,7 @@ webPackConfig.module = { ], }; -webPackConfig.devtool = 'eval-source-map'; +webPackConfig.devtool = PRODUCTION ? undefined : 'eval-source-map'; webPackConfig.devServer = { historyApiFallback: true, From f458b3b23777e16cba95ab862eae4111ecdaefd7 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Thu, 25 Jan 2018 12:18:58 -0800 Subject: [PATCH 17/26] had something wrong with webpack, everything works now --- lab-dalton/trendly-back-end/lib/server.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lab-dalton/trendly-back-end/lib/server.js b/lab-dalton/trendly-back-end/lib/server.js index 21490736..c1ea7579 100644 --- a/lab-dalton/trendly-back-end/lib/server.js +++ b/lab-dalton/trendly-back-end/lib/server.js @@ -6,6 +6,7 @@ const express = require('express'); const mongoose = require('mongoose'); const log = require('./logger'); const fs = require('fs-extra'); +const cors = require('cors'); require('./scheduler').runEventsNextDay(); require('./scheduler').runUpdateAllGroups(); @@ -17,6 +18,7 @@ mongoose.Promise = Promise; const server = module.exports = {}; const app = express(); +app.use(cors()); // ================ ROUTE SETUP =================== app.use(require('./middleware/logger-middleware')); From 01314a07a28e44dd74f577121996dabd54da16f6 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:32:07 -0800 Subject: [PATCH 18/26] profile --- .../src/component/profile-form/index.js | 82 +++++++++++++++++ .../src/component/profile/index.js | 92 +++++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/profile-form/index.js create mode 100644 lab-dalton/trendly-front-end/src/component/profile/index.js diff --git a/lab-dalton/trendly-front-end/src/component/profile-form/index.js b/lab-dalton/trendly-front-end/src/component/profile-form/index.js new file mode 100644 index 00000000..21ced8bc --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/profile-form/index.js @@ -0,0 +1,82 @@ +import React from 'react'; + +let emptyState = { + meetupMemberId: '', + name: '', + phoneNumber: '', + meetups: '', +}; + +class ProfileForm extends React.Component { + constructor(props) { + super(props); + this.state = props.profile || emptyState; + + let memberFunctions = Object.getOwnPropertyNames(ProfileForm.prototype); + for(let functionName of memberFunctions) { + if(functionName.startsWith('handle')) { + this[functionName] = this[functionName].bind(this); + } + } + } + + handleChange(event) { + let {name, value} = event.target; + this.setState({ + [name]: value, + }); + } + + handleSubmit(event) { + event.preventDefault(); + this.props.onComplete(this.state); + this.setState(emptyState); + } + + componentWillReceiveProps(props) { + if(props.profile) + this.setState(props.profile); + } + + render() { + return ( +
+ + + + + + + +
+ ); + } +} + +export default ProfileForm; \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/component/profile/index.js b/lab-dalton/trendly-front-end/src/component/profile/index.js new file mode 100644 index 00000000..b395e85f --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/profile/index.js @@ -0,0 +1,92 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import ProfileForm from '../profile-form'; + + +import {createAction, updateAction, fetchAction}from '../../action/client-profile'; +import * as routes from '../../routes'; + + +class Profile extends React.Component { + constructor(props) { + super(props); + this.state = { + editing: false, + }; + + let memberFunctions = Object.getOwnPropertyNames(Profile.prototype); + for(let functionName of memberFunctions){ + if(functionName.startsWith('handle')){ + this[functionName] = this[functionName].bind(this); + } + } + } + + handleCreate(profile) { + this.props.profileCreate(profile) + .then(() => { + this.props.history.push(routes.DASHBOARD_ROUTE); + }) + .catch(error => console.log(error)); + } + + handleUpdate(profile) { + this.props.profileUpdate(profile); + this.setState({editing: false}); + } + + render() { + let { + profile, + profileCreate, + profileUpdate, + } = this.props; + + let JSXEditing = null; + let JSXDisplay = null; + let JSXProfile = null; + + if(profile) { + JSXEditing = +
+ + +
; + + JSXDisplay = +
+

Profile Information:

+

{profile.name}

+

{profile.phoneNumber}

+

{profile.meetupMemberId}

+

{profile.meetups}

+ +
; + + JSXProfile = +
+

{profile.name}

+

{profile.meetupMemberId}

+ {this.state.editing ? JSXEditing : JSXDisplay } +
; + } + + return ( +
+

Profile

+ {profile ? JSXProfile : } +
+ ); + } +} + +const mapStateToProps = (state) => ({ + profile : state.clientProfile, +}); + +const mapDispatchToProps = (dispatch) => ({ + profileCreate : (profile) => dispatch(createAction(profile)), + profileUpdate : (profile) => dispatch(updateAction(profile)), +}); + +export default connect(mapStateToProps, mapDispatchToProps)(Profile); \ No newline at end of file From f11428a6d6a178700b4829b30d1097dc4c11f2eb Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:36:25 -0800 Subject: [PATCH 19/26] fixing landing page for profile --- lab-dalton/trendly-front-end/src/component/landing/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lab-dalton/trendly-front-end/src/component/landing/index.js b/lab-dalton/trendly-front-end/src/component/landing/index.js index cbe693a2..0d204c78 100644 --- a/lab-dalton/trendly-front-end/src/component/landing/index.js +++ b/lab-dalton/trendly-front-end/src/component/landing/index.js @@ -4,6 +4,7 @@ import {connect} from 'react-redux'; import AuthForm from '../auth-form'; import * as authActions from '../../action/auth'; +import * as profileActions from '../../action/client-profile'; import * as routes from '../../routes'; @@ -76,5 +77,6 @@ const mapStateToProps = (state) => ({ const mapDispatchToProps = (dispatch) => ({ doSignup : (user) => dispatch(authActions.signupAction(user)), doLogin : (user) => dispatch(authActions.loginAction(user)), + fetchClientProfile: () => dispatch(profileActions.fetchAction()), }); export default connect(mapStateToProps,mapDispatchToProps)(Landing); \ No newline at end of file From 8907ba5e0c89e5bfd8293198660c0caf47f1ea63 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:38:50 -0800 Subject: [PATCH 20/26] adding header and profile imports and dispatch to fetch profile --- .../trendly-front-end/src/component/app/index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lab-dalton/trendly-front-end/src/component/app/index.js b/lab-dalton/trendly-front-end/src/component/app/index.js index 32d7629d..c6e10e9f 100644 --- a/lab-dalton/trendly-front-end/src/component/app/index.js +++ b/lab-dalton/trendly-front-end/src/component/app/index.js @@ -3,8 +3,13 @@ import {connect} from 'react-redux'; import {BrowserRouter, Route} from 'react-router-dom'; import Landing from '../landing'; +import Header from '../header'; import Dashboard from '../dashboard'; import AuthRedirect from '../auth-redirect'; +import AuthForm from '../auth-form'; +import Profile from '../profile'; + +import * as clientProfile from '../../action/client-profile'; class App extends React.Component { render() { @@ -17,11 +22,19 @@ class App extends React.Component { + ); } } +const mapStateToProps = (state) => ({ + loggedIn: !!state.token, +}); + +const mapDispatchToProps = (dispatch) => ({ + fetchClientProfile : () => dispatch(clientProfile.fetchAction()), +}); export default App; \ No newline at end of file From 18e98ca09d975af6709290d83d85a8e2bf4bb487 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:39:55 -0800 Subject: [PATCH 21/26] header component --- .../src/component/header/header.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/component/header/header.js diff --git a/lab-dalton/trendly-front-end/src/component/header/header.js b/lab-dalton/trendly-front-end/src/component/header/header.js new file mode 100644 index 00000000..fb7728b3 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/component/header/header.js @@ -0,0 +1,46 @@ +import React from 'react'; +import * as authActions from '../../action/auth'; +import * as cookie from '../../lib/cookie'; +import {connect} from 'react-redux'; +import {Link} from 'react-router-dom'; + +class Header extends React.Component { + render() { + let JSXNotLoggedIn = +
    +
  • Home
  • +
  • Login
  • +
  • Signup
  • +
; + + let JSXLoggedIn = +
    +
  • Dashboard
  • +
  • Upload
  • +
  • Profile
  • +
; + + return ( +
+

Trendly

+ + {this.props.loggedIn ? + : + undefined + } +
+ ); + } +} + +const mapStateToProps = (state) => ({ + loggedIn: !!state.token, +}); + +const mapDispatchToProps = (dispatch) => ({ + doLogout : () => dispatch(authActions.logoutAction()), +}); + +export default connect(mapStateToProps, mapDispatchToProps)(Header); \ No newline at end of file From c1e4343185e5e60a71660d955b1a64f99c5bd597 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:40:44 -0800 Subject: [PATCH 22/26] profile route in routes.js --- lab-dalton/trendly-front-end/src/routes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lab-dalton/trendly-front-end/src/routes.js b/lab-dalton/trendly-front-end/src/routes.js index 0fb7179f..910c7bf6 100644 --- a/lab-dalton/trendly-front-end/src/routes.js +++ b/lab-dalton/trendly-front-end/src/routes.js @@ -1,4 +1,5 @@ export const LOGIN_ROUTE = '/login'; export const SIGNUP_ROUTE = '/signup'; export const ROOT_ROUTE = '/'; -export const DASHBOARD_ROUTE = '/dashboard'; \ No newline at end of file +export const DASHBOARD_ROUTE = '/dashboard'; +export const PROFILE_ROUTE = '/profiles'; \ No newline at end of file From c51aa862c13ae3cb2e749c3d6a4f2da84eb4cd4a Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:42:49 -0800 Subject: [PATCH 23/26] client-profile.js action --- .../src/reducer/client-profile.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lab-dalton/trendly-front-end/src/reducer/client-profile.js diff --git a/lab-dalton/trendly-front-end/src/reducer/client-profile.js b/lab-dalton/trendly-front-end/src/reducer/client-profile.js new file mode 100644 index 00000000..2815cfef --- /dev/null +++ b/lab-dalton/trendly-front-end/src/reducer/client-profile.js @@ -0,0 +1,22 @@ +export const validateProfile = (profile) => { + if(!profile) + throw new Error('profile is required !'); + + let {meetupMemberId, name, phoneNumber, account, meetups} = profile; + + if(!meetupMemberId || !account) + throw new Error('invalid profile!'); + }; + + export default (state = null, action) => { + let {type, payload} = action; + switch(type) { + case 'CLIENT_PROFILE_SET': + validateProfile(payload); + return payload; + case 'TOKEN_REMOVE': + return null; + default: + return state; + } + }; \ No newline at end of file From 0d72c828e821adfd74af8366df4eae2b49acb6ba Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 14:45:43 -0800 Subject: [PATCH 24/26] last details --- lab-dalton/trendly-back-end/lib/server.js | 5 ++- .../src/action/client-profile.js | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 lab-dalton/trendly-front-end/src/action/client-profile.js diff --git a/lab-dalton/trendly-back-end/lib/server.js b/lab-dalton/trendly-back-end/lib/server.js index c1ea7579..f7645342 100644 --- a/lab-dalton/trendly-back-end/lib/server.js +++ b/lab-dalton/trendly-back-end/lib/server.js @@ -18,7 +18,10 @@ mongoose.Promise = Promise; const server = module.exports = {}; const app = express(); -app.use(cors()); +app.use(cors({ + origin: process.env.CORS_ORIGIN.split(' '), + credentials: true, +})), // ================ ROUTE SETUP =================== app.use(require('./middleware/logger-middleware')); diff --git a/lab-dalton/trendly-front-end/src/action/client-profile.js b/lab-dalton/trendly-front-end/src/action/client-profile.js new file mode 100644 index 00000000..7531677d --- /dev/null +++ b/lab-dalton/trendly-front-end/src/action/client-profile.js @@ -0,0 +1,44 @@ +import superagent from 'superagent'; +import * as routes from '../routes'; + +const setAction = (profile) => ({ + type: 'CLIENT_PROFILE_SET', + payload: profile, +}); + +export const createAction = (profile) => (store) => { + let {token} = store.getState(); + + return superagent.post(`${__API_URL__}${routes.PROFILE_ROUTE}`) + .set('Authorization', `Bearer ${token}`) + .set('Content-Type', 'application/json') + .send(profile) + .then(response => { + return store.dispatch(setAction(response.body)); + }) + .catch(console.error); +}; + +export const updateAction = (user) => (store) => { + let {token} = store.getState(); + + return superagent.put(`${__API_URL__}${routes.PROFILE_ROUTE}/${user._id}`) + .set('Authorization', `Bearer ${token}`) + .set('Content-Type', 'application/json') + .send(user) + .then(response => { + return store.dispatch(setAction(response.body)); + }) + .catch(console.error); +}; + +export const fetchAction = () => (store) => { + let {token} = store.getState(); + + return superagent.get(`${__API_URL__}${routes.PROFILE_ROUTE}/me`) + .set('Authorization', `Bearer ${token}`) + .then(response => { + return store.dispatch(setAction(response.body)); + }) + .catch(console.error); +}; \ No newline at end of file From 8d724cd8f149a71776567773949e19aaa64c4161 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 15:05:43 -0800 Subject: [PATCH 25/26] header isnt leading --- lab-dalton/trendly-back-end/lib/server.js | 6 +- .../src/component/app/index.js | 26 +++++-- .../src/component/landing/index.js | 76 ++++++++++--------- 3 files changed, 60 insertions(+), 48 deletions(-) diff --git a/lab-dalton/trendly-back-end/lib/server.js b/lab-dalton/trendly-back-end/lib/server.js index f7645342..7f066969 100644 --- a/lab-dalton/trendly-back-end/lib/server.js +++ b/lab-dalton/trendly-back-end/lib/server.js @@ -18,10 +18,8 @@ mongoose.Promise = Promise; const server = module.exports = {}; const app = express(); -app.use(cors({ - origin: process.env.CORS_ORIGIN.split(' '), - credentials: true, -})), + +app.use(cors()); // ================ ROUTE SETUP =================== app.use(require('./middleware/logger-middleware')); diff --git a/lab-dalton/trendly-front-end/src/component/app/index.js b/lab-dalton/trendly-front-end/src/component/app/index.js index c6e10e9f..3fdb6d82 100644 --- a/lab-dalton/trendly-front-end/src/component/app/index.js +++ b/lab-dalton/trendly-front-end/src/component/app/index.js @@ -1,34 +1,44 @@ import React from 'react'; import {connect} from 'react-redux'; -import {BrowserRouter, Route} from 'react-router-dom'; +import {BrowserRouter, Route, Link} from 'react-router-dom'; -import Landing from '../landing'; import Header from '../header'; +import Landing from '../landing'; +import Profile from '../profile'; import Dashboard from '../dashboard'; import AuthRedirect from '../auth-redirect'; import AuthForm from '../auth-form'; -import Profile from '../profile'; import * as clientProfile from '../../action/client-profile'; class App extends React.Component { + + componentDidMount() { + if(this.props.loggedIn) { + this.props.fetchClientProfile() + .catch(console.error); + } + } + render() { - return( -
+ return ( +
+
- +
-
+
); } } + const mapStateToProps = (state) => ({ loggedIn: !!state.token, }); @@ -37,4 +47,4 @@ const mapDispatchToProps = (dispatch) => ({ fetchClientProfile : () => dispatch(clientProfile.fetchAction()), }); -export default App; \ No newline at end of file +export default connect(mapStateToProps, mapDispatchToProps)(App); diff --git a/lab-dalton/trendly-front-end/src/component/landing/index.js b/lab-dalton/trendly-front-end/src/component/landing/index.js index 0d204c78..cecd950b 100644 --- a/lab-dalton/trendly-front-end/src/component/landing/index.js +++ b/lab-dalton/trendly-front-end/src/component/landing/index.js @@ -8,27 +8,28 @@ import * as profileActions from '../../action/client-profile'; import * as routes from '../../routes'; -class Landing extends React.Component{ - constructor(props){ +class Landing extends React.Component { + constructor(props) { super(props); let memberFunctions = Object.getOwnPropertyNames(Landing.prototype); - for(let functionName of memberFunctions){ - if(functionName.startsWith('handle')){ + for(let functionName of memberFunctions) { + if(functionName.startsWith('handle')) { this[functionName] = this[functionName].bind(this); } } } - handleLogin(user){ + handleLogin(user) { this.props.doLogin(user) .then(() => { + this.props.fetchClientProfile(); this.props.history.push(routes.DASHBOARD_ROUTE); - }) .catch(console.error); } - handleSignup(user){ + + handleSignup(user) { this.props.doSignup(user) .then(() => { this.props.history.push(routes.DASHBOARD_ROUTE); @@ -36,33 +37,31 @@ class Landing extends React.Component{ .catch(console.error); } - - render(){ + render() { let {location} = this.props; let rootJSX =
-

welcome

- signup - login -
; - - let signUpJSX = -
-

signup

- -

already have an account?

- login -
; - - let loginJSX = -
-

login

- -

Don't have an account?

- signup +

welcome - signup or login

; - return( + + let signUpJSX = +
+

signup

+ +

already have an account?

+ login +
; + + let loginJSX = +
+

login

+ +

No account?

+ signup +
; + + return (
{location.pathname === routes.ROOT_ROUTE ? rootJSX : undefined} {location.pathname === routes.SIGNUP_ROUTE ? signUpJSX : undefined} @@ -71,12 +70,17 @@ class Landing extends React.Component{ ); } } + const mapStateToProps = (state) => ({ - token : state.token, + token: state.token, }); -const mapDispatchToProps = (dispatch) => ({ - doSignup : (user) => dispatch(authActions.signupAction(user)), - doLogin : (user) => dispatch(authActions.loginAction(user)), - fetchClientProfile: () => dispatch(profileActions.fetchAction()), -}); -export default connect(mapStateToProps,mapDispatchToProps)(Landing); \ No newline at end of file + +const mapDispatchToProps = (dispatch) => { + return { + doSignup: (user) => dispatch(authActions.signupAction(user)), + doLogin: (user) => dispatch(authActions.loginAction(user)), + fetchClientProfile: () => dispatch(profileActions.fetchAction()), + }; +}; + +export default connect(mapStateToProps, mapDispatchToProps)(Landing); \ No newline at end of file From 2f7c77412a6037c3dd371dcbd79dfbf95c75df89 Mon Sep 17 00:00:00 2001 From: Dalton Carr Date: Mon, 29 Jan 2018 17:42:52 -0800 Subject: [PATCH 26/26] header working but now forms arent displaying? --- .../trendly-back-end/route/account-router.js | 11 +- .../trendly-back-end/route/profile-router.js | 14 +- .../trendly-front-end/package-lock.json | 503 ++++++++++++++++-- lab-dalton/trendly-front-end/package.json | 2 + .../trendly-front-end/src/action/auth.js | 8 + .../src/component/app/index.js | 2 +- .../src/component/auth-form/index.js | 104 +++- .../src/component/auth-redirect/index.js | 23 +- .../component/header/{header.js => index.js} | 2 +- .../trendly-front-end/src/lib/cookie.js | 15 + lab-dalton/trendly-front-end/src/main.js | 27 +- .../src/reducer/client-profile.js | 36 +- .../trendly-front-end/src/reducer/index.js | 8 +- .../trendly-front-end/src/reducer/token.js | 7 +- lab-dalton/trendly-front-end/src/routes.js | 2 +- 15 files changed, 646 insertions(+), 118 deletions(-) rename lab-dalton/trendly-front-end/src/component/header/{header.js => index.js} (96%) create mode 100644 lab-dalton/trendly-front-end/src/lib/cookie.js diff --git a/lab-dalton/trendly-back-end/route/account-router.js b/lab-dalton/trendly-back-end/route/account-router.js index d66bca11..e2834720 100644 --- a/lab-dalton/trendly-back-end/route/account-router.js +++ b/lab-dalton/trendly-back-end/route/account-router.js @@ -15,7 +15,11 @@ accountRouter.get('/login', basicAuthMiddleware, (request, response, next) => { } return request.account.createToken() - .then(newToken => response.json({token: newToken})) + .then(newToken => { + response.cookie('X-Trendly-Token', newToken, {maxAge: 900000}); + response.send(newToken); + return; + }) .catch(next); }); @@ -30,7 +34,8 @@ accountRouter.post('/signup', jsonParser, (request, response, next) => { return newUser.createToken(); }) .then(newToken => { - return response.json({token: newToken}); + response.cookie('X-Trendly-Token', newToken, {maxAge: 900000}); + response.send(newToken); }) .catch(next); -}); +}); \ No newline at end of file diff --git a/lab-dalton/trendly-back-end/route/profile-router.js b/lab-dalton/trendly-back-end/route/profile-router.js index 3c1370ca..1eccbe5d 100644 --- a/lab-dalton/trendly-back-end/route/profile-router.js +++ b/lab-dalton/trendly-back-end/route/profile-router.js @@ -32,10 +32,20 @@ profileRouter.post('/profiles', bearerAuthMiddleware, jsonParser, (request, resp }); -profileRouter.get('/profiles/:id', bearerAuthMiddleware, (request, response, next) => { +profileRouter.get('/profiles/me', bearerAuthMiddleware, (request, response, next) => { if(!request.account) return next(new httpErrors(404, '__ERROR__ Not Found')); - return Profile.findById(request.params.id) + return Profile.findOne({account: request.account._id}) .then(profile => response.json(profile)) .catch(next); +}); + +profileRouter.put('/profiles/:id', bearerAuthMiddleware, jsonParser, (request, response, next) => { + let {meetupMemberId, phoneNumber, meetups} = request.body; + if(!request.account) + return next(new httpErrors(404, '__ERROR__ Not Found')); + + return Profile.findByIdAndUpdate(request.params.id, {meetupMemberId, phoneNumber, meetups}) + .then(() => response.json(request.body)) + .catch(next); }); \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/package-lock.json b/lab-dalton/trendly-front-end/package-lock.json index 791a383e..d77da5d7 100644 --- a/lab-dalton/trendly-front-end/package-lock.json +++ b/lab-dalton/trendly-front-end/package-lock.json @@ -1333,6 +1333,26 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cacache": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.2.tgz", + "integrity": "sha512-dljb7dk1jqO5ogE+dRpoR9tpHYv5xz9vPSNunh1+0wRuNdYxmzp9WmsyokgW/DUF1FDRVA/TMsmxt027R8djbQ==", + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.1", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.1.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1540,6 +1560,11 @@ "readdirp": "2.1.0" } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -1905,6 +1930,19 @@ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=" }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -2134,6 +2172,11 @@ "array-find-index": "1.0.2" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -2377,6 +2420,46 @@ "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", "dev": true }, + "duplexify": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz", + "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==", + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2428,6 +2511,14 @@ "iconv-lite": "0.4.19" } }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "1.4.0" + } + }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -3169,6 +3260,44 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -3225,6 +3354,55 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "1.0.34" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4641,6 +4819,11 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, "ignore": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", @@ -5690,6 +5873,23 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mississippi": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.1.tgz", + "integrity": "sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==", + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.3", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.3", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, "mixin-deep": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", @@ -5733,6 +5933,19 @@ "minimist": "0.0.8" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6363,6 +6576,45 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -7151,6 +7403,11 @@ "asap": "2.0.6" } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, "prop-types": { "version": "15.6.0", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", @@ -7192,6 +7449,36 @@ "randombytes": "2.0.6" } }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "requires": { + "duplexify": "3.5.3", + "inherits": "2.0.3", + "pump": "2.0.1" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + } + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -7868,6 +8155,14 @@ "is-promise": "2.1.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "1.2.0" + } + }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -7986,6 +8281,11 @@ } } }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=" + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -8444,6 +8744,14 @@ } } }, + "ssri": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.1.0.tgz", + "integrity": "sha512-TevC8fgxQKTfQ1nWtM9GNzr3q5rrHNntG9CDMH1k3QhSZI6Kb+NbjLRs8oPFZa2Hgo7zoekL+UTvoEk7tsbjQg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -8594,6 +8902,15 @@ } } }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, "stream-http": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", @@ -8635,6 +8952,11 @@ } } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -8885,6 +9207,44 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "thunky": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", @@ -9135,49 +9495,46 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.8.tgz", + "integrity": "sha512-XG8/QmR1pyPeE1kj2aigo5kos8umefB31zW+PMvAAytHSB0T/vQvN6sqt8+Sh+y0b0A7zlmxNi2dzRnj0wcqGA==", "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" + "cacache": "10.0.2", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.3", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.5.2" }, "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "schema-utils": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", + "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" + "ajv": "5.5.2", + "ajv-keywords": "2.1.1" } }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" + "commander": "2.13.0", + "source-map": "0.6.1" } } } @@ -9230,6 +9587,22 @@ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "requires": { + "imurmurhash": "0.1.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -9441,6 +9814,11 @@ "spdx-expression-parse": "1.0.4" } }, + "validator": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-9.3.0.tgz", + "integrity": "sha512-E+dZnwgfBac9vEoswKlULQMoEByr7gVB8xL+1/3VgeGCBPvfIa0I8GAejtZHP1b7EXBmOQwXvDOSelrDfB6eig==" + }, "value-equal": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", @@ -9639,6 +10017,54 @@ "has-flag": "2.0.0" } }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.1.0" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -10088,6 +10514,15 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "requires": { + "errno": "0.1.6", + "xtend": "4.0.1" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/lab-dalton/trendly-front-end/package.json b/lab-dalton/trendly-front-end/package.json index c54355df..d851e4ae 100644 --- a/lab-dalton/trendly-front-end/package.json +++ b/lab-dalton/trendly-front-end/package.json @@ -33,7 +33,9 @@ "resolve-url-loader": "^2.2.1", "sass-loader": "^6.0.6", "superagent": "^3.8.2", + "uglifyjs-webpack-plugin": "^1.1.8", "uuid": "^3.2.1", + "validator": "^9.3.0", "webpack": "^3.10.0", "webpack-dev-server": "^2.11.1" }, diff --git a/lab-dalton/trendly-front-end/src/action/auth.js b/lab-dalton/trendly-front-end/src/action/auth.js index ae822d3c..63bd1c93 100644 --- a/lab-dalton/trendly-front-end/src/action/auth.js +++ b/lab-dalton/trendly-front-end/src/action/auth.js @@ -1,5 +1,6 @@ import superagent from 'superagent'; import * as routes from '../routes'; +import * as cookie from '../lib/cookie'; // Sync @@ -12,11 +13,17 @@ export const removeTokenAction = () => ({ type: 'TOKEN_REMOVE', }); +export const logoutAction = () => { + cookie.cookieDelete('X-Trendly-Token'); + return removeTokenAction(); +}; + // Async export const signupAction = (user) => (store) => { return superagent.post(`${__API_URL__}${routes.SIGNUP_ROUTE}`) .send(user) + .withCredentials() .then(response => { return store.dispatch(setTokenAction(response.text)); }); @@ -26,6 +33,7 @@ export const signupAction = (user) => (store) => { export const loginAction = (user) => (store) => { return superagent.get(`${__API_URL__}${routes.LOGIN_ROUTE}`) .auth(user.username, user.password) + .withCredentials() .then(response => { return store.dispatch(setTokenAction(response.text)); }); diff --git a/lab-dalton/trendly-front-end/src/component/app/index.js b/lab-dalton/trendly-front-end/src/component/app/index.js index 3fdb6d82..01cfd0bc 100644 --- a/lab-dalton/trendly-front-end/src/component/app/index.js +++ b/lab-dalton/trendly-front-end/src/component/app/index.js @@ -25,7 +25,7 @@ class App extends React.Component {
-
+ {/*
*/} diff --git a/lab-dalton/trendly-front-end/src/component/auth-form/index.js b/lab-dalton/trendly-front-end/src/component/auth-form/index.js index e8dad3de..4f0e065c 100644 --- a/lab-dalton/trendly-front-end/src/component/auth-form/index.js +++ b/lab-dalton/trendly-front-end/src/component/auth-form/index.js @@ -1,63 +1,109 @@ import React from 'react'; +import validator from 'validator'; +import {connect} from 'react-redux'; +import {Link} from 'react-router-dom'; +import auth from '../../action/auth'; let emptyState = { username: '', + usernameDirty: false, + usernameError: 'Username is required', + email: '', + emailDirty: false, + emailError: 'Email is required', + password: '', + passwordDirty: false, + passwordError: 'Password is required', }; class AuthForm extends React.Component { - constructor(props){ + constructor(props) { super(props); this.state = emptyState; - //------------------------------------------------------------- - // Binding Handlers - //------------------------------------------------------------- + let memberFunctions = Object.getOwnPropertyNames(AuthForm.prototype); - for(let functionName of memberFunctions){ - if(functionName.startsWith('handle')){ + for(let functionName of memberFunctions) { + if(functionName.startsWith('handle')) { this[functionName] = this[functionName].bind(this); } } - //------------------------------------------------------------- } - //--------------------------------------------------------------- - // Member Functions - //--------------------------------------------------------------- - handleChange(e){ - let {name, value} = e.target; - this.setState({[name]: value}); + + handleChange(event) { + let {name, value} = event.target; + this.setState({ + [name]: value, + [`${name}Dirty`]: true, + [`${name}Error`]: this.handleValidation(name, value), + }); } - handleSubmit(e){ - e.preventDefault(); - this.props.onComplete(this.state); - this.setState(emptyState); + handleSubmit(event) { + event.preventDefault(); + let {nameError, emailError, passwordError} = this.state; + + if(this.props.type === 'login' || !nameError && !emailError && !passwordError) { + this.props.onComplete(this.state); + this.setState(emptyState); + } else { + this.setState({ + usernameDirty: true, + emailDirty: true, + passwordDirty: true, + }); + } } - //--------------------------------------------------------------- - // Life-cycle Hooks - //--------------------------------------------------------------- - - render(){ - let { type } = this.props; + + handleValidation(name, value) { + if(this.props.type === 'login') + return null; + + switch(name) { + case 'username': + if(value.length < 6) + return 'Your name must be at least 6 characters long'; + return null; + case 'email': + if(!validator.isEmail(value)) + return 'You must provide a valid email'; + return null; + case 'password': + if(value.length < 8) + return 'Your password must be at least 8 characters long'; + return null; + default: + return null; + } + } + + render() { + let {type} = this.props; type = type === 'login' ? type : 'signup'; - let signupJSX = + let signupJSX = +
+ {this.state.emailDirty ?

{this.state.emailError}

: undefined} ; + /> +
; let signupRenderedJSX = (type !== 'login') ? signupJSX : undefined; return ( -
- + + + {this.state.usernameDirty ?

{this.state.usernameError}

: undefined} {signupRenderedJSX} - + {this.state.passwordDirty && this.state.passwordError ? 'invalid' : undefined} - +
); } diff --git a/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js b/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js index acc8da87..563c6763 100644 --- a/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js +++ b/lab-dalton/trendly-front-end/src/component/auth-redirect/index.js @@ -1,36 +1,35 @@ import React from 'react'; import {connect} from 'react-redux'; -import {Redirect} from 'react-router-dom'; +import {Redirect} from 'react-router-dom'; import * as routes from '../../routes'; class AuthRedirect extends React.Component { - render(){ - // vinicio - location and history comes from props directly - // token comes from the store - let {location,history,token} = this.props; + render() { + // location and history comes from props directly - token comes from the store + + let {location, history, token} = this.props; let {pathname} = location; let destinationRoute = null; - if(pathname === routes.LOGIN_ROUTE || pathname === routes.SIGNUP_ROUTE || pathname === routes.ROOT_ROUTE){ - if(token){ - // vinicio - optional GET request + if(pathname === routes.LOGIN_ROUTE || pathname === routes.SIGNUP_ROUTE || pathname === routes.ROOT_ROUTE) { + if(token) { destinationRoute = routes.DASHBOARD_ROUTE; } } - else{ // vinicio - any other route + else { if(!token) destinationRoute = routes.ROOT_ROUTE; } - return( + return (
- { destinationRoute ? : undefined } + {destinationRoute ? : undefined}
); } } const mapStateToProps = state => ({ - token : state.token, + token: state.token, }); export default connect(mapStateToProps)(AuthRedirect); \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/component/header/header.js b/lab-dalton/trendly-front-end/src/component/header/index.js similarity index 96% rename from lab-dalton/trendly-front-end/src/component/header/header.js rename to lab-dalton/trendly-front-end/src/component/header/index.js index fb7728b3..8332576b 100644 --- a/lab-dalton/trendly-front-end/src/component/header/header.js +++ b/lab-dalton/trendly-front-end/src/component/header/index.js @@ -1,6 +1,6 @@ import React from 'react'; import * as authActions from '../../action/auth'; -import * as cookie from '../../lib/cookie'; +// import * as cookie from '../../lib/cookie'; import {connect} from 'react-redux'; import {Link} from 'react-router-dom'; diff --git a/lab-dalton/trendly-front-end/src/lib/cookie.js b/lab-dalton/trendly-front-end/src/lib/cookie.js new file mode 100644 index 00000000..134ddb92 --- /dev/null +++ b/lab-dalton/trendly-front-end/src/lib/cookie.js @@ -0,0 +1,15 @@ +export const cookieFetchAll = () => { + return Object.assign(...document.cookie.split(';') + .map(cookie => { + let [key, value] = cookie.split('='); + return {[key.trim()]: value}; + })); +}; + +export const cookieDelete = (key) => { + document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 GMT`; +}; + +export const cookieFetch = (key) => { + return cookieFetchAll() [key]; +}; \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/main.js b/lab-dalton/trendly-front-end/src/main.js index 648a14e8..7824e841 100644 --- a/lab-dalton/trendly-front-end/src/main.js +++ b/lab-dalton/trendly-front-end/src/main.js @@ -1,22 +1,23 @@ -import React from 'react' -import ReactDom from 'react-dom' -import {Provider} from 'react-redux' -import {createStore, applyMiddleware} from 'redux' +// import './style/main.scss'; +import React from 'react'; +import ReactDom from 'react-dom'; +import {Provider} from 'react-redux'; +import {createStore, applyMiddleware} from 'redux'; -import reducer from './reducer' -import App from './component/app' -import thunk from './lib/redux-thunk.js' -import reporter from './lib/redux-reporter.js' -import { composeWithDevTools } from 'redux-devtools-extension'; +import reducer from './reducer'; +import App from './component/app'; +import thunk from './lib/redux-thunk'; +import reporter from './lib/redux-reporter'; +import {composeWithDevTools} from 'redux-devtools-extension'; const store = createStore(reducer, composeWithDevTools( - applyMiddleware(thunk,reporter), -)) + applyMiddleware(thunk, reporter))); const container = document.createElement('div'); document.body.appendChild(container); ReactDom.render( - - ,container); \ No newline at end of file + + , container +); \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/reducer/client-profile.js b/lab-dalton/trendly-front-end/src/reducer/client-profile.js index 2815cfef..86feb805 100644 --- a/lab-dalton/trendly-front-end/src/reducer/client-profile.js +++ b/lab-dalton/trendly-front-end/src/reducer/client-profile.js @@ -1,22 +1,22 @@ export const validateProfile = (profile) => { - if(!profile) - throw new Error('profile is required !'); + if(!profile) + throw new Error('profile is required !'); - let {meetupMemberId, name, phoneNumber, account, meetups} = profile; + let {meetupMemberId, name, phoneNumber, account, meetups} = profile; - if(!meetupMemberId || !account) - throw new Error('invalid profile!'); - }; + if(!meetupMemberId || !account) + throw new Error('invalid profile!'); +}; - export default (state = null, action) => { - let {type, payload} = action; - switch(type) { - case 'CLIENT_PROFILE_SET': - validateProfile(payload); - return payload; - case 'TOKEN_REMOVE': - return null; - default: - return state; - } - }; \ No newline at end of file +export default (state = null, action) => { + let {type, payload} = action; + switch(type) { + case 'CLIENT_PROFILE_SET': + validateProfile(payload); + return payload; + case 'TOKEN_REMOVE': + return null; + default: + return state; + } +}; \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/reducer/index.js b/lab-dalton/trendly-front-end/src/reducer/index.js index 27f16de5..8d925f29 100644 --- a/lab-dalton/trendly-front-end/src/reducer/index.js +++ b/lab-dalton/trendly-front-end/src/reducer/index.js @@ -1,3 +1,7 @@ import {combineReducers} from 'redux'; -import token from './token.js'; -export default combineReducers({token}); \ No newline at end of file +import token from './token'; +import clientProfile from './client-profile'; +export default combineReducers({ + token, + clientProfile, +}); \ No newline at end of file diff --git a/lab-dalton/trendly-front-end/src/reducer/token.js b/lab-dalton/trendly-front-end/src/reducer/token.js index d94cd0db..dd4bff2a 100644 --- a/lab-dalton/trendly-front-end/src/reducer/token.js +++ b/lab-dalton/trendly-front-end/src/reducer/token.js @@ -1,8 +1,11 @@ +import * as cookie from '../lib/cookie'; -let initialState = null; +let token = cookie.cookieFetch('X-Trendly-Token'); + +let initialState = token ? token : null; export default (state = initialState, {type, payload}) => { - switch(type){ + switch(type) { case 'TOKEN_SET': return payload; case 'TOKEN_REMOVE': diff --git a/lab-dalton/trendly-front-end/src/routes.js b/lab-dalton/trendly-front-end/src/routes.js index 910c7bf6..6b8f7a3a 100644 --- a/lab-dalton/trendly-front-end/src/routes.js +++ b/lab-dalton/trendly-front-end/src/routes.js @@ -2,4 +2,4 @@ export const LOGIN_ROUTE = '/login'; export const SIGNUP_ROUTE = '/signup'; export const ROOT_ROUTE = '/'; export const DASHBOARD_ROUTE = '/dashboard'; -export const PROFILE_ROUTE = '/profiles'; \ No newline at end of file +export const PROFILE_ROUTE = '/profile'; \ No newline at end of file