diff --git a/admin/.babelrc b/admin-old/.babelrc similarity index 100% rename from admin/.babelrc rename to admin-old/.babelrc diff --git a/admin/.dockerignore b/admin-old/.dockerignore similarity index 100% rename from admin/.dockerignore rename to admin-old/.dockerignore diff --git a/admin-old/.gitignore b/admin-old/.gitignore new file mode 100644 index 0000000..3abb71c --- /dev/null +++ b/admin-old/.gitignore @@ -0,0 +1,36 @@ +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release +lib +uploads/ + +# Dependency directory +node_modules +assets + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history diff --git a/admin/Dockerfile b/admin-old/Dockerfile similarity index 100% rename from admin/Dockerfile rename to admin-old/Dockerfile diff --git a/admin-old/README.md b/admin-old/README.md new file mode 100644 index 0000000..e69de29 diff --git a/admin/devStart.js b/admin-old/devStart.js similarity index 100% rename from admin/devStart.js rename to admin-old/devStart.js diff --git a/admin/package-lock.json b/admin-old/package-lock.json similarity index 100% rename from admin/package-lock.json rename to admin-old/package-lock.json diff --git a/admin-old/package.json b/admin-old/package.json new file mode 100644 index 0000000..bd01980 --- /dev/null +++ b/admin-old/package.json @@ -0,0 +1,94 @@ +{ + "name": "react-passport-redux-example", + "version": "1.0.0", + "description": "Demonstration of PassportJS authentication in React w/ Redux.", + "main": "devStart.js", + "scripts": { + "build:lib": "babel src/server --out-dir lib/server", + "build:umd": "webpack --config webpack/webpack.config.dev.js", + "build:umd:min": "webpack --config webpack/webpack.config.prod.js", + "build": "npm run clean && npm run build:lib && npm run build:umd && npm run build:umd:min", + "postinstall": "npm run build", + "clean": "rimraf lib public/assets", + "server": "better-npm-run server", + "server:dev": "better-npm-run server:dev", + "start": "npm run server", + "start:dev": "npm run server:dev" + }, + "betterScripts": { + "server": { + "command": "node lib/server/index.js", + "env": { + "NODE_ENV": "production", + "MIN_EXT": ".min" + } + }, + "server:dev": { + "command": "node devStart.js", + "env": { + "NODE_ENV": "development" + } + } + }, + "dependencies": { + "@babel/runtime": "7.3.1", + "@vx/axis": "^0.0.184", + "@vx/curve": "^0.0.182", + "@vx/glyph": "^0.0.183", + "@vx/group": "^0.0.183", + "@vx/legend": "^0.0.183", + "@vx/mock-data": "^0.0.185", + "@vx/responsive": "0.0.184", + "@vx/scale": "0.0.182", + "@vx/shape": "0.0.184", + "@vx/tooltip": "0.0.184", + "axios": "^0.18.0", + "babel-loader": "8.0.5", + "bcrypt-nodejs": "^0.0.3", + "better-npm-run": "^0.1.0", + "body-parser": "^1.18.2", + "connect-mongo": "^2.0.1", + "connected-react-router": "6.3.1", + "csv-parse": "^4.3.3", + "d3-time-format": "^2.1.3", + "express": "^4.16.2", + "express-session": "^1.15.6", + "fs-extra": "^7.0.1", + "lodash": "4.17.11", + "mongoose": "^5.4", + "multer": "^1.3.0", + "node-mailjet": "*", + "node-uuid": "^1.4.8", + "passport": "^0.4.0", + "passport-local": "^1.0.0", + "react": "16.8.2", + "react-dom": "16.8.2", + "react-redux": "^6.0.0", + "react-router": "^4.2.0", + "react-router-dom": "^4.2.2", + "redux": "^4.0.1", + "redux-thunk": "^2.2.0", + "semantic-ui-react": "^0.85.0" + }, + "devDependencies": { + "@babel/cli": "7.2.3", + "@babel/core": "7.3.3", + "@babel/plugin-proposal-class-properties": "7.3.3", + "@babel/plugin-proposal-export-default-from": "7.2.0", + "@babel/plugin-proposal-object-rest-spread": "7.3.2", + "@babel/plugin-transform-runtime": "7.2.0", + "@babel/preset-env": "7.3.1", + "@babel/preset-react": "^7.0.0", + "@babel/preset-stage-1": "^7.0.0", + "@babel/register": "^7.0.0", + "babel-plugin-lodash": "3.3.4", + "detect-node": "2.0.4", + "redux-logger": "^3.0.6", + "rimraf": "2.6.3", + "uglifyjs-webpack-plugin": "2.1.1", + "webpack": "4.29.5", + "webpack-cli": "3.2.3", + "webpack-dev-middleware": "3.5.2", + "webpack-hot-middleware": "2.24.3" + } +} diff --git a/admin/src/client/Group/GroupModal.js b/admin-old/src/client/Group/GroupModal.js similarity index 100% rename from admin/src/client/Group/GroupModal.js rename to admin-old/src/client/Group/GroupModal.js diff --git a/admin/src/client/Group/GroupModalContainer.js b/admin-old/src/client/Group/GroupModalContainer.js similarity index 100% rename from admin/src/client/Group/GroupModalContainer.js rename to admin-old/src/client/Group/GroupModalContainer.js diff --git a/admin/src/client/Group/ListGroups.js b/admin-old/src/client/Group/ListGroups.js similarity index 100% rename from admin/src/client/Group/ListGroups.js rename to admin-old/src/client/Group/ListGroups.js diff --git a/admin/src/client/Group/group-actions.js b/admin-old/src/client/Group/group-actions.js similarity index 100% rename from admin/src/client/Group/group-actions.js rename to admin-old/src/client/Group/group-actions.js diff --git a/admin/src/client/Group/group-constants.js b/admin-old/src/client/Group/group-constants.js similarity index 100% rename from admin/src/client/Group/group-constants.js rename to admin-old/src/client/Group/group-constants.js diff --git a/admin/src/client/Group/group-reducer.js b/admin-old/src/client/Group/group-reducer.js similarity index 100% rename from admin/src/client/Group/group-reducer.js rename to admin-old/src/client/Group/group-reducer.js diff --git a/admin/src/client/Permission/AddPermissionModal.js b/admin-old/src/client/Permission/AddPermissionModal.js similarity index 100% rename from admin/src/client/Permission/AddPermissionModal.js rename to admin-old/src/client/Permission/AddPermissionModal.js diff --git a/admin/src/client/Permission/AddPermissionModalContainer.js b/admin-old/src/client/Permission/AddPermissionModalContainer.js similarity index 100% rename from admin/src/client/Permission/AddPermissionModalContainer.js rename to admin-old/src/client/Permission/AddPermissionModalContainer.js diff --git a/admin/src/client/Permission/ListPermissions.js b/admin-old/src/client/Permission/ListPermissions.js similarity index 100% rename from admin/src/client/Permission/ListPermissions.js rename to admin-old/src/client/Permission/ListPermissions.js diff --git a/admin/src/client/Permission/UpdatePermissionModal.js b/admin-old/src/client/Permission/UpdatePermissionModal.js similarity index 100% rename from admin/src/client/Permission/UpdatePermissionModal.js rename to admin-old/src/client/Permission/UpdatePermissionModal.js diff --git a/admin/src/client/Permission/UpdatePermissionModalContainer.js b/admin-old/src/client/Permission/UpdatePermissionModalContainer.js similarity index 100% rename from admin/src/client/Permission/UpdatePermissionModalContainer.js rename to admin-old/src/client/Permission/UpdatePermissionModalContainer.js diff --git a/admin/src/client/Permission/permission-actions.js b/admin-old/src/client/Permission/permission-actions.js similarity index 100% rename from admin/src/client/Permission/permission-actions.js rename to admin-old/src/client/Permission/permission-actions.js diff --git a/admin/src/client/Permission/permission-constants.js b/admin-old/src/client/Permission/permission-constants.js similarity index 100% rename from admin/src/client/Permission/permission-constants.js rename to admin-old/src/client/Permission/permission-constants.js diff --git a/admin/src/client/Permission/permission-reducer.js b/admin-old/src/client/Permission/permission-reducer.js similarity index 100% rename from admin/src/client/Permission/permission-reducer.js rename to admin-old/src/client/Permission/permission-reducer.js diff --git a/admin/src/client/System/CallChart.js b/admin-old/src/client/System/CallChart.js similarity index 100% rename from admin/src/client/System/CallChart.js rename to admin-old/src/client/System/CallChart.js diff --git a/admin/src/client/System/CreateSystem.js b/admin-old/src/client/System/CreateSystem.js similarity index 100% rename from admin/src/client/System/CreateSystem.js rename to admin-old/src/client/System/CreateSystem.js diff --git a/admin/src/client/System/CreateSystemContainer.js b/admin-old/src/client/System/CreateSystemContainer.js similarity index 100% rename from admin/src/client/System/CreateSystemContainer.js rename to admin-old/src/client/System/CreateSystemContainer.js diff --git a/admin/src/client/System/EditSystem.js b/admin-old/src/client/System/EditSystem.js similarity index 100% rename from admin/src/client/System/EditSystem.js rename to admin-old/src/client/System/EditSystem.js diff --git a/admin/src/client/System/EditSystemContainer.js b/admin-old/src/client/System/EditSystemContainer.js similarity index 100% rename from admin/src/client/System/EditSystemContainer.js rename to admin-old/src/client/System/EditSystemContainer.js diff --git a/admin/src/client/System/ErrorChart.js b/admin-old/src/client/System/ErrorChart.js similarity index 100% rename from admin/src/client/System/ErrorChart.js rename to admin-old/src/client/System/ErrorChart.js diff --git a/admin/src/client/System/ListSystems.js b/admin-old/src/client/System/ListSystems.js similarity index 100% rename from admin/src/client/System/ListSystems.js rename to admin-old/src/client/System/ListSystems.js diff --git a/admin/src/client/System/ListSystemsContainer.js b/admin-old/src/client/System/ListSystemsContainer.js similarity index 100% rename from admin/src/client/System/ListSystemsContainer.js rename to admin-old/src/client/System/ListSystemsContainer.js diff --git a/admin/src/client/System/PreCreateSystem.js b/admin-old/src/client/System/PreCreateSystem.js similarity index 100% rename from admin/src/client/System/PreCreateSystem.js rename to admin-old/src/client/System/PreCreateSystem.js diff --git a/admin/src/client/System/ResponsiveCallChart.js b/admin-old/src/client/System/ResponsiveCallChart.js similarity index 100% rename from admin/src/client/System/ResponsiveCallChart.js rename to admin-old/src/client/System/ResponsiveCallChart.js diff --git a/admin/src/client/System/ResponsiveErrorChart.js b/admin-old/src/client/System/ResponsiveErrorChart.js similarity index 100% rename from admin/src/client/System/ResponsiveErrorChart.js rename to admin-old/src/client/System/ResponsiveErrorChart.js diff --git a/admin/src/client/System/System.js b/admin-old/src/client/System/System.js similarity index 100% rename from admin/src/client/System/System.js rename to admin-old/src/client/System/System.js diff --git a/admin/src/client/System/SystemCard.js b/admin-old/src/client/System/SystemCard.js similarity index 100% rename from admin/src/client/System/SystemCard.js rename to admin-old/src/client/System/SystemCard.js diff --git a/admin/src/client/System/SystemContainer.js b/admin-old/src/client/System/SystemContainer.js similarity index 100% rename from admin/src/client/System/SystemContainer.js rename to admin-old/src/client/System/SystemContainer.js diff --git a/admin/src/client/System/SystemForm.js b/admin-old/src/client/System/SystemForm.js similarity index 100% rename from admin/src/client/System/SystemForm.js rename to admin-old/src/client/System/SystemForm.js diff --git a/admin/src/client/System/error-actions.js b/admin-old/src/client/System/error-actions.js similarity index 100% rename from admin/src/client/System/error-actions.js rename to admin-old/src/client/System/error-actions.js diff --git a/admin/src/client/System/error-constants.js b/admin-old/src/client/System/error-constants.js similarity index 100% rename from admin/src/client/System/error-constants.js rename to admin-old/src/client/System/error-constants.js diff --git a/admin/src/client/System/error-reducer.js b/admin-old/src/client/System/error-reducer.js similarity index 100% rename from admin/src/client/System/error-reducer.js rename to admin-old/src/client/System/error-reducer.js diff --git a/admin/src/client/System/statistic-reducer.js b/admin-old/src/client/System/statistic-reducer.js similarity index 100% rename from admin/src/client/System/statistic-reducer.js rename to admin-old/src/client/System/statistic-reducer.js diff --git a/admin/src/client/System/system-actions.js b/admin-old/src/client/System/system-actions.js similarity index 100% rename from admin/src/client/System/system-actions.js rename to admin-old/src/client/System/system-actions.js diff --git a/admin/src/client/System/system-constants.js b/admin-old/src/client/System/system-constants.js similarity index 100% rename from admin/src/client/System/system-constants.js rename to admin-old/src/client/System/system-constants.js diff --git a/admin/src/client/System/system-reducer.js b/admin-old/src/client/System/system-reducer.js similarity index 100% rename from admin/src/client/System/system-reducer.js rename to admin-old/src/client/System/system-reducer.js diff --git a/admin/src/client/Talkgroups/ListTalkgroups.js b/admin-old/src/client/Talkgroups/ListTalkgroups.js similarity index 100% rename from admin/src/client/Talkgroups/ListTalkgroups.js rename to admin-old/src/client/Talkgroups/ListTalkgroups.js diff --git a/admin/src/client/Talkgroups/talkgroup-actions.js b/admin-old/src/client/Talkgroups/talkgroup-actions.js similarity index 100% rename from admin/src/client/Talkgroups/talkgroup-actions.js rename to admin-old/src/client/Talkgroups/talkgroup-actions.js diff --git a/admin/src/client/Talkgroups/talkgroup-constants.js b/admin-old/src/client/Talkgroups/talkgroup-constants.js similarity index 100% rename from admin/src/client/Talkgroups/talkgroup-constants.js rename to admin-old/src/client/Talkgroups/talkgroup-constants.js diff --git a/admin/src/client/Talkgroups/talkgroup-reducer.js b/admin-old/src/client/Talkgroups/talkgroup-reducer.js similarity index 100% rename from admin/src/client/Talkgroups/talkgroup-reducer.js rename to admin-old/src/client/Talkgroups/talkgroup-reducer.js diff --git a/admin/src/client/User/user-actions.js b/admin-old/src/client/User/user-actions.js similarity index 100% rename from admin/src/client/User/user-actions.js rename to admin-old/src/client/User/user-actions.js diff --git a/admin/src/client/User/user-constants.js b/admin-old/src/client/User/user-constants.js similarity index 100% rename from admin/src/client/User/user-constants.js rename to admin-old/src/client/User/user-constants.js diff --git a/admin/src/client/User/user-reducer.js b/admin-old/src/client/User/user-reducer.js similarity index 100% rename from admin/src/client/User/user-reducer.js rename to admin-old/src/client/User/user-reducer.js diff --git a/admin/src/client/client.js b/admin-old/src/client/client.js similarity index 100% rename from admin/src/client/client.js rename to admin-old/src/client/client.js diff --git a/admin/src/client/components/container/App.js b/admin-old/src/client/components/container/App.js similarity index 100% rename from admin/src/client/components/container/App.js rename to admin-old/src/client/components/container/App.js diff --git a/admin/src/client/components/container/NavigationContainer.js b/admin-old/src/client/components/container/NavigationContainer.js similarity index 100% rename from admin/src/client/components/container/NavigationContainer.js rename to admin-old/src/client/components/container/NavigationContainer.js diff --git a/admin/src/client/components/container/Restricted.js b/admin-old/src/client/components/container/Restricted.js similarity index 100% rename from admin/src/client/components/container/Restricted.js rename to admin-old/src/client/components/container/Restricted.js diff --git a/admin/src/client/components/pure/About.js b/admin-old/src/client/components/pure/About.js similarity index 100% rename from admin/src/client/components/pure/About.js rename to admin-old/src/client/components/pure/About.js diff --git a/admin/src/client/components/pure/Message.js b/admin-old/src/client/components/pure/Message.js similarity index 100% rename from admin/src/client/components/pure/Message.js rename to admin-old/src/client/components/pure/Message.js diff --git a/admin/src/client/components/pure/Navigation.js b/admin-old/src/client/components/pure/Navigation.js similarity index 100% rename from admin/src/client/components/pure/Navigation.js rename to admin-old/src/client/components/pure/Navigation.js diff --git a/admin/src/client/components/style/style.css b/admin-old/src/client/components/style/style.css similarity index 100% rename from admin/src/client/components/style/style.css rename to admin-old/src/client/components/style/style.css diff --git a/admin/src/client/reducers/index.js b/admin-old/src/client/reducers/index.js similarity index 100% rename from admin/src/client/reducers/index.js rename to admin-old/src/client/reducers/index.js diff --git a/admin/src/server/config/express.js b/admin-old/src/server/config/express.js similarity index 100% rename from admin/src/server/config/express.js rename to admin-old/src/server/config/express.js diff --git a/admin/src/server/config/passport-strategies/local.js b/admin-old/src/server/config/passport-strategies/local.js similarity index 100% rename from admin/src/server/config/passport-strategies/local.js rename to admin-old/src/server/config/passport-strategies/local.js diff --git a/admin/src/server/config/passport.js b/admin-old/src/server/config/passport.js similarity index 100% rename from admin/src/server/config/passport.js rename to admin-old/src/server/config/passport.js diff --git a/admin/src/server/config/secrets.js b/admin-old/src/server/config/secrets.js similarity index 100% rename from admin/src/server/config/secrets.js rename to admin-old/src/server/config/secrets.js diff --git a/admin/src/server/controllers/groups.js b/admin-old/src/server/controllers/groups.js similarity index 100% rename from admin/src/server/controllers/groups.js rename to admin-old/src/server/controllers/groups.js diff --git a/admin/src/server/controllers/permissions.js b/admin-old/src/server/controllers/permissions.js similarity index 100% rename from admin/src/server/controllers/permissions.js rename to admin-old/src/server/controllers/permissions.js diff --git a/admin/src/server/controllers/systems.js b/admin-old/src/server/controllers/systems.js similarity index 100% rename from admin/src/server/controllers/systems.js rename to admin-old/src/server/controllers/systems.js diff --git a/admin/src/server/controllers/talkgroups.js b/admin-old/src/server/controllers/talkgroups.js similarity index 100% rename from admin/src/server/controllers/talkgroups.js rename to admin-old/src/server/controllers/talkgroups.js diff --git a/admin/src/server/index.js b/admin-old/src/server/index.js similarity index 100% rename from admin/src/server/index.js rename to admin-old/src/server/index.js diff --git a/admin/src/server/models/group.js b/admin-old/src/server/models/group.js similarity index 100% rename from admin/src/server/models/group.js rename to admin-old/src/server/models/group.js diff --git a/admin/src/server/models/permission.js b/admin-old/src/server/models/permission.js similarity index 100% rename from admin/src/server/models/permission.js rename to admin-old/src/server/models/permission.js diff --git a/admin/src/server/models/system.js b/admin-old/src/server/models/system.js similarity index 100% rename from admin/src/server/models/system.js rename to admin-old/src/server/models/system.js diff --git a/admin/src/server/models/system_stat.js b/admin-old/src/server/models/system_stat.js similarity index 100% rename from admin/src/server/models/system_stat.js rename to admin-old/src/server/models/system_stat.js diff --git a/admin/src/server/models/talkgroup.js b/admin-old/src/server/models/talkgroup.js similarity index 100% rename from admin/src/server/models/talkgroup.js rename to admin-old/src/server/models/talkgroup.js diff --git a/admin/src/server/models/user.js b/admin-old/src/server/models/user.js similarity index 100% rename from admin/src/server/models/user.js rename to admin-old/src/server/models/user.js diff --git a/admin/src/server/public/style/style.css b/admin-old/src/server/public/style/style.css similarity index 100% rename from admin/src/server/public/style/style.css rename to admin-old/src/server/public/style/style.css diff --git a/admin/upgrade_db_admin.js b/admin-old/upgrade_db_admin.js similarity index 100% rename from admin/upgrade_db_admin.js rename to admin-old/upgrade_db_admin.js diff --git a/admin/webpack/webpack.config.dev.js b/admin-old/webpack/webpack.config.dev.js similarity index 100% rename from admin/webpack/webpack.config.dev.js rename to admin-old/webpack/webpack.config.dev.js diff --git a/admin/webpack/webpack.config.prod.js b/admin-old/webpack/webpack.config.prod.js similarity index 100% rename from admin/webpack/webpack.config.prod.js rename to admin-old/webpack/webpack.config.prod.js diff --git a/admin-old/yarn.lock b/admin-old/yarn.lock new file mode 100644 index 0000000..b63ea88 --- /dev/null +++ b/admin-old/yarn.lock @@ -0,0 +1,4896 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/cli@7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.2.3.tgz#1b262e42a3e959d28ab3d205ba2718e1923cfee6" + dependencies: + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + output-file-sync "^2.0.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.0.3" + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@7.3.3", "@babel/core@^7.0.0": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.3.tgz#d090d157b7c5060d05a05acaebc048bd2b037947" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.3.3" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.3.3" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.3.3" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + dependencies: + "@babel/types" "^7.2.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.3.tgz#185962ade59a52e00ca2bdfcfd1d58e528d4e39e" + dependencies: + "@babel/types" "^7.3.3" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" + dependencies: + "@babel/types" "^7.0.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-create-class-features-plugin@^7.3.0": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.2.tgz#ba1685603eb1c9f2f51c9106d5180135c163fe73" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.2.3" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.2.2" + "@babel/types" "^7.2.2" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5" + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.2.3" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.2.tgz#37ebdbc88a2e1ebc6c8dd3d35ea9436e3e39e477" + +"@babel/parser@^7.2.3", "@babel/parser@^7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.3.tgz#092d450db02bdb6ccb1ca8ffd47d8774a91aef87" + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.3.tgz#e69ee114a834a671293ace001708cc1682ed63f9" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-export-default-from@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.2.0.tgz#737b0da44b9254b6152fe29bb99c64e5691f6f68" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@7.3.2", "@babel/plugin-proposal-object-rest-spread@^7.3.1": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-export-default-from@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz#edd83b7adc2e0d059e2467ca96c650ab6d2f3820" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz#140b52985b2d6ef0cb092ef3b29502b990f9cd50" + dependencies: + regexp-tree "^0.1.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz#ca36b6561c4d3b45524f8efb6f0fbc9a0d1d622f" + dependencies: + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/preset-env@7.3.1": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.1.tgz#389e8ca6b17ae67aaf9a2111665030be923515db" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.3.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/preset-stage-1@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-stage-1/-/preset-stage-1-7.0.0.tgz#e06be32a4055739f355057473ccbbb969e52d12c" + +"@babel/register@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" + dependencies: + core-js "^2.5.7" + find-cache-dir "^1.0.0" + home-or-tmp "^3.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" + +"@babel/runtime@7.3.1", "@babel/runtime@^7.2.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.1.2": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.2.tgz#961039de1f9bcb946d807efe2dba9c92e859d188" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/traverse@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@babel/types@^7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.3.tgz#6c44d1cdac2a7625b624216657d5bc6c107ab436" + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@semantic-ui-react/event-stack@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@semantic-ui-react/event-stack/-/event-stack-3.0.1.tgz#41d0b095ac94cc5e1607a4fed4d0f8860d0d2e60" + dependencies: + exenv "^1.2.2" + prop-types "^15.6.2" + +"@vx/axis@^0.0.184": + version "0.0.184" + resolved "https://registry.yarnpkg.com/@vx/axis/-/axis-0.0.184.tgz#0b65f0e274af004ceeee4fd53d1dc8d81e01d57e" + dependencies: + "@vx/group" "0.0.183" + "@vx/point" "0.0.182" + "@vx/shape" "0.0.184" + "@vx/text" "0.0.183" + classnames "^2.2.5" + prop-types "^15.6.0" + +"@vx/bounds@0.0.182": + version "0.0.182" + resolved "https://registry.yarnpkg.com/@vx/bounds/-/bounds-0.0.182.tgz#df3a7db90428f7dd03f428d5eabc67d16c00f7eb" + dependencies: + prop-types "^15.5.10" + +"@vx/curve@0.0.182", "@vx/curve@^0.0.182": + version "0.0.182" + resolved "https://registry.yarnpkg.com/@vx/curve/-/curve-0.0.182.tgz#55487fe71fb00ccc2299437e76b2c68b88c37c7f" + dependencies: + d3-shape "^1.0.6" + +"@vx/glyph@^0.0.183": + version "0.0.183" + resolved "https://registry.yarnpkg.com/@vx/glyph/-/glyph-0.0.183.tgz#ea76c0fe1e706392476af7e9193587c3c594f6d0" + dependencies: + "@vx/group" "0.0.183" + classnames "^2.2.5" + d3-shape "^1.2.0" + prop-types "^15.6.2" + +"@vx/group@0.0.183", "@vx/group@^0.0.183": + version "0.0.183" + resolved "https://registry.yarnpkg.com/@vx/group/-/group-0.0.183.tgz#15c8b14c5cadbe5f76c3ddcab8c5698cae24b443" + dependencies: + classnames "^2.2.5" + prop-types "^15.6.2" + +"@vx/legend@^0.0.183": + version "0.0.183" + resolved "https://registry.yarnpkg.com/@vx/legend/-/legend-0.0.183.tgz#b9f7b6a1cd20a0a0cb143b4dea8a30957b1838a8" + dependencies: + "@vx/group" "0.0.183" + classnames "^2.2.5" + prop-types "^15.5.10" + +"@vx/mock-data@^0.0.185": + version "0.0.185" + resolved "https://registry.yarnpkg.com/@vx/mock-data/-/mock-data-0.0.185.tgz#c73c2998152eac905abd9a2efdb4c0ec96c0bbf8" + dependencies: + d3-random "^1.0.3" + +"@vx/point@0.0.182": + version "0.0.182" + resolved "https://registry.yarnpkg.com/@vx/point/-/point-0.0.182.tgz#72abfa6ae923cf9bad23d9dd51709b2f31d81bf8" + +"@vx/responsive@0.0.184": + version "0.0.184" + resolved "https://registry.yarnpkg.com/@vx/responsive/-/responsive-0.0.184.tgz#215a466d424b708db56ea9d5fb65981328dafd7e" + dependencies: + lodash "^4.17.10" + prop-types "^15.6.1" + resize-observer-polyfill "1.5.0" + +"@vx/scale@0.0.182": + version "0.0.182" + resolved "https://registry.yarnpkg.com/@vx/scale/-/scale-0.0.182.tgz#22f4423c7188cc8be0b6dbfe9db3e1544d639a98" + dependencies: + d3-scale "^2.0.0" + +"@vx/shape@0.0.184": + version "0.0.184" + resolved "https://registry.yarnpkg.com/@vx/shape/-/shape-0.0.184.tgz#e4ba232644cb6a2bc82f8faf5b20928bd948d5fb" + dependencies: + "@vx/curve" "0.0.182" + "@vx/group" "0.0.183" + "@vx/point" "0.0.182" + classnames "^2.2.5" + d3-path "^1.0.5" + d3-shape "^1.2.0" + prop-types "^15.5.10" + +"@vx/text@0.0.183": + version "0.0.183" + resolved "https://registry.yarnpkg.com/@vx/text/-/text-0.0.183.tgz#8bed9eef00eee169158dd0a0a5ee5cd3374c4db3" + dependencies: + "@babel/core" "^7.0.0" + babel-plugin-lodash "^3.3.2" + classnames "^2.2.5" + lodash "^4.17.4" + prop-types "^15.6.2" + reduce-css-calc "^1.3.0" + +"@vx/tooltip@0.0.184": + version "0.0.184" + resolved "https://registry.yarnpkg.com/@vx/tooltip/-/tooltip-0.0.184.tgz#7c47cf2b5253df5ff2f1fa5852519538fa0d5574" + dependencies: + "@vx/bounds" "0.0.182" + classnames "^2.2.5" + prop-types "^15.5.10" + +"@webassemblyjs/ast@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.2.tgz#89297cd602cf8148e08d5fe1efbbba0cdb913ca7" + dependencies: + "@webassemblyjs/helper-module-context" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/wast-parser" "1.8.2" + +"@webassemblyjs/floating-point-hex-parser@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.2.tgz#c304fac0e5c2dd69a6d0f29000f4d6c4bf583203" + +"@webassemblyjs/helper-api-error@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.2.tgz#e4c5325b264f08513bcf0e48cf3c0a3ea690b508" + +"@webassemblyjs/helper-buffer@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.2.tgz#c133435f8482240fab1994151c09d7bdd7b8f5a8" + +"@webassemblyjs/helper-code-frame@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.2.tgz#def3d079fe6ce38d997e939af3ed6cc3a37ff0f8" + dependencies: + "@webassemblyjs/wast-printer" "1.8.2" + +"@webassemblyjs/helper-fsm@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.2.tgz#7d1a8186c51df38d39e8a742aafdd002965d397c" + +"@webassemblyjs/helper-module-context@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.2.tgz#3bfb0e7b889876bb8a7d1ccadca47e013721163e" + +"@webassemblyjs/helper-wasm-bytecode@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.2.tgz#72a7fc29949af10d2960338fc84192df23ef030e" + +"@webassemblyjs/helper-wasm-section@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.2.tgz#4b36c105bfcc3dbabea9e8d04617127b3178f92f" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-buffer" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/wasm-gen" "1.8.2" + +"@webassemblyjs/ieee754@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.2.tgz#43f8969f90e08b70101f35c93df07afaca5c9d5a" + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.2.tgz#d32c149f196d4fbb639dfec9557e5e950f8e5ae4" + dependencies: + long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + +"@webassemblyjs/utf8@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.2.tgz#6b262c1cba9052a8fd01a63eea50265ccd7f3b16" + +"@webassemblyjs/wasm-edit@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.2.tgz#3d3bbf10c46084e6525a1d9e2476bd072f0edd5b" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-buffer" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/helper-wasm-section" "1.8.2" + "@webassemblyjs/wasm-gen" "1.8.2" + "@webassemblyjs/wasm-opt" "1.8.2" + "@webassemblyjs/wasm-parser" "1.8.2" + "@webassemblyjs/wast-printer" "1.8.2" + +"@webassemblyjs/wasm-gen@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.2.tgz#389670ade8398275cbf7c7c92e38f6f5eadc4c1a" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/ieee754" "1.8.2" + "@webassemblyjs/leb128" "1.8.2" + "@webassemblyjs/utf8" "1.8.2" + +"@webassemblyjs/wasm-opt@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.2.tgz#967019ac1b6d577177d241b912f61f01122d6b49" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-buffer" "1.8.2" + "@webassemblyjs/wasm-gen" "1.8.2" + "@webassemblyjs/wasm-parser" "1.8.2" + +"@webassemblyjs/wasm-parser@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.2.tgz#7a9d587a3edab32fc800dc9498bdbdf90896bb79" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-api-error" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/ieee754" "1.8.2" + "@webassemblyjs/leb128" "1.8.2" + "@webassemblyjs/utf8" "1.8.2" + +"@webassemblyjs/wast-parser@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.2.tgz#c3ded4de843756ab5f435c422a36fdd48aa518ad" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/floating-point-hex-parser" "1.8.2" + "@webassemblyjs/helper-api-error" "1.8.2" + "@webassemblyjs/helper-code-frame" "1.8.2" + "@webassemblyjs/helper-fsm" "1.8.2" + long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + +"@webassemblyjs/wast-printer@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.2.tgz#a7dbb0e6eba3721fd06a949ac1917fd289b3db4d" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/wast-parser" "1.8.2" + long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + +acorn@^6.0.5: + version "6.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" + +agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + dependencies: + es6-promisify "^5.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + +ajv-keywords@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + +ajv@^6.1.0: + version "6.6.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61" + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^3.0.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-flatten@1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +ast-types@0.x.x: + version "0.11.7" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + +axios@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + dependencies: + follow-redirects "^1.3.0" + is-buffer "^1.1.5" + +babel-loader@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + util.promisify "^1.0.0" + +babel-plugin-lodash@3.3.4, babel-plugin-lodash@^3.3.2: + version "3.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" + dependencies: + "@babel/helper-module-imports" "^7.0.0-beta.49" + "@babel/types" "^7.0.0-beta.49" + glob "^7.1.1" + lodash "^4.17.10" + require-package-name "^2.0.1" + +balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-nodejs@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/bcrypt-nodejs/-/bcrypt-nodejs-0.0.3.tgz#c60917f26dc235661566c681061c303c2b28842b" + +better-npm-run@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/better-npm-run/-/better-npm-run-0.1.1.tgz#6bb6008591de1b72554aa8b0cefa0da1572fd481" + dependencies: + commander "^2.9.0" + dotenv "^2.0.0" + object-assign "^4.0.1" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +bignumber.js@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1" + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + +bluebird@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bluebird@^3.5.0, bluebird@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +body-parser@1.18.3, body-parser@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@^4.3.4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.6.tgz#0f9d9081afc66b36f477c6bdf3813f784f42396a" + dependencies: + caniuse-lite "^1.0.30000921" + electron-to-chromium "^1.3.92" + node-releases "^1.1.1" + +bson@^1.1.0, bson@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.0.tgz#bee57d1fb6a87713471af4e32bcae36de814b5b0" + +bson@~1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +busboy@^0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" + dependencies: + dicer "0.2.5" + readable-stream "1.1.x" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cacache@^11.0.2, cacache@^11.2.0: + version "11.3.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" + dependencies: + bluebird "^3.5.3" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.3" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + +caniuse-lite@^1.0.30000921: + version "1.0.30000921" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000921.tgz#7a607c1623444b22351d834e093aedda3c42fbe8" + +chalk@^2.0.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.0.2, chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + +chrome-trace-event@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + dependencies: + tslib "^1.9.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +colors@^1.1.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + +combined-stream@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.8.1, commander@^2.9.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +component-emitter@^1.2.0, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-mongo@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/connect-mongo/-/connect-mongo-2.0.3.tgz#db6cabe1e3add5acc9ef9c486681027675a58ee5" + dependencies: + mongodb "^2.0.36" + +connected-react-router@6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.3.1.tgz#b68e505cca553ce9b6a179d4166cf43b948c85bf" + dependencies: + immutable "^3.8.1" + seamless-immutable "^7.1.3" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +cookiejar@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-js@^2.5.7: + version "2.6.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.0.tgz#1e30793e9ee5782b307e37ffa22da0eacddd84d4" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +crc@3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +csv-parse@^4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.3.3.tgz#7aa120da34ce1a9d911fbb89c2ae313dcdaf7324" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + +d3-color@1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.2.3.tgz#6c67bb2af6df3cc8d79efcc4d3a3e83e28c8048f" + +d3-format@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.3.2.tgz#6a96b5e31bcb98122a30863f7d92365c00603562" + +d3-interpolate@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.3.2.tgz#417d3ebdeb4bc4efcc8fd4361c55e4040211fd68" + dependencies: + d3-color "1" + +d3-path@1, d3-path@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.7.tgz#8de7cd693a75ac0b5480d3abaccd94793e58aae8" + +d3-random@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" + +d3-scale@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.1.2.tgz#4e932b7b60182aee9073ede8764c98423e5f9a94" + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-shape@^1.0.6, d3-shape@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.2.tgz#f9dba3777a5825f9a8ce8bc928da08c17679e9a7" + dependencies: + d3-path "1" + +d3-time-format@2, d3-time-format@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.3.tgz#ae06f8e0126a9d60d6364eac5b1533ae1bac826b" + dependencies: + d3-time "1" + +d3-time@1: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.10.tgz#8259dd71288d72eeacfd8de281c4bf5c7393053c" + +data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + dependencies: + ms "^2.1.1" + +debug@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-diff@^0.3.5: + version "0.3.8" + resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +degenerator@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-node@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + +dicer@0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" + dependencies: + readable-stream "1.1.x" + streamsearch "0.1.2" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +dotenv@^2.0.0: + version "2.0.0" + resolved "http://registry.npmjs.org/dotenv/-/dotenv-2.0.0.tgz#bd759c357aaa70365e01c96b7b0bec08a6e0d949" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.3.92: + version "1.3.92" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.92.tgz#9027b5abaea400045edd652c0e4838675c814399" + +elliptic@^6.0.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +es-abstract@^1.5.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + 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@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@3.2.1: + version "3.2.1" + resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@1.x.x: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@3.x.x, esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +events@^1.0.0: + version "1.1.1" + resolved "http://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exenv@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +express-session@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.15.6.tgz#47b4160c88f42ab70fe8a508e31cbff76757ab0a" + dependencies: + cookie "0.3.1" + cookie-signature "1.0.6" + crc "3.4.4" + debug "2.6.9" + depd "~1.1.1" + on-headers "~1.0.1" + parseurl "~1.3.2" + uid-safe "~2.1.5" + utils-merge "1.0.1" + +express@^4.16.2: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + 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.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@3, extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + +file-uri-to-path@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^3.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + dependencies: + locate-path "^3.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.3.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" + dependencies: + debug "^3.2.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +form-data@^2.3.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +formidable@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + dependencies: + pump "^3.0.0" + +get-uri@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "3" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^11.1.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +history@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + value-equal "^0.4.0" + warning "^3.0.0" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + +hoist-non-react-statics@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + dependencies: + react-is "^16.7.0" + +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + dependencies: + agent-base "4" + debug "3.1.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +immutable@^3.8.1: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +interpret@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + +invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + +ip@^1.1.4, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + dependencies: + has-symbols "^1.0.0" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +js-levenshtein@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + +jsesc@~0.5.0: + version "0.5.0" + resolved "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-bigint@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.2.3.tgz#118d7f6ff1d38659f19f94cf73e64a75a3f988a8" + dependencies: + bignumber.js "^4.0.0" + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + +json5@^0.5.0: + version "0.5.1" + resolved "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + +kareem@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.0.tgz#ef33c42e9024dce511eeaf440cd684f3af1fc769" + +keyboard-key@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/keyboard-key/-/keyboard-key-1.0.4.tgz#52d8fa07b7e17757072aa22a67fb4ae85e4c46b0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + dependencies: + invert-kv "^2.0.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +loader-runner@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + +lodash@4.17.11, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + +"long@git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69": + version "4.0.1" + resolved "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + dependencies: + yallist "^3.0.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + dependencies: + pify "^3.0.0" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +methods@^1.1.1, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + +mime-types@^2.1.12, mime-types@~2.1.18: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + dependencies: + mime-db "~1.37.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + dependencies: + minipass "^2.2.1" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mongodb-core@2.1.20: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.20.tgz#fece8dd76b59ee7d7f2d313b65322c160492d8f1" + dependencies: + bson "~1.0.4" + require_optional "~1.0.0" + +mongodb-core@3.1.11: + version "3.1.11" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.11.tgz#b253038dbb4d7329f3d1c2ee5400bb0c9221fde5" + dependencies: + bson "^1.1.0" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + optionalDependencies: + saslprep "^1.0.0" + +mongodb@3.1.13: + version "3.1.13" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.13.tgz#f8cdcbb36ad7a08b570bd1271c8525753f75f9f4" + dependencies: + mongodb-core "3.1.11" + safe-buffer "^5.1.2" + +mongodb@^2.0.36: + version "2.2.36" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.36.tgz#1c573680b2849fb0f47acbba3dc5fa228de975f5" + dependencies: + es6-promise "3.2.1" + mongodb-core "2.1.20" + readable-stream "2.2.7" + +mongoose-legacy-pluralize@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" + +mongoose@^5.4: + version "5.4.13" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.4.13.tgz#dff934864577aa7c5c1b72c41b60999077cf78c2" + dependencies: + async "2.6.1" + bson "~1.1.0" + kareem "2.3.0" + mongodb "3.1.13" + mongodb-core "3.1.11" + mongoose-legacy-pluralize "1.0.2" + mpath "0.5.1" + mquery "3.2.0" + ms "2.1.1" + regexp-clone "0.0.1" + safe-buffer "5.1.2" + sliced "1.0.1" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +mpath@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.5.1.tgz#17131501f1ff9e6e4fbc8ffa875aa7065b5775ab" + +mquery@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.0.tgz#e276472abd5109686a15eb2a8e0761db813c81cc" + dependencies: + bluebird "3.5.1" + debug "3.1.0" + regexp-clone "0.0.1" + safe-buffer "5.1.2" + sliced "1.0.1" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@2.1.1, ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + +multer@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.1.tgz#24b12a416a22fec2ade810539184bf138720159e" + dependencies: + append-field "^1.0.0" + busboy "^0.2.11" + concat-stream "^1.5.2" + mkdirp "^0.5.1" + object-assign "^4.1.1" + on-finished "^2.3.0" + type-is "^1.6.4" + xtend "^4.0.0" + +nan@^2.9.2: + version "2.12.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.0.tgz#9d443fdb5e13a20770cc5e602eee59760a685885" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +neo-async@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + +netmask@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-mailjet@*: + version "3.3.1" + resolved "https://registry.yarnpkg.com/node-mailjet/-/node-mailjet-3.3.1.tgz#f06ed4765abf3d6d57e662c32cb586fd7e79a540" + dependencies: + bluebird "^3.5.0" + json-bigint "^0.2.3" + qs "^6.5.0" + superagent "^3.5.2" + superagent-proxy "^1.0.2" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.1.tgz#8fff8aea1cfcad1fb4205f805149054fbf73cafd" + dependencies: + semver "^5.3.0" + +node-uuid@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + +npm-packlist@^1.1.6: + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +on-finished@^2.3.0, on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" + dependencies: + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" + mkdirp "^0.5.1" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-is-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + dependencies: + p-limit "^2.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + +pac-proxy-agent@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz#90d9f6730ab0f4d2607dcdcd4d3d641aa26c3896" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + get-uri "^2.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + pac-resolver "^3.0.0" + raw-body "^2.2.0" + socks-proxy-agent "^3.0.0" + +pac-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" + dependencies: + co "^4.6.0" + degenerator "^1.0.4" + ip "^1.1.5" + netmask "^1.0.6" + thunkify "^2.1.2" + +pako@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-asn1@^5.0.0: + version "5.1.1" + resolved "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +passport-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" + dependencies: + passport-strategy "1.x.x" + +passport-strategy@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" + +passport@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.0.tgz#c5095691347bd5ad3b5e180238c3914d16f05811" + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + +path-browserify@0.0.0: + version "0.0.0" + resolved "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5, path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +pause@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pirates@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd" + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + dependencies: + find-up "^3.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +proxy-agent@2: + version "2.3.1" + resolved "http://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz#3d49d863d46cf5f37ca8394848346ea02373eac6" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^4.1.2" + pac-proxy-agent "^2.0.1" + proxy-from-env "^1.0.0" + socks-proxy-agent "^3.0.0" + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +qs@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + +qs@^6.5.0, qs@^6.5.1: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.3, raw-body@^2.2.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@^16.2.0: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.3.tgz#8fa7ba6883c85211b8da2d0efeffc9d3825cccc0" + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.11.2" + +react-is@^16.6.3, react-is@^16.7.0: + version "16.8.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.2.tgz#09891d324cad1cb0c1f2d91f70a71a4bee34df0f" + +react-redux@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.0.tgz#09e86eeed5febb98e9442458ad2970c8f1a173ef" + dependencies: + "@babel/runtime" "^7.2.0" + hoist-non-react-statics "^3.2.1" + invariant "^2.2.4" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-is "^16.6.3" + +react-router-dom@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" + dependencies: + history "^4.7.2" + invariant "^2.2.4" + loose-envify "^1.3.1" + prop-types "^15.6.1" + react-router "^4.3.1" + warning "^4.0.1" + +react-router@^4.2.0, react-router@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" + dependencies: + history "^4.7.2" + hoist-non-react-statics "^2.5.0" + invariant "^2.2.4" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.1" + warning "^4.0.1" + +react@^16.2.0: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c" + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.11.2" + +"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@1.1.x: + version "1.1.14" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +reduce-css-calc@^1.3.0: + version "1.3.0" + resolved "http://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +redux-logger@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf" + dependencies: + deep-diff "^0.3.5" + +redux-thunk@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + +redux@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + dependencies: + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-clone@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589" + +regexp-tree@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.1.tgz#27b455f9b138ca2e84c090e9aff1ffe2a04d97fa" + dependencies: + cli-table3 "^0.5.0" + colors "^1.1.2" + yargs "^12.0.5" + +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-package-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" + +require_optional@^1.0.1, require_optional@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + dependencies: + resolve-from "^2.0.0" + semver "^5.1.0" + +resize-observer-polyfill@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz#660ff1d9712a2382baa2cad450a4716209f9ca69" + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.3.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + dependencies: + path-parse "^1.0.5" + +resolve@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + dependencies: + glob "^7.1.3" + +rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +saslprep@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.2.tgz#da5ab936e6ea0bbae911ffec77534be370c9f52d" + dependencies: + sparse-bitfield "^3.0.3" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +scheduler@^0.11.2: + version "0.11.3" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b" + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +seamless-immutable@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/seamless-immutable/-/seamless-immutable-7.1.4.tgz#6e9536def083ddc4dea0207d722e0e80d0f372f8" + +semantic-ui-react@^0.85.0: + version "0.85.0" + resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.85.0.tgz#64ff420e6432e61bc798baf27d368f73cf0cad28" + dependencies: + "@babel/runtime" "^7.1.2" + "@semantic-ui-react/event-stack" "^3.0.1" + classnames "^2.2.6" + keyboard-key "^1.0.4" + lodash "^4.17.11" + prop-types "^15.6.2" + react-is "^16.7.0" + shallowequal "^1.1.0" + +semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-javascript@^1.4.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + +sliced@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + +smart-buffer@^1.0.13: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +socks-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.9: + version "0.5.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + dependencies: + memory-pager "^1.0.2" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + dependencies: + figgy-pudding "^3.5.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +streamsearch@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" + +string-width@^1.0.1: + version "1.0.2" + resolved "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +superagent-proxy@^1.0.2: + version "1.0.3" + resolved "http://registry.npmjs.org/superagent-proxy/-/superagent-proxy-1.0.3.tgz#acfa776672f11c24a90ad575e855def8be44f741" + dependencies: + debug "^3.1.0" + proxy-agent "2" + +superagent@^3.5.2: + version "3.8.3" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.1.0" + debug "^3.1.0" + extend "^3.0.0" + form-data "^2.3.1" + formidable "^1.2.0" + methods "^1.1.1" + mime "^1.4.1" + qs "^6.5.1" + readable-stream "^2.3.5" + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +terser-webpack-plugin@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz#9bff3a891ad614855a7dde0d707f7db5a927e3d9" + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.16.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser@^3.16.1: + version "3.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493" + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.9" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunkify@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + dependencies: + setimmediate "^1.0.4" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@^1.6.4, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^3.0.0: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.1.tgz#6937d7513a37280d4792f1fb536bef35e08e420a" + dependencies: + cacache "^11.2.0" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-js "^3.0.0" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +uid-safe@~2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + dependencies: + random-bytes "~1.0.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "http://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + dependencies: + inherits "2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + +v8-compile-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" + +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz#aa6876480872116fa3e11d434b0d0d8d91e44607" + dependencies: + loose-envify "^1.0.0" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +webpack-cli@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.2.3.tgz#13653549adfd8ccd920ad7be1ef868bacc22e346" + dependencies: + chalk "^2.4.1" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.0" + findup-sync "^2.0.0" + global-modules "^1.0.0" + import-local "^2.0.0" + interpret "^1.1.0" + loader-utils "^1.1.0" + supports-color "^5.5.0" + v8-compile-cache "^2.0.2" + yargs "^12.0.4" + +webpack-dev-middleware@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.5.2.tgz#d768b6194f3fe8d72d51feded49de359e8d96ffb" + dependencies: + memory-fs "~0.4.1" + mime "^2.3.1" + range-parser "^1.0.3" + webpack-log "^2.0.0" + +webpack-hot-middleware@2.24.3: + version "2.24.3" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.24.3.tgz#5bb76259a8fc0d97463ab517640ba91d3382d4a6" + dependencies: + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.1.0, webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.29.4: + version "4.29.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.4.tgz#c0a2a12635142015f931b92efee7de6559f264dd" + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-module-context" "1.8.2" + "@webassemblyjs/wasm-edit" "1.8.2" + "@webassemblyjs/wasm-parser" "1.8.2" + acorn "^6.0.5" + acorn-dynamic-import "^4.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^1.0.0" + tapable "^1.1.0" + terser-webpack-plugin "^1.1.0" + watchpack "^1.5.0" + webpack-sources "^1.3.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.14, which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^12.0.4, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" diff --git a/admin/.env b/admin/.env new file mode 100644 index 0000000..bab6502 --- /dev/null +++ b/admin/.env @@ -0,0 +1,12 @@ +REACT_APP_BACKEND_SERVER=https://api.openmhz.com +REACT_APP_FRONTEND_SERVER=https://openmhz.com +REACT_APP_SOCKET_SERVER=wss://api.openmhz.com +REACT_APP_ACCOUNT_SERVER=https://account.openmhz.com +REACT_APP_ADMIN_SERVER=localhost:3000 +REACT_APP_ADMIN_EMAIL=luke@robotastic.com +REACT_APP_SITE_NAME=OpenMHz +REACT_APP_ARCHIVE_DAYS=30 +REACT_APP_PRO_PLAN=1 +REACT_APP_FREE_PLAN=0 +REACT_APP_PRO_PLAN_ARCHIVE=30 +REACT_APP_FREE_PLAN_ARCHIVE=7 diff --git a/admin/.eslintcache b/admin/.eslintcache new file mode 100644 index 0000000..4d4abd4 --- /dev/null +++ b/admin/.eslintcache @@ -0,0 +1 @@ +[{"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App.js":"1","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/features/counter/Counter.js":"2","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Navigation.js":"3","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-constants.js":"4","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/configureStore.js":"5","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-reducer.js":"6","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-reducer.js":"7","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-reducer.js":"8","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/index.js":"9","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/About.js":"10","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/NavigationContainer.js":"11","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-constants.js":"12","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-actions.js":"13","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemCard.js":"14","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Restricted.js":"15","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-actions.js":"16","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-constants.js":"17","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-reducer.js":"18","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/App.js":"19","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-constants.js":"20","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystems.js":"21","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-reducer.js":"22","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/reducers.js":"23","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-constants.js":"24","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-constants.js":"25","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemForm.js":"26","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystemContainer.js":"27","/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystem.js":"28"},{"size":1463,"mtime":499162500000,"results":"29","hashOfConfig":"30"},{"size":1626,"mtime":499162500000,"results":"31","hashOfConfig":"30"},{"size":1499,"mtime":1609685400124,"results":"32","hashOfConfig":"30"},{"size":115,"mtime":1545362103836,"results":"33","hashOfConfig":"30"},{"size":759,"mtime":1609425817988,"results":"34","hashOfConfig":"30"},{"size":2037,"mtime":1545362103826,"results":"35","hashOfConfig":"30"},{"size":3029,"mtime":1609813173090,"results":"36","hashOfConfig":"30"},{"size":636,"mtime":1545362103837,"results":"37","hashOfConfig":"30"},{"size":1377,"mtime":1609814695852,"results":"38","hashOfConfig":"30"},{"size":1278,"mtime":1609812739781,"results":"39","hashOfConfig":"30"},{"size":570,"mtime":1609684078480,"results":"40","hashOfConfig":"30"},{"size":862,"mtime":1545362103839,"results":"41","hashOfConfig":"30"},{"size":1344,"mtime":1609686206535,"results":"42","hashOfConfig":"30"},{"size":1145,"mtime":1609813170344,"results":"43","hashOfConfig":"30"},{"size":2064,"mtime":1609813175115,"results":"44","hashOfConfig":"30"},{"size":5836,"mtime":1609813859389,"results":"45","hashOfConfig":"30"},{"size":320,"mtime":1546657322904,"results":"46","hashOfConfig":"30"},{"size":1045,"mtime":1609813166756,"results":"47","hashOfConfig":"30"},{"size":253,"mtime":1609814499873,"results":"48","hashOfConfig":"30"},{"size":688,"mtime":1545362103825,"results":"49","hashOfConfig":"30"},{"size":1156,"mtime":1609813188195,"results":"50","hashOfConfig":"30"},{"size":2262,"mtime":1609813202417,"results":"51","hashOfConfig":"30"},{"size":768,"mtime":1609684363308,"results":"52","hashOfConfig":"30"},{"size":848,"mtime":1545362103820,"results":"53","hashOfConfig":"30"},{"size":537,"mtime":1545362103845,"results":"54","hashOfConfig":"30"},{"size":13151,"mtime":1608606472255,"results":"55","hashOfConfig":"30"},{"size":381,"mtime":1609814717150,"results":"56","hashOfConfig":"30"},{"size":1137,"mtime":1609814723480,"results":"57","hashOfConfig":"30"},{"filePath":"58","messages":"59","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"108517c",{"filePath":"60","messages":"61","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"64","messages":"65","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"66","messages":"67","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"71","messages":"72","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"73","messages":"74","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"75","messages":"76","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"79"},{"filePath":"80","messages":"81","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"82","messages":"83","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"84","messages":"85","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"88","messages":"89","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"70"},{"filePath":"104","messages":"105","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"108","messages":"109","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"110","messages":"111","errorCount":0,"warningCount":11,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"114","messages":"115","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/features/counter/Counter.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Navigation.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/configureStore.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-reducer.js",[],["116","117"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/error-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/index.js",["118"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Components/About.js",[],["119","120"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/NavigationContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemCard.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/Restricted.js",["121"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/User/user-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/App/App.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Permission/permission-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/ListSystems.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/system-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/redux-router/reducers.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Group/group-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/Talkgroups/talkgroup-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/SystemForm.js",["122","123","124","125","126","127","128","129","130","131","132"],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystemContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/admin/src/System/UpdateSystem.js",["133"],{"ruleId":"134","replacedBy":"135"},{"ruleId":"136","replacedBy":"137"},{"ruleId":"138","severity":1,"message":"139","line":9,"column":8,"nodeType":"140","messageId":"141","endLine":9,"endColumn":18},{"ruleId":"134","replacedBy":"142"},{"ruleId":"136","replacedBy":"143"},{"ruleId":"138","severity":1,"message":"144","line":22,"column":21,"nodeType":"140","messageId":"141","endLine":22,"endColumn":28},{"ruleId":"138","severity":1,"message":"145","line":2,"column":8,"nodeType":"140","messageId":"141","endLine":2,"endColumn":16},{"ruleId":"138","severity":1,"message":"146","line":4,"column":3,"nodeType":"140","messageId":"141","endLine":4,"endColumn":12},{"ruleId":"138","severity":1,"message":"147","line":5,"column":3,"nodeType":"140","messageId":"141","endLine":5,"endColumn":9},{"ruleId":"138","severity":1,"message":"148","line":6,"column":3,"nodeType":"140","messageId":"141","endLine":6,"endColumn":11},{"ruleId":"138","severity":1,"message":"149","line":8,"column":3,"nodeType":"140","messageId":"141","endLine":8,"endColumn":11},{"ruleId":"138","severity":1,"message":"150","line":10,"column":3,"nodeType":"140","messageId":"141","endLine":10,"endColumn":7},{"ruleId":"138","severity":1,"message":"151","line":11,"column":3,"nodeType":"140","messageId":"141","endLine":11,"endColumn":10},{"ruleId":"138","severity":1,"message":"152","line":12,"column":3,"nodeType":"140","messageId":"141","endLine":12,"endColumn":8},{"ruleId":"138","severity":1,"message":"153","line":20,"column":7,"nodeType":"140","messageId":"141","endLine":20,"endColumn":29},{"ruleId":"154","severity":1,"message":"155","line":97,"column":37,"nodeType":"156","messageId":"157","endLine":97,"endColumn":39},{"ruleId":"154","severity":1,"message":"158","line":419,"column":26,"nodeType":"156","messageId":"157","endLine":419,"endColumn":28},{"ruleId":"138","severity":1,"message":"159","line":19,"column":14,"nodeType":"140","messageId":"141","endLine":19,"endColumn":22},"no-native-reassign",["160"],"no-negated-in-lhs",["161"],"no-unused-vars","'Restricted' is defined but never used.","Identifier","unusedVar",["160"],["161"],"'history' is assigned a value but never used.","'ReactDOM' is defined but never used.","'Container' is defined but never used.","'Header' is defined but never used.","'Dropdown' is defined but never used.","'TextArea' is defined but never used.","'Grid' is defined but never used.","'Segment' is defined but never used.","'Input' is defined but never used.","'checkInputMessagestyle' is assigned a value but never used.","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","Expected '!==' and instead saw '!='.","'dispatch' is assigned a value but never used.","no-global-assign","no-unsafe-negation"] \ No newline at end of file diff --git a/admin/.gitignore b/admin/.gitignore index 3abb71c..c067634 100644 --- a/admin/.gitignore +++ b/admin/.gitignore @@ -1,36 +1,23 @@ -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release -lib -uploads/ - -# Dependency directory -node_modules -assets - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/admin/README.md b/admin/README.md index e69de29..d85e9e3 100644 --- a/admin/README.md +++ b/admin/README.md @@ -0,0 +1,68 @@ +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app), using the [Redux](https://redux.js.org/) and [Redux Toolkit](https://redux-toolkit.js.org/) template. + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `yarn eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting + +### Analyzing the Bundle Size + +This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size + +### Making a Progressive Web App + +This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app + +### Advanced Configuration + +This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration + +### Deployment + +This section has moved here: https://facebook.github.io/create-react-app/docs/deployment + +### `yarn build` fails to minify + +This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/admin/env-example b/admin/env-example new file mode 100644 index 0000000..80ad803 --- /dev/null +++ b/admin/env-example @@ -0,0 +1,12 @@ +REACT_APP_BACKEND_SERVER=https://api.openmhz.com +REACT_APP_FRONTEND_SERVER=https://openmhz.com +REACT_APP_SOCKET_SERVER=wss://api.openmhz.com +REACT_ACCOUNT_SERVER=https://account.openmhz.com +REACT_ADMIN_SERVER=https://admin.openmhz.com +REACT_ADMIN_EMAIL=luke@robotastic.com +REACT_APP_SITE_NAME=OpenMHz +REACT_APP_ARCHIVE_DAYS=30 +REACT_APP_PRO_PLAN=1 +REACT_APP_FREE_PLAN=0 +REACT_APP_PRO_PLAN_ARCHIVE=30 +REACT_APP_FREE_PLAN_ARCHIVE=7 diff --git a/admin/notes.md b/admin/notes.md new file mode 100644 index 0000000..172f3de --- /dev/null +++ b/admin/notes.md @@ -0,0 +1,10 @@ + +## Base +start using `npx create-react-app admin --template redux` + +## Packages used: +- [connected-react-router](https://github.com/supasate/connected-react-router): Synchronize router state with redux store through +- [Redux Thunk](https://github.com/reduxjs/redux-thunk): lets you do AJAX calls +- [axios](https://github.com/axios/axios) - library for doing HTTP requests +- [react-router-dom](https://reactrouter.com/web/guides/quick-start) - Adds routes to React +- [Semantic UI](https://react.semantic-ui.com/usage) - The UI frontend diff --git a/admin/package.json b/admin/package.json index bd01980..887dc27 100644 --- a/admin/package.json +++ b/admin/package.json @@ -1,94 +1,42 @@ { - "name": "react-passport-redux-example", - "version": "1.0.0", - "description": "Demonstration of PassportJS authentication in React w/ Redux.", - "main": "devStart.js", - "scripts": { - "build:lib": "babel src/server --out-dir lib/server", - "build:umd": "webpack --config webpack/webpack.config.dev.js", - "build:umd:min": "webpack --config webpack/webpack.config.prod.js", - "build": "npm run clean && npm run build:lib && npm run build:umd && npm run build:umd:min", - "postinstall": "npm run build", - "clean": "rimraf lib public/assets", - "server": "better-npm-run server", - "server:dev": "better-npm-run server:dev", - "start": "npm run server", - "start:dev": "npm run server:dev" - }, - "betterScripts": { - "server": { - "command": "node lib/server/index.js", - "env": { - "NODE_ENV": "production", - "MIN_EXT": ".min" - } - }, - "server:dev": { - "command": "node devStart.js", - "env": { - "NODE_ENV": "development" - } - } - }, + "name": "admin", + "version": "0.1.0", + "private": true, "dependencies": { - "@babel/runtime": "7.3.1", - "@vx/axis": "^0.0.184", - "@vx/curve": "^0.0.182", - "@vx/glyph": "^0.0.183", - "@vx/group": "^0.0.183", - "@vx/legend": "^0.0.183", - "@vx/mock-data": "^0.0.185", - "@vx/responsive": "0.0.184", - "@vx/scale": "0.0.182", - "@vx/shape": "0.0.184", - "@vx/tooltip": "0.0.184", - "axios": "^0.18.0", - "babel-loader": "8.0.5", - "bcrypt-nodejs": "^0.0.3", - "better-npm-run": "^0.1.0", - "body-parser": "^1.18.2", - "connect-mongo": "^2.0.1", - "connected-react-router": "6.3.1", - "csv-parse": "^4.3.3", - "d3-time-format": "^2.1.3", - "express": "^4.16.2", - "express-session": "^1.15.6", - "fs-extra": "^7.0.1", - "lodash": "4.17.11", - "mongoose": "^5.4", - "multer": "^1.3.0", - "node-mailjet": "*", - "node-uuid": "^1.4.8", - "passport": "^0.4.0", - "passport-local": "^1.0.0", - "react": "16.8.2", - "react-dom": "16.8.2", - "react-redux": "^6.0.0", - "react-router": "^4.2.0", - "react-router-dom": "^4.2.2", - "redux": "^4.0.1", - "redux-thunk": "^2.2.0", - "semantic-ui-react": "^0.85.0" + "@reduxjs/toolkit": "^1.1.0", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "axios": "0.21.1", + "connected-react-router": "6.8.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "react-redux": "^7.1.3", + "react-router-dom": "5.2.0", + "react-scripts": "4.0.1", + "redux-thunk": "2.3.0", + "semantic-ui-css": "2.4.1", + "semantic-ui-react": "2.0.1" }, - "devDependencies": { - "@babel/cli": "7.2.3", - "@babel/core": "7.3.3", - "@babel/plugin-proposal-class-properties": "7.3.3", - "@babel/plugin-proposal-export-default-from": "7.2.0", - "@babel/plugin-proposal-object-rest-spread": "7.3.2", - "@babel/plugin-transform-runtime": "7.2.0", - "@babel/preset-env": "7.3.1", - "@babel/preset-react": "^7.0.0", - "@babel/preset-stage-1": "^7.0.0", - "@babel/register": "^7.0.0", - "babel-plugin-lodash": "3.3.4", - "detect-node": "2.0.4", - "redux-logger": "^3.0.6", - "rimraf": "2.6.3", - "uglifyjs-webpack-plugin": "2.1.1", - "webpack": "4.29.5", - "webpack-cli": "3.2.3", - "webpack-dev-middleware": "3.5.2", - "webpack-hot-middleware": "2.24.3" + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] } } diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico new file mode 100644 index 0000000..354202a Binary files /dev/null and b/admin/public/favicon.ico differ diff --git a/admin/public/index.html b/admin/public/index.html new file mode 100644 index 0000000..430b58f --- /dev/null +++ b/admin/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React Redux App + + + +
+ + + diff --git a/admin/public/logo192.png b/admin/public/logo192.png new file mode 100644 index 0000000..3362410 Binary files /dev/null and b/admin/public/logo192.png differ diff --git a/admin/public/logo512.png b/admin/public/logo512.png new file mode 100644 index 0000000..b351622 Binary files /dev/null and b/admin/public/logo512.png differ diff --git a/admin/public/manifest.json b/admin/public/manifest.json new file mode 100644 index 0000000..2f2be64 --- /dev/null +++ b/admin/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/admin/public/robots.txt b/admin/public/robots.txt new file mode 100644 index 0000000..fa06a75 --- /dev/null +++ b/admin/public/robots.txt @@ -0,0 +1,2 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * diff --git a/admin/src/App.css b/admin/src/App.css new file mode 100644 index 0000000..355c49b --- /dev/null +++ b/admin/src/App.css @@ -0,0 +1,39 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-float infinite 3s ease-in-out; + } +} + +.App-header { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); +} + +.App-link { + color: rgb(112, 76, 182); +} + +@keyframes App-logo-float { + 0% { + transform: translateY(0); + } + 50% { + transform: translateY(10px) + } + 100% { + transform: translateY(0px) + } +} diff --git a/admin/src/App.js b/admin/src/App.js new file mode 100644 index 0000000..7825dd2 --- /dev/null +++ b/admin/src/App.js @@ -0,0 +1,58 @@ +import React from 'react'; +import logo from './logo.svg'; +import { Counter } from './features/counter/Counter'; +import './App.css'; + +function App() { + return ( +
+
+ logo + +

+ Edit src/App.js and save to reload. +

+ + Learn + + React + + , + + Redux + + , + + Redux Toolkit + + , and + + React Redux + + +
+
+ ); +} + +export default App; diff --git a/admin/src/App.test.js b/admin/src/App.test.js new file mode 100644 index 0000000..cf703a4 --- /dev/null +++ b/admin/src/App.test.js @@ -0,0 +1,15 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Provider } from 'react-redux'; +import store from './app/store'; +import App from './App'; + +test('renders learn react link', () => { + const { getByText } = render( + + + + ); + + expect(getByText(/learn/i)).toBeInTheDocument(); +}); diff --git a/admin/src/App/App.js b/admin/src/App/App.js new file mode 100644 index 0000000..2f03f3b --- /dev/null +++ b/admin/src/App/App.js @@ -0,0 +1,15 @@ +import React, { Component } from "react" +import NavigationContainer from "./NavigationContainer" + +class App extends Component { + render() { + return( +
+ + {this.props.children} +
+ ) + } +} + +export default App diff --git a/admin/src/App/Navigation.js b/admin/src/App/Navigation.js new file mode 100644 index 0000000..eedb8c7 --- /dev/null +++ b/admin/src/App/Navigation.js @@ -0,0 +1,55 @@ +import React, { Component } from "react"; +import { Link } from "react-router-dom"; +import { Menu, Dropdown } from "semantic-ui-react"; + +const navStyle = { + marginBottom: "30px" +}; +const blankStyle = { + marginBottom: "50px" +}; + +class Navigation extends Component { + constructor(props) { + super(props); + this._logout = this._logout.bind(this); + } + + _logout = event => { + event.preventDefault(); + this.props.manualLogout(); + }; + + render() { + var profileLink = process.env.REACT_APP_ACCOUNT_SERVER + "/profile"; + return ( +
+ {this.props.user.authenticated ? ( + + + { process.env.REACT_APP_SITE_NAME} + + + + Systems + + + About + + + + Profile + Logout + + + + + ) : ( +
+ )} +
+ ); + } +} + +export default Navigation; diff --git a/admin/src/App/NavigationContainer.js b/admin/src/App/NavigationContainer.js new file mode 100644 index 0000000..ab31c72 --- /dev/null +++ b/admin/src/App/NavigationContainer.js @@ -0,0 +1,21 @@ +import { connect } from "react-redux" +import * as userActions from "../User/user-actions" +import Navigation from "./Navigation" + + +// Function passed in to `connect` to subscribe to Redux store updates. +// Any time it updates, mapStateToProps is called. +const mapStateToProps = (state) => { + return { + user: state.user + } + +} + +// Connects React component to the redux store +// It does not modify the component class passed to it +// Instead, it returns a new, connected component class, for you to use. +export default connect( + mapStateToProps, + userActions +)(Navigation) diff --git a/admin/src/App/Restricted.js b/admin/src/App/Restricted.js new file mode 100644 index 0000000..17403c5 --- /dev/null +++ b/admin/src/App/Restricted.js @@ -0,0 +1,56 @@ +// in src/restricted.js +import React, { Component } from 'react'; +import { withRouter } from 'react-router-dom'; +import * as types from "../User/user-constants"; +import axios from "axios"; +/** + * Higher-order component (HOC) to wrap restricted pages + */ +const restricted = (BaseComponent, store) => { + class Restricted extends Component { + componentWillMount() { + this.checkAuthentication(this.props); + } + + componentWillReceiveProps(nextProps) { + if (nextProps.location !== this.props.location) { + this.checkAuthentication(nextProps); + } + } + + checkAuthentication(params) { + const { history } = params; + const authenticated = store.getState().user.authenticated; + if (!authenticated) { + axios + .get(process.env.REACT_APP_ACCOUNT_SERVER + "/authenticated", {withCredentials: true}) + .then(response => { + if (response.data.success) { + const user = response.data.user + store.dispatch({ + type: types.LOGIN_SUCCESS_USER, + data: user + }); + } else { + window.location = process.env.REACT_APP_ACCOUNT_SERVER + "/login?nextLocation=admin"; + /*history.replace({ pathname: '/login', + state: { nextPathname: params.location.pathname } });*/ + } + }) + .catch(response => { + if (response instanceof Error) { + window.location = process.env.REACT_APP_ACCOUNT_SERVER + "/login?nextLocation=admin"; + // Something happened during logout that triggered an Error + console.log("Error", response.message); + } + }); + + } + } + render() { + return ; + } + } + return withRouter(Restricted); +} +export default restricted \ No newline at end of file diff --git a/admin/src/Components/About.js b/admin/src/Components/About.js new file mode 100644 index 0000000..e7492dd --- /dev/null +++ b/admin/src/Components/About.js @@ -0,0 +1,24 @@ +import React, { Component } from "react"; +import { Container, Header } from "semantic-ui-react"; + +class About extends Component { + + + render() { + return ( + +
Share the Air
+

{process.env.REACT_APP_SITE_NAME} makes it easy to share and archive recordings from Trunk Recorder. + Sharing access to these radio systems allows for other members of your community to follow local events. + Raising awareness of what our local fire, police and EMS have to go through everyday should + lead to greater appreciation for all the work they do that goes largely unseen.

+

Each of the radio systems comes from different contributers around the country. The different + systems may come and go as new ones are added and taken down. {process.env.REACT_APP_SITE_NAME} only maintains the archive that + is available online.

+

- Luke {process.env.REACT_APP_ADMIN_EMAIL}

+
+ ); + } +} + +export default About; diff --git a/admin/src/Group/GroupModal.js b/admin/src/Group/GroupModal.js new file mode 100644 index 0000000..f1ff62e --- /dev/null +++ b/admin/src/Group/GroupModal.js @@ -0,0 +1,258 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { + Container, + Header, + Form, + Grid, + Modal, + Rail, + Segment, + List, + Input, + Button, + Message, + Icon, + Table +} from "semantic-ui-react"; + +// ---------------------------------------------------- +const requestMessageStyle = { + color: "red" +}; + +// ---------------------------------------------------- +class GroupModal extends Component { + constructor(props) { + super(props); + this.handleSubmit = this.handleSubmit.bind(this); + this.handleClose = this.handleClose.bind(this); + + // Set initial state + this.state = { + editGroup: false, + groupName: "", + group: { + name: "", + items: [] + }, + talkgroups: this.props.talkgroups ? this.props.talkgroups : [] + }; + } + + componentDidMount() { + //this.props.groupActions.fetchGroups(this.props.shortName); + + this.props.talkgroupActions.fetchTalkgroups(this.props.shortName); + } + + componentWillReceiveProps(nextProps) { + if (nextProps.talkgroups && nextProps.groups && nextProps.editGroupId) { + var editGroup = nextProps.groups.find( + group => group._id === nextProps.editGroupId + ); + var items = []; + + var talkgroups = nextProps.talkgroups; + for (var i = 0; i < editGroup.talkgroups.length; i++) { + const talkgroupId = editGroup.talkgroups[i]; + const index = talkgroups.findIndex(tg => tg.num === talkgroupId); + if (index >= 0) { + const item = { + num: talkgroups[index].num, + description: talkgroups[index].description + }; + items.push(item); + talkgroups = talkgroups + .slice(0, index) + .concat(talkgroups.slice(index + 1)); + } + } + const group = {name: editGroup.groupName, items: items} + this.setState({group: group, talkgroups: talkgroups, groupName: editGroup.groupName}); + } else { + this.setState({ talkgroups: nextProps.talkgroups }) + + } + + if (!nextProps.editGroupId && (this.props.editGroupId != nextProps.editGroupId)) { + this.setState({ groupName: "", group: { + name: "", + items: [] + }}); + } + } + + removeTalkgroup(event, index) { + const item = { + num: this.state.group.items[index].num, + description: this.state.group.items[index].description + }; + + const talkgroups = this.state.talkgroups.slice(0); // copy + + for (var i = 0, len = talkgroups.length; i < len; i++) { + if (item.num < talkgroups[i].num) { + talkgroups.splice(i, 0, item); + break; + } + } + this.setState({ + group: { + items: this.state.group.items + .slice(0, index) + .concat(this.state.group.items.slice(index + 1)) + }, + talkgroups: talkgroups + }); + } + + handleInputChange = (e, { name, value }) => this.setState({ [name]: value }); + + addTalkgroup(event, index) { + const item = { + num: this.state.talkgroups[index].num, + description: this.state.talkgroups[index].description + }; + + this.setState({ + group: { items: this.state.group.items.concat(item) }, + talkgroups: this.state.talkgroups + .slice(0, index) + .concat(this.state.talkgroups.slice(index + 1)) + }); + } + handleClose = () => this.props.onClose(false); + handleSubmit() { + var talkgroupNums = this.state.group.items.map(a => a.num); + const data = { + shortName: this.props.shortName, + groupName: this.state.groupName, + talkgroups: JSON.stringify(talkgroupNums) + }; + if (this.props.editGroupId) { + const data = { + _id: this.props.editGroupId, + shortName: this.props.shortName, + groupName: this.state.groupName, + talkgroups: JSON.stringify(talkgroupNums) + }; + + this.props.groupActions.updateGroup(data).then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ + requestMessage + }); + this.props.onClose(false); + } else { + this.props.onClose(true); + } + }); + } else { + const data = { + shortName: this.props.shortName, + groupName: this.state.groupName, + talkgroups: JSON.stringify(talkgroupNums) + }; + + this.props.groupActions.createGroup(data).then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ + requestMessage + }); + this.props.onClose(false); + } else { + this.props.onClose(true); + } + }); + } + } + + render() { + const talkgroups = this.state.talkgroups; + const group = this.state.group.items; + const railStyle = { + top: "15px", + minHeight: "200px" + }; + return ( + + + {this.props.editGroupId ? "Edit Group" : "Create Group"} + + + + + + + + + Number + + Description + + + + + {talkgroups && + talkgroups.map((talkgroup, i) => ( + + {talkgroup.num} + + {talkgroup.description} + + this.addTalkgroup(e, i)} + /> + + + ))} + +
+ + + + + {group.map((talkgroup, i) => ( + + this.removeTalkgroup(e, i)} + /> + {talkgroup.description} + + ))} + + + + +
+
+
+
+ + + +
+ ); + } +} + +export default GroupModal; diff --git a/admin/src/Group/GroupModalContainer.js b/admin/src/Group/GroupModalContainer.js new file mode 100644 index 0000000..794a8dc --- /dev/null +++ b/admin/src/Group/GroupModalContainer.js @@ -0,0 +1,26 @@ +import { connect } from "react-redux" +import * as groupActionCreators from "./group-actions" +import * as talkgroupActionCreators from "../Talkgroups/talkgroup-actions" +import { bindActionCreators } from 'redux' +import GroupModal from "./GroupModal" + +//groups: state.group.items[props.match.params.shortName], +function mapStateToProps(state,props) { + return { + talkgroups: state.talkgroup.items[props.shortName], + groups: state.group.items[props.shortName], + shortName: props.shortName + } +} + +function mapDispatchToProps(dispatch) { + return { + groupActions: bindActionCreators(groupActionCreators,dispatch), + talkgroupActions: bindActionCreators(talkgroupActionCreators, dispatch) + } +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(GroupModal) diff --git a/admin/src/Group/ListGroups.js b/admin/src/Group/ListGroups.js new file mode 100644 index 0000000..ef9420a --- /dev/null +++ b/admin/src/Group/ListGroups.js @@ -0,0 +1,82 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { Link } from 'react-router-dom' +import { + Container, + Header, + Form, + Grid, + Segment, + Input, + Button, + Message, + Icon, + Table +} from "semantic-ui-react"; + +// ---------------------------------------------------- + + + +// ---------------------------------------------------- +class ListGroups extends Component { + constructor(props) { + super(props); + + } + + +//https://stackoverflow.com/questions/36559661/how-can-i-dispatch-from-child-components-in-react-redux +//https://stackoverflow.com/questions/42597602/react-onclick-pass-event-with-parameter + render() { + const groups = this.props.groups; + if (groups) { + return ( + + + + + Name + Talkgroup Count + + + + + {groups.map((group, i) => ( + + {group.groupName} + {group.talkgroups.length} + + this.props.editGroup(group._id)} + /> this.props.reorderGroup(i, i-1)} + /> this.props.reorderGroup(i, i+1)} + /> this.props.deleteGroup(group._id)} + /> + + + ))} + +
+ + ); + } else { + return ( +
+ ); + } +} +} + +export default ListGroups; diff --git a/admin/src/Group/group-actions.js b/admin/src/Group/group-actions.js new file mode 100644 index 0000000..03a222f --- /dev/null +++ b/admin/src/Group/group-actions.js @@ -0,0 +1,244 @@ +import axios from "axios"; +//import { browserHistory } from "react-router" +import * as types from "./group-constants"; +import { push } from 'connected-react-router'; + +// "Log In" action creators +function beginCreateGroup() { + return { type: types.CREATE_GROUP }; +} + +function createGroupSuccess(data) { + return { + type: types.CREATE_SUCCESS_GROUP, + data + }; +} + +function createGroupError(data) { + return { + type: types.CREATE_ERROR_GROUP, + data + }; +} + + +function beginUpdateGroup() { + return { type: types.UPDATE_GROUP }; +} + +function updateGroupSuccess(data) { + return { type: types.UPDATE_SUCCESS_GROUP, data }; +} + +function updateGroupError() { + return { type: types.UPDATE_ERROR_GROUP }; +} + + +function beginDeleteGroup() { + return { type: types.DELETE_GROUP }; +} + +function deleteGroupSuccess(data) { + return { type: types.DELETE_SUCCESS_GROUP, data }; +} + +function deleteGroupError() { + return { type: types.DELETE_ERROR_GROUP }; +} + +function beginFetchGroup() { + return { type: types.FETCH_GROUP }; +} + +function fetchGroupSuccess(data) { + return { + type: types.FETCH_SUCCESS_GROUP, + data + }; +} + +function fetchGroupError(data) { + return { + type: types.FETCH_ERROR_GROUP, + data + }; +} + +function saveGroupOrderSuccess() { + return { type: types.SAVE_ORDER_SUCCESS_GROUP }; +} + +function saveGroupOrderError() { + return { type: types.SAVE_ORDER_ERROR_GROUP }; +} + +function makeUserRequest(method, data, api = "/login") { + // returns a Promise + return axios({ + method: method, + url: api, + data: data + }); +} + +export function changeUrl(url) { + return dispatch => { + dispatch(push(url)); + }; +} + +// Example of an Async Action Creator +// http://redux.js.org/docs/advanced/AsyncActions.html + +export function updateGroup(data) { + return dispatch => { + dispatch(beginUpdateGroup()); + + return makeUserRequest("post", data, "/groups/" + data.shortName + "/" + data._id) + .then(response => { + if (response.data.success) { + dispatch(updateGroupSuccess(response.data.group)); + } else { + dispatch(updateGroupError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + }; +} + +function shouldFetchGroups(state,shortName) { + if (!state.group.items || !state.group.items[shortName]) { + return true; + } else if (state.group.isWaiting) { + return false; + } else { + return false; + } +} + +export function reorderGroup(shortName, oldIndex, newIndex) { + return (dispatch, getState) => { + const data = { + shortName: shortName, + oldIndex: oldIndex, + newIndex: newIndex + }; + dispatch({ + type: types.REORDER_GROUP, + data + }); + }; +} + +export function fetchGroups(shortName) { + return (dispatch, getState) => { + if (shouldFetchGroups(getState(), shortName)) { + dispatch(beginFetchGroup()); + return axios + .get("/groups/" + shortName) + .then(response => { + if (response.data.success) { + const data = { shortName: shortName, groups: response.data.groups }; + dispatch(fetchGroupSuccess(data)); + } else { + dispatch(fetchGroupError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + } + }; +} + +export function saveGroupOrder(shortName, data) { + return dispatch => { + dispatch({ + type: types.SAVE_ORDER_GROUP, + data + }); + + return makeUserRequest( + "post", + data, + "/groups/" + shortName + "/reorder" + ) + .then(response => { + if (response.data.success) { + dispatch(saveGroupOrderSuccess()); + } else { + dispatch(saveGroupOrderError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + }; +} + +export function deleteGroup(shortName, groupId) { + return dispatch => { + dispatch(beginDeleteGroup()); + + return makeUserRequest("delete", null, "/groups/" + shortName + "/" + groupId) + .then(response => { + if (response.data.success) { + const data = {shortName: shortName, groupId: groupId} + dispatch(deleteGroupSuccess(data)); + } else { + dispatch(deleteGroupError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + }; +} + + +export function createGroup(data) { + return dispatch => { + dispatch(beginCreateGroup()); + + return makeUserRequest("post", data, "/groups/" + data.shortName) + .then(response => { + if (response.data.success) { + dispatch(createGroupSuccess(response.data.group)); + } else { + dispatch(createGroupError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + }; +} diff --git a/admin/src/Group/group-constants.js b/admin/src/Group/group-constants.js new file mode 100644 index 0000000..2552e3d --- /dev/null +++ b/admin/src/Group/group-constants.js @@ -0,0 +1,16 @@ +export const CREATE_GROUP = "CREATE_GROUP" +export const CREATE_SUCCESS_GROUP = "CREATE_SUCCESS_GROUP" +export const CREATE_ERROR_GROUP = "CREATE_ERROR_GROUP" +export const UPDATE_GROUP = "UPDATE_GROUP" +export const UPDATE_SUCCESS_GROUP = "UPDATE_SUCCESS_GROUP" +export const UPDATE_ERROR_GROUP = "UPDATE_ERROR_GROUP" +export const DELETE_GROUP = "DELETE_GROUP" +export const DELETE_SUCCESS_GROUP = "DELETE_SUCCESS_GROUP" +export const DELETE_ERROR_GROUP = "DELETE_ERROR_GROUP" +export const FETCH_GROUP = "FETCH_GROUP" +export const FETCH_SUCCESS_GROUP = "FETCH_SUCCESS_GROUP" +export const FETCH_ERROR_GROUP = "FETCH_ERROR_GROUP" +export const REORDER_GROUP = "REORDER_GROUP" +export const SAVE_ORDER_GROUP = "SAVE_ORDER_GROUP" +export const SAVE_ORDER_SUCCESS_GROUP = "SAVE_ORDER_SUCCESS_GROUP" +export const SAVE_ORDER_ERROR_GROUP = "SAVE_ORDER_ERROR_GROUP" diff --git a/admin/src/Group/group-reducer.js b/admin/src/Group/group-reducer.js new file mode 100644 index 0000000..5d11eff --- /dev/null +++ b/admin/src/Group/group-reducer.js @@ -0,0 +1,123 @@ +import { + CREATE_GROUP, + CREATE_SUCCESS_GROUP, + CREATE_ERROR_GROUP, + DELETE_GROUP, + DELETE_SUCCESS_GROUP, + DELETE_ERROR_GROUP, + UPDATE_GROUP, + UPDATE_SUCCESS_GROUP, + UPDATE_ERROR_GROUP, + FETCH_GROUP, + FETCH_SUCCESS_GROUP, + FETCH_ERROR_GROUP, + REORDER_GROUP, + SAVE_ORDER_GROUP, + SAVE_ORDER_ERROR_GROUP, + SAVE_ORDER_SUCCESS_GROUP +} from "./group-constants"; + + +function updateItemInArray(array, updatedItem) { + const updatedItems = array.map(item => { + if(item._id !== updatedItem._id) { + // Since we only want to update one item, preserve all others as they are now + return item; + } + return updatedItem; + }); + + return updatedItems; +} + +const group = ( + state = { + orderChange: false, + isWaiting: false, + items: {}}, + action +) => { + switch (action.type) { + + case SAVE_ORDER_GROUP: + case CREATE_GROUP: + case FETCH_GROUP: + case DELETE_GROUP: + case UPDATE_GROUP: + return Object.assign({}, state, { isWaiting: true}); + + case UPDATE_SUCCESS_GROUP: + const updatedGroups = updateItemInArray(state.items[action.data.shortName], action.data); + return Object.assign({}, state, { + isWaiting: false, + items: { + ...state.items, + [action.data.shortName]: updatedGroups + } + }); + + + case CREATE_SUCCESS_GROUP: + const newGroups = state.items[action.data.shortName].concat(action.data); + return Object.assign({}, state, { + isWaiting: false, + items: { + ...state.items, + [action.data.shortName]: newGroups + } + }); + + case DELETE_SUCCESS_GROUP: + const delGroups = state.items[action.data.shortName].filter(x => x._id !== action.data.groupId); + return Object.assign({}, state, { + isWaiting: false, + items: { + ...state.items, + [action.data.shortName]: delGroups + } + }); + + case FETCH_SUCCESS_GROUP: + return Object.assign({}, state, { + isWaiting: false, + items: { + ...state.items, + [action.data.shortName]: action.data.groups + } + }); + + case SAVE_ORDER_SUCCESS_GROUP: + return Object.assign({}, state, { + orderChange: false, + isWaiting: false + }); + + case SAVE_ORDER_ERROR_GROUP: + case FETCH_ERROR_GROUP: + case CREATE_ERROR_GROUP: + case DELETE_ERROR_GROUP: + case UPDATE_ERROR_GROUP: + return Object.assign({}, state, { + isWaiting: false + }); + + case REORDER_GROUP: + if ((action.data.newIndex<0)||(action.data.newIndex>(state.items[action.data.shortName].length-1))) { + return state + } + const moveGroups = state.items[action.data.shortName].slice(); + moveGroups.splice(action.data.newIndex, 0, moveGroups.splice(action.data.oldIndex, 1)[0]); + return Object.assign({}, state, { + orderChange: true, + items: { + ...state.items, + [action.data.shortName]: moveGroups + } + }); + + default: + return state; + } +}; + +export default group; diff --git a/admin/src/Permission/AddPermissionModal.js b/admin/src/Permission/AddPermissionModal.js new file mode 100644 index 0000000..3b458a2 --- /dev/null +++ b/admin/src/Permission/AddPermissionModal.js @@ -0,0 +1,150 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { + Container, + Checkbox, + Header, + Form, + Grid, + Modal, + Rail, + Segment, + List, + Input, + Button, + Message, + Icon, + Table +} from "semantic-ui-react"; + +// ---------------------------------------------------- +const requestMessageStyle = { + color: "red" +}; + +// ---------------------------------------------------- +class AddPermissionModal extends Component { + constructor(props) { + super(props); + this.handleSubmit = this.handleSubmit.bind(this); + this.handleClose = this.handleClose.bind(this); + this.handleChange = this.handleChange.bind(this); + // Set initial state + this.state = { + role: 5, + email: "", + error: "" + }; + } + + componentDidMount() { + + } + + componentWillReceiveProps(nextProps) { + + } + + handleInputChange = (e, { name, value }) => this.setState({ [name]: value }); + handleChange = (e, { newRole }) => this.setState({ newRole }) + + + + + handleClose = () => { + this.setState({ + error: "" + }); + this.props.onClose(false); + } + handleSubmit() { + //if (this.props.updatePermissionId) { + const data = {email: this.state.email, shortName: this.props.shortName, role: this.state.role } + + this.props.permissionActions.addPermission(data).then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ + error: requestMessage + }); + //this.props.onClose(false); + } else { + this.setState({ + error: "" + }); + this.props.onClose(true); + } + }); + + + //} + } + + render() { + + const railStyle = { + top: "15px", + minHeight: "200px" + }; + var errorMessage = ""; + + if (this.state.error) { + errorMessage = ( + + That didn't work... +

{this.state.error}

+
+ ) + } + + return ( + + Select Role + + +
+ + Add User Access to System: {this.props.shortName} + + + + + + = 0) && (this.state.role < 10)} + onChange={this.handleInputChange} + /> + + + = 10) && (this.state.role < 20)} + onChange={this.handleInputChange} + /> + +
+ {errorMessage} +
+
+ + + + +
+ + ); + } +} + +export default AddPermissionModal; diff --git a/admin/src/Permission/AddPermissionModalContainer.js b/admin/src/Permission/AddPermissionModalContainer.js new file mode 100644 index 0000000..0d0c4d7 --- /dev/null +++ b/admin/src/Permission/AddPermissionModalContainer.js @@ -0,0 +1,23 @@ +import { connect } from "react-redux" +import * as permissionActionCreators from "./permission-actions" +import { bindActionCreators } from 'redux' +import AddPermissionModal from "./AddPermissionModal" + +//groups: state.group.items[props.match.params.shortName], +function mapStateToProps(state,props) { + return { + permissions: state.permission.items, + shortName: props.shortName + } +} + +function mapDispatchToProps(dispatch) { + return { + permissionActions: bindActionCreators(permissionActionCreators,dispatch) + } +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(AddPermissionModal) diff --git a/admin/src/Permission/ListPermissions.js b/admin/src/Permission/ListPermissions.js new file mode 100644 index 0000000..f5a4811 --- /dev/null +++ b/admin/src/Permission/ListPermissions.js @@ -0,0 +1,76 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { Link } from 'react-router-dom' +import { + Container, + Header, + Form, + Grid, + Segment, + Input, + Button, + Message, + Icon, + Table +} from "semantic-ui-react"; + +// ---------------------------------------------------- + + + +// ---------------------------------------------------- +class ListPermissions extends Component { + constructor(props) { + super(props); + + } + + +//https://stackoverflow.com/questions/36559661/how-can-i-dispatch-from-child-components-in-react-redux +//https://stackoverflow.com/questions/42597602/react-onclick-pass-event-with-parameter + render() { + const permissions = this.props.permissions; + if (permissions) { + return ( + + + + + Name + Email + Role + + + + + {permissions.map((permission, i) => ( + + {permission.firstName} {permission.lastName} + {permission.email} + {permission.role} + this.props.updatePermission(permission._id)} + /> + this.props.deletePermission(permission)} + /> + + + ))} + +
+ + ); + } else { + return ( +
+ ); + } +} +} + +export default ListPermissions; diff --git a/admin/src/Permission/UpdatePermissionModal.js b/admin/src/Permission/UpdatePermissionModal.js new file mode 100644 index 0000000..63a53cc --- /dev/null +++ b/admin/src/Permission/UpdatePermissionModal.js @@ -0,0 +1,134 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { + Container, + Checkbox, + Header, + Form, + Grid, + Modal, + Rail, + Segment, + List, + Input, + Button, + Message, + Icon, + Table +} from "semantic-ui-react"; + +// ---------------------------------------------------- +const requestMessageStyle = { + color: "red" +}; + +// ---------------------------------------------------- +class UpdatePermissionModal extends Component { + constructor(props) { + super(props); + this.handleSubmit = this.handleSubmit.bind(this); + this.handleClose = this.handleClose.bind(this); + this.handleChange = this.handleChange.bind(this); + // Set initial state + this.state = { + newRole: false, + permission: false + }; + } + + componentDidMount() { + + } + + componentWillReceiveProps(nextProps) { + + if (nextProps.permissions && nextProps.updatePermissionId) { + var updatePermission = nextProps.permissions.find(permission=> permission._id === nextProps.updatePermissionId); + + if (updatePermission) { + this.setState({permission: updatePermission, newRole: updatePermission.role}); + } + } + } + + handleChange = (e, { name, value }) => this.setState({ newRole: value }) + + + + + handleClose = () => this.props.onClose(false); + handleSubmit() { + if (this.props.updatePermissionId) { + const data = {permissionId: this.props.updatePermissionId, shortName: this.props.shortName, role: this.state.newRole } + + this.props.permissionActions.update(data).then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ + requestMessage + }); + this.props.onClose(false); + } else { + this.props.onClose(true); + } + }); + + + } + } + + render() { + + const railStyle = { + top: "15px", + minHeight: "200px" + }; + var user = "" + if (this.state.permission) { + user = this.state.permission.email + } + return ( + + Select Role + + +
+ + Set role for {user}: + + + = 0) && (this.state.newRole < 10)} + onChange={this.handleChange} + /> + + + = 10) && (this.state.newRole < 20)} + onChange={this.handleChange} + /> + +
+ +
+
+ + + +
+ + ); + } +} + +export default UpdatePermissionModal; diff --git a/admin/src/Permission/UpdatePermissionModalContainer.js b/admin/src/Permission/UpdatePermissionModalContainer.js new file mode 100644 index 0000000..512034e --- /dev/null +++ b/admin/src/Permission/UpdatePermissionModalContainer.js @@ -0,0 +1,23 @@ +import { connect } from "react-redux" +import * as permissionActionCreators from "./permission-actions" +import { bindActionCreators } from 'redux' +import UpdatePermissionModal from "./UpdatePermissionModal" + +//groups: state.group.items[props.match.params.shortName], +function mapStateToProps(state,props) { + return { + permissions: state.permission.items, + shortName: props.shortName + } +} + +function mapDispatchToProps(dispatch) { + return { + permissionActions: bindActionCreators(permissionActionCreators,dispatch) + } +} + +export default connect( + mapStateToProps, + mapDispatchToProps +)(UpdatePermissionModal) diff --git a/admin/src/Permission/permission-actions.js b/admin/src/Permission/permission-actions.js new file mode 100644 index 0000000..8e7a12e --- /dev/null +++ b/admin/src/Permission/permission-actions.js @@ -0,0 +1,166 @@ +import axios from "axios"; +//import { browserHistory } from "react-router" +import * as types from "./permission-constants"; + +function beginAddPermission() { + return { type: types.ADD_PERMISSION }; +} + +function addPermissionSuccess(data) { + return { type: types.ADD_PERMISSION_SUCCESS, data }; +} + +function addPermissionError() { + return { type: types.ADD_PERMISSION_ERROR }; +} + +function beginDeletePermission() { + return { type: types.DELETE_PERMISSION }; +} + +function deletePermissionSuccess(data) { + return { type: types.DELETE_PERMISSION_SUCCESS, data }; +} + +function deletePermissionError() { + return { type: types.DELETE_PERMISSION_ERROR }; +} + + +function beginUpdateRole() { + return { type: types.UPDATE_ROLE }; +} + +function updateRoleSuccess(data) { + return { type: types.UPDATE_ROLE_SUCCESS, data }; +} + +function updateRoleError() { + return { type: types.UPDATE_ROLE_ERROR }; +} + +// "Log In" action creators +function beginFetchPermission() { + return { type: types.FETCH_PERMISSION }; +} + +function fetchPermissionError(data) { + return { type: types.FETCH_ERROR_PERMISSION, + data }; +} + +function fetchPermissionSuccess(data) { + return { type: types.FETCH_SUCCESS_PERMISSION, + data }; +} + +function shouldFetch(state) { + if ((!state.permission.items) || (state.permission.items.length <1)) { + return true + } else if (state.permission.isWaiting) { + return false + } else { + return false + } +} + +export function fetch(shortName) { + return (dispatch, getState) => { + if (shouldFetch(getState())) { + dispatch(beginFetchPermission()); + + return axios + .get("/permissions/"+shortName) + .then(response => { + if (response.data.success) { + dispatch(fetchPermissionSuccess(response.data.permissions)); + } else { + dispatch(fetchPermissionError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + }; +}; +} + +export function update(data) { + return (dispatch, getState) => { + + dispatch(beginUpdateRole()); + var url = "/permissions/" + data.shortName + "/" + data.permissionId; + return axios.post( url, data) + .then(response => { + if (response.data.success) { + dispatch(updateRoleSuccess(response.data.permission)); + } else { + dispatch(updateRoleError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + +}; +} + +export function addPermission(data) { + return (dispatch, getState) => { + dispatch(beginAddPermission()); + var url = "/permissions/" + data.shortName; + return axios.post( url, data) + .then(response => { + if (response.data.success) { + dispatch(addPermissionSuccess(response.data.permission)); + } else { + dispatch(addPermissionError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + +}; +} + + +export function deletePermission(data) { + return (dispatch, getState) => { + + dispatch(beginDeletePermission()); + var url = "/permissions/" + data.shortName + "/" + data.permissionId; + return axios.delete( url) + .then(response => { + if (response.data.success) { + dispatch(deletePermissionSuccess(data.permissionId)); + } else { + dispatch(deletePermissionError()); + let registerMessage = response.data.message; + return registerMessage; + } + }) + .catch(response => { + if (response instanceof Error) { + // Something happened in setting up the request that triggered an Error + console.log("Error", response.message); + } + }); + +}; +} diff --git a/admin/src/Permission/permission-constants.js b/admin/src/Permission/permission-constants.js new file mode 100644 index 0000000..1a9acce --- /dev/null +++ b/admin/src/Permission/permission-constants.js @@ -0,0 +1,12 @@ +export const ADD_PERMISSION = "ADD_PERMISSION" +export const ADD_PERMISSION_ERROR = "ADD_PERMISSION_ERROR" +export const ADD_PERMISSION_SUCCESS = "ADD_PERMISSION_SUCCESS" +export const FETCH_PERMISSION = "FETCH_PERMISSION" +export const FETCH_ERROR_PERMISSION = "FETCH_ERROR_PERMISSION" +export const FETCH_SUCCESS_PERMISSION = "FETCH_SUCCESS_PERMISSION" +export const UPDATE_ROLE = "UPDATE_ROLE" +export const UPDATE_ROLE_ERROR = "UPDATE_ROLE_ERROR" +export const UPDATE_ROLE_SUCCESS = "UPDATE_ROLE SUCCESS" +export const DELETE_PERMISSION = "DELETE_PERMISSION" +export const DELETE_PERMISSION_ERROR = "DELETE_PERMISSION_ERROR" +export const DELETE_PERMISSION_SUCCESS = "DELETE_PERMISSION_SUCCESS" diff --git a/admin/src/Permission/permission-reducer.js b/admin/src/Permission/permission-reducer.js new file mode 100644 index 0000000..7ced34a --- /dev/null +++ b/admin/src/Permission/permission-reducer.js @@ -0,0 +1,87 @@ +import { + ADD_PERMISSION, + ADD_PERMISSION_SUCCESS, + ADD_PERMISSION_ERROR, + DELETE_PERMISSION, + DELETE_PERMISSION_SUCCESS, + DELETE_PERMISSION_ERROR, + FETCH_PERMISSION, + FETCH_SUCCESS_PERMISSION, + FETCH_ERROR_PERMISSION, + UPDATE_ROLE, + UPDATE_ROLE_ERROR, + UPDATE_ROLE_SUCCESS +} from "./permission-constants"; + +function updateRoleInArray(array, updatedItem) { + const updatedItems = array.map(item => { + if(item._id !== updatedItem._id) { + // Since we only want to update one item, preserve all others as they are now + return item; + } + item.role = updatedItem.role; + return item; + }); + + return updatedItems; +} + +function deleteItemInArray(array, _id) { + const updatedItems = array.filter(function (item) { + return item._id !== _id; + }); + + return updatedItems; +} + +const permission = ( + state = { + isWaiting: false, + items: [] + }, + action +) => { + switch (action.type) { + + + case ADD_PERMISSION_SUCCESS: + return Object.assign({}, state, { + isWaiting: false, + items: [...state.items, action.data] + }); + case DELETE_PERMISSION_SUCCESS: + return Object.assign({}, state, { + isWaiting: false, + items: deleteItemInArray(state.items, action.data) + }); + case UPDATE_ROLE_SUCCESS: + return Object.assign({}, state, { + isWaiting: false, + items: updateRoleInArray(state.items, action.data) + }); + case FETCH_SUCCESS_PERMISSION: + return Object.assign({}, state, { + isWaiting: false, + items: action.data + }); + + case DELETE_PERMISSION_ERROR: + case ADD_PERMISSION_ERROR: + case UPDATE_ROLE_ERROR: + case FETCH_ERROR_PERMISSION: + return Object.assign({}, state, { + isWaiting: false + }); + + case DELETE_PERMISSION: + case ADD_PERMISSION: + case UPDATE_ROLE: + case FETCH_PERMISSION: + return Object.assign({}, state, { isWaiting: true}); + + default: + return state; + } +}; + +export default permission; diff --git a/admin/src/System/CallChart.js b/admin/src/System/CallChart.js new file mode 100644 index 0000000..9a39585 --- /dev/null +++ b/admin/src/System/CallChart.js @@ -0,0 +1,100 @@ +import React, { Component } from "react"; +import { Group } from '@vx/group'; +import { curveStep} from '@vx/curve'; +import { LinePath } from '@vx/shape'; +import { scaleLinear, scaleBand, scaleTime } from '@vx/scale'; +import { timeParse, timeFormat } from 'd3-time-format'; +import { AxisBottom, AxisLeft } from '@vx/axis'; +import { Dimmer, Loader } from "semantic-ui-react"; + + +class CallChart extends Component { +constructor(props) { + super(props); +} + + render() { + var callData = this.props.data; + if (!callData) { + return ( + + Loading + + ) + } + var callTotals = []; + var errorTotals = []; + + // Define the graph dimensions and margins + const width = this.props.width; + const height = 500; + const margin = { top: 20, bottom: 40, left: 40, right: 20 }; + + // Then we'll create some bounds + const xMax = width - margin.left - margin.right; + const yMax = height - margin.top - margin.bottom; + + // accessors + const x = d => d.x; + const y = d => d.y; + + + + // Compose together the scale and accessor functions to get point functions + const dotColor = n => { + var colores_g = ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", "#651067", "#329262", "#5574a6", "#3b3eac"]; + return colores_g[n % colores_g.length]; + } + + const compose = (scale, accessor) => (data) => scale(accessor(data)); + var xScale, yScale, xPoint, yPoint; + if (callData) { + // We'll use some mock data from `@vx/mock-data` for this. + callTotals = callData.callTotals; + errorTotals = callData.errorTotals; + // scales + xScale = scaleTime({ + range: [0, xMax], + domain: [callData.minDate, callData.maxDate], + tickFormat: () => (val) => formatDate(val) + }); + yScale = scaleLinear({ + range: [yMax, 0], + domain: [0, callData.maxValue], + }); + xPoint = compose(xScale, x); + yPoint = compose(yScale, y); + } + + return ( + + + 520 ? 10 : 5} /> + + + + + +); +} + + +} +export default CallChart; diff --git a/admin/src/System/CreateSystem.js b/admin/src/System/CreateSystem.js new file mode 100644 index 0000000..ff773bb --- /dev/null +++ b/admin/src/System/CreateSystem.js @@ -0,0 +1,82 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { + Container, + Header, + Form, + Grid, + Segment, + Input, + Button, + Divider, + Message, + Icon +} from "semantic-ui-react"; + +import SystemForm from "./SystemForm"; + +// ---------------------------------------------------- +const requestMessageStyle = { + color: "red" +}; + +// ---------------------------------------------------- +class CreateSystem extends Component { + constructor(props) { + super(props); + this.handleSubmit = this.handleSubmit.bind(this); + + } + + state = { + requestMessage: "" + } + + + + handleSubmit(system) { + this.props + .createSystem(system) + .then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ + requestMessage + }); + } else { + this.props.changeUrl("/list-systems") + } + }); + } + + render() { + return ( +
+ +
Join Us!
+

+ Record the your community's radio systems and share them! All it + takes is a spare computer and a cheap SDR. The software you need, + along with an explanation of how to set it up, is available{" "} + here. +

+

+ After you have the Trunk Recorder software up and running, come + back here and sign-up for an account so you can share your + recordings +

+

- Luke

+ +

+
+ + +
Create System
+ +
+
+ ); + } +} + +export default CreateSystem; diff --git a/admin/src/System/CreateSystemContainer.js b/admin/src/System/CreateSystemContainer.js new file mode 100644 index 0000000..dae3f90 --- /dev/null +++ b/admin/src/System/CreateSystemContainer.js @@ -0,0 +1,14 @@ +import { connect } from "react-redux" +import * as systemActions from "./system-actions" +import CreateSystem from "./CreateSystem" + +function mapStateToProps(state) { + return { + user: state.user + } +} + +export default connect( + mapStateToProps, + systemActions +)(CreateSystem) diff --git a/admin/src/System/ErrorChart.js b/admin/src/System/ErrorChart.js new file mode 100644 index 0000000..1981e9a --- /dev/null +++ b/admin/src/System/ErrorChart.js @@ -0,0 +1,133 @@ +import React, { Component } from "react"; +import { Group } from '@vx/group'; +import { GlyphCircle } from '@vx/glyph'; +import { scaleLinear, scaleBand, scaleTime, scaleOrdinal } from '@vx/scale'; +import { timeParse, timeFormat } from 'd3-time-format'; +import { AxisBottom, AxisLeft } from '@vx/axis'; +import { Dimmer, Loader } from "semantic-ui-react"; +import { + LegendOrdinal + +} from '@vx/legend'; +class ErrorChart extends Component { +constructor(props) { + super(props); +} + + render() { + var errorData = this.props.data; + if (!errorData) { + return ( + Loading + ) + } + var data = []; + const parseDate = timeParse("%Y%m%d"); + const format = timeFormat("%b %d"); + const formatDate = (date) => format(parseDate(date)); + + // Define the graph dimensions and margins + const width = this.props.width; + const height = 500; + const margin = { top: 20, bottom: 40, left: 40, right: 20 }; + + // Then we'll create some bounds + const xMax = width - margin.left - margin.right; + const yMax = height - margin.top - margin.bottom; + + // accessors + const x = d => d.x; + const y = d => d.y; + + + + // Compose together the scale and accessor functions to get point functions + const dotColor = n => { + var colores_g = ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", "#651067", "#329262", "#5574a6", "#3b3eac"]; + return colores_g[n % colores_g.length]; + } + + const compose = (scale, accessor) => (data) => scale(accessor(data)); + var zScale = scaleOrdinal({ + domain: errorData.legend, + range: ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", "#651067", "#329262", "#5574a6", "#3b3eac"] + }); + var xScale, yScale, xPoint, yPoint; + if (errorData) { + // We'll use some mock data from `@vx/mock-data` for this. + data = errorData.data; + // scales + xScale = scaleTime({ + range: [0, xMax], + domain: [errorData.minDate, errorData.maxDate], + tickFormat: () => (val) => formatDate(val) + }); + yScale = scaleLinear({ + range: [yMax, 0], + domain: [0, errorData.maxValue], + }); + zScale = scaleOrdinal({ + domain: errorData.legend, + range: ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", "#651067", "#329262", "#5574a6", "#3b3eac"] + }); + xPoint = compose(xScale, x); + yPoint = compose(yScale, y); + + } + + return ( +
+ + + 520 ? 10 : 5} /> + +{data.map((band, i) => { +return ( + + {band.data.map((point, j) => { + return ( + + ); +})} + +); +})} + + +
+ event => { + console.log( + `mouse over: ${data.text}`, + `index: ${data.index}`, + ); + }} + /> +
+
+ + + +); +} + + +} +export default ErrorChart; diff --git a/admin/src/System/ListSystems.js b/admin/src/System/ListSystems.js new file mode 100644 index 0000000..4cb0472 --- /dev/null +++ b/admin/src/System/ListSystems.js @@ -0,0 +1,44 @@ +import React, { Component } from "react"; +import SystemCard from "./SystemCard"; +import { + Container, + Divider, + Header, + Card, + Icon, + Button, +} from "semantic-ui-react"; + + +// ---------------------------------------------------- +class ListSystems extends Component { + + state = { + + } + componentDidMount() { + this.props.fetchSystems(); + } + +//https://stackoverflow.com/questions/36559661/how-can-i-dispatch-from-child-components-in-react-redux +//https://stackoverflow.com/questions/42597602/react-onclick-pass-event-with-parameter + render() { + const systems = this.props.system.items; + return ( +
+ +
Radio Systems
+ + + + {systems.map((system) => + this.props.changeUrl("/system/" + system.shortName)}/> + )} + +
+
+ ); + } +} + +export default ListSystems; diff --git a/admin/src/System/ListSystemsContainer.js b/admin/src/System/ListSystemsContainer.js new file mode 100644 index 0000000..9052b1f --- /dev/null +++ b/admin/src/System/ListSystemsContainer.js @@ -0,0 +1,16 @@ +import { connect } from "react-redux" +import * as systemActions from "./system-actions" +import ListSystems from "./ListSystems" + +function mapStateToProps(state) { + return { + system: state.system + } +} + + + +export default connect( + mapStateToProps, + systemActions +)(ListSystems) diff --git a/admin/src/System/PreCreateSystem.js b/admin/src/System/PreCreateSystem.js new file mode 100644 index 0000000..5051633 --- /dev/null +++ b/admin/src/System/PreCreateSystem.js @@ -0,0 +1,72 @@ +import React, { Component } from "react"; +import ReactDOM from "react-dom"; +import { + Container, + Header, + Form, + Grid, + Segment, + Input, + Button, + Message, + Step, + Icon +} from "semantic-ui-react"; + +import SystemForm from "./SystemForm"; + +// ---------------------------------------------------- +const requestMessageStyle = { + color: "red" +}; + +// ---------------------------------------------------- +class PreCreateSystem extends Component { + constructor(props) { + super(props); + + } + + state = { + requestMessage: "" + } + + + + render() { + return ( +
+ + + + + Trunk Recorder + Choose your shipping options + + + + + + + Billing + Enter billing information + + + + + + + Confirm Order + + + + + + + +
+ ); + } +} + +export default PreCreateSystem; diff --git a/admin/src/System/ResponsiveCallChart.js b/admin/src/System/ResponsiveCallChart.js new file mode 100644 index 0000000..2192907 --- /dev/null +++ b/admin/src/System/ResponsiveCallChart.js @@ -0,0 +1,27 @@ +import React, { Component } from "react" +import CallChart from "./CallChart" +import { ParentSize } from "@vx/responsive"; + +class ResponsiveCallChart extends Component { + constructor(props) { + super(props); + } + + render() { + return( + + {({ width: w, height: h }) => { + return ( + + ); + }} + + ) + } +} + +export default ResponsiveCallChart diff --git a/admin/src/System/ResponsiveErrorChart.js b/admin/src/System/ResponsiveErrorChart.js new file mode 100644 index 0000000..2cfebe5 --- /dev/null +++ b/admin/src/System/ResponsiveErrorChart.js @@ -0,0 +1,27 @@ +import React, { Component } from "react" +import ErrorChart from "./ErrorChart" +import { ParentSize } from "@vx/responsive"; + +class ResponsiveErrorChart extends Component { + constructor(props) { + super(props); + } + + render() { + return( + + {({ width: w, height: h }) => { + return ( + + ); + }} + + ) + } +} + +export default ResponsiveErrorChart diff --git a/admin/src/System/System.js b/admin/src/System/System.js new file mode 100644 index 0000000..0779289 --- /dev/null +++ b/admin/src/System/System.js @@ -0,0 +1,679 @@ +import React, {Component} from "react"; +import {Link} from "react-router-dom"; +import ListTalkgroups from "../Talkgroups/ListTalkgroups.js"; +import MessageBox from "../components/pure/Message.js"; +import ListGroups from "../Group/ListGroups.js"; +import GroupModal from "../Group/GroupModalContainer.js"; +import UpdatePermissionModal from "../Permission/UpdatePermissionModalContainer.js"; +import AddPermissionModal from "../Permission/AddPermissionModalContainer.js"; +import ErrorChart from "./ResponsiveErrorChart" +import CallChart from "./ResponsiveCallChart" +import { + Button, + Confirm, + Icon, + Form, + TextArea, + Header, + Container, + Message, + List, + Segment, + Tab, + Divider, + Label +} from "semantic-ui-react"; + +function planName(planType) { + switch (planType) { + case freePlanValue: + return "Free"; + case proPlanValue: + return "Pro"; + } +} + +class System extends Component { + constructor(props) { + super(props); + + this.handleUpload = this.handleUpload.bind(this); + this.reorderGroup = this.reorderGroup.bind(this); + this.deleteGroup = this.deleteGroup.bind(this); + this.editGroup = this.editGroup.bind(this); + this.saveGroupOrder = this.saveGroupOrder.bind(this); + this.showSystemDeleteConfirm = this.showSystemDeleteConfirm.bind(this); + this.showPermissionDeleteConfirm = this.showPermissionDeleteConfirm.bind( + this + ); + this.updatePermission = this.updatePermission.bind(this); + this.handlePermissionDeleteConfirm = this.handlePermissionDeleteConfirm.bind( + this + ); + this.handlePermissionDeleteCancel = this.handlePermissionDeleteCancel.bind( + this + ); + this.handleSystemDeleteConfirm = this.handleSystemDeleteConfirm.bind(this); + this.handleSystemDeleteCancel = this.handleSystemDeleteCancel.bind(this); + this.handleUpgradePlan = this.handleUpgradePlan.bind(this); + this.handleUpdatePermissionClose = this.handleUpdatePermissionClose.bind( + this + ); + this.handleGroupToggle = this.handleGroupToggle.bind(this); + this.handleGroupClose = this.handleGroupClose.bind(this); + this.handleAddPermissionToggle = this.handleAddPermissionToggle.bind(this); + this.handleAddPermissionClose = this.handleAddPermissionClose.bind(this); + this.processErrors = this.processErrors.bind(this); + this.processStatistics = this.processStatistics.bind(this); + this.state = { + openSystemDeleteConfirm: false, + openPermissionDeleteConfirm: false, + openMessage: false, + requestMessage: "", + groupVisible: false, + editGroupId: false, + selectedPermission: false, + addPermissionVisible: false, + updatePermissionVisible: false, + updatePermissionId: false + }; + } + + processErrors(errors) { + var allData = []; + + var num = 0; + const now = new Date(); + var maxDate = now; + var minDate = now; + var minValue = 0; + var maxValue = 0; + var legend = []; + for (var j = 0; j < errors.length; j++) { + var data = []; + for (var i = 0; i < errors[j].values.length; i++) { + var time = new Date(errors[j].values[i].time); + if (errors[j].values[i].errors > maxValue) + maxValue = errors[j].values[i].errors; + if (time < minDate) minDate = time; + var value = { + id: num++, + y: errors[j].values[i].errors, + x: time + }; + data.push(value); + } + const id = Math.floor(errors[j]._id / 1000) / 1000 + "MHz"; + legend.push(id); + var obj = { + id: id, + data: data + }; + allData.push(obj); + } + const errorData = { + data: allData, + minDate: minDate, + maxDate: maxDate, + minValue: minValue, + maxValue: maxValue, + legend: legend + }; + + this.setState({ errorData: errorData }); + } + processStatistics(statistic) { + var callTotals = []; + var errorTotals = []; + const now = new Date(); + var maxDate = now; + var minDate = now; + var minValue = 0; + var maxValue = 0; + var MS_PER_MINUTE = 60000; + for (var j = 0; j < statistic.callTotals.length; j++) { + var spotsBack = statistic.callTotals.length - j; + var time = new Date(now - spotsBack * 15 * MS_PER_MINUTE); + if (time < minDate) minDate = time; + if (statistic.callTotals[j] > maxValue) + maxValue = statistic.callTotals[j]; + callTotals.push({ y: statistic.callTotals[j], x: time }); + } + for (var j = 0; j < statistic.errorTotals.length; j++) { + var spotsBack = statistic.errorTotals.length - j; + var time = new Date(now - spotsBack * 15 * MS_PER_MINUTE); + if (time < minDate) minDate = time; + if (statistic.errorTotals[j] > maxValue) + maxValue = statistic.errorTotals[j]; + errorTotals.push({ x: time, y: statistic.errorTotals[j] }); + } + var callData = { + minDate: minDate, + maxDate: maxDate, + minValue: minValue, + maxValue: maxValue, + callTotals: callTotals, + errorTotals: errorTotals + }; + + this.setState({ callData: callData }); + } + componentDidMount() { + this.props.systemActions.fetchSystems(); + this.props.talkgroupActions.fetchTalkgroups(this.props.shortName); + this.props.groupActions.fetchGroups(this.props.shortName); + this.props.errorActions.fetch(this.props.shortName); + this.props.permissionActions.fetch(this.props.shortName); + if (this.props.statistic) { + this.processStatistics(this.props.statistic); + } + if (this.props.errors) { + this.processErrors(this.props.errors); + } + } + + componentWillReceiveProps(nextProp) { + if (!this.props.errors && nextProp.errors) { + this.processErrors(nextProp.errors); + } + if (!this.props.statistic && nextProp.statistic) { + this.processStatistics(nextProp.statistic); + } + } + + updatePermission(permissionId) { + this.setState({ + updatePermissionId: permissionId, + updatePermissionVisible: !this.state.updatePermissionVisible + }); + } + + editGroup(groupId) { + this.setState({ + editGroupId: groupId, + groupVisible: !this.state.groupVisible + }); + } + + deleteGroup(groupId) { + this.props.groupActions.deleteGroup(this.props.shortName, groupId); + } + + reorderGroup(oldIndex, newIndex) { + this.props.groupActions.reorderGroup( + this.props.shortName, + oldIndex, + newIndex + ); + } + + handleUpdatePermissionClose(didUpdate) { + this.setState({ + updatePermissionVisible: !this.state.updatePermissionVisible, + updatePermissionId: false + }); + } + + handleAddPermissionClose(didUpdate) { + this.setState({ + addPermissionVisible: !this.state.addPermissionVisible + }); + } + + handleAddPermissionToggle = () => + this.setState({ + addPermissionVisible: !this.state.addPermissionVisible + }); + + handleGroupClose(didUpdate) { + this.setState({ + groupVisible: !this.state.groupVisible, + editGroupId: false + }); + } + handleGroupToggle = () => this.setState({ + editGroupId: false, + groupVisible: !this.state.groupVisible + }) + handleExport() { + this.props.talkgroupActions + .exportTalkgroups(this.props.system.shortName) + .then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ requestMessage }); + } + }); + } + + saveGroupOrder() { + const order = this.props.groups.map(x => x._id); + const data = { + groupOrder: JSON.stringify(order) + }; + this.props.groupActions + .saveGroupOrder(this.props.system.shortName, data) + .then(requestMessage => { + if (requestMessage) { + } + }); + } + + handleUpgradePlan() { + window.location = process.env.REACT_APP_ACCOUNT_SERVER + "/update-plans"; + } + + handleUpload(file) { + this.props.talkgroupActions + .importTalkgroups(this.props.system.shortName, file) + .then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during registration + this.setState({ requestMessage }); + } + }); + } + + // https://github.com/Semantic-Org/Semantic-UI-React/issues/2103 + + showPermissionDeleteConfirm = permission => + this.setState({ + openPermissionDeleteConfirm: true, + selectedPermission: permission + }); + showSystemDeleteConfirm = () => + this.setState({ openSystemDeleteConfirm: true }); + + handlePermissionDeleteConfirm = permissionId => { + this.setState({ openPermissionDeleteConfirm: false }); + this.props.permissionActions + .deletePermission({ + shortName: this.props.system.shortName, + permissionId: this.state.selectedPermission._id + }) + .then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during login + this.setState({ requestMessage: requestMessage, openMessage: true }); + } + }); + }; + + handleSystemDeleteConfirm = () => { + this.setState({ openSystemDeleteConfirm: false }); + this.props.systemActions + .deleteSystem(this.props.system.shortName) + .then(requestMessage => { + if (requestMessage) { + // report to the user is there was a problem during login + this.setState({ requestMessage: requestMessage, openMessage: true }); + } + }); + }; + handleSystemDeleteCancel = () => + this.setState({ openSystemDeleteConfirm: false }); + handlePermissionDeleteCancel = () => + this.setState({ openPermissionDeleteConfirm: false }); + render() { + const system = this.props.system; + let fileInput = null; + var location = ""; + var example = ""; + var plan = ""; + var groupRender = () => {}; + + if (system) { + if (this.props.talkgroups && this.props.talkgroups.length) { + groupRender = () => ( +
+ + + +
+ ); + } else { + groupRender = () => ( + + + + ); + } + + switch (system.planType) { + case freePlanValue: + const tempPlan = planName(system.planType) + " plan"; + plan = ( +
+ {tempPlan} + +
+ ); + break; + + case proPlanValue: + plan = planName(system.planType) + " plan"; + break; + } + + example = + '{\n\t"systems": [\n\t\t{\n\t\t\t"shortName": "' + + system.shortName + + '",\n\t\t\t"apiKey": "' + + system.key + + '"\n\t\t}\n\t],\n\t"uploadServer": "' + + process.env.REACT_APP_BACKEND_SERVER + + '"\n}'; + + switch (system.systemType) { + case "state": + location = system.state; + break; + case "city": + location = system.city + ", " + system.state; + break; + case "county": + location = system.county + ", " + system.state; + break; + case "international": + location = system.country; + break; + } + } + + const panes = [ + { + menuItem: "Overview", + render: () => ( +
+ + + +
Location
+ {location} +
+ +
Short Name
+ {this.props.system.shortName} +
+ +
Description
+ {this.props.system.description} +
+ + +
+ ) + }, + { + menuItem: "Config", + render: () => ( +
+ +
Configure Trunk Recorder
+

+ Below are the parameters you will need to configure Trunk + Recorder. The example below shows how they should be added to + the config.json file. +

+ + + +
API Key
+ {this.props.system.key} +
+ +
Short Name
+ {this.props.system.shortName} +
+ +
Upload Server
+ {process.env.REACT_APP_BACKEND_SERVER} +
+ +
Example
+
+