From 71cacf91f5d726febe7666f114b9fe2cbc25cb10 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Tue, 21 Nov 2017 15:44:35 +0100 Subject: [PATCH 01/57] LoginTask1 --- src/components/app.js | 18 +++++- src/components/login/loginForm.js | 61 +++++++++++++++++++ src/components/login/loginPage.js | 48 +++++++++++++++ src/components/login/registerForm.js | 86 +++++++++++++++++++++++++++ src/img/bg1.jpg | Bin 0 -> 89344 bytes src/index.html | 40 +++++++++---- src/index.js | 6 +- src/main.css | 59 ++++++++++++++++++ 8 files changed, 300 insertions(+), 18 deletions(-) create mode 100644 src/components/login/loginForm.js create mode 100644 src/components/login/loginPage.js create mode 100644 src/components/login/registerForm.js create mode 100644 src/img/bg1.jpg create mode 100644 src/main.css diff --git a/src/components/app.js b/src/components/app.js index 688ddcc..f411643 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -1,14 +1,28 @@ import React from "react"; - +import LoginPage from "./login/loginPage"; +import LoginForm from "./login/loginForm"; +import RegisterForm from "./login/registerForm"; +import { Switch, Route, Redirect } from "react-router-dom"; import HelloWorld from "./helloWorld/helloWorld"; + class App extends React.Component { constructor(props) { super(props); } render() { - return ; + + return ( + +
+ + + + + +
+ ); } } diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js new file mode 100644 index 0000000..dcab73d --- /dev/null +++ b/src/components/login/loginForm.js @@ -0,0 +1,61 @@ +import React from "react"; + +class LoginForm extends React.Component { + constructor(props) { + super(props); + this.state = { + email: "", + password: "" + }; + + + this.emailEntry = this.emailEntry.bind(this); + this.passwordEntry = this.passwordEntry.bind(this); + } + emailEntry(event) { + const value = event.target.value; + this.setState({ + email: value + }); + + }; + + passwordEntry(event) { + const value = event.target.value; + this.setState({ + password: value + }); + }; + + render() { + return ( +
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+ ); + + } +} + +export default LoginForm; \ No newline at end of file diff --git a/src/components/login/loginPage.js b/src/components/login/loginPage.js new file mode 100644 index 0000000..16465f9 --- /dev/null +++ b/src/components/login/loginPage.js @@ -0,0 +1,48 @@ +import React from "react"; +import LoginForm from "./loginForm"; +import RegisterForm from "./registerForm"; +import { Switch, Route } from "react-router-dom"; +import { Link } from "react-router-dom"; + + +const LoginPage = (props) => { + return ( +
+
+ +
+ +

Welcome to BitBook

+

Lorem ipsum dolor sit amet, ad vis mazim legere virtute. Per ne labore graecis menandri. Vel mutat causae ut, ferri debet omnium vim et. Ea mel delenit consetetur, ne convenire philosophia pri, equidem omittam blandit no est. Id dicta nostro qui. Reque iisque nominavi sed in, eam in nulla consequat, sea philosophia definitionem et

+
+ +
+ + +
+
+ Login +
+
+ Register +
+
+
+ + + + + + + +
+
+
+
+ +
+ ); +}; + + +export default LoginPage; \ No newline at end of file diff --git a/src/components/login/registerForm.js b/src/components/login/registerForm.js new file mode 100644 index 0000000..211aabf --- /dev/null +++ b/src/components/login/registerForm.js @@ -0,0 +1,86 @@ +import React from "react"; + +class RegisterForm extends React.Component { + constructor(props) { + super(props); + this.state = { + name: "", + email: "", + password: "" + }; + + this.emailEntry = this.emailEntry.bind(this); + this.passwordEntry = this.passwordEntry.bind(this); + this.nameEntry = this.nameEntry.bind(this); + + } + emailEntry(event) { + const value = event.target.value; + this.setState({ + email: value + }); + + }; + + passwordEntry(event) { + const value = event.target.value; + this.setState({ + password: value + }); + }; + nameEntry(event) { + const value = event.target.value; + this.setState({ + name: value + }); + }; + + + + onRegisterClick(){ + let registration = this.state.registration; + + } + + + render() { + return ( +
+
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +
+
+ + +
+
+ ); + + } +} + +export default RegisterForm; \ No newline at end of file diff --git a/src/img/bg1.jpg b/src/img/bg1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..005d3b519e8c8d38cde44231e7283a53ea337cd7 GIT binary patch literal 89344 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

)-Ry<7Q^{RW*upF;2Mn=D9%0;vLU03Xn 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 - - - - - - My React App - - -

- - - - + + + + + + + + + + My React App + + + +
+ + + + + + + + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index 80d7d1b..7cb4896 100644 --- a/src/index.js +++ b/src/index.js @@ -1,13 +1,13 @@ import React from "react"; import ReactDOM from "react-dom"; -import { BrowserRouter } from "react-router-dom"; +import { HashRouter } from "react-router-dom"; import "babel-polyfill"; import App from "./components/app"; ReactDOM.render( - + - , + , document.querySelector(".container") ); diff --git a/src/main.css b/src/main.css new file mode 100644 index 0000000..44d1b14 --- /dev/null +++ b/src/main.css @@ -0,0 +1,59 @@ +#form{ + margin-top: 20px; + margin-left: 20px; + text-align: center; +} + +#welcome{ + +} + + +#login{ + width: 40%; + margin-top:20px; + background-color: white; + color: rgb(90, 90, 219); +} + +#login:hover{ + background-color: rgb(65, 65, 206); + color: white; +} + +label{ + margin-top:10px; +} + +.table-bordered{ + border: 5px solid blue; + text-align: center; +} + +#mainrow{ + margin-top: 250px; +} + +.login-form{ + margin-right: 10px; + +} + +body{ + background-image: url("img/bg1.jpg"); + background-repeat: no-repeat; + background-size: 100% ; + color: white; + + +} + +#thead{ + background-color: white; + opacity: 0.7; + border: 2px rgb(98, 98, 204) solid; + text-align: center; + height: 50px; + padding-top:10px; + font-size: 18px; +} \ No newline at end of file From 7b939470e61a7c3025383f0f9f45824b61fe7c05 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Tue, 21 Nov 2017 15:50:38 +0100 Subject: [PATCH 02/57] service adapter --- src/constants.js | 4 ++- src/services/authenticationService.js | 26 ++++++++++++++ src/services/fetchDataService.js | 49 +++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/services/authenticationService.js create mode 100644 src/services/fetchDataService.js diff --git a/src/constants.js b/src/constants.js index ca54aec..c08f454 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1 +1,3 @@ -// export const SOME_GLOBAL_CONFIG = "value"; \ No newline at end of file +// export const SOME_GLOBAL_CONFIG = "value"; +export const HEADER_KEY = "qHkk6XZN"; +export const BASE_SERVICE_URL = "https://bitbookapi.azurewebsites.net/api"; diff --git a/src/services/authenticationService.js b/src/services/authenticationService.js new file mode 100644 index 0000000..8ceb94f --- /dev/null +++ b/src/services/authenticationService.js @@ -0,0 +1,26 @@ +import default from "./fetchDataService"; +import {BASE_SERVICE_URL} from "./../constants"; + +class AuthenticationService { + + constructor(){ + this.serviceData = new FetchDataService(); + } + + logIn(user){ + let userLoginUrl = `${BASE_SERVICE_URL}/login`; + this.serviceData.post(userLoginUrl,(data)=>{ + + },(error)=>{}); + + // sessionStorage.setItem({}}, ); + + } + logOut(){ + + } + isUserAuthentic(){} + register(){} +} + +export default AuthenticationService; \ No newline at end of file diff --git a/src/services/fetchDataService.js b/src/services/fetchDataService.js new file mode 100644 index 0000000..a5704fd --- /dev/null +++ b/src/services/fetchDataService.js @@ -0,0 +1,49 @@ +import { HEADER_KEY } from "./../constants"; + + +class FetchDataService { + constructor() { } + + + + createHeader() { + return { + "key": HEADER_KEY, + "sessionId": sessionStorage.getItem("sessionId") + }; + } + + get(url, handler, errorHandler) { + var myInit = { + method: "GET", + headers: this.createHeader(), + }; + + + fetch(url, myInit) + .then(function (response) { + return response.json(); + }) + .then(function (response) { + handler(response); + }) + .catch(error => errorHandler(error) || console.log(error)); + } + + + post(url, handler, errorHandler) { + var myInit = { + method: "POST", + headers: this.createHeader(), + }; + fetch(url, myInit) + .then((response) => response.json()) + .then(response => { + handler(response); + }) + .catch(error => errorHandler(error) || console.log(error)); + } + +} + +export default FetchDataService; \ No newline at end of file From c16359fc9b1f9cf449b1aced6fcfc21e84044c9f Mon Sep 17 00:00:00 2001 From: BIT Student Date: Tue, 21 Nov 2017 17:13:57 +0100 Subject: [PATCH 03/57] create authentication service --- src/services/authenticationService.js | 45 ++++++++++++++++++--------- src/services/fetchDataService.js | 18 +++++------ src/services/redirectService.js | 6 ++++ 3 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 src/services/redirectService.js diff --git a/src/services/authenticationService.js b/src/services/authenticationService.js index 8ceb94f..0b91686 100644 --- a/src/services/authenticationService.js +++ b/src/services/authenticationService.js @@ -1,26 +1,43 @@ -import default from "./fetchDataService"; -import {BASE_SERVICE_URL} from "./../constants"; +import FetchDataService from "./fetchDataService"; +import default "./redirectService"; class AuthenticationService { - - constructor(){ + constructor() { this.serviceData = new FetchDataService(); } - - logIn(user){ - let userLoginUrl = `${BASE_SERVICE_URL}/login`; - this.serviceData.post(userLoginUrl,(data)=>{ - - },(error)=>{}); - // sessionStorage.setItem({}}, ); + logIn(user) { + let userLoginUrl = `/login`; + this.serviceData.post(userLoginUrl, user, (data) => { + + sessionStorage.setItem("sessionId", data.sessionId); + }, (error) => { + return error; + }); + } + + logOut() { + sessionStorage.setItem("sessionId", null); + redirect("/"); } - logOut(){ + isUserAuthenticated(user) { + let userLoginUrl = `/login`; + this.serviceData.get(userLoginUrl, (data) => { + if (user.email === data.email) { + redirect('/profile'); + } + }); + } + register(user) { + let userLoginUrl = `/register`; + this.serviceData.post(userLoginUrl, user, (data) => { + redirect("/"); + }, (error) => { + return error; + }); } - isUserAuthentic(){} - register(){} } export default AuthenticationService; \ No newline at end of file diff --git a/src/services/fetchDataService.js b/src/services/fetchDataService.js index a5704fd..227a98c 100644 --- a/src/services/fetchDataService.js +++ b/src/services/fetchDataService.js @@ -1,11 +1,10 @@ import { HEADER_KEY } from "./../constants"; +import { BASE_SERVICE_URL } from "./../constants"; class FetchDataService { constructor() { } - - createHeader() { return { "key": HEADER_KEY, @@ -19,24 +18,23 @@ class FetchDataService { headers: this.createHeader(), }; - fetch(url, myInit) - .then(function (response) { + .then((response) => { return response.json(); }) - .then(function (response) { - handler(response); + .then((data) => { + handler(data); }) .catch(error => errorHandler(error) || console.log(error)); } - - post(url, handler, errorHandler) { - var myInit = { + post(path, data, handler, errorHandler) { + const requestOptions = { method: "POST", headers: this.createHeader(), + body: JSON.stringify(data) }; - fetch(url, myInit) + fetch(`${BASE_SERVICE_URL}${path}`, requestOptions) .then((response) => response.json()) .then(response => { handler(response); diff --git a/src/services/redirectService.js b/src/services/redirectService.js new file mode 100644 index 0000000..fb2ec5a --- /dev/null +++ b/src/services/redirectService.js @@ -0,0 +1,6 @@ + +function redirect(path) { + return window.location.href = path; +} + +export default redirect; \ No newline at end of file From 0299f1f22022bd0a0373c120ac2d479562add19e Mon Sep 17 00:00:00 2001 From: BIT Student Date: Wed, 22 Nov 2017 11:08:23 +0100 Subject: [PATCH 04/57] post method fixed --- package-lock.json | 3207 ++++++++++++++++------- package.json | 1 + src/components/app.js | 2 +- src/components/helloWorld/helloWorld.js | 13 - src/components/login/loginForm.js | 30 +- src/components/login/loginPage.js | 4 +- src/services/fetchDataService.js | 54 +- 7 files changed, 2264 insertions(+), 1047 deletions(-) delete mode 100644 src/components/helloWorld/helloWorld.js diff --git a/package-lock.json b/package-lock.json index 5d33951..151e2d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,12 +2,17 @@ "name": "blog", "version": "1.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "accepts": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } }, "acorn": { "version": "5.2.1", @@ -20,6 +25,9 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, + "requires": { + "acorn": "4.0.13" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -34,6 +42,9 @@ "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", @@ -47,7 +58,13 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true + "dev": true, + "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", @@ -59,7 +76,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "ansi-escapes": { "version": "3.0.0", @@ -89,19 +111,29 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "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 + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-flatten": { "version": "1.1.0", @@ -125,13 +157,20 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.9.0" + } }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -160,19 +199,30 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "util": "0.10.3" + } }, "async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "async-each": { "version": "1.0.1", @@ -180,107 +230,233 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "axios": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", + "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", + "requires": { + "follow-redirects": "1.2.5", + "is-buffer": "1.1.6" + } + }, "babel-cli": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.11.0", + "convert-source-map": "1.5.0", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + } }, "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 + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } }, "babel-core": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.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=", - "dev": true + "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-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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-define-map": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-regex": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-syntax-flow": { "version": "6.18.0", @@ -298,209 +474,393 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.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=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=" + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "regenerator-runtime": "0.10.5" + } }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } }, "babel-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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "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.1", + "regenerator-runtime": "0.11.0" + }, "dependencies": { "regenerator-runtime": { "version": "0.11.0", @@ -513,19 +873,43 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true + "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 + "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" + } }, "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 + "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", @@ -573,25 +957,54 @@ "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true + "dev": true, + "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" + } }, "bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true + "dev": true, + "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.0", + "multicast-dns-service-types": "1.1.0" + } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true + "dev": true, + "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 + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "brorand": { "version": "1.1.0", @@ -603,43 +1016,82 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "pako": "1.0.6" + } }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -683,7 +1135,10 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true + "dev": true, + "requires": { + "callsites": "0.2.0" + } }, "callsites": { "version": "0.2.0", @@ -702,6 +1157,10 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, "dependencies": { "camelcase": { "version": "2.1.1", @@ -715,13 +1174,24 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "chardet": { "version": "0.4.0", @@ -733,13 +1203,27 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "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==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "circular-json": { "version": "0.3.3", @@ -751,7 +1235,10 @@ "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 + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } }, "cli-width": { "version": "2.2.0", @@ -764,6 +1251,11 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -789,7 +1281,10 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.3" + } }, "color-name": { "version": "1.1.3", @@ -813,13 +1308,25 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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", @@ -831,7 +1338,12 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } }, "connect-history-api-fallback": { "version": "1.5.0", @@ -843,7 +1355,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, "constants-browserify": { "version": "1.0.0", @@ -896,43 +1411,85 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true + "dev": true, + "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.9" + } }, "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 + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } }, "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==", - "dev": true + "dev": true, + "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.5", + "randomfill": "1.0.3" + } }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "es5-ext": "0.10.35" + } }, "date-now": { "version": "0.1.4", @@ -944,7 +1501,9 @@ "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" + } }, "decamelize": { "version": "1.2.0", @@ -968,13 +1527,26 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true + "dev": true, + "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -994,7 +1566,11 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "destroy": { "version": "1.0.4", @@ -1006,7 +1582,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "detect-node": { "version": "2.0.3", @@ -1018,7 +1597,12 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } }, "dns-equal": { "version": "1.0.0", @@ -1030,19 +1614,30 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -1068,7 +1663,16 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true + "dev": true, + "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", @@ -1085,73 +1689,134 @@ "encoding": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=" + "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=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true + "dev": true, + "requires": { + "prr": "0.0.0" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es-abstract": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", - "dev": true + "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 + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } }, "es5-ext": { "version": "0.10.35", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-symbol": "3.1.1" + } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "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=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "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=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } }, "escape-html": { "version": "1.0.3", @@ -1169,13 +1834,58 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "eslint": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", "dev": true, + "requires": { + "ajv": "5.3.0", + "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.0", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.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.4.1", + "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", @@ -1187,31 +1897,48 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -1219,25 +1946,46 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", - "dev": true + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + } }, "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==", - "dev": true + "dev": true, + "requires": { + "doctrine": "2.0.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=", - "dev": true + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "espree": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", - "dev": true + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } }, "esprima": { "version": "4.0.0", @@ -1249,13 +1997,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true + "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 + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } }, "estraverse": { "version": "4.2.0", @@ -1279,7 +2034,11 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } }, "eventemitter3": { "version": "1.2.0", @@ -1297,37 +2056,91 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "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=", - "dev": true + "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 + "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 + "dev": true, + "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=", "dev": true, + "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": { "array-flatten": { "version": "1.1.1", @@ -1347,13 +2160,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", - "dev": true + "dev": true, + "requires": { + "chardet": "0.4.0", + "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 + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "fast-deep-equal": { "version": "1.0.0", @@ -1377,12 +2198,24 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true + "dev": true, + "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", @@ -1395,13 +2228,20 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true + "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 + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } }, "filename-regex": { "version": "2.0.1", @@ -1413,31 +2253,69 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "finalhandler": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true + "dev": true, + "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" + } }, "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "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 + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "follow-redirects": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.5.tgz", + "integrity": "sha512-lMhwQTryFbG+wYsAIEKC1Kf5IGDlVNnONRogIBllh7LLoV7pNIxW0z9fhjRar9NBql+hd2Y49KboVVNxf6GEfg==", + "requires": { + "debug": "2.6.9" + } }, "for-in": { "version": "1.0.2", @@ -1449,7 +2327,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "foreach": { "version": "2.0.5", @@ -1461,685 +2342,25 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "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, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "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 - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true - }, - "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 - }, - "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 - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "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 - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true - }, - "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 - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, - "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 - }, - "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 - }, - "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 - }, - "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, - "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 - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "dev": true, - "optional": true - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "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 - }, - "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, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true - }, - "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 - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "function-bind": { "version": "1.1.1", @@ -2175,19 +2396,34 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "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 + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.18.0", @@ -2200,6 +2436,14 @@ "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -2225,13 +2469,19 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true + "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 + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-flag": { "version": "2.0.0", @@ -2243,24 +2493,43 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "history": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", - "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==" + "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", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "hoist-non-react-statics": { "version": "2.3.1", @@ -2271,7 +2540,11 @@ "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 + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "hosted-git-info": { "version": "2.5.0", @@ -2283,7 +2556,13 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } }, "html-entities": { "version": "1.2.1", @@ -2302,6 +2581,12 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, "dependencies": { "setprototypeof": { "version": "1.0.3", @@ -2321,13 +2606,23 @@ "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true + "dev": true, + "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=", "dev": true, + "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", @@ -2339,7 +2634,10 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } } } }, @@ -2370,7 +2668,11 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } }, "imurmurhash": { "version": "0.1.4", @@ -2382,7 +2684,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "indexof": { "version": "0.0.1", @@ -2394,7 +2699,11 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2407,6 +2716,22 @@ "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" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -2418,25 +2743,39 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -2444,7 +2783,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true + "dev": true, + "requires": { + "meow": "3.7.0" + } }, "interpret": { "version": "1.0.4", @@ -2455,7 +2797,10 @@ "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -2485,19 +2830,24 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "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", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-callable": { "version": "1.1.3", @@ -2521,7 +2871,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -2539,7 +2892,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -2551,13 +2907,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-path-cwd": { "version": "1.0.0", @@ -2569,13 +2931,19 @@ "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 + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -2599,13 +2967,19 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1" + } }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true + "dev": true, + "requires": { + "tryit": "1.0.3" + } }, "is-stream": { "version": "1.1.0", @@ -2646,6 +3020,9 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "requires": { + "isarray": "1.0.0" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -2658,7 +3035,11 @@ "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=" + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } }, "js-tokens": { "version": "3.0.2", @@ -2669,7 +3050,11 @@ "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 + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } }, "jsesc": { "version": "1.3.0", @@ -2711,7 +3096,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true + "dev": true, + "requires": { + "array-includes": "3.0.3" + } }, "killable": { "version": "1.0.0", @@ -2723,7 +3111,10 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } }, "lazy-cache": { "version": "1.0.4", @@ -2735,19 +3126,32 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -2762,30 +3166,49 @@ "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + }, "dependencies": { "find-cache-dir": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "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 + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2" + } } } }, @@ -2799,13 +3222,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } }, "lodash": { "version": "4.17.4", @@ -2828,25 +3260,39 @@ "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + "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=", - "dev": true + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "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 + "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==", - "dev": true + "dev": true, + "requires": { + "pify": "3.0.0" + } }, "map-obj": { "version": "1.0.1", @@ -2859,12 +3305,20 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } } } }, @@ -2878,31 +3332,61 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, "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 + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "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 + "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" + } }, "minimist": { "version": "1.2.0", @@ -2914,13 +3398,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "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 + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pify": { "version": "2.3.0", @@ -2932,19 +3424,31 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "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 + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } } } }, @@ -2964,13 +3468,32 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.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==", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } }, "mime": { "version": "1.4.1", @@ -2988,7 +3511,10 @@ "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.30.0" + } }, "mimic-fn": { "version": "1.1.0", @@ -3012,7 +3538,10 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -3024,19 +3553,25 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multicast-dns": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.0.tgz", "integrity": "sha512-tnQqWkuWYHCOVRveiWQf+5KjHUnEmtxUycTy1esL4prQjXoT4qpndIS4fH63zObmHNxIHke3YHRnQrXYpXHf2A==", - "dev": true + "dev": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } }, "multicast-dns-service-types": { "version": "1.1.0", @@ -3050,13 +3585,6 @@ "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", @@ -3072,7 +3600,11 @@ "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==" + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } }, "node-forge": { "version": "0.6.33", @@ -3084,25 +3616,62 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true + "dev": true, + "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.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.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 + "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 + "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 + "dev": true, + "requires": { + "path-key": "2.0.1" + } }, "number-is-nan": { "version": "1.0.1", @@ -3131,7 +3700,11 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "obuf": { "version": "1.1.1", @@ -3143,7 +3716,10 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, "on-headers": { "version": "1.0.1", @@ -3155,37 +3731,61 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "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 + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "opn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", - "dev": true + "dev": true, + "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=", - "dev": true + "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" + } }, "original": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } } } }, @@ -3205,7 +3805,12 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } }, "os-tmpdir": { "version": "1.0.2", @@ -3217,7 +3822,12 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } }, "p-finally": { "version": "1.0.0", @@ -3235,7 +3845,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true + "dev": true, + "requires": { + "p-limit": "1.1.0" + } }, "p-map": { "version": "1.2.0", @@ -3253,19 +3866,35 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parseurl": { "version": "1.3.2", @@ -3277,7 +3906,11 @@ "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "dev": true + "dev": true, + "requires": { + "process": "0.11.10", + "util": "0.10.3" + } }, "path-browserify": { "version": "0.0.0", @@ -3312,13 +3945,19 @@ "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=" + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, + "requires": { + "pify": "2.3.0" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -3332,7 +3971,14 @@ "version": "3.0.14", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } }, "pify": { "version": "3.0.0", @@ -3350,13 +3996,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0" + } }, "pluralize": { "version": "7.0.0", @@ -3369,6 +4021,11 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, "dependencies": { "async": { "version": "1.5.2", @@ -3417,18 +4074,30 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" + "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=" + "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=", - "dev": true + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } }, "prr": { "version": "0.0.0", @@ -3446,7 +4115,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } }, "punycode": { "version": "1.4.1", @@ -3483,18 +4159,28 @@ "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 + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, @@ -3502,7 +4188,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, @@ -3510,13 +4199,20 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } }, "range-parser": { "version": "1.2.0", @@ -3528,45 +4224,98 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } }, "react": { "version": "16.1.1", "resolved": "https://registry.npmjs.org/react/-/react-16.1.1.tgz", - "integrity": "sha512-FQfiFfk2z2Fk87OngNJHT05KyC9DOVn8LPeB7ZX+9u5+yU1JK6o5ozRlU3PeOMr0IFkWNvgn9jU8/IhRxR1F0g==" + "integrity": "sha512-FQfiFfk2z2Fk87OngNJHT05KyC9DOVn8LPeB7ZX+9u5+yU1JK6o5ozRlU3PeOMr0IFkWNvgn9jU8/IhRxR1F0g==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } }, "react-dom": { "version": "16.1.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.1.1.tgz", - "integrity": "sha512-q06jiwST8SEPAMIEkAsu7BgynEZtqF87VrTc70XsW7nxVhWEu2Y4MF5UfxxHQO/mNtQHQWP0YcFxmwm9oMrMaQ==" + "integrity": "sha512-q06jiwST8SEPAMIEkAsu7BgynEZtqF87VrTc70XsW7nxVhWEu2Y4MF5UfxxHQO/mNtQHQWP0YcFxmwm9oMrMaQ==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.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==" + "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" + } }, "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==" + "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": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } }, "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" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -3580,13 +4329,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } }, "regenerate": { "version": "1.3.3", @@ -3603,19 +4362,32 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "regjsgen": { "version": "0.2.0", @@ -3628,6 +4400,9 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, + "requires": { + "jsesc": "0.5.0" + }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -3659,7 +4434,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "require-directory": { "version": "2.1.1", @@ -3677,7 +4455,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } }, "requires-port": { "version": "1.0.0", @@ -3690,6 +4472,9 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, "dependencies": { "resolve-from": { "version": "3.0.0", @@ -3714,31 +4499,48 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true + "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 + "dev": 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==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "is-promise": "2.1.0" + } }, "rx-lite": { "version": "4.0.8", @@ -3750,7 +4552,10 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } }, "safe-buffer": { "version": "5.1.1", @@ -3768,7 +4573,10 @@ "version": "1.10.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", - "dev": true + "dev": true, + "requires": { + "node-forge": "0.6.33" + } }, "semver": { "version": "5.4.1", @@ -3780,19 +4588,49 @@ "version": "0.16.1", "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dev": true + "dev": true, + "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" + } }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } }, "set-blocking": { "version": "2.0.0", @@ -3821,13 +4659,20 @@ "version": "2.4.9", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "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 + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } }, "shebang-regex": { "version": "1.0.0", @@ -3851,25 +4696,43 @@ "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 + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } }, "sockjs": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", - "dev": true + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + } }, "sockjs-client": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } } } }, @@ -3889,13 +4752,19 @@ "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 + "dev": true, + "requires": { + "source-map": "0.5.7" + } }, "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 + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -3913,13 +4782,30 @@ "version": "3.4.7", "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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" + } }, "sprintf-js": { "version": "1.0.3", @@ -3937,19 +4823,34 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true + "dev": true, + "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" + } }, "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" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -3961,7 +4862,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -3969,13 +4873,19 @@ "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 + "dev": true, + "requires": { + "safe-buffer": "5.1.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 + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -3993,7 +4903,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -4012,24 +4925,43 @@ "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, + "requires": { + "ajv": "5.3.0", + "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-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -4067,13 +4999,19 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } }, "to-arraybuffer": { "version": "1.0.1", @@ -4115,13 +5053,20 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "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=", - "dev": true + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } }, "typedarray": { "version": "0.0.6", @@ -4139,12 +5084,23 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": 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 + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -4159,7 +5115,12 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.2" + } }, "unpipe": { "version": "1.0.0", @@ -4172,6 +5133,10 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, "dependencies": { "punycode": { "version": "1.3.2", @@ -4186,6 +5151,10 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, "dependencies": { "querystringify": { "version": "1.0.0", @@ -4206,6 +5175,9 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, + "requires": { + "inherits": "2.0.1" + }, "dependencies": { "inherits": { "version": "2.0.1", @@ -4237,13 +5209,20 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true + "dev": true, + "requires": { + "user-home": "1.1.1" + } }, "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 + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "value-equal": { "version": "0.4.0", @@ -4260,36 +5239,77 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true + "dev": true, + "requires": { + "indexof": "0.0.1" + } }, "warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=" + "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", "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } }, "webpack": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.4", + "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.0.2", + "yargs": "8.0.2" + }, "dependencies": { "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -4297,13 +5317,49 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", - "dev": true + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.4.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } }, "webpack-dev-server": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.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": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.0", + "yargs": "6.6.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -4315,31 +5371,58 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "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==", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true + "dev": true, + "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" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, + "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", @@ -4353,13 +5436,23 @@ "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 + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -4373,19 +5466,30 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true + "dev": true, + "requires": { + "lcid": "1.0.0" + } }, "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 + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -4399,31 +5503,51 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "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 + "dev": true, + "requires": { + "is-utf8": "0.2.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 + "dev": true, + "requires": { + "has-flag": "2.0.0" + } }, "which-module": { "version": "1.0.0", @@ -4435,13 +5559,31 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0" + } } } }, @@ -4450,6 +5592,10 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz", "integrity": "sha512-Y7UddMCv6dGjy81nBv6nuQeFFIt5aalHm7uyDsAsW86nZwfOVPGRr3XMjEQLaT+WKo8rlzhC9qtbJvYKLtAwaw==", "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, "dependencies": { "source-map": { "version": "0.6.1", @@ -4463,7 +5609,11 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } }, "websocket-extensions": { "version": "0.1.3", @@ -4480,7 +5630,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "2.0.0", @@ -4505,18 +5658,30 @@ "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 + "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 + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -4530,7 +5695,10 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } }, "xtend": { "version": "4.0.1", @@ -4555,6 +5723,21 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, + "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" + }, "dependencies": { "camelcase": { "version": "4.1.0", @@ -4567,12 +5750,22 @@ "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 + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -4580,7 +5773,10 @@ "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 + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } } } }, @@ -4589,6 +5785,9 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, + "requires": { + "camelcase": "4.1.0" + }, "dependencies": { "camelcase": { "version": "4.1.0", diff --git a/package.json b/package.json index 3f8b8a1..ab640c6 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "author": "BIT", "license": "ISC", "dependencies": { + "axios": "^0.17.1", "babel-polyfill": "^6.26.0", "react": "^16.1.0", "react-dom": "^16.1.0", diff --git a/src/components/app.js b/src/components/app.js index f411643..30189e2 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -3,7 +3,7 @@ import LoginPage from "./login/loginPage"; import LoginForm from "./login/loginForm"; import RegisterForm from "./login/registerForm"; import { Switch, Route, Redirect } from "react-router-dom"; -import HelloWorld from "./helloWorld/helloWorld"; + class App extends React.Component { diff --git a/src/components/helloWorld/helloWorld.js b/src/components/helloWorld/helloWorld.js deleted file mode 100644 index c0ba8a7..0000000 --- a/src/components/helloWorld/helloWorld.js +++ /dev/null @@ -1,13 +0,0 @@ -import React from "react"; - -class HelloWorld extends React.Component { - constructor(props) { - super(props); - } - - render() { - return

Hello World!

; - } -} - -export default HelloWorld; diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js index dcab73d..003ed88 100644 --- a/src/components/login/loginForm.js +++ b/src/components/login/loginForm.js @@ -1,21 +1,26 @@ import React from "react"; +import FetchDataService from "../../services/fetchDataService"; + class LoginForm extends React.Component { constructor(props) { super(props); this.state = { - email: "", + username: "", password: "" }; + this.dataService = new FetchDataService(); - this.emailEntry = this.emailEntry.bind(this); + this.usernameEntry = this.usernameEntry.bind(this); this.passwordEntry = this.passwordEntry.bind(this); + this.handleClick = this.handleClick.bind(this); + } - emailEntry(event) { + usernameEntry(event) { const value = event.target.value; this.setState({ - email: value + username: value }); }; @@ -27,6 +32,17 @@ class LoginForm extends React.Component { }); }; + handleClick(){ + const data = { + username: this.state.username, + password: this.state.password + }; + + this.dataService.post("/login",data, (response)=>{console.log(response);}); + + } + + render() { return (
@@ -34,9 +50,9 @@ class LoginForm extends React.Component {
-
+
@@ -48,7 +64,7 @@ class LoginForm extends React.Component { />
- diff --git a/src/components/login/loginPage.js b/src/components/login/loginPage.js index 16465f9..fa5bb56 100644 --- a/src/components/login/loginPage.js +++ b/src/components/login/loginPage.js @@ -17,7 +17,7 @@ const LoginPage = (props) => {
- +
@@ -36,7 +36,7 @@ const LoginPage = (props) => {
-
+
diff --git a/src/services/fetchDataService.js b/src/services/fetchDataService.js index 227a98c..d8b36ad 100644 --- a/src/services/fetchDataService.js +++ b/src/services/fetchDataService.js @@ -1,45 +1,59 @@ import { HEADER_KEY } from "./../constants"; import { BASE_SERVICE_URL } from "./../constants"; - +import axios from "axios"; class FetchDataService { constructor() { } createHeader() { - return { - "key": HEADER_KEY, - "sessionId": sessionStorage.getItem("sessionId") - }; + if (sessionStorage.getItem("sessionId") !== null) { + return { + "Content-Type": " application/json", + "Accept": "application/json", + "Key": HEADER_KEY, + "sessionId": sessionStorage.getItem("sessionId") + }; + } else { + return { + "Accept": "application/json", + "Content-Type": " application/json", + "Key": HEADER_KEY + }; + } + } - get(url, handler, errorHandler) { - var myInit = { + + get(path, handler, errorHandler) { + + axios({ method: "GET", + url: `${BASE_SERVICE_URL}${path}`, headers: this.createHeader(), - }; - fetch(url, myInit) + }) .then((response) => { return response.json(); }) - .then((data) => { - handler(data); - }) + .then((data) => { handler(data); }) .catch(error => errorHandler(error) || console.log(error)); } - post(path, data, handler, errorHandler) { - const requestOptions = { + + post(path, data, handler) { + + axios({ method: "POST", + url: `${BASE_SERVICE_URL}${path}`, + data: JSON.stringify(data), headers: this.createHeader(), - body: JSON.stringify(data) - }; - fetch(`${BASE_SERVICE_URL}${path}`, requestOptions) - .then((response) => response.json()) + json: true + }) .then(response => { - handler(response); + return handler(response); + }) - .catch(error => errorHandler(error) || console.log(error)); + .catch(error => console.log(error)); } } From ad25ea75fef9aa2ad926c90ff3e6bee01d767969 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Wed, 22 Nov 2017 12:54:19 +0100 Subject: [PATCH 05/57] task4 --- src/components/login/loginForm.js | 24 ++++++++---- src/components/login/registerForm.js | 54 ++++++++++++++++++++------- src/services/authenticationService.js | 34 ++++++++--------- src/services/fetchDataService.js | 6 +-- src/services/redirectService.js | 9 +++-- 5 files changed, 79 insertions(+), 48 deletions(-) diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js index 003ed88..60ee3ba 100644 --- a/src/components/login/loginForm.js +++ b/src/components/login/loginForm.js @@ -1,6 +1,7 @@ import React from "react"; import FetchDataService from "../../services/fetchDataService"; +import AuthenticationService from "../../services/authenticationService"; class LoginForm extends React.Component { constructor(props) { @@ -10,25 +11,26 @@ class LoginForm extends React.Component { password: "" }; this.dataService = new FetchDataService(); - + this.authenticationService = new AuthenticationService(); this.usernameEntry = this.usernameEntry.bind(this); this.passwordEntry = this.passwordEntry.bind(this); this.handleClick = this.handleClick.bind(this); + this.handleClickLogOut = this.handleClickLogOut.bind(this); } usernameEntry(event) { - const value = event.target.value; + const usernameValue = event.target.value; this.setState({ - username: value + username: usernameValue }); }; passwordEntry(event) { - const value = event.target.value; + const passwordValue = event.target.value; this.setState({ - password: value + password: passwordValue }); }; @@ -38,8 +40,13 @@ class LoginForm extends React.Component { password: this.state.password }; - this.dataService.post("/login",data, (response)=>{console.log(response);}); - + this.authenticationService.logIn(data); + // this.dataService.post("/login",data, (response)=>{console.log(response);}); + + + } + handleClickLogOut(){ + this.authenticationService.logOut(); } @@ -66,6 +73,9 @@ class LoginForm extends React.Component { < br /> + diff --git a/src/components/login/registerForm.js b/src/components/login/registerForm.js index 211aabf..bf42f63 100644 --- a/src/components/login/registerForm.js +++ b/src/components/login/registerForm.js @@ -1,18 +1,22 @@ import React from "react"; +import AuthenticationService from "../../services/authenticationService"; class RegisterForm extends React.Component { constructor(props) { super(props); this.state = { + username: "", + password: "", name: "", - email: "", - password: "" + email: "" }; + this.authenticationService = new AuthenticationService(); this.emailEntry = this.emailEntry.bind(this); this.passwordEntry = this.passwordEntry.bind(this); + this.usernameEntry = this.usernameEntry.bind(this); + this.onRegisterClick = this.onRegisterClick.bind(this); this.nameEntry = this.nameEntry.bind(this); - } emailEntry(event) { const value = event.target.value; @@ -28,6 +32,13 @@ class RegisterForm extends React.Component { password: value }); }; + usernameEntry(event) { + const value = event.target.value; + this.setState({ + username: value + }); + }; + nameEntry(event) { const value = event.target.value; this.setState({ @@ -37,9 +48,15 @@ class RegisterForm extends React.Component { - onRegisterClick(){ - let registration = this.state.registration; - + onRegisterClick() { + const data = { + username: this.state.username, + password: this.state.password, + name: this.state.name, + email: this.state.email + }; + this.authenticationService.register(data); + } @@ -49,30 +66,39 @@ class RegisterForm extends React.Component {
-
+
-
- Password
+
-
-
+
+
+
+
+
+
+
+ + diff --git a/src/services/authenticationService.js b/src/services/authenticationService.js index 0b91686..2400a20 100644 --- a/src/services/authenticationService.js +++ b/src/services/authenticationService.js @@ -1,39 +1,35 @@ import FetchDataService from "./fetchDataService"; -import default "./redirectService"; +import RedirectionService from "./redirectService"; class AuthenticationService { constructor() { this.serviceData = new FetchDataService(); + this.redirectService = new RedirectionService(); } - logIn(user) { - let userLoginUrl = `/login`; - this.serviceData.post(userLoginUrl, user, (data) => { + logIn(user) { + let userLoginUrl = "/login"; + this.serviceData.post(userLoginUrl, user, (response) => { + console.log(response); + sessionStorage.setItem("sessionId", response.data.sessionId); - sessionStorage.setItem("sessionId", data.sessionId); - }, (error) => { - return error; }); } logOut() { - sessionStorage.setItem("sessionId", null); - redirect("/"); + sessionStorage.removeItem("sessionId"); + this.redirectService.redirect("/"); } - isUserAuthenticated(user) { - let userLoginUrl = `/login`; - this.serviceData.get(userLoginUrl, (data) => { - if (user.email === data.email) { - redirect('/profile'); - } - }); + isUserAuthenticated() { + return !!localStorage.getItem("sessionId"); } register(user) { - let userLoginUrl = `/register`; - this.serviceData.post(userLoginUrl, user, (data) => { - redirect("/"); + let userRegisterUrl = "/register"; + this.serviceData.post(userRegisterUrl, user, (response) => { + console.log(response); + this.redirectService.redirect("/"); }, (error) => { return error; }); diff --git a/src/services/fetchDataService.js b/src/services/fetchDataService.js index d8b36ad..78348e1 100644 --- a/src/services/fetchDataService.js +++ b/src/services/fetchDataService.js @@ -32,9 +32,6 @@ class FetchDataService { headers: this.createHeader(), }) - .then((response) => { - return response.json(); - }) .then((data) => { handler(data); }) .catch(error => errorHandler(error) || console.log(error)); } @@ -45,13 +42,12 @@ class FetchDataService { axios({ method: "POST", url: `${BASE_SERVICE_URL}${path}`, - data: JSON.stringify(data), + data: data, headers: this.createHeader(), json: true }) .then(response => { return handler(response); - }) .catch(error => console.log(error)); } diff --git a/src/services/redirectService.js b/src/services/redirectService.js index fb2ec5a..eaf699e 100644 --- a/src/services/redirectService.js +++ b/src/services/redirectService.js @@ -1,6 +1,9 @@ -function redirect(path) { - return window.location.href = path; +class RedirectionService{ + + redirect(path){ + window.location.assign("/#/${path}"); + } } -export default redirect; \ No newline at end of file +export default RedirectionService; \ No newline at end of file From be3619d0e58eb79ee62046bfa8d47583a1ba2a38 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Wed, 22 Nov 2017 12:54:59 +0100 Subject: [PATCH 06/57] #5 --- package-lock.json | 3189 ++++++++++++++++------- src/components/app.js | 7 +- src/components/common/footer.js | 9 + src/components/common/header.js | 34 + src/components/common/mainPage.js | 22 + src/components/helloWorld/helloWorld.js | 13 - src/components/login/loginPage.js | 34 +- src/components/login/welcomePage.js | 40 + src/main.css | 2 - 9 files changed, 2314 insertions(+), 1036 deletions(-) create mode 100644 src/components/common/footer.js create mode 100644 src/components/common/header.js create mode 100644 src/components/common/mainPage.js delete mode 100644 src/components/helloWorld/helloWorld.js create mode 100644 src/components/login/welcomePage.js diff --git a/package-lock.json b/package-lock.json index 5d33951..c24bede 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,12 +2,17 @@ "name": "blog", "version": "1.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "accepts": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "dev": true + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } }, "acorn": { "version": "5.2.1", @@ -20,6 +25,9 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, + "requires": { + "acorn": "4.0.13" + }, "dependencies": { "acorn": { "version": "4.0.13", @@ -34,6 +42,9 @@ "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", @@ -47,7 +58,13 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true + "dev": true, + "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", @@ -59,7 +76,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "ansi-escapes": { "version": "3.0.0", @@ -89,19 +111,29 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "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 + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-flatten": { "version": "1.1.0", @@ -125,13 +157,20 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.9.0" + } }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } }, "array-uniq": { "version": "1.0.3", @@ -160,19 +199,30 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "util": "0.10.3" + } }, "async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4" + } }, "async-each": { "version": "1.0.1", @@ -184,103 +234,220 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.11.0", + "convert-source-map": "1.5.0", + "fs-readdir-recursive": "1.1.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + } }, "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 + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } }, "babel-core": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.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=", - "dev": true + "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-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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-define-map": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helper-regex": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-syntax-flow": { "version": "6.18.0", @@ -298,209 +465,393 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.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=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } }, "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=" + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "regenerator-runtime": "0.10.5" + } }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } }, "babel-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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "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.1", + "regenerator-runtime": "0.11.0" + }, "dependencies": { "regenerator-runtime": { "version": "0.11.0", @@ -513,19 +864,43 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true + "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 + "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" + } }, "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 + "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", @@ -573,25 +948,54 @@ "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true + "dev": true, + "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" + } }, "bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true + "dev": true, + "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.0", + "multicast-dns-service-types": "1.1.0" + } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true + "dev": true, + "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 + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "brorand": { "version": "1.1.0", @@ -603,43 +1007,82 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "pako": "1.0.6" + } }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -683,7 +1126,10 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true + "dev": true, + "requires": { + "callsites": "0.2.0" + } }, "callsites": { "version": "0.2.0", @@ -702,6 +1148,10 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, "dependencies": { "camelcase": { "version": "2.1.1", @@ -715,13 +1165,24 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "chardet": { "version": "0.4.0", @@ -733,13 +1194,27 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "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==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "circular-json": { "version": "0.3.3", @@ -751,7 +1226,10 @@ "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 + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } }, "cli-width": { "version": "2.2.0", @@ -764,6 +1242,11 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -789,7 +1272,10 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.3" + } }, "color-name": { "version": "1.1.3", @@ -813,13 +1299,25 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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", @@ -831,7 +1329,12 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } }, "connect-history-api-fallback": { "version": "1.5.0", @@ -843,7 +1346,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true + "dev": true, + "requires": { + "date-now": "0.1.4" + } }, "constants-browserify": { "version": "1.0.0", @@ -896,43 +1402,85 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true + "dev": true, + "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.9" + } }, "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 + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } }, "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==", - "dev": true + "dev": true, + "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.5", + "randomfill": "1.0.3" + } }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "es5-ext": "0.10.35" + } }, "date-now": { "version": "0.1.4", @@ -944,7 +1492,10 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -968,13 +1519,26 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true + "dev": true, + "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -994,7 +1558,11 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "destroy": { "version": "1.0.4", @@ -1006,7 +1574,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "detect-node": { "version": "2.0.3", @@ -1018,7 +1589,12 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } }, "dns-equal": { "version": "1.0.0", @@ -1030,19 +1606,30 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.2.2.tgz", "integrity": "sha512-kN+DjfGF7dJGUL7nWRktL9Z18t1rWP3aQlyZdY8XlpvU3Nc6GeFTQApftcjtWKxAZfiggZSGrCEoszNgvnpwDg==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -1068,7 +1655,16 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true + "dev": true, + "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", @@ -1085,73 +1681,134 @@ "encoding": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=" + "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=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true + "dev": true, + "requires": { + "prr": "0.0.0" + } }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es-abstract": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", - "dev": true + "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 + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } }, "es5-ext": { "version": "0.10.35", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.35.tgz", "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-symbol": "3.1.1" + } }, "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "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=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "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=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } }, "es6-weak-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } }, "escape-html": { "version": "1.0.3", @@ -1169,13 +1826,58 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "eslint": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", "dev": true, + "requires": { + "ajv": "5.3.0", + "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.0", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.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.4.1", + "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", @@ -1187,31 +1889,48 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -1219,25 +1938,46 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", - "dev": true + "dev": true, + "requires": { + "loader-fs-cache": "1.0.1", + "loader-utils": "1.1.0", + "object-assign": "4.1.1", + "object-hash": "1.2.0", + "rimraf": "2.6.2" + } }, "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==", - "dev": true + "dev": true, + "requires": { + "doctrine": "2.0.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=", - "dev": true + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } }, "espree": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", - "dev": true + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } }, "esprima": { "version": "4.0.0", @@ -1249,13 +1989,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true + "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 + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } }, "estraverse": { "version": "4.2.0", @@ -1279,7 +2026,11 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.35" + } }, "eventemitter3": { "version": "1.2.0", @@ -1297,37 +2048,91 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "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=", - "dev": true + "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 + "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 + "dev": true, + "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=", "dev": true, + "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": { "array-flatten": { "version": "1.1.1", @@ -1347,13 +2152,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", - "dev": true + "dev": true, + "requires": { + "chardet": "0.4.0", + "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 + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "fast-deep-equal": { "version": "1.0.0", @@ -1377,12 +2190,24 @@ "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true + "dev": true, + "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", @@ -1395,13 +2220,20 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true + "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 + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } }, "filename-regex": { "version": "2.0.1", @@ -1413,31 +2245,61 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "finalhandler": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true + "dev": true, + "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" + } }, "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "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 + "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", @@ -1449,7 +2311,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "foreach": { "version": "2.0.5", @@ -1459,687 +2324,27 @@ }, "forwarded": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "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, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "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 - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true - }, - "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 - }, - "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 - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "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 - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true - }, - "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 - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, - "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 - }, - "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 - }, - "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 - }, - "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, - "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 - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "dev": true, - "optional": true - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "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 - }, - "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, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true - }, - "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 - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "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 - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "function-bind": { "version": "1.1.1", @@ -2175,19 +2380,34 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "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 + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.18.0", @@ -2200,6 +2420,14 @@ "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -2225,13 +2453,19 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true + "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 + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-flag": { "version": "2.0.0", @@ -2243,24 +2477,43 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } }, "history": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", - "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==" + "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", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } }, "hoist-non-react-statics": { "version": "2.3.1", @@ -2271,7 +2524,11 @@ "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 + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "hosted-git-info": { "version": "2.5.0", @@ -2283,7 +2540,13 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.1", + "readable-stream": "2.3.3", + "wbuf": "1.7.2" + } }, "html-entities": { "version": "1.2.1", @@ -2302,6 +2565,12 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + }, "dependencies": { "setprototypeof": { "version": "1.0.3", @@ -2321,13 +2590,23 @@ "version": "1.16.2", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true + "dev": true, + "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=", "dev": true, + "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", @@ -2339,7 +2618,10 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } } } }, @@ -2370,7 +2652,11 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz", "integrity": "sha1-sReVcqrNwRxqkQCftDDbyrX2aKg=", - "dev": true + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } }, "imurmurhash": { "version": "0.1.4", @@ -2382,7 +2668,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "indexof": { "version": "0.0.1", @@ -2394,7 +2683,11 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -2407,6 +2700,22 @@ "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" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -2418,25 +2727,39 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -2444,7 +2767,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true + "dev": true, + "requires": { + "meow": "3.7.0" + } }, "interpret": { "version": "1.0.4", @@ -2455,7 +2781,10 @@ "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -2485,7 +2814,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } }, "is-buffer": { "version": "1.1.6", @@ -2497,7 +2829,10 @@ "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 + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-callable": { "version": "1.1.3", @@ -2521,7 +2856,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -2539,7 +2877,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -2551,13 +2892,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-path-cwd": { "version": "1.0.0", @@ -2569,13 +2916,19 @@ "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 + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -2599,13 +2952,19 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true + "dev": true, + "requires": { + "has": "1.0.1" + } }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true + "dev": true, + "requires": { + "tryit": "1.0.3" + } }, "is-stream": { "version": "1.1.0", @@ -2646,6 +3005,9 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, + "requires": { + "isarray": "1.0.0" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -2658,7 +3020,11 @@ "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=" + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } }, "js-tokens": { "version": "3.0.2", @@ -2669,7 +3035,11 @@ "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 + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } }, "jsesc": { "version": "1.3.0", @@ -2711,7 +3081,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true + "dev": true, + "requires": { + "array-includes": "3.0.3" + } }, "killable": { "version": "1.0.0", @@ -2723,7 +3096,10 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } }, "lazy-cache": { "version": "1.0.4", @@ -2735,19 +3111,32 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -2762,30 +3151,49 @@ "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", "dev": true, + "requires": { + "find-cache-dir": "0.1.1", + "mkdirp": "0.5.1" + }, "dependencies": { "find-cache-dir": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "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 + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2" + } } } }, @@ -2799,13 +3207,22 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } }, "lodash": { "version": "4.17.4", @@ -2828,25 +3245,39 @@ "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + "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=", - "dev": true + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "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 + "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==", - "dev": true + "dev": true, + "requires": { + "pify": "3.0.0" + } }, "map-obj": { "version": "1.0.1", @@ -2859,12 +3290,20 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } } } }, @@ -2878,31 +3317,61 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, "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 + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "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 + "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" + } }, "minimist": { "version": "1.2.0", @@ -2914,13 +3383,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "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 + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pify": { "version": "2.3.0", @@ -2932,19 +3409,31 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "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 + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } } } }, @@ -2964,13 +3453,32 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.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==", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } }, "mime": { "version": "1.4.1", @@ -2988,7 +3496,10 @@ "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true + "dev": true, + "requires": { + "mime-db": "1.30.0" + } }, "mimic-fn": { "version": "1.1.0", @@ -3012,7 +3523,10 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.8", @@ -3024,7 +3538,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -3036,7 +3553,11 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.0.tgz", "integrity": "sha512-tnQqWkuWYHCOVRveiWQf+5KjHUnEmtxUycTy1esL4prQjXoT4qpndIS4fH63zObmHNxIHke3YHRnQrXYpXHf2A==", - "dev": true + "dev": true, + "requires": { + "dns-packet": "1.2.2", + "thunky": "0.1.0" + } }, "multicast-dns-service-types": { "version": "1.1.0", @@ -3050,13 +3571,6 @@ "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", @@ -3072,7 +3586,11 @@ "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==" + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } }, "node-forge": { "version": "0.6.33", @@ -3084,25 +3602,62 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true + "dev": true, + "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.7.2", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.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 + "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 + "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 + "dev": true, + "requires": { + "path-key": "2.0.1" + } }, "number-is-nan": { "version": "1.0.1", @@ -3131,7 +3686,11 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "obuf": { "version": "1.1.1", @@ -3143,7 +3702,10 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, "on-headers": { "version": "1.0.1", @@ -3155,37 +3717,61 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "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 + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } }, "opn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", - "dev": true + "dev": true, + "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=", - "dev": true + "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" + } }, "original": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } } } }, @@ -3205,7 +3791,12 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } }, "os-tmpdir": { "version": "1.0.2", @@ -3217,7 +3808,12 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } }, "p-finally": { "version": "1.0.0", @@ -3235,7 +3831,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true + "dev": true, + "requires": { + "p-limit": "1.1.0" + } }, "p-map": { "version": "1.2.0", @@ -3253,19 +3852,35 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parseurl": { "version": "1.3.2", @@ -3277,7 +3892,11 @@ "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "dev": true + "dev": true, + "requires": { + "process": "0.11.10", + "util": "0.10.3" + } }, "path-browserify": { "version": "0.0.0", @@ -3312,13 +3931,19 @@ "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=" + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, + "requires": { + "pify": "2.3.0" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -3332,7 +3957,14 @@ "version": "3.0.14", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", - "dev": true + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } }, "pify": { "version": "3.0.0", @@ -3350,13 +3982,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0" + } }, "pluralize": { "version": "7.0.0", @@ -3369,6 +4007,11 @@ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + }, "dependencies": { "async": { "version": "1.5.2", @@ -3417,18 +4060,30 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" + "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=" + "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=", - "dev": true + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } }, "prr": { "version": "0.0.0", @@ -3446,7 +4101,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } }, "punycode": { "version": "1.4.1", @@ -3483,18 +4145,28 @@ "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 + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, @@ -3502,7 +4174,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, @@ -3510,13 +4185,20 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } }, "range-parser": { "version": "1.2.0", @@ -3528,45 +4210,98 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } }, "react": { "version": "16.1.1", "resolved": "https://registry.npmjs.org/react/-/react-16.1.1.tgz", - "integrity": "sha512-FQfiFfk2z2Fk87OngNJHT05KyC9DOVn8LPeB7ZX+9u5+yU1JK6o5ozRlU3PeOMr0IFkWNvgn9jU8/IhRxR1F0g==" + "integrity": "sha512-FQfiFfk2z2Fk87OngNJHT05KyC9DOVn8LPeB7ZX+9u5+yU1JK6o5ozRlU3PeOMr0IFkWNvgn9jU8/IhRxR1F0g==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } }, "react-dom": { "version": "16.1.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.1.1.tgz", - "integrity": "sha512-q06jiwST8SEPAMIEkAsu7BgynEZtqF87VrTc70XsW7nxVhWEu2Y4MF5UfxxHQO/mNtQHQWP0YcFxmwm9oMrMaQ==" + "integrity": "sha512-q06jiwST8SEPAMIEkAsu7BgynEZtqF87VrTc70XsW7nxVhWEu2Y4MF5UfxxHQO/mNtQHQWP0YcFxmwm9oMrMaQ==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.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==" + "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" + } }, "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==" + "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": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } }, "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" + }, "dependencies": { "isarray": { "version": "1.0.0", @@ -3580,13 +4315,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } }, "regenerate": { "version": "1.3.3", @@ -3603,19 +4348,32 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true + "dev": true, + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } }, "regjsgen": { "version": "0.2.0", @@ -3628,6 +4386,9 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, + "requires": { + "jsesc": "0.5.0" + }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -3659,7 +4420,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "require-directory": { "version": "2.1.1", @@ -3677,7 +4441,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } }, "requires-port": { "version": "1.0.0", @@ -3690,6 +4458,9 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, "dependencies": { "resolve-from": { "version": "3.0.0", @@ -3714,31 +4485,48 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true + "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 + "dev": 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==", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "is-promise": "2.1.0" + } }, "rx-lite": { "version": "4.0.8", @@ -3750,7 +4538,10 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } }, "safe-buffer": { "version": "5.1.1", @@ -3768,7 +4559,10 @@ "version": "1.10.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", - "dev": true + "dev": true, + "requires": { + "node-forge": "0.6.33" + } }, "semver": { "version": "5.4.1", @@ -3780,19 +4574,49 @@ "version": "0.16.1", "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", - "dev": true + "dev": true, + "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" + } }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } }, "set-blocking": { "version": "2.0.0", @@ -3821,13 +4645,20 @@ "version": "2.4.9", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } }, "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 + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } }, "shebang-regex": { "version": "1.0.0", @@ -3851,25 +4682,43 @@ "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 + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } }, "sockjs": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", - "dev": true + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "2.0.3" + } }, "sockjs-client": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } } } }, @@ -3889,13 +4738,19 @@ "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 + "dev": true, + "requires": { + "source-map": "0.5.7" + } }, "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 + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -3913,13 +4768,30 @@ "version": "3.4.7", "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "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" + } }, "sprintf-js": { "version": "1.0.3", @@ -3937,19 +4809,34 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true + "dev": true, + "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" + } }, "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" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -3961,7 +4848,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -3969,13 +4859,19 @@ "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 + "dev": true, + "requires": { + "safe-buffer": "5.1.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 + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -3993,7 +4889,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -4012,24 +4911,43 @@ "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, + "requires": { + "ajv": "5.3.0", + "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-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -4067,13 +4985,19 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", - "dev": true + "dev": true, + "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==", - "dev": true + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } }, "to-arraybuffer": { "version": "1.0.1", @@ -4115,13 +5039,20 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "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=", - "dev": true + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } }, "typedarray": { "version": "0.0.6", @@ -4139,12 +5070,23 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": 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 + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -4159,7 +5101,12 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.2" + } }, "unpipe": { "version": "1.0.0", @@ -4172,6 +5119,10 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, "dependencies": { "punycode": { "version": "1.3.2", @@ -4186,6 +5137,10 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", "dev": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + }, "dependencies": { "querystringify": { "version": "1.0.0", @@ -4206,6 +5161,9 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, + "requires": { + "inherits": "2.0.1" + }, "dependencies": { "inherits": { "version": "2.0.1", @@ -4237,13 +5195,20 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true + "dev": true, + "requires": { + "user-home": "1.1.1" + } }, "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 + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "value-equal": { "version": "0.4.0", @@ -4260,36 +5225,77 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true + "dev": true, + "requires": { + "indexof": "0.0.1" + } }, "warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=" + "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", "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "minimalistic-assert": "1.0.0" + } }, "webpack": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz", "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==", "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.3.0", + "ajv-keywords": "2.1.1", + "async": "2.6.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.4", + "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.0.2", + "yargs": "8.0.2" + }, "dependencies": { "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -4297,13 +5303,49 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz", "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", - "dev": true + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.4.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } }, "webpack-dev-server": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz", "integrity": "sha512-thrqC0EQEoSjXeYgP6pUXcUCZ+LNrKsDPn+mItLnn5VyyNZOJKd06hUP5vqkYwL8nWWXsii0loSF9NHNccT6ow==", "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "1.7.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": "0.1.1", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.0", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.1", + "sockjs": "0.3.18", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "4.5.0", + "webpack-dev-middleware": "1.12.0", + "yargs": "6.6.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -4315,31 +5357,58 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "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==", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true + "dev": true, + "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" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, + "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", @@ -4353,13 +5422,23 @@ "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 + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -4373,19 +5452,30 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true + "dev": true, + "requires": { + "lcid": "1.0.0" + } }, "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 + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "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" + }, "dependencies": { "pify": { "version": "2.3.0", @@ -4399,31 +5489,51 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "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 + "dev": true, + "requires": { + "is-utf8": "0.2.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 + "dev": true, + "requires": { + "has-flag": "2.0.0" + } }, "which-module": { "version": "1.0.0", @@ -4435,13 +5545,31 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true + "dev": true, + "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=", - "dev": true + "dev": true, + "requires": { + "camelcase": "3.0.0" + } } } }, @@ -4450,6 +5578,10 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz", "integrity": "sha512-Y7UddMCv6dGjy81nBv6nuQeFFIt5aalHm7uyDsAsW86nZwfOVPGRr3XMjEQLaT+WKo8rlzhC9qtbJvYKLtAwaw==", "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, "dependencies": { "source-map": { "version": "0.6.1", @@ -4463,7 +5595,11 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } }, "websocket-extensions": { "version": "0.1.3", @@ -4480,7 +5616,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "2.0.0", @@ -4505,18 +5644,30 @@ "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 + "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 + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -4530,7 +5681,10 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } }, "xtend": { "version": "4.0.1", @@ -4555,6 +5709,21 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, + "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" + }, "dependencies": { "camelcase": { "version": "4.1.0", @@ -4567,12 +5736,22 @@ "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 + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } } } }, @@ -4580,7 +5759,10 @@ "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 + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } } } }, @@ -4589,6 +5771,9 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, + "requires": { + "camelcase": "4.1.0" + }, "dependencies": { "camelcase": { "version": "4.1.0", diff --git a/src/components/app.js b/src/components/app.js index f411643..e92653b 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -3,7 +3,9 @@ import LoginPage from "./login/loginPage"; import LoginForm from "./login/loginForm"; import RegisterForm from "./login/registerForm"; import { Switch, Route, Redirect } from "react-router-dom"; -import HelloWorld from "./helloWorld/helloWorld"; +import Header from "./common/header"; + + class App extends React.Component { @@ -17,7 +19,8 @@ class App extends React.Component {
- + + diff --git a/src/components/common/footer.js b/src/components/common/footer.js new file mode 100644 index 0000000..21bf080 --- /dev/null +++ b/src/components/common/footer.js @@ -0,0 +1,9 @@ +import React from "react"; + +const Footer = () => { + return ( +

Copyright â’¸ Team Candies

+ ); + +}; +export default Footer; \ No newline at end of file diff --git a/src/components/common/header.js b/src/components/common/header.js new file mode 100644 index 0000000..501eff1 --- /dev/null +++ b/src/components/common/header.js @@ -0,0 +1,34 @@ +import React from "react"; + +const Header = () => { + + return ( +
+ + Bitbook + + +
+ + + + ); +}; + +export default Header; \ No newline at end of file diff --git a/src/components/common/mainPage.js b/src/components/common/mainPage.js new file mode 100644 index 0000000..1cd45c8 --- /dev/null +++ b/src/components/common/mainPage.js @@ -0,0 +1,22 @@ +import React from "react"; +import Header from "./header"; +import AuthenticationService from "../../services/authenticationService"; + + +class MainPage extends React.Component { + constructor(props) { + super(props); + this.AuthenticationService = new AuthenticationService(); + + } + + render() { + return ( +
+
+
+ ); + } +}; + +export default MainPage; \ No newline at end of file diff --git a/src/components/helloWorld/helloWorld.js b/src/components/helloWorld/helloWorld.js deleted file mode 100644 index c0ba8a7..0000000 --- a/src/components/helloWorld/helloWorld.js +++ /dev/null @@ -1,13 +0,0 @@ -import React from "react"; - -class HelloWorld extends React.Component { - constructor(props) { - super(props); - } - - render() { - return

Hello World!

; - } -} - -export default HelloWorld; diff --git a/src/components/login/loginPage.js b/src/components/login/loginPage.js index 16465f9..dd34e17 100644 --- a/src/components/login/loginPage.js +++ b/src/components/login/loginPage.js @@ -17,26 +17,26 @@ const LoginPage = (props) => {
- - -
-
- Login -
-
- Register -
-
-
- - - - - +
+
+ Login +
+
+ Register
-
+
+
+ + + + + + + +
+ diff --git a/src/components/login/welcomePage.js b/src/components/login/welcomePage.js new file mode 100644 index 0000000..4899b69 --- /dev/null +++ b/src/components/login/welcomePage.js @@ -0,0 +1,40 @@ +import React from "react"; +import AuthenticationService from "../../services/authenticationService"; +import { Switch, Redirect, Route } from "react-router-dom"; +import LoginPage from "./loginPage"; +import RegisterForm from "./registerForm"; + + +class WelcomePage extends React.Component { + constructor(props) { + super(props); + this.AuthenticationService = new AuthenticationService(); + } + render() { + if (this.AuthenticationService.isUserAuthenticated()) { + return ( + + + + + ); + + } + return ( +
+ + + + + + +
+ ); + + + + + } +}; + +export default WelcomePage; \ No newline at end of file diff --git a/src/main.css b/src/main.css index 44d1b14..9407d8d 100644 --- a/src/main.css +++ b/src/main.css @@ -4,9 +4,7 @@ text-align: center; } -#welcome{ -} #login{ From 6e192482e2f9f92d2a5fad73fa16881de9f94e33 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Wed, 22 Nov 2017 16:40:38 +0100 Subject: [PATCH 07/57] error handler --- src/components/app.js | 4 ---- src/components/login/loginForm.js | 32 ++++++++++++++------------- src/components/login/loginPage.js | 30 +++++-------------------- src/components/login/registerForm.js | 10 +++++++-- src/main.css | 11 ++++++++- src/services/authenticationService.js | 14 +++++++----- src/services/errorHandlerService.js | 19 ++++++++++++++++ src/services/fetchDataService.js | 8 ++++--- 8 files changed, 73 insertions(+), 55 deletions(-) create mode 100644 src/services/errorHandlerService.js diff --git a/src/components/app.js b/src/components/app.js index d728727..c56724a 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -3,13 +3,9 @@ import LoginPage from "./login/loginPage"; import LoginForm from "./login/loginForm"; import RegisterForm from "./login/registerForm"; import { Switch, Route, Redirect } from "react-router-dom"; - import Header from "./common/header"; - - - class App extends React.Component { constructor(props) { super(props); diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js index 60ee3ba..8040f1c 100644 --- a/src/components/login/loginForm.js +++ b/src/components/login/loginForm.js @@ -8,7 +8,8 @@ class LoginForm extends React.Component { super(props); this.state = { username: "", - password: "" + password: "", + errorMsg: "" }; this.dataService = new FetchDataService(); this.authenticationService = new AuthenticationService(); @@ -17,7 +18,7 @@ class LoginForm extends React.Component { this.passwordEntry = this.passwordEntry.bind(this); this.handleClick = this.handleClick.bind(this); this.handleClickLogOut = this.handleClickLogOut.bind(this); - + } usernameEntry(event) { const usernameValue = event.target.value; @@ -34,30 +35,30 @@ class LoginForm extends React.Component { }); }; - handleClick(){ + handleClick() { const data = { username: this.state.username, password: this.state.password }; - this.authenticationService.logIn(data); - // this.dataService.post("/login",data, (response)=>{console.log(response);}); - - + this.authenticationService.logIn(data, (errorMsg) => { + this.setState({ errorMsg: errorMsg }); + }); + } - handleClickLogOut(){ + + handleClickLogOut() { this.authenticationService.logOut(); } - render() { return (
- +
-
+
@@ -71,11 +72,12 @@ class LoginForm extends React.Component { />
- < br /> -
diff --git a/src/components/login/loginPage.js b/src/components/login/loginPage.js index 3ed6602..c733ad4 100644 --- a/src/components/login/loginPage.js +++ b/src/components/login/loginPage.js @@ -5,6 +5,8 @@ import { Switch, Route } from "react-router-dom"; import { Link } from "react-router-dom"; +console.log("Stop! This is a browser feature intended for developers. If someone told you to copy-paste something here to enable a Facebook feature or hack someones account, it is a scam and will give them access to your Facebook account. See bitbook website for more information"); + const LoginPage = (props) => { return (
@@ -17,46 +19,24 @@ const LoginPage = (props) => {
- -======= -
- -
-
- Login -
-
- Register -
-
-
- - - - ->> - -
-
- Login +
+ Login
Register
+
- -
-=======
diff --git a/src/components/login/registerForm.js b/src/components/login/registerForm.js index bf42f63..b303975 100644 --- a/src/components/login/registerForm.js +++ b/src/components/login/registerForm.js @@ -8,7 +8,8 @@ class RegisterForm extends React.Component { username: "", password: "", name: "", - email: "" + email: "", + errorMsg: "" }; this.authenticationService = new AuthenticationService(); @@ -55,7 +56,11 @@ class RegisterForm extends React.Component { name: this.state.name, email: this.state.email }; - this.authenticationService.register(data); + this.authenticationService.register(data, (error) => { + this.setState({errorMsg: error}); + }); + + } @@ -102,6 +107,7 @@ class RegisterForm extends React.Component { +
{this.state.errorMsg}
); diff --git a/src/main.css b/src/main.css index 9407d8d..e41a13a 100644 --- a/src/main.css +++ b/src/main.css @@ -9,16 +9,20 @@ #login{ width: 40%; - margin-top:20px; + margin-top:15px; background-color: white; color: rgb(90, 90, 219); + border-radius: 25px; } + + #login:hover{ background-color: rgb(65, 65, 206); color: white; } + label{ margin-top:10px; } @@ -54,4 +58,9 @@ body{ height: 50px; padding-top:10px; font-size: 18px; + border-radius: 25px; +} + +#input_text{ + border-radius: 25px; } \ No newline at end of file diff --git a/src/services/authenticationService.js b/src/services/authenticationService.js index 2400a20..6482198 100644 --- a/src/services/authenticationService.js +++ b/src/services/authenticationService.js @@ -1,19 +1,23 @@ import FetchDataService from "./fetchDataService"; import RedirectionService from "./redirectService"; +import ErrorHandlerService from "./errorHandlerService"; class AuthenticationService { constructor() { this.serviceData = new FetchDataService(); this.redirectService = new RedirectionService(); + this.errorHandlerService = new ErrorHandlerService(); } + logIn(user, showError) { + - logIn(user) { let userLoginUrl = "/login"; this.serviceData.post(userLoginUrl, user, (response) => { - console.log(response); sessionStorage.setItem("sessionId", response.data.sessionId); + }, (error) => { + showError(error); }); } @@ -25,13 +29,13 @@ class AuthenticationService { isUserAuthenticated() { return !!localStorage.getItem("sessionId"); } - register(user) { + register(user, registerError) { let userRegisterUrl = "/register"; this.serviceData.post(userRegisterUrl, user, (response) => { - console.log(response); + // console.log(response); this.redirectService.redirect("/"); }, (error) => { - return error; + registerError(error); }); } } diff --git a/src/services/errorHandlerService.js b/src/services/errorHandlerService.js new file mode 100644 index 0000000..9dde620 --- /dev/null +++ b/src/services/errorHandlerService.js @@ -0,0 +1,19 @@ + +class ErrorHandlerService{ + constructor(){} + + emptyInputData(data){ + if(data===""){ + console.log("Empty fields."); + } + } + + + + + + +} + + +export default ErrorHandlerService; \ No newline at end of file diff --git a/src/services/fetchDataService.js b/src/services/fetchDataService.js index 78348e1..28e8d87 100644 --- a/src/services/fetchDataService.js +++ b/src/services/fetchDataService.js @@ -37,8 +37,8 @@ class FetchDataService { } - post(path, data, handler) { - + post(path, data, handler, errorHandler) { + axios({ method: "POST", url: `${BASE_SERVICE_URL}${path}`, @@ -49,7 +49,9 @@ class FetchDataService { .then(response => { return handler(response); }) - .catch(error => console.log(error)); + .catch(error => { + errorHandler(error.response.data.error.message) || console.log(error); + }); } } From 22f0571054c268193c5c101093580050234f35f2 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Wed, 22 Nov 2017 17:30:07 +0100 Subject: [PATCH 08/57] userAuthentication --- src/components/app.js | 4 ++-- src/components/common/mainPage.js | 7 ++----- src/components/login/loginForm.js | 14 +++++++++++--- src/components/login/registerForm.js | 8 ++------ src/services/authenticationService.js | 7 ++++--- src/services/redirectService.js | 2 +- 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/components/app.js b/src/components/app.js index c56724a..6eac456 100644 --- a/src/components/app.js +++ b/src/components/app.js @@ -3,7 +3,7 @@ import LoginPage from "./login/loginPage"; import LoginForm from "./login/loginForm"; import RegisterForm from "./login/registerForm"; import { Switch, Route, Redirect } from "react-router-dom"; -import Header from "./common/header"; +import MainPage from "./common/mainPage"; class App extends React.Component { @@ -18,7 +18,7 @@ class App extends React.Component {
- + diff --git a/src/components/common/mainPage.js b/src/components/common/mainPage.js index 1cd45c8..272daa7 100644 --- a/src/components/common/mainPage.js +++ b/src/components/common/mainPage.js @@ -1,19 +1,16 @@ import React from "react"; import Header from "./header"; -import AuthenticationService from "../../services/authenticationService"; - +import Footer from "./footer"; class MainPage extends React.Component { constructor(props) { super(props); - this.AuthenticationService = new AuthenticationService(); - } - render() { return (
+
); } diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js index 8040f1c..a03d0cc 100644 --- a/src/components/login/loginForm.js +++ b/src/components/login/loginForm.js @@ -1,7 +1,9 @@ import React from "react"; +import { Link } from "react-router-dom"; import FetchDataService from "../../services/fetchDataService"; import AuthenticationService from "../../services/authenticationService"; +import RedirectionService from "../../services/redirectService"; class LoginForm extends React.Component { constructor(props) { @@ -13,6 +15,8 @@ class LoginForm extends React.Component { }; this.dataService = new FetchDataService(); this.authenticationService = new AuthenticationService(); + this.redirectionService = new RedirectionService(); + this.usernameEntry = this.usernameEntry.bind(this); this.passwordEntry = this.passwordEntry.bind(this); @@ -41,10 +45,14 @@ class LoginForm extends React.Component { password: this.state.password }; - this.authenticationService.logIn(data, (errorMsg) => { + this.authenticationService.logIn(data, (success) => { + this.redirectionService.redirect("home"); + + }, (errorMsg) => { this.setState({ errorMsg: errorMsg }); }); + } handleClickLogOut() { @@ -55,7 +63,7 @@ class LoginForm extends React.Component { return (
-
+

@@ -79,7 +87,7 @@ class LoginForm extends React.Component { - +
); diff --git a/src/components/login/registerForm.js b/src/components/login/registerForm.js index b303975..d253f62 100644 --- a/src/components/login/registerForm.js +++ b/src/components/login/registerForm.js @@ -59,16 +59,12 @@ class RegisterForm extends React.Component { this.authenticationService.register(data, (error) => { this.setState({errorMsg: error}); }); - - - } - render() { return (
-
+

@@ -108,7 +104,7 @@ class RegisterForm extends React.Component { Register Now
{this.state.errorMsg}
- +
); diff --git a/src/services/authenticationService.js b/src/services/authenticationService.js index 6482198..69537b7 100644 --- a/src/services/authenticationService.js +++ b/src/services/authenticationService.js @@ -9,12 +9,13 @@ class AuthenticationService { this.errorHandlerService = new ErrorHandlerService(); } - logIn(user, showError) { + logIn(user,showSuccess, showError) { let userLoginUrl = "/login"; this.serviceData.post(userLoginUrl, user, (response) => { sessionStorage.setItem("sessionId", response.data.sessionId); + showSuccess(); }, (error) => { showError(error); @@ -23,7 +24,7 @@ class AuthenticationService { logOut() { sessionStorage.removeItem("sessionId"); - this.redirectService.redirect("/"); + this.redirectService.redirect(""); } isUserAuthenticated() { @@ -33,7 +34,7 @@ class AuthenticationService { let userRegisterUrl = "/register"; this.serviceData.post(userRegisterUrl, user, (response) => { // console.log(response); - this.redirectService.redirect("/"); + this.redirectService.redirect("login"); }, (error) => { registerError(error); }); diff --git a/src/services/redirectService.js b/src/services/redirectService.js index eaf699e..7128ffe 100644 --- a/src/services/redirectService.js +++ b/src/services/redirectService.js @@ -2,7 +2,7 @@ class RedirectionService{ redirect(path){ - window.location.assign("/#/${path}"); + window.location.assign(`#/${path}`); } } From ea5ed0a42a16e4ea3b3ac9b06d1eddfced302ccc Mon Sep 17 00:00:00 2001 From: BIT Student Date: Wed, 22 Nov 2017 17:53:55 +0100 Subject: [PATCH 09/57] validate client --- src/components/login/loginForm.js | 16 +++++++++++++++- src/services/errorHandlerService.js | 12 ++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js index a03d0cc..ef4c100 100644 --- a/src/components/login/loginForm.js +++ b/src/components/login/loginForm.js @@ -11,7 +11,9 @@ class LoginForm extends React.Component { this.state = { username: "", password: "", - errorMsg: "" + errorMsg: "", + errorMsgClientUserName: "", + errorMsgClientPassword: "" }; this.dataService = new FetchDataService(); this.authenticationService = new AuthenticationService(); @@ -34,12 +36,20 @@ class LoginForm extends React.Component { passwordEntry(event) { const passwordValue = event.target.value; + this.setState({ password: passwordValue }); }; handleClick() { + if(this.state.username === ""){ + this.setState({errorMsgClientUserName: "Empty username field."}); + } + if(this.state.password === ""){ + this.setState({ errorMsgClientPassword: "Empty password field."}); + } + const data = { username: this.state.username, password: this.state.password @@ -71,6 +81,8 @@ class LoginForm extends React.Component { value={this.state.username} onChange={this.usernameEntry} />
+
{this.state.errorMsgClientUserName}
+
@@ -79,6 +91,8 @@ class LoginForm extends React.Component { value={this.state.password} onChange={this.passwordEntry} />
+
{this.state.errorMsgClientPassword}
+
- Bitbook + Bitbook
diff --git a/src/components/common/logOutButton.js b/src/components/common/logOutButton.js new file mode 100644 index 0000000..8b7343c --- /dev/null +++ b/src/components/common/logOutButton.js @@ -0,0 +1,26 @@ +import React from "react"; +import AuthenticationService from "../../services/authenticationService"; + +class LogOutButton extends React.Component { + constructor(props) { + super(props); + this.authenticationService = new AuthenticationService(); + this.handleClickLogOut = this.handleClickLogOut.bind(this); + } + + handleClickLogOut() { + this.authenticationService.logOut(); + } + + render() { + return (); + } +} + +export default LogOutButton; + + + + + diff --git a/src/components/login/loginForm.js b/src/components/login/loginForm.js index ef4c100..68f3e84 100644 --- a/src/components/login/loginForm.js +++ b/src/components/login/loginForm.js @@ -4,6 +4,7 @@ import { Link } from "react-router-dom"; import FetchDataService from "../../services/fetchDataService"; import AuthenticationService from "../../services/authenticationService"; import RedirectionService from "../../services/redirectService"; +import ErrorHandlerService from "../../services/errorHandlerService"; class LoginForm extends React.Component { constructor(props) { @@ -11,62 +12,55 @@ class LoginForm extends React.Component { this.state = { username: "", password: "", - errorMsg: "", - errorMsgClientUserName: "", - errorMsgClientPassword: "" + errorMsg: "" + }; + this.importClasses(); + this.bindFunction(); + } + + importClasses() { this.dataService = new FetchDataService(); + this.errorHandlerService = new ErrorHandlerService(); this.authenticationService = new AuthenticationService(); this.redirectionService = new RedirectionService(); + } - - this.usernameEntry = this.usernameEntry.bind(this); - this.passwordEntry = this.passwordEntry.bind(this); + bindFunction() { this.handleClick = this.handleClick.bind(this); - this.handleClickLogOut = this.handleClickLogOut.bind(this); - + this.handleChange = this.handleChange.bind(this); } - usernameEntry(event) { - const usernameValue = event.target.value; - this.setState({ - username: usernameValue - }); - - }; - - passwordEntry(event) { - const passwordValue = event.target.value; + handleChange(event) { + const name = event.target.name; this.setState({ - password: passwordValue + [name]: event.target.value }); - }; + + } handleClick() { - if(this.state.username === ""){ - this.setState({errorMsgClientUserName: "Empty username field."}); - } - if(this.state.password === ""){ - this.setState({ errorMsgClientPassword: "Empty password field."}); - } const data = { username: this.state.username, password: this.state.password }; - this.authenticationService.logIn(data, (success) => { - this.redirectionService.redirect("home"); + const msg = this.errorHandlerService.validateLogInForm(data); + this.setState({ errorMsg: msg }); - }, (errorMsg) => { - this.setState({ errorMsg: errorMsg }); - }); + if (msg) { + return; + } else { + this.authenticationService.logIn(data, (success) => { + this.redirectionService.redirect("home"); + }, (errorMsg) => { + this.setState({ errorMsg: errorMsg }); + }); + } - } - handleClickLogOut() { - this.authenticationService.logOut(); } render() { @@ -77,30 +71,24 @@ class LoginForm extends React.Component {

-
-
{this.state.errorMsgClientUserName}

-
-
{this.state.errorMsgClientPassword}
-
< br />
{this.state.errorMsg}
-
); diff --git a/src/components/login/registerForm.js b/src/components/login/registerForm.js index d253f62..944414e 100644 --- a/src/components/login/registerForm.js +++ b/src/components/login/registerForm.js @@ -1,5 +1,7 @@ import React from "react"; + import AuthenticationService from "../../services/authenticationService"; +import ErrorHandlerService from "../../services/errorHandlerService"; class RegisterForm extends React.Component { constructor(props) { @@ -9,56 +11,45 @@ class RegisterForm extends React.Component { password: "", name: "", email: "", + repeatPassword: "", errorMsg: "" }; this.authenticationService = new AuthenticationService(); + this.errorHandlerService = new ErrorHandlerService(); + this.bindFunction(); + } - this.emailEntry = this.emailEntry.bind(this); - this.passwordEntry = this.passwordEntry.bind(this); - this.usernameEntry = this.usernameEntry.bind(this); + bindFunction() { this.onRegisterClick = this.onRegisterClick.bind(this); - this.nameEntry = this.nameEntry.bind(this); + this.handleChange = this.handleChange.bind(this); } - emailEntry(event) { - const value = event.target.value; - this.setState({ - email: value - }); - - }; - - passwordEntry(event) { - const value = event.target.value; - this.setState({ - password: value - }); - }; - usernameEntry(event) { - const value = event.target.value; - this.setState({ - username: value - }); - }; - nameEntry(event) { - const value = event.target.value; + handleChange(event) { + const name = event.target.name; this.setState({ - name: value + [name]: event.target.value }); - }; - - + } onRegisterClick() { const data = { username: this.state.username, password: this.state.password, name: this.state.name, - email: this.state.email + email: this.state.email, + repeatPassword: this.state.repeatPassword }; - this.authenticationService.register(data, (error) => { - this.setState({errorMsg: error}); - }); + + const msg = this.errorHandlerService.validateRegisterForm(data); + this.setState({ errorMsg: msg }); + + if (msg) { + return; + } else { + this.authenticationService.register(data, (error) => { + this.setState({ errorMsg: error }); + }); + } } render() { @@ -68,37 +59,43 @@ class RegisterForm extends React.Component {

-

-

-

- +
+
+
+
+
+
- - +
@@ -31,6 +31,7 @@ const Header = () => { + ); }; diff --git a/src/components/profile/editProfile.js b/src/components/profile/editProfile.js new file mode 100644 index 0000000..0e62c9f --- /dev/null +++ b/src/components/profile/editProfile.js @@ -0,0 +1,76 @@ +import React from "react"; +import Modal from "react-modal"; +import DataService from "../../services/dataService"; + +class EditProfile extends React.Component { + constructor() { + super(); + this.state = { + showModal: false + }; + this.dataService = new DataService(); + this.handleOpenModal = this.handleOpenModal.bind(this); + this.handleCloseModal = this.handleCloseModal.bind(this); + } + + handleOpenModal() { + this.setState({ showModal: true }); + } + + handleCloseModal() { + this.setState({ showModal: false }); + + + } + handleSaveClicked() { + this.dataService.updateProfile(updateProfile, (response) => { + + }); + } + + render() { + return ( +
+ + +
+
+ +

Edit profile

+
+
+ + + + + + + + + + + + + + +
+
+ + +
+
+
+ +
+ ); + } +} + +export default EditProfile; diff --git a/src/components/profile/modaldialogue.js b/src/components/profile/modaldialogue.js new file mode 100644 index 0000000..e69de29 diff --git a/src/components/profile/profilePage.js b/src/components/profile/profilePage.js index d5163a2..c969bf9 100644 --- a/src/components/profile/profilePage.js +++ b/src/components/profile/profilePage.js @@ -1,30 +1,41 @@ import React from "react"; import DataService from "../../services/dataService"; +import { IMAGE_PLACE_HOLDER } from "../../constants"; +import EditProfile from "./editProfile"; +import ReactModal from "react-modal"; class ProfilePage extends React.Component { - + constructor(props) { super(props); + this.imagePlaceHolder = IMAGE_PLACE_HOLDER; this.state = { name: "", - avatarUrl: "", + avatarUrl: this.imagePlaceHolder, commentsCount: "", postsCount: "" }; this.dataService = new DataService(); + this.handleClick = this.handleClick.bind(this); } componentDidMount() { this.dataService.getProfile((profile) => { + this.setState({ - name: profile.name, + name: profile.name.charAt(0).toUpperCase() + profile.name.slice(1), avatarUrl: profile.avatarUrl, commentsCount: profile.commentsCount, postsCount: profile.postsCount }); }); } + + handleClick() { + + } + render() { return (
@@ -32,13 +43,13 @@ class ProfilePage extends React.Component {
-
- + +
+

{this.state.name}

-
-
-

Comments count:{this.state.commentsCount}

-

Posts count:{this.state.postsCount}

+

Comments count:{this.state.commentsCount}

+

Posts count:{this.state.postsCount}

+
diff --git a/src/constants.js b/src/constants.js index 66458f6..35a8b2d 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,3 +1,4 @@ // export const SOME_GLOBAL_CONFIG = "value"; export const HEADER_KEY = "qHkk6XZN"; export const BASE_SERVICE_URL = "https://bitbookapi.azurewebsites.net/api/"; +export const IMAGE_PLACE_HOLDER = "http://via.placeholder.com/200x150"; \ No newline at end of file diff --git a/src/main.css b/src/main.css index d423e02..b2f28f6 100644 --- a/src/main.css +++ b/src/main.css @@ -45,11 +45,12 @@ body{ background-image: url("img/bg1.jpg"); background-repeat: no-repeat; background-size: 100% ; - color: white; - - + /* color: white; */ + height: 100%; } + + #thead{ background-color: white; opacity: 0.7; @@ -68,4 +69,39 @@ body{ margin-left: 5px; background-color: white; color: blue; +} +#leprofile{ + text-align: center; + margin: 0 auto; + display: block; + margin-top: 150px; + background-color: rgba(221, 217, 203, 0.808); + border-radius: 25px; + color: rgb(20, 20, 185); + padding: 10px; +} + +#footerhd{ + position: fixed; + bottom: 0; +} + +#footerhd h4{ + text-align: left; +} + +.boxModal{ + background-color: black; +} +.modalBox input, textarea{ + display: block; + width: 100%; +} +.modal-header .close{ + margin: 0; + padding:0; + padding-top:7px; +} +.modal-header{ + display: block; } \ No newline at end of file diff --git a/src/services/authenticationService.js b/src/services/authenticationService.js index d04f104..25c40fc 100644 --- a/src/services/authenticationService.js +++ b/src/services/authenticationService.js @@ -33,7 +33,7 @@ class AuthenticationService { register(user, registerError) { let userRegisterUrl = "/register"; this.serviceData.post(userRegisterUrl, user, (response) => { - this.redirectService.redirect("login"); + this.redirectService.redirect("/login"); }, (error) => { registerError(error); }); diff --git a/src/services/dataService.js b/src/services/dataService.js index 6884a6f..4448d9b 100644 --- a/src/services/dataService.js +++ b/src/services/dataService.js @@ -9,7 +9,6 @@ class DataService { getProfile(profileDataHandler) { this.fetchDataService.get("profile", (response) => { - console.log(response); const name = response.data.name; const avatarUrl = response.data.avatarUrl; @@ -21,6 +20,22 @@ class DataService { profileDataHandler(profile); }); }; + + updateProfile(profileDataHandler){ + + this.fetchDataService.put("profile", (response) => { + console.log(response); + + // const name = response.data.name; + // const avatarUrl = response.data.avatarUrl; + // const postsCount = response.data.postsCount; + // const commentsCount = response.data.commentsCount; + + // const profile = new Profile(name, avatarUrl, postsCount, commentsCount); + + // profileDataHandler(profile); + }); + } } export default DataService; \ No newline at end of file diff --git a/src/services/fetchDataService.js b/src/services/fetchDataService.js index f2b16c7..344537b 100644 --- a/src/services/fetchDataService.js +++ b/src/services/fetchDataService.js @@ -33,7 +33,7 @@ class FetchDataService { }) .then((data) => { handler(data); }) - .catch(error => console.log(error)); + .catch(error => console.log(error)); } @@ -54,6 +54,23 @@ class FetchDataService { }); } + put(path, data, handler, errorHandler) { + + axios({ + method: "PUT", + url: `${BASE_SERVICE_URL}${path}`, + data: data, + headers: this.createHeader(), + json: true + }) + .then(response => { + return handler(response); + }) + .catch(error => { + errorHandler(error.response.data.error.message) || console.log(error); + }); + } + } export default FetchDataService; \ No newline at end of file diff --git a/src/services/redirectService.js b/src/services/redirectService.js index 9bc3b40..cbcdce9 100644 --- a/src/services/redirectService.js +++ b/src/services/redirectService.js @@ -2,7 +2,7 @@ class RedirectionService{ redirect(path){ - window.location.assign(path); + window.location.assign(`#${path}`); } } From 5c2632ae6d35702de9ff5e33c935271cfb98b427 Mon Sep 17 00:00:00 2001 From: BIT Student Date: Fri, 24 Nov 2017 14:39:32 +0100 Subject: [PATCH 17/57] edit user profile --- src/components/common/footer.js | 5 +- src/components/common/header.js | 1 - src/components/login/loginPage.js | 2 +- src/components/profile/editProfile.js | 66 ++++++++++++++++++++----- src/components/profile/modaldialogue.js | 0 src/components/profile/profilePage.js | 42 ++++++++++------ src/index.html | 2 +- src/index.js | 2 +- src/main.css | 21 +++++--- src/services/dataService.js | 23 ++++----- src/services/errorHandlerService.js | 18 +++++-- src/services/fetchDataService.js | 1 + src/services/profileDTO.js | 30 ++++++++++- src/services/redirectService.js | 2 +- 14 files changed, 156 insertions(+), 59 deletions(-) delete mode 100644 src/components/profile/modaldialogue.js diff --git a/src/components/common/footer.js b/src/components/common/footer.js index 24d6ed4..0d290d2 100644 --- a/src/components/common/footer.js +++ b/src/components/common/footer.js @@ -2,9 +2,10 @@ import React from "react"; const Footer = () => { return ( -
+ +
- Copyright â’¸ Team Candies + Copyright â’¸ Team Candies
); diff --git a/src/components/common/header.js b/src/components/common/header.js index 0e4054a..b08a5a6 100644 --- a/src/components/common/header.js +++ b/src/components/common/header.js @@ -19,7 +19,6 @@ const Header = () => {
  • Link
  • -
    diff --git a/src/components/login/loginPage.js b/src/components/login/loginPage.js index a6f0b57..5602eef 100644 --- a/src/components/login/loginPage.js +++ b/src/components/login/loginPage.js @@ -12,7 +12,7 @@ const LoginPage = (props) => {
    -
    +

    Welcome to BitBook

    Lorem ipsum dolor sit amet, ad vis mazim legere virtute. Per ne labore graecis menandri. Vel mutat causae ut, ferri debet omnium vim et. Ea mel delenit consetetur, ne convenire philosophia pri, equidem omittam blandit no est. Id dicta nostro qui. Reque iisque nominavi sed in, eam in nulla consequat, sea philosophia definitionem et

    diff --git a/src/components/profile/editProfile.js b/src/components/profile/editProfile.js index 0e62c9f..95b084f 100644 --- a/src/components/profile/editProfile.js +++ b/src/components/profile/editProfile.js @@ -1,16 +1,27 @@ import React from "react"; import Modal from "react-modal"; import DataService from "../../services/dataService"; +import ErrorHandlerService from "../../services/errorHandlerService"; +import PropTypes from "prop-types"; class EditProfile extends React.Component { - constructor() { - super(); + constructor(props) { + super(props); this.state = { - showModal: false + showModal: false, + errorMsg: "", + profileObject: this.props.profileObject, + }; + + this.errorHandlerService = new ErrorHandlerService(); this.dataService = new DataService(); + this.handleOpenModal = this.handleOpenModal.bind(this); this.handleCloseModal = this.handleCloseModal.bind(this); + this.handleSaveClicked = this.handleSaveClicked.bind(this); + this.handleChange = this.handleChange.bind(this); + } handleOpenModal() { @@ -22,16 +33,40 @@ class EditProfile extends React.Component { } + componentWillReceiveProps(nextProps) { + this.setState({ profileObject: nextProps.profileObject }); + } + + handleChange(event) { + const name = event.target.name; + const value = event.target.value; + + this.setState((prevState) => { + prevState.profileObject[name] = value; + return prevState; + }); + } + handleSaveClicked() { - this.dataService.updateProfile(updateProfile, (response) => { + let dataObject = { + name: this.state.profileObject.name, + about: this.state.profileObject.about, + avatarUrl: this.state.profileObject.avatarUrl, + email: this.state.profileObject.email, + aboutShort: this.state.profileObject.aboutShort, + }; + this.errorHandlerService.validateEditProfileForm(dataObject); + this.dataService.updateProfile(dataObject, (response) => { + this.props.profileUpdated(dataObject); + this.setState({showModal: false}); }); } render() { return (
    - +
    - + + + + - + - - + + - - - + + +

    {this.state.errorMsg}

    @@ -73,4 +111,8 @@ class EditProfile extends React.Component { } } +EditProfile.propTypes = { + profileObject: PropTypes.object, + profileUpdated: PropTypes.func +}; export default EditProfile; diff --git a/src/components/profile/modaldialogue.js b/src/components/profile/modaldialogue.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/profile/profilePage.js b/src/components/profile/profilePage.js index c969bf9..09b6e36 100644 --- a/src/components/profile/profilePage.js +++ b/src/components/profile/profilePage.js @@ -3,20 +3,27 @@ import DataService from "../../services/dataService"; import { IMAGE_PLACE_HOLDER } from "../../constants"; import EditProfile from "./editProfile"; import ReactModal from "react-modal"; +import Profile from "../../services/profileDTO"; class ProfilePage extends React.Component { - + constructor(props) { super(props); this.imagePlaceHolder = IMAGE_PLACE_HOLDER; + this.state = { name: "", - avatarUrl: this.imagePlaceHolder, + avatarUrl: "", commentsCount: "", - postsCount: "" + postsCount: "", + about: "", + aboutShort: "", + profile: null }; + this.dataService = new DataService(); - this.handleClick = this.handleClick.bind(this); + + this.afterUpdate = this.afterUpdate.bind(this); } componentDidMount() { @@ -24,19 +31,20 @@ class ProfilePage extends React.Component { this.dataService.getProfile((profile) => { this.setState({ - name: profile.name.charAt(0).toUpperCase() + profile.name.slice(1), - avatarUrl: profile.avatarUrl, - commentsCount: profile.commentsCount, - postsCount: profile.postsCount + profile: profile }); }); } - handleClick() { - + afterUpdate() { + this.componentDidMount(); } render() { + if(!this.state.profile){ + return

    loading

    ; + } + return (
    @@ -45,11 +53,15 @@ class ProfilePage extends React.Component {
    - -

    {this.state.name}

    -

    Comments count:{this.state.commentsCount}

    -

    Posts count:{this.state.postsCount}

    - + +

    {this.state.profile.name}

    + +

    {this.state.profile.about}

    +

    Comments count:{this.state.profile.commentsCount}

    +

    Posts count:{this.state.profile.postsCount}

    +

    {this.state.profile.shortAbout}

    + +
    diff --git a/src/index.html b/src/index.html index 03118c3..6807212 100644 --- a/src/index.html +++ b/src/index.html @@ -32,7 +32,7 @@ -
    +
    diff --git a/src/main.css b/src/main.css index e291ba7..1ed24e7 100644 --- a/src/main.css +++ b/src/main.css @@ -2,9 +2,12 @@ padding: 0; margin: 0; } + .container-fluid{ + background-image: url('./img/bg2.jpg'); padding: 0; - background-color: #d2dee2; + background-color: rgb(233, 233, 233); + margin: 0; } .editProfile{ border-radius: 50%; @@ -23,17 +26,28 @@ text-align: center; color: white; } +#form input{ + display: block; + border: none; + color: white; + padding: 5px; + margin-bottom: 5px; + border-bottom: 1px solid white; + background-color: transparent; +} .bg-primary{ - background-color: #3b5998 !important; + background-color: #1b2c4e !important; } #login{ width: 40%; margin-top:15px; - background-color: white; - color: rgb(90, 90, 219); - border-radius: 25px; - border: 1px solid rgb(90, 90, 219); + background-color: transparent; + color: white; + border: 1px solid white; + /* transition: border 0.5s; */ + border-bottom: 5px solid white; + border-right: 3px solid white; } .welcome{ @@ -41,8 +55,7 @@ } #login:hover{ - background-color: rgb(65, 65, 206); - color: white; + border: 1px solid white; } @@ -61,7 +74,9 @@ label{ margin-top: 10px; /* text-align: center; */ } - +.sngPstPg{ + min-height: 700px; +} .postImage{ height: 400px; } @@ -138,9 +153,9 @@ padding: 100px; font-size: 1.2em; } #thead a{ - color: #3b5998; - + color: white; } + .btn-group{ padding: 20px; } @@ -151,39 +166,14 @@ padding: 100px; .commentPar{ padding: 20px; } -.radiusBtnRight{ - border-radius: 0px 25px 25px 0px; - background-color: rgb(255, 255, 255); - border-right: 5px solid #3b5998; -} -.radiusBtnLeft{ - border-radius: 25px 0px 0px 25px; - background-color: white; - border-right: 3px groove #3b5998; - border-left: 5px solid #3b5998; - - -} -#input_text{ - border-radius: 25px; - padding: 5px; - padding-left: 7px; -} + #logout{ margin-left: 5px; background-color: white; color: blue; } -/* -.pink{ - background-color: rgb(236, 68, 99); -} -.pink :hover{ - background-color: rgb(175, 49, 75); -} */ - .modalBox input, textarea{ display: block; @@ -237,7 +227,7 @@ padding: 100px; } .profilePage{ - height: 1000px; + min-height: 1000px; background-color: white; padding: 60px; @@ -248,8 +238,7 @@ padding: 100px; font-size: 1.2em; } .profilePage a{ - text-decoration: none; - + text-decoration: none; } .profilePage img{ box-shadow: 2px 2px 4px black; @@ -257,10 +246,15 @@ padding: 100px; .profilePage button :hover{ background-color: blue; } +.profilePage p { + padding-top: 10px; +} .footer { - height: 100px; + height: 150px; text-align: center; - padding: 30px; + padding: 70px; + background-color: #0d1627; + color: white; } .footer span{ color: #3b5998; @@ -268,6 +262,10 @@ padding: 100px; } .btn-light a{ text-decoration: none; + color: #0d1627; +} +.btn-light{ + border: 1px solid #0d1627; } .feedPost{ padding: 20px; diff --git a/src/services/dataService.js b/src/services/dataService.js index c6d1c27..4ab0d74 100644 --- a/src/services/dataService.js +++ b/src/services/dataService.js @@ -21,10 +21,11 @@ class DataService { getUsers(usersDataHandler, errorHandler) { this.fetchDataService.get("users", response => { + console.log(response); const arrOfUsers = response.data; const listOfUsers = arrOfUsers.map(user => { - let userProfile = new UserDTO(user.aboutShort, user.avatarUrl, user.id, user.lastPostDate, user.name); + let userProfile = new UserDTO(user.aboutShort, user.avatarUrl, user.id, user.lastPostDate, user.name, user.about); return userProfile; });