From a1b4bbe18ca33c70dffe514b23b19bdc67ad7f84 Mon Sep 17 00:00:00 2001 From: Barry Low Date: Sat, 1 Sep 2018 11:04:04 -0700 Subject: [PATCH] Repackage Team Module --- .gitignore | 3 + README.md | 27 + docs/README.md | 162 + docs/assets/AAGraphQLPlayground.png | Bin 0 -> 73844 bytes docs/assets/AATeamAuth0FunctionFlow.svg | 1 + docs/assets/AATeamAuth0FunctionFlow@2x.png | Bin 0 -> 33602 bytes docs/assets/AATeamDemoArchiteture.svg | 1 + docs/assets/AATeamDemoArchiteture@2x.png | Bin 0 -> 40399 bytes package.json | 21 + packages/aateam-api/.env.sample | 5 + packages/aateam-api/.gitignore | 9 + packages/aateam-api/.graphqlconfig.yml | 12 + packages/aateam-api/Dockerfile | 25 + packages/aateam-api/README.md | 114 + .../aateam-api/database/datamodel.graphql | 51 + packages/aateam-api/database/prisma.yml | 8 + packages/aateam-api/docker-compose.prisma.yml | 29 + packages/aateam-api/docker-compose.prod.yml | 31 + packages/aateam-api/docker-compose.yml | 16 + packages/aateam-api/package.json | 26 + packages/aateam-api/src/directives.js | 116 + .../aateam-api/src/generated/prisma.graphql | 1737 ++ .../src/helpers/validateAndParseIdToken.js | 29 + packages/aateam-api/src/index.js | 237 + .../aateam-api/src/middleware/getMember.js | 10 + packages/aateam-api/src/middleware/jwt.js | 24 + packages/aateam-api/src/schema.graphql | 35 + packages/aateam-client/.babelrc | 11 + packages/aateam-client/.dockerignore | 7 + packages/aateam-client/.env.sample | 11 + packages/aateam-client/.eslintrc | 3 + packages/aateam-client/.gitignore | 71 + packages/aateam-client/Dockerfile | 29 + packages/aateam-client/README.md | 108 + packages/aateam-client/docker-compose.yml | 19 + packages/aateam-client/html/aa-logo.png | Bin 0 -> 4770 bytes .../html/android-chrome-192x192.png | Bin 0 -> 2515 bytes .../html/android-chrome-512x512.png | Bin 0 -> 6543 bytes .../aateam-client/html/apple-touch-icon.png | Bin 0 -> 3064 bytes packages/aateam-client/html/browserconfig.xml | 9 + packages/aateam-client/html/favicon-16x16.png | Bin 0 -> 502 bytes packages/aateam-client/html/favicon-32x32.png | Bin 0 -> 758 bytes packages/aateam-client/html/favicon.ico | Bin 0 -> 15086 bytes packages/aateam-client/html/index.html | 26 + .../aateam-client/html/manifest.webmanifest | 19 + .../aateam-client/html/mstile-150x150.png | Bin 0 -> 2535 bytes .../aateam-client/html/safari-pinned-tab.svg | 1 + packages/aateam-client/package-lock.json | 19553 ++++++++++++++++ packages/aateam-client/package.json | 95 + packages/aateam-client/postcss.config.js | 5 + packages/aateam-client/src/actions/index.js | 58 + .../src/assets/AlgonetWebPlatform.jpg | Bin 0 -> 79418 bytes .../logos/advanced-algos/aa-logo-vert.svg | 1 + .../assets/logos/advanced-algos/aa-logo.png | Bin 0 -> 4770 bytes .../favicon/android-chrome-192x192.png | Bin 0 -> 2515 bytes .../favicon/android-chrome-512x512.png | Bin 0 -> 6543 bytes .../favicon/apple-touch-icon.png | Bin 0 -> 3064 bytes .../advanced-algos/favicon/browserconfig.xml | 9 + .../advanced-algos/favicon/favicon-16x16.png | Bin 0 -> 502 bytes .../advanced-algos/favicon/favicon-32x32.png | Bin 0 -> 758 bytes .../logos/advanced-algos/favicon/favicon.ico | Bin 0 -> 15086 bytes .../advanced-algos/favicon/html_code.html | 9 + .../advanced-algos/favicon/mstile-150x150.png | Bin 0 -> 2535 bytes .../favicon/safari-pinned-tab.svg | 1 + .../advanced-algos/favicon/site.webmanifest | 19 + packages/aateam-client/src/auth/index.js | 217 + packages/aateam-client/src/index.js | 143 + .../src/modules/algobots/actions/index.js | 233 + .../algobots/graphql/AddAlgobotMutation.js | 17 + .../algobots/graphql/DeleteAlgobotMutation.js | 10 + .../algobots/graphql/GetAlgobotQuery.js | 19 + .../graphql/UniqueAlgobotnameQuery.js | 10 + .../src/modules/algobots/index.js | 0 .../src/modules/algobots/state/index.js | 28 + .../src/modules/algobots/views/add-algobot.js | 90 + .../modules/algobots/views/algobot-list.js | 164 + .../modules/algobots/views/algobot-panel.js | 121 + .../src/modules/algobots/views/index.js | 5 + .../src/modules/auth/actions/index.js | 569 + .../auth/graphql/FinishRegisterMutation.js | 18 + .../src/modules/auth/graphql/ForgotPass.js | 8 + .../modules/auth/graphql/RegisterSubmit.js | 53 + .../src/modules/auth/graphql/ResetPass.js | 13 + .../auth/graphql/UniqueUsernameQuery.js | 10 + .../src/modules/auth/graphql/VerifyEmail.js | 16 + .../aateam-client/src/modules/auth/index.js | 0 .../src/modules/auth/state/index.js | 67 + .../src/modules/auth/views/finish-register.js | 261 + .../modules/auth/views/forgot-pass-form.js | 79 + .../src/modules/auth/views/index.js | 13 + .../src/modules/auth/views/login.js | 99 + .../src/modules/auth/views/register.js | 71 + .../src/modules/auth/views/reset-pass-form.js | 200 + .../src/modules/community/actions/index.js | 94 + .../community/graphql/GetAllAlgobotsQuery.js | 29 + .../community/graphql/GetAllTeamsQuery.js | 40 + .../src/modules/community/index.js | 0 .../src/modules/community/state/index.js | 15 + .../modules/community/views/algobots-list.js | 141 + .../src/modules/community/views/index.js | 5 + .../src/modules/community/views/teams-item.js | 29 + .../community/views/teams-list-wrapper.js | 25 + .../src/modules/community/views/teams-list.js | 73 + .../src/modules/nav/actions/index.js | 16 + .../src/modules/nav/state/index.js | 8 + .../src/modules/onboard/actions/index.js | 41 + .../src/modules/onboard/state/index.js | 19 + .../modules/onboard/views/dashboard-steps.js | 57 + .../src/modules/onboard/views/index.js | 3 + .../src/modules/team/actions/index.js | 210 + .../modules/team/graphql/AddTeamMutation.js | 16 + .../team/graphql/DeleteTeamMutation.js | 10 + .../src/modules/team/graphql/GetTeamQuery.js | 40 + .../team/graphql/UniqueTeamnameQuery.js | 12 + .../aateam-client/src/modules/team/index.js | 0 .../src/modules/team/state/index.js | 20 + .../src/modules/team/views/add-team.js | 72 + .../src/modules/team/views/index.js | 5 + .../src/modules/team/views/team-list.js | 57 + .../src/modules/team/views/team-panel.js | 61 + .../src/modules/user/actions/index.js | 95 + .../modules/user/graphql/CurrentUserQuery.js | 12 + .../src/modules/user/graphql/Login.js | 86 + .../src/modules/user/graphql/Profile.graphql | 5 + .../src/modules/user/graphql/RefreshTokens.js | 13 + .../src/modules/user/graphql/User.graphql | 33 + .../aateam-client/src/modules/user/index.js | 0 .../src/modules/user/state/index.js | 21 + packages/aateam-client/src/state/index.js | 33 + .../src/styles/_background-shapes.scss | 181 + .../src/styles/_backgrounds.scss | 24 + .../src/styles/_bulma-ext-overrides.scss | 3 + .../aateam-client/src/styles/_customize.scss | 41 + .../aateam-client/src/styles/_inverts.scss | 23 + .../aateam-client/src/styles/_overrides.scss | 276 + .../aateam-client/src/styles/_rebuild.sass | 0 .../aateam-client/src/styles/_utilities.scss | 158 + .../aateam-client/src/styles/_variables.scss | 32 + packages/aateam-client/src/styles/app.scss | 36 + .../aateam-client/src/utils/js-helpers.js | 60 + .../aateam-client/src/utils/local-storage.js | 35 + packages/aateam-client/src/views/index.js | 51 + .../src/views/nav/components/main-menu.js | 93 + .../src/views/nav/components/nav-buttons.js | 95 + .../src/views/nav/components/user-info.js | 30 + .../aateam-client/src/views/nav/footer.js | 49 + .../aateam-client/src/views/nav/header.js | 51 + .../aateam-client/src/views/nav/sidebar.js | 65 + .../src/views/pages/about/index.js | 20 + .../src/views/pages/about/sections/index.js | 4 + .../src/views/pages/about/sections/intro.js | 27 + .../views/pages/about/sections/overview.js | 30 + .../src/views/pages/account/index.js | 38 + .../src/views/pages/account/sections/index.js | 4 + .../views/pages/account/sections/profile.js | 33 + .../views/pages/account/sections/settings.js | 23 + .../src/views/pages/algobots/index.js | 66 + .../pages/algobots/sections/add-algobot.js | 16 + .../views/pages/algobots/sections/index.js | 3 + .../views/pages/algobots/sections/overview.js | 22 + .../src/views/pages/auth/index.js | 19 + .../src/views/pages/auth/sections/callback.js | 38 + .../auth/sections/finish-login-loader.js | 23 + .../pages/auth/sections/finish-register.js | 18 + .../views/pages/auth/sections/forgot-pass.js | 37 + .../src/views/pages/auth/sections/index.js | 7 + .../src/views/pages/auth/sections/login.js | 46 + .../pages/auth/sections/register-form.js | 28 + .../src/views/pages/auth/sections/register.js | 59 + .../views/pages/auth/sections/reset-pass.js | 49 + .../pages/auth/sections/verify-loader.js | 22 + .../src/views/pages/community/index.js | 39 + .../views/pages/community/sections/index.js | 3 + .../src/views/pages/dashboard/index.js | 66 + .../pages/dashboard/sections/dashboard.js | 81 + .../views/pages/dashboard/sections/index.js | 3 + .../src/views/pages/docs/index.js | 22 + .../views/pages/docs/sections/docs-sidebar.js | 99 + .../src/views/pages/docs/sections/index.js | 4 + .../src/views/pages/docs/sections/overview.js | 25 + .../src/views/pages/landing/index.js | 29 + .../src/views/pages/landing/sections/index.js | 4 + .../src/views/pages/landing/sections/intro.js | 27 + .../views/pages/landing/sections/overview.js | 23 + .../src/views/pages/support/index.js | 35 + .../views/pages/support/sections/general.js | 19 + .../src/views/pages/support/sections/index.js | 3 + .../src/views/pages/team/index.js | 68 + .../src/views/pages/team/sections/add-team.js | 16 + .../src/views/pages/team/sections/index.js | 5 + .../src/views/pages/team/sections/members.js | 19 + .../src/views/pages/team/sections/overview.js | 22 + .../src/views/pages/team/sections/settings.js | 68 + packages/aateam-client/tools/docker/Deploy.md | 16 + .../aateam-client/tools/docker/Dockerfile | 5 + .../aateam-client/tools/docker/deploy.yml | 15 + .../aateam-client/tools/docker/nginx.conf | 17 + packages/aateam-client/tools/log.js | 13 + .../webpack/helpers/webpack.common.config.js | 18 + .../webpack/helpers/webpack.path.config.js | 7 + .../tools/webpack/webpack.dev.config.js | 55 + .../tools/webpack/webpack.prod.config.js | 71 + packages/aateam-client/webpack.config.js | 9 + 203 files changed, 29564 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/README.md create mode 100644 docs/assets/AAGraphQLPlayground.png create mode 100644 docs/assets/AATeamAuth0FunctionFlow.svg create mode 100644 docs/assets/AATeamAuth0FunctionFlow@2x.png create mode 100644 docs/assets/AATeamDemoArchiteture.svg create mode 100644 docs/assets/AATeamDemoArchiteture@2x.png create mode 100644 package.json create mode 100644 packages/aateam-api/.env.sample create mode 100644 packages/aateam-api/.gitignore create mode 100644 packages/aateam-api/.graphqlconfig.yml create mode 100644 packages/aateam-api/Dockerfile create mode 100644 packages/aateam-api/README.md create mode 100644 packages/aateam-api/database/datamodel.graphql create mode 100644 packages/aateam-api/database/prisma.yml create mode 100644 packages/aateam-api/docker-compose.prisma.yml create mode 100644 packages/aateam-api/docker-compose.prod.yml create mode 100644 packages/aateam-api/docker-compose.yml create mode 100644 packages/aateam-api/package.json create mode 100644 packages/aateam-api/src/directives.js create mode 100644 packages/aateam-api/src/generated/prisma.graphql create mode 100644 packages/aateam-api/src/helpers/validateAndParseIdToken.js create mode 100644 packages/aateam-api/src/index.js create mode 100644 packages/aateam-api/src/middleware/getMember.js create mode 100644 packages/aateam-api/src/middleware/jwt.js create mode 100644 packages/aateam-api/src/schema.graphql create mode 100644 packages/aateam-client/.babelrc create mode 100644 packages/aateam-client/.dockerignore create mode 100644 packages/aateam-client/.env.sample create mode 100644 packages/aateam-client/.eslintrc create mode 100644 packages/aateam-client/.gitignore create mode 100644 packages/aateam-client/Dockerfile create mode 100644 packages/aateam-client/README.md create mode 100644 packages/aateam-client/docker-compose.yml create mode 100644 packages/aateam-client/html/aa-logo.png create mode 100644 packages/aateam-client/html/android-chrome-192x192.png create mode 100644 packages/aateam-client/html/android-chrome-512x512.png create mode 100644 packages/aateam-client/html/apple-touch-icon.png create mode 100644 packages/aateam-client/html/browserconfig.xml create mode 100644 packages/aateam-client/html/favicon-16x16.png create mode 100644 packages/aateam-client/html/favicon-32x32.png create mode 100644 packages/aateam-client/html/favicon.ico create mode 100644 packages/aateam-client/html/index.html create mode 100644 packages/aateam-client/html/manifest.webmanifest create mode 100644 packages/aateam-client/html/mstile-150x150.png create mode 100644 packages/aateam-client/html/safari-pinned-tab.svg create mode 100644 packages/aateam-client/package-lock.json create mode 100644 packages/aateam-client/package.json create mode 100644 packages/aateam-client/postcss.config.js create mode 100644 packages/aateam-client/src/actions/index.js create mode 100644 packages/aateam-client/src/assets/AlgonetWebPlatform.jpg create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/aa-logo-vert.svg create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/aa-logo.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/android-chrome-192x192.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/android-chrome-512x512.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/apple-touch-icon.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/browserconfig.xml create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon-16x16.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon-32x32.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon.ico create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/html_code.html create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/mstile-150x150.png create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/safari-pinned-tab.svg create mode 100644 packages/aateam-client/src/assets/logos/advanced-algos/favicon/site.webmanifest create mode 100644 packages/aateam-client/src/auth/index.js create mode 100644 packages/aateam-client/src/index.js create mode 100644 packages/aateam-client/src/modules/algobots/actions/index.js create mode 100644 packages/aateam-client/src/modules/algobots/graphql/AddAlgobotMutation.js create mode 100644 packages/aateam-client/src/modules/algobots/graphql/DeleteAlgobotMutation.js create mode 100644 packages/aateam-client/src/modules/algobots/graphql/GetAlgobotQuery.js create mode 100644 packages/aateam-client/src/modules/algobots/graphql/UniqueAlgobotnameQuery.js create mode 100644 packages/aateam-client/src/modules/algobots/index.js create mode 100644 packages/aateam-client/src/modules/algobots/state/index.js create mode 100644 packages/aateam-client/src/modules/algobots/views/add-algobot.js create mode 100644 packages/aateam-client/src/modules/algobots/views/algobot-list.js create mode 100644 packages/aateam-client/src/modules/algobots/views/algobot-panel.js create mode 100644 packages/aateam-client/src/modules/algobots/views/index.js create mode 100644 packages/aateam-client/src/modules/auth/actions/index.js create mode 100644 packages/aateam-client/src/modules/auth/graphql/FinishRegisterMutation.js create mode 100644 packages/aateam-client/src/modules/auth/graphql/ForgotPass.js create mode 100644 packages/aateam-client/src/modules/auth/graphql/RegisterSubmit.js create mode 100644 packages/aateam-client/src/modules/auth/graphql/ResetPass.js create mode 100644 packages/aateam-client/src/modules/auth/graphql/UniqueUsernameQuery.js create mode 100644 packages/aateam-client/src/modules/auth/graphql/VerifyEmail.js create mode 100644 packages/aateam-client/src/modules/auth/index.js create mode 100644 packages/aateam-client/src/modules/auth/state/index.js create mode 100644 packages/aateam-client/src/modules/auth/views/finish-register.js create mode 100644 packages/aateam-client/src/modules/auth/views/forgot-pass-form.js create mode 100644 packages/aateam-client/src/modules/auth/views/index.js create mode 100644 packages/aateam-client/src/modules/auth/views/login.js create mode 100644 packages/aateam-client/src/modules/auth/views/register.js create mode 100644 packages/aateam-client/src/modules/auth/views/reset-pass-form.js create mode 100644 packages/aateam-client/src/modules/community/actions/index.js create mode 100644 packages/aateam-client/src/modules/community/graphql/GetAllAlgobotsQuery.js create mode 100644 packages/aateam-client/src/modules/community/graphql/GetAllTeamsQuery.js create mode 100644 packages/aateam-client/src/modules/community/index.js create mode 100644 packages/aateam-client/src/modules/community/state/index.js create mode 100644 packages/aateam-client/src/modules/community/views/algobots-list.js create mode 100644 packages/aateam-client/src/modules/community/views/index.js create mode 100644 packages/aateam-client/src/modules/community/views/teams-item.js create mode 100644 packages/aateam-client/src/modules/community/views/teams-list-wrapper.js create mode 100644 packages/aateam-client/src/modules/community/views/teams-list.js create mode 100644 packages/aateam-client/src/modules/nav/actions/index.js create mode 100644 packages/aateam-client/src/modules/nav/state/index.js create mode 100644 packages/aateam-client/src/modules/onboard/actions/index.js create mode 100644 packages/aateam-client/src/modules/onboard/state/index.js create mode 100644 packages/aateam-client/src/modules/onboard/views/dashboard-steps.js create mode 100644 packages/aateam-client/src/modules/onboard/views/index.js create mode 100644 packages/aateam-client/src/modules/team/actions/index.js create mode 100644 packages/aateam-client/src/modules/team/graphql/AddTeamMutation.js create mode 100644 packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js create mode 100644 packages/aateam-client/src/modules/team/graphql/GetTeamQuery.js create mode 100644 packages/aateam-client/src/modules/team/graphql/UniqueTeamnameQuery.js create mode 100644 packages/aateam-client/src/modules/team/index.js create mode 100644 packages/aateam-client/src/modules/team/state/index.js create mode 100644 packages/aateam-client/src/modules/team/views/add-team.js create mode 100644 packages/aateam-client/src/modules/team/views/index.js create mode 100644 packages/aateam-client/src/modules/team/views/team-list.js create mode 100644 packages/aateam-client/src/modules/team/views/team-panel.js create mode 100644 packages/aateam-client/src/modules/user/actions/index.js create mode 100644 packages/aateam-client/src/modules/user/graphql/CurrentUserQuery.js create mode 100644 packages/aateam-client/src/modules/user/graphql/Login.js create mode 100644 packages/aateam-client/src/modules/user/graphql/Profile.graphql create mode 100644 packages/aateam-client/src/modules/user/graphql/RefreshTokens.js create mode 100644 packages/aateam-client/src/modules/user/graphql/User.graphql create mode 100644 packages/aateam-client/src/modules/user/index.js create mode 100644 packages/aateam-client/src/modules/user/state/index.js create mode 100644 packages/aateam-client/src/state/index.js create mode 100644 packages/aateam-client/src/styles/_background-shapes.scss create mode 100644 packages/aateam-client/src/styles/_backgrounds.scss create mode 100644 packages/aateam-client/src/styles/_bulma-ext-overrides.scss create mode 100644 packages/aateam-client/src/styles/_customize.scss create mode 100644 packages/aateam-client/src/styles/_inverts.scss create mode 100644 packages/aateam-client/src/styles/_overrides.scss create mode 100644 packages/aateam-client/src/styles/_rebuild.sass create mode 100644 packages/aateam-client/src/styles/_utilities.scss create mode 100644 packages/aateam-client/src/styles/_variables.scss create mode 100644 packages/aateam-client/src/styles/app.scss create mode 100644 packages/aateam-client/src/utils/js-helpers.js create mode 100644 packages/aateam-client/src/utils/local-storage.js create mode 100644 packages/aateam-client/src/views/index.js create mode 100644 packages/aateam-client/src/views/nav/components/main-menu.js create mode 100644 packages/aateam-client/src/views/nav/components/nav-buttons.js create mode 100644 packages/aateam-client/src/views/nav/components/user-info.js create mode 100644 packages/aateam-client/src/views/nav/footer.js create mode 100644 packages/aateam-client/src/views/nav/header.js create mode 100644 packages/aateam-client/src/views/nav/sidebar.js create mode 100644 packages/aateam-client/src/views/pages/about/index.js create mode 100644 packages/aateam-client/src/views/pages/about/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/about/sections/intro.js create mode 100644 packages/aateam-client/src/views/pages/about/sections/overview.js create mode 100644 packages/aateam-client/src/views/pages/account/index.js create mode 100644 packages/aateam-client/src/views/pages/account/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/account/sections/profile.js create mode 100644 packages/aateam-client/src/views/pages/account/sections/settings.js create mode 100644 packages/aateam-client/src/views/pages/algobots/index.js create mode 100644 packages/aateam-client/src/views/pages/algobots/sections/add-algobot.js create mode 100644 packages/aateam-client/src/views/pages/algobots/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/algobots/sections/overview.js create mode 100644 packages/aateam-client/src/views/pages/auth/index.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/callback.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/finish-login-loader.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/finish-register.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/forgot-pass.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/login.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/register-form.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/register.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/reset-pass.js create mode 100644 packages/aateam-client/src/views/pages/auth/sections/verify-loader.js create mode 100644 packages/aateam-client/src/views/pages/community/index.js create mode 100644 packages/aateam-client/src/views/pages/community/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/dashboard/index.js create mode 100644 packages/aateam-client/src/views/pages/dashboard/sections/dashboard.js create mode 100644 packages/aateam-client/src/views/pages/dashboard/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/docs/index.js create mode 100644 packages/aateam-client/src/views/pages/docs/sections/docs-sidebar.js create mode 100644 packages/aateam-client/src/views/pages/docs/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/docs/sections/overview.js create mode 100644 packages/aateam-client/src/views/pages/landing/index.js create mode 100644 packages/aateam-client/src/views/pages/landing/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/landing/sections/intro.js create mode 100644 packages/aateam-client/src/views/pages/landing/sections/overview.js create mode 100644 packages/aateam-client/src/views/pages/support/index.js create mode 100644 packages/aateam-client/src/views/pages/support/sections/general.js create mode 100644 packages/aateam-client/src/views/pages/support/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/team/index.js create mode 100644 packages/aateam-client/src/views/pages/team/sections/add-team.js create mode 100644 packages/aateam-client/src/views/pages/team/sections/index.js create mode 100644 packages/aateam-client/src/views/pages/team/sections/members.js create mode 100644 packages/aateam-client/src/views/pages/team/sections/overview.js create mode 100644 packages/aateam-client/src/views/pages/team/sections/settings.js create mode 100644 packages/aateam-client/tools/docker/Deploy.md create mode 100644 packages/aateam-client/tools/docker/Dockerfile create mode 100644 packages/aateam-client/tools/docker/deploy.yml create mode 100644 packages/aateam-client/tools/docker/nginx.conf create mode 100644 packages/aateam-client/tools/log.js create mode 100644 packages/aateam-client/tools/webpack/helpers/webpack.common.config.js create mode 100644 packages/aateam-client/tools/webpack/helpers/webpack.path.config.js create mode 100644 packages/aateam-client/tools/webpack/webpack.dev.config.js create mode 100644 packages/aateam-client/tools/webpack/webpack.prod.config.js create mode 100644 packages/aateam-client/webpack.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..aa2282e00 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/.cache +.vscode +docs/notes \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..2f6a73371 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Advanced Algos Team Module + +## Introduction + +The general purpose of the team module is + +This module explores crafting a strategic development pattern that upholds the Advanced Algos principles of rapid-evolution and automation built upon the values of collaboration, permissionless innovation, and accessibility. + +#### This is a monorepo containing the Team GraphQL API server, Team Client, and Team Prisma Schema + +## Quick Start + +Requirements: + +- NodeJS 8+ +- NPM (comes installed with NodeJS) +- [Github authorization via SSH](https://help.github.com/articles/connecting-to-github-with-ssh/): *optional* - removes need to authenticate every push or pull from GitHub especially as this is a private repo. + +1. Clone this repository `git clone https://github.com/Algoteers/aa-team-module.git` +2. `cd aa-team-module` +5. Navigate to desired package in /packages and look at its README.md for further instructions. + +## Getting Started + +_This repo is currently under heavy initial-phase development and is not representative of the more mature product. On that note, feel free to look around and keep an eye out as the development unfolds!_ + +1. Where we set sail — [to the docs!](./docs/README.md) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..03dfbdd36 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,162 @@ +# AA Team Module Documentation + +## Architecture +Single-Page App (SPA) Modules are NodeJS applications that consist of a client-side application that loads and runs within a users browsers. While a SPA is a fully functional application and doesn't need backend support, it easily meets its limitations when relegated to solely the resources of a web browser. + +Single-page apps are able to expand their capabilities by connecting to external datasources or other services, usually through a web API(application programming interface). These APIs allow the web app to pull in curated data from other sources like trade exchanges or movie information, connect to functionality that allows the app to authenticate, create, manage and save information in databases and much more. + +### Overview +![AA Team Module Demo Architecture](./assets/AATeamDemoArchiteture.svg) + +1. Postgres Database: relational data store +2. Prisma GraphQL service: wrap Postgres as a Relational Database Manager (RDBM) +3. GraphQL API server: Provides backend support with connections to data storage and other datasources +4. NGinx Web Server: Serves the front-end web applications. HTTPS provided by LetsEncrypt. +5. https://api.algocommunity.org: The API endpoint +6. https://aaweb.algocommunity.org: The aaweb demo endpoint +7. https://algocommunity.org: the team module front-end demo endpoint +8. Auth0: Third-party service providing authentication to front-end clients and Graphql API server. +9. User Web Browser: Location where front-end web apps are loaded to + +### GraphQL +This module uses a GraphQL API server as its backend support providing it with the ability to query stored data on AA teams and members as well as create and manage that data. + +[GraphQL](https://graphql.org/) is a specification and query language for APIs and is implemented by using the [Apollo Server](https://www.apollographql.com/) platform. Behind the GraphQL API server is a Prisma service that connects to a Postgres relational database. The Prisma service acts as a lower-level GraphQL relational-database-manager wrapping the Postgres DB. + +A simple comparison between GraphQL and REST can be found at [howtographql.com](https://www.howtographql.com/basics/1-graphql-is-the-better-rest/) + +In short, this combination allows + +- rapid database development by simply creating a GraphQL schema +- connecting multiple datasource endpoints and wrapping them into a single endpoint (Postgres DB, Azure storage API, other micro-services and apis (like Sendgrid or even other AA modules) +- a single endpoint simplifies caching and authentication + +### Auth0 Integration + +[Auth0](https://auth0.com/) is a third-party service that simplifies integrating authentication into a web application. + +The main use of Auth0 will be for [Oauth 2.0](https://auth0.com/docs/protocols/oauth2) authentication requesting an [*implicit grant*](https://tools.ietf.org/html/rfc6749#section-1.3.2) flow. Auth0 also hosts the login/oauth authentication forms. + +While Auth0 provides a depth of user-security services such as authorization (scopes/roles), multi-factor authentication, currently only basic authentication will be used. + +#### Auth0 Function Flow +![Auth0 Function Flow](./assets/AATeamAuth0FunctionFlow.svg) + +Following a likely User Experience flow and revealing the Auth0 API functionality below: + +1. **User loads AAWeb app and clicks login**. App should initially check session/local storage on-load to see if user is already logged-in. For Single-sign on, can use [Auth0.checkSession](https://auth0.github.io/auth0.js/global.html#checkSession). Otherwise, a first action could be for user to click on the login button to initiate the authentication flow. +2. **AAWeb app sends authorize call to Auth0 and display universal login screen** The login screen is hosted by Auth0. A user can choose to login or signup using email/password or Oauth2 login through strategy provider like Github. After user submits and Auth0 authenticates user, it returns a callback address to the web app. +3. **AAWeb receives callback address and replies to that callback address.** +4. **Auth0 now sends back a JSON Web Token (JWT) back to AAWeb** AAWeb parses JWT and extracts id_token for user information. Saves access_token, id_token and token expiration for future authentication checks. AAWeb can make an `authenticate` mutation query to the API to create an initial account store in the database. +5. **After login, AAWeb checks for user's team information by making request to GraphQL API.** Sends a POST request with an `Authorization: Bearing `header, AAWeb queries API for `teamByOwner` using Auth0 user_info *idTokenPayload.sub* as the owner_id. +6. **GraphQL API receives query request** API parses authentication token and verifies user, compares user_id to existing user or creates a new one. Searches for any teams owned by user. Returns data in JSON format. +7. **User does not have a team and clicks on `Create Team` button** +8. User is redirected to team module client. Session is checked and if user previously logged-in, then user is automatically signed in, otherwise user has to sign-in again. *Note 1: Single-sign-on (SSO) is just a convenience function that shows a single button in login form as opposed to some "auto-login" function.* *Note 2: If user signs in with different method (ie email/pass instead of social[github]) is treated as a new user.* +9. **Auth0 sends new access_token, id_token, expiration, etc** Web app should store values for future api calls. +10. **Make authenticated API class - same as step 5** Once logged in, user can create teams, edit profile, invite others to their team, etc. +11. **Data or errors returned** Both data and errors are returned in JSON format. Data usually returned with HTTP status 204 and errors returned with status 400. + +## Working with GraphQL + +If you're unfamiliar with working with GraphQL, the best way to start is learning the [Core Concepts](https://www.howtographql.com/basics/2-core-concepts/) and reading through some of the introduction on [HowToGraphql](https://www.howtographql.com/). + +The next step is to start playing with queries in a GraphQL playground. Browse around this one: [https://api.algocommunity.org/playground](https://api.algocommunity.org/playground) + +![GraphQL Playground](./assets/AAGraphQLPlayground.png) + +1. The main query builder area. GraphQL schemas can be introspected, so auto-suggestion and linting is built in. +2. The response area: where data and errors will show up. +3. The schema documentation: The format of a GraphQL schema allows it to be "Self-documenting" showing the various queries and mutations along with their expected parameters and response forms. +4. Query Variables or Headers can be set. Especially the Authorization Header for queries/mutations that require authentication. The Bearer token is the Auth0 access_token. + +### GraphQL tutorial +1. In the playground, let's make a first query. Right now, there's really only one call that doesn't require authenticated: getting teams list. +2. A GraphQL query is written in a JSON-like format of nested layers between brackets. The main searching function is called a "query" and is started by typing **`query {}`** Go ahead an enter that in the query builder section. +3. You should notice some syntax highlighting where the last bracket is marked red and if you hover your mouse over the red, you should see a message like `Syntax Error: Expected Name.` This is useful for letting you know that your query is malformed and it this case it's just telling you that it needs a Name to query — or to be more specific, a Name of a Type to query. +4. To know what our options are, click the Schema tab on the right-hand side. We are going to query the teams and you should see a **Query called teams:TeamConnection**. +5. Go ahead and **click on the query**. What's being show is that the `query teams` returns the type TeamConnection. There are no parameters. But we can somewhat choose what shape of response we get. +6. You'll notice this query returns three main TeamConnection items: pageInfo, edges, and aggregate. **Click on Edges** You should see a type of Edges with item `node: Team` Go ahead and explore the Team item down to see our query options. [Edges/node?](https://blog.apollographql.com/explaining-graphql-connections-c48b7c3d6976) +7. Back in the query builder, let's start building our query. Since we are querying `teams` add it to your query like so: ``` query { teams }``` Notice an autocomplete will pop up to help you figure out what to type. +8. `teams` will be red, and the syntax highlighting should give you a hint. That's right, we need to tell the query what we want returned. After `teams` add `{ }` +9. The cool thing about GraphQL is we can shape our response. We could return all three main query items, but if we really only need one, then we can tell it to return one item. In this case, start typing `edges` Autocomplete will help you again, and you can hit the [Tab] key to take advantage of the suggestions. +11. You probably clicked through a fair amount of pages when exploring the teams schema. Each slideout could be thought of as another layer of brackets and you working your way down the graph until you hit the end of a connection that ends in some type of scalar like String, Int, Boolean or custom ones you defined like Date or Role. +12. So using the syntax highlighting and schema, finish creating a query. No red is usually a sign that the query form is correct. Here's an example: + +``` +query { + teams { + edges { + node { + name + owner { + nickname + } + profile { + avatar + } + } + } + } +} +``` +Go ahead and hit the large triangle button and see what you get! + +Congrats, you've created your first GraphQL query. + +### GraqphQL schema + +The Teams Module graphql schema: + +``` +enum Role { + OWNER + MANAGER + MEMBER +} + +type Team { + id: ID! @unique + createdAt: DateTime! + name: String! + slug: String! @unique + owner: Member! @relation (name: "TeamOwner", onDelete: CASCADE) + profile: TeamProfile + members: [TeamMembers!]! @relation (name: "TeamMembers", onDelete: SET_NULL) + anonymous: Boolean! @default(value: true) +} + +type TeamMembers { + id: ID! @unique + member: Member @relation (name: "MemberOnTeam", onDelete: SET_NULL) + team: Team @relation (name: "TeamMembers", onDelete: SET_NULL) + role: Role @default(value: MEMBER) +} + +type TeamProfile { + id: ID! @unique + createdAt: DateTime! + description: String + motto: String + avatar: String +} + +type Member { + id: ID! @unique + nickname: String + teams: [TeamMembers!]! @relation (name: "MemberOnTeam", onDelete: SET_NULL) + profile: MemberProfile + auth0id: String! @unique + visible: Boolean! @default(value: false) + anonymous: Boolean! @default(value: true) +} + +type MemberProfile { + id: ID! @unique + createdAt: DateTime! + bio: String + status: String + avatar: String + repo: String + email: String +} +``` diff --git a/docs/assets/AAGraphQLPlayground.png b/docs/assets/AAGraphQLPlayground.png new file mode 100644 index 0000000000000000000000000000000000000000..6377de2f19431e698ebebed645ee488e24482554 GIT binary patch literal 73844 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'ir5LEZ zuI_3rj{^3>lY!!qzh;4`^c#I&DhZX*?@>HoO?mG3tm?;te#2si=y*HgWbq0$_CkGa zXch%8dzUs{Eoz~1VmVm`iyb3La~no5M7i-;UFk2luv5#0UWUR3LT~x;w7*H_ss(6R z6{gwIp-pxSlsehI5qIUBG_=FB?JH74m%QieO{kRge>2w(TV7&+`xdW_;!xv1|vfTNUpt z%*ar!x(oXC?BrUI2wO3f-jD?EEyDga zFW9W9r6<~4Ag{roB{?n?(dC6UsB42Fy6W=`5O^<(j!DvxCWPyT%%ob?@7=7h`Ket&OKF4#SxZSK>$%>5b7njFS{>4!Rf5*jxSc zJ;gR2!vnWmrm0h6jR)>Nu2m4DpvYVi2l7M;`tEM(h!r;9e}P;K>wMCD?vPwD6A3w7 zgeV1OKvZ2fGAFs-ngwGyY0$9nnVZ`&8{jt^D^DU`6)8K4GrnX=;uWL>U=8fIYn2HS z!Tt+Nn34ZopCp7MfOby=9c!fly;I6XtF*=b>$~>$f|yl#`QWXW?Z&-XYqQ&P4zT|o zH`~Y)=W4wYGMT|?RP}3{n2LxF!f}t4mCKMHRt$n*r5Kj7#Dv%IeM7|*)NkLCi$Nvt z9Ns`>jguGuVlECfM^#mgO?}BQ0@jdESE9m{{;vR^MhPo+9Eai=#naY~3nO01!J-M( zTR->hJ?Z?ox%E1*PHf1nA%f>oRcXnm(X{Ubi9@iMR@j9|BN7X!MIT zb&-Sbeq6(KzH03yZ$-nm+XDe9Ul%Km`8#5sz6A!*ksAY6zSDcR77eo~X9X+}1pLj$ z>kg+YGe9K}u!zYskew%+lcRUJ*Q~mH7xrMl+!a)#aV?>R^U_kq^fD3pCZssVMw#YS z9o(9~Mz`?nTCV6X?NNd*=KpkMBX9kA(DbfD`AFg15xm1ixHM{~Oi=N8ETDkgDfXh@ z`FDQaF-lw4z}F7SD@w!6uWj;Ux!B)3_#7PUIrpsOhJj^#rxp~ zzSiOcS*_ciMS+2Vka;z?wIy8J_3GJrgxtMzPZfG%f>*tUd8^(Gjq|m=O&=58_RSRo zD~M4bBrlvjS=s1=+c7p{ZWs#T)j9ZcT0!?A8{V+xEdsXp6?6J661KM&Rtd|!HU@kr z+%woc=A!c{LB2FU#K}TQ-JFM$%t_xnXPuw!w-x>NWDNVa)(t#eyxBhSFmr)z|F(PzU~^et$RF`9g~XOfx$-a+KFk?IUlSzthG4BZ6swG zg=X#w=msk`1+p@O&_6Tq`)1{QzBMBA%23&aCJag$*sMr)x?Y`pZgP3{GkxG*O>iJa zHImz;ytUUepa64!f52gYM=7ogcQdH~2{Tq*pzKGUA?&gc?5l;vv_+S6M=6UE;Src z;Osp0@-*LDSG2hp>BYsxeH^9%iKu_0H_@+!4p>^xd}-OzXmqzE3R^Pj{dp?eaoeJ3 znMXeb5ghXA9v+&B+?E5^IrGDb28*hWR-M(s{(I`A10!Eb`P|}I1c7~OssN>1CC!?~ zp7`U{A02|eE$)WP&B@+lF+=~tHL%}hUhJ^R!vRR`;g3)gbvS>#xWa2%T2enRZnhQ8 z)SSg5i5LhzcNK!4PjYx;ukz(2VX#uLr`pcd9oOnQ^J2165neiF-Y+SuoS}=PCZm4e z@=jh9Y(QwazW8(`>!li$tHdL<*9A*`V;%%W z*Z4lDyV7Lu6**@Y(X&~k&G`w*DW5KU3e!@3(NT#u7f0~%w|A!d$vX+-PcCD0U;YC< zIw3y=DdyzloS*Z$gRhvBe{Z= z`bNoeg#xVRRJc-CC5aP`7j5r;5M^?+1P&iI;C!F4tu3(|)HKD3n$|J@vr#IldP{Vx z#*v6qRY_u_A&WG^$JFUHO=59~-X^^#Qo;G^)`j_w=CmaBO8i8Y%hk@b&*yDF z=yVM5x*w`cVW;%z%o!9hxEC1n5Tri$i}I&TzX}?B@Cx)~QzSy_EYk|Ujdaet`d&y) zY&}V)@dxZt(ie}^8aT*Mgf%zXswJ~r@igH6D)*gdb+ncKJ&-9W=oyMc?w8y?bt(3_BJb5fn^j5h|LYr-oH-M`W6CV^6pj zn{Ek<6!s<-;);RUC|Jm9Wl?Y`59gQg_9iwjp2dt`C%ihooJ}C4p(L%_41-Mk^S84m z$sXIK#JT4&{IhOh)PoRF)0yHP=}<9^H0;z;jL}*uoWKEMT*rSk41n`WV#k7>9UB^f zDwOMJubFeJC?=BwTz7_kSX>u~b^SjZx}+nci-NgcZPp1`?tflb_L%{3Vv4gHIc&-2 z>a7`>1aHpLZN&_%-@ZX!lGJC*lqH8(L~4GyZC$&Z;$w`YwvS0IHIcy$gj`lvTH2=| z+Pw^gWo%9J(v@Q&3vI7Z3kK=OhZeEEjU#{fIj#s7k#=IwyIliEHtFCA|K2uCFN<@s zU5ZX+P{(xc=~6Ed4FVyoZMTA*D}@{#7G-d0g0}YhGl1Y5F!Dg;vh~N8unTkQrdubs z)md>gbhKS5^sS5JlU5pEChc%Cf1KK+jLC{@xbmT?@e-@s)l;Rf7dx4Yd!S^V0)4Kc z7}jbvust~`qrZBXDF`b1btJ799o@{z_lTSM^@qV-V_;l2#q~^Bv$=GLhv&CQM+-mC5sNT9bZzxi zR(ZCO-2*i$HlJ9QgjZy5jcmDOM&>Ws)x#}|7}^3*C~L`7hLx<>J}ZzgjzH{;Hjm^iU&**-><1OR>4lBwZFe56$+I++6(Ay zoZlC$8Z@iCIrZ{ZPNhxBNIf=ZJd&UB@6sSGn04FC{+x4DofzM}^ikkA18y_lC4ChLhdSbt&5`4>{Zp;M*kaFB{&!9 zSTqO*$U{lD^X(;dMp77gC&*^}RiZ-36^bP*H^TNRX-UeDGAq@GSHUPC`^*1MM2`L> zQ7LHhWYI_&lQ;{Avs&2nbFMvOeqf|Tp_ZR7l`U#((|q+j+R9_aSmWg>E3VE)+28j< zE0F#A$(99-mbER4V$z4UK`k$}|Cz~;R#HwC5JwR2Jd-(IoX;%lUl92Lm^$;3#f~0e zZ*3ayFKBO0*)w(l&Kzv-bA>!{YKT)yvh$X9cEJe=ERkm@0*(m+PCtf^q)fur=Ii8u z4;k}s+tDk8z{DFUMG57dD+ckJ5btbinpwZ-+kqTB+4r z#p_kao`o>RwLUTaP{PFLJt+b?NhN4i;7SGojY#AKtQ&ef^ZHJfw=K#HK-_R9^QA`9q+xhQCIJ z$N9h^)>F@7w~gN5!Xv`uZ{Fec*$lUyxLpNg`0TjwTLO>varm%#s$Its5rD112~R(1 z#UL;-liliN&mqV|dhK73w-)OVJ7qX`CfvMHOv;h?Ab4?XQ`(SDMLjX%N=8=eUMe*F z4X3%=a5xOyNT1F(AS#EWd-{!<++1tRP)#j=7Mu@e&VDW1(`9pzfy$D^j4v;TJ-IZkiY~n`4*owH!(Qj(X61C7+?jlsRd;nl&lP}-boxpC1*!69v zEYYoB!9C##nUA=Vund9@C)Ik?#QZuSW}3I(^|p!hreG)i?)6!qO36par(wdNA0w_ zX6Wt=m$2@QgkL=YwYVp}B^c7j$VlR0bX#D#r5c&|WN*j`0$p!1$eMGg>89HE zu!3`g#+XL0J5~q@iR9bd%H*d(o)uSPjOoR{M{ff4eh=c9G2n=k9h^wX(YK)++VxAc zVKHo{FUgOBQYF=Pj>w6f^x@m{R`CRB8JvT2WsLK_9m^Z`T82uE*V3l zq~_DKy|&gsmJ{T%87b&^_Q67aVPWIuPK56dF_AmSlM8mZHHP$p+l9y@Pd6fFr)OQY z2dVcb5wN*~YS)XoW-y2n`E&Ma@O39wRHyr6#K*!XO-zLIONP!sJBZ)-^|Zb8T5=Mf zWY5aV%%mTJ zGse=pG^IVU+l!RZz@@1slStyHF;eRt5npdb@S64%2JTmW?Y*A#K%GA=3^*8M zBe9)){&d)UQPfb0dH8`N{uja6Z19f6{W-Dx#o@90jmcDE(Io<-r~CQl3OYfUPCO+a z8F~i=u@{?A>JB$?dv(0&> z+~V}_CJPya^bwJ2LoxkT?0a`QTVXg8=jeuvp|3ZBI=SR6GvAxHXts9QpoIhf8 ztwgTIrur9zSU4yth3bpTbG2be#{OQo&qcI9Q1sz_HW_YSt*@_3Ww#wD9IdXq)+29( zU-~Ere&kM+tPb5#*7W|NMeIIUU&^3c&hC>#8X|$^x^yrs@K0Z#0yO?WulPgI6ylknSh9YVv2pI<#z_xpV)}=&q!Oox)WrQHrqHsx zt%)|!6tHL9M|>$I=>i@?wG&8`M&-=*M3eqY8p*dDn1e?2K}RK-GwrHBXNoi%WPB20 zu}(OJCl$;w=)by(aMCy5&_d$p>x&jtJJ6MU9iK0*ZGwrDx<8Ij&k~JcvZu~%?c2#A zshy5{_@O>q8u<-(w7OWF zQFQo!C>l8qrXlR>=HYhNBf|~*9LL6PXb03I>6?O>lq04lU&ayLdJ;-+wSGUzVLFq7 zCriTk%xw{cCPVfpBrLAXDtj)(SImgtAy(Q@QSuJVJ51j-4?U}{6i-K=ULAu2WN2am z1S&~9Ex-NE-IyxDAA=jsyGxI^dBQ~Po6M9JL-BB>BNnNa#pNR*G$kGz_?B0{7*Pp} zU_2}tBZ8iPBfQDPK+`sZ#EteU;;WngY9(xVO~$0p9gflhZR`PskkS#5E+Rd-b7tEc zJXG^g41heX`nxhRG~$JOC7RTTz{q@alN;y#@rZ;aqo)hy=s`@q+0O4P#yCXD3t1A&3eRC0d{I*&Z$VlQ*h{bnWR44pW=bwyxsZcfwM&k69>MwF9P?E@4&-3C%FauS>P4i zHxN9earusRNwXfTND;cf<%);LA6A?5M%_{9glR$&;1C5RunfLT8bcCHGi{R1%8k6o zR+`r)j3?-$9xQ!RniMIb#tQ{pcOX$XNCR2n&~b30MuNqcYibSZJfSVsAHn^rzTEB? zb`&fb@SL3szt;k&xIJR1VX!NmZ?#*+hhVdn-ycXq#WJG->60Ofrut)KSTOT$p+q%FRTVoa`6^VL zo#xrwPQ2tEwPYA9uHe8;);lsU1G`}hzrOQ--G=?V@*tFD&t$$nNUM=EU<&HJb^D}! z?RjfIBlz&@v1Rl-vtWLYVie^7jy?YfcCV(uu-~r4J&PYVMUEBAw?5vIMv4+vmfHsk zkmfTh_$kl7ool`xEYjUd6D!1i{oPO7P`9nM1x*v?F~SMcflyR` z&$ag@ysX}!*}8*Kc3EP%c}10ri+GP-B|?Pw_d+%x%F3}=dIWB?Bc9`BMoTA`CABq| zE&|FcpsgtaG}q6@p5LPG%o;%-4<+)NJL1oIdFP4hI(AncIV3$v*ENjR%LCNOM$#6! zX^noYL9XtJcvivA-qphFG6k4D*rlIwG=`2z!s`ijoq;)Kh}B<6C%1AFi*&iKQy$70 z&YU@HZ}BoSu>~%{rX2^P4xtE**3i18+6Hr~U32)>ymWIhd1Gu_f5F@EunY+Y3ztY50rGWu(xC>|OP0}R0Tjh&f%RH!h(cHXD1YAs@=m@@$$ zuFvP`in-p9CNl0;;tNeXDhT^?G@sG7O*U(c%Iknt(#s2}`x>I^hilXZ9J>}(90P7O z)#?}Wjlh!cw~^b$I@=XNt6;9*yDOg@Ef+~PUt#%9YQjGlvzJ`SF_88|V$j!o+aX6R z+4}Y!`%miTF*AwmoW_Fwd%!I#bmm=O7f+(J6P8w2B3CoV4gBilr{X);h{I>52C#{s zM^Sh8fAU&wyAXo}U+>1JH`wcHI&l-682c4_q_OU|(t5djKDD@71bD3AxM=fCRH{DU zZv6yx_9N#vRGOA7J)|6wE2wg9(F}eAk>bPj=TeJ_q+>66;m~N{23H z_Q&AyIqtw(C{CB_Ii2G~I|%`ynjUp9nO@Ey5q8y#_Qrq=^Gkm4y{6l)xxEW1FS)LD zs5^9wP{fOoo>$tnG8WA;vGct}(nw%897L1~RK_09E;4f>FXcX=P2!O+q39WWGKVQ#|IZXXDlnls*BN{G;A@0F4#LYBI=p#+WRzH zJH8X7q51?3k}+Xm>qWHxba*7kaOrHI8#HegDx4)ki4jpNXMqG77)UiWhx2oA2isc+ z^-G_SC=db;_Q${LJ5b=E76ka+2_9ufPhGLHtD&FkqoQsBMbnPI-5cTKhM7%s zqCNx~M!>UGX(?hkE5Ge(2?nlpo|u8)Ml5k^3BIqVSN{Fs>wKWVHYvCE?dekZs_$Fk zc+)jseJzd)2XM`iu|34m&w;cZh{p2K}zusD8tl#2N+{oRlq zfFB1NoTwG3j`^HU-Yia@+al4d56Y^)fxGA}0Xnu{KPa-m8=v&$2bONInKx2UL0VdN_$fo)5C%;=>s~?m-9=E)KO`s;oP$TvG zVuXE^aE3+qSAA=0@XjrEl9Y^}6dnyli`Mmsw5>fa|BU4J;hfDHvKiKhf2$0(`67Fgn%p?+~Wf2zA zpb>;D7{f+XC=&}+_0yW}r?p{u0DeS#Y{~V@0%3+fglr z9ZnY4Z7M}n2|~xn1F=D#f1k;oDgZc7zioC%Ar@`Ppf9hSyCtV+cBVE8sHQlGXT1Qj zjs1f~Aoic8%8IfF5=`flh@|{;0Xt$_Apn%17b(ER!Rt8GK&db9Q%?rabUr{0&mXPT zoIUf~0ZT8dp)&UOjgY_`d^BCm-@m*B<6L5YX&n(hHSeR=eqB@}V_`Hxb3}pj{^A6V zh959xA|g;Iu(xzybEGKz&YogM!WM=aImC3RlN0p!_&428fd&66&Vc6=rS!~+9nT_U zlWkk%JNRbTWM4y8k!crb3}jq{j zv|;-J5WyLiyViquITTded@+B1+I)fpK?^ZJ0C^((uUtbfcuqHAAfOV{MD3cT(VH)N zCcm6jT6owp=y#W9f8Sr%#pKjmT2=kfSOzK)dG*8CdFp2hZ)O;>=B2^8H+qjs)KQ<#Nj4K=^(N0Bxum!{TT@m3%+0T!3rP) z^)@4Cvn>5|JD2C_IeHqm_a5Cpj|dY1PfPJ3;;$G(vCs{yV!j~*ftI2R66cVCEF z@+mPXhJ=uw-=Pb|fl#xS#RX$y5Gsl$*wMacY>Ak)lb{P*vk_C51bm+@5*#YI3|0#j6eN`cR{@u!DqHV;x!o2 zha`*9PqykLp>i2srC0Uz@OtMj`rPWGX>Ub z=2E&*GQJwE>%or`!8+uFslZwnlF1}fN&Ev?uzHaQbJXX-<=%#!ho%LWRtWt`D{FB| z0t|HS89|?nekyN;N&cVu?+fASha00pXrBQ;2;CVo)#BCA*lvg3#ZW$lkYJz@{s*w= z!#oo7(lH1?2BzGyzpDyiL>~~^;61xValvNB?2^5pg+vflQ&rN}6ea)h57q;T)U(>2 zJ9)pb2(_M4_bhUOUh}8RHm0HpHFYQ^q&KP&u3m(u#2;a6^3A1nc!f_xM2MPMOQh~8VHrqc00;zM-_(d)P;h#od zWbkqEB^CZavCqKk%=yfHv=}-=toFc)TfRcCZP(a8$>F><9hGUUk@)WxZMGhU)2`>6 zt91Haphn(rN7E!23d*B@0`yBo8PZA<_rZk!WCC3iKg$>Bp2bg{sune2N~>9H{6InU z9H;Ee#DmFPhSlm+E7TYiIp71=#*U-ZKVa+2;Jbh{O`TjhKmUA<0EeSD)#UE zojJ0Mcn&HeMQxBlqh3pD8U^_+IIfu~Q&|6w2-P*Dx~Pf3X}AYbMA5Uz9tH4s7pd5J z6pdW>DfMdeXnCTmbJ#5rA9lwyarLoz$cIA3Eq-}aw`0fbE6Cio^F>2|O7q#-Y%Y-L zqb|>ux`L8*!>yKt<@bND_DW6qF(+bR81@2-q0CxqE14}1w4IrQgpUphM$8#21|2o1U=C(&79y-(rtdfODX=rNT-LI1cKFSLLDQDP%plbZ@3mWx`-Kg1dNOd^kQ z_e@l4a9*kb9WM&1pM~B=oF4pI03V7)9BgRr;u7?jjjO+EBDy|9i1w)!_b#bz##~|_ zQzW$lTG9}kITA-pq}f4GCU%d!1af9>LTj-d%rqp=9^8OjgW&r9{=+oIQB>fHN3Mr1 zKl71wPfv|h7$abT5(M>R=>7Lkl6%FO8XV>ObEe9+=#M%`fEHt7Pw)1Pv4itf`34#y zfFwgiP7U1Eb`y98{Dr9C42Z-mENYe@$g=#lOL=y z=7}oVGSwSQirBgLf}QhZ=YN-=HY15+IfCI9DE1N8}ff-K65jkIi5SBJCXy}OQMhDfJll~4Qm zABRj}54@>XV1cd00)knejWAuysxBdwL2@f{N{rPhos?u zyLV7)2=FZ%he|GsTP5H=n7i5IJL~Aorw{?IJj7&zbnN+c$LC=?PYh-en!Fo2_QD=@ z;%^FFphS*H*PEC_yym!Jz}w|^NV^fPa**xJ@#MTMakj8Km8_batRxu{-y^W_f|7Dr zf#&xkJB2>&F7p!LD*Cb3U_KmQhhz6IXc#lgq0aRUZ6wJ+5tQ+&B^(23+tk=WzB}uF z@96uG9~sks)^@xj6lXyrC2IM`6oyipkt91`SlAwH{8OEn>6RNkq9?Ur)Soo-92m2R zTPYsIdhW;E-FV>2;@yVcrrk!l6Ms$w1nuU2!Lw=e|0Z}fp}>g_Z|?mb5fPU7(TkW8 z5gb714eja1E`9kGBtiEo?G;Ts;zR7u(TyY##*s_9xDfE6LEUN=}_TNkF(I3)Y&7<;EUn+SlO{d z+kJ5d@-3p?me8W%$UNmuT8?VFK}C-VafBIK>rgIrH8<+3u@O4qYYF&748ZnU_Tz_R zf6I9t>Kkq_(IjmgHcF6yQhlmJC42#0L+-EwkYZ@#Z=6lfoqQumG(u}dg()2n?KW;DY=@) zH?1 z7jxP39qZnct=dYA2u*|}qaewXw1?6Yd+H5$gfZGCBATG;>KI`Oy}z^d(gQ};(x$Lr_&XHq|fIZ$YTt>FZc}F=Gu$9^zbBPycggF z{%-%?nLc_)HBg!(Jl+#Wba8n0ySAcL~9p?jR%aq?jS79=)L=irkeG@xEt)@JlMm4 zYP>-%&KppSKn!L4V(>)8cAAQE#m95u0}NVzF88Xy6-z(nigIwliN4Srq`)bQVkS(; zN0TQ=6kV`W5O|99hX>4@$!Wn~g$hBl@47+ozu2Fvu9VHoHNgBnqxyL6@DQ zNk&O)^OJz#2XVvep9~QnOo({A;Aw-g)ws)r1yyLGg(l7rHO(?EDAGAA-<+H>kkH1} z2?M8HMWFRQ%A;!*;EqTucRoJb_biGDH-cxJ^u}IcFui@6;d9(-!)k`2y*Vfuj#uls z0KE>scyfW#m_8zQJP+2c3U{J<-eC4_{7aAc5XJ-D<`?YcNqQNM3;oa9;hpPduRDou zfep9mY^u99aRTb6U?3jBf&(}*(Z`ke+9SXEUWhnVWnN!@ZfGF-RO9>j-Ov!p)LoS4 zxar3NC`C2QGZ=VQygogYe!gD<#1IhwB~C6!mm}oD49*H;|Jf6DvU+!rUXNWhEO>}A z?nnfnFF?E*oqgRg&y$Vt1Lw4^qDMVg<^@Ff^y7?(6)kAV&fmum|6Wa<7z~4TTErwi z;SwJ6iJUj)?l$&6+u<1Eb@vi92N%;Uf~0X!;?DFQfW+YPkXO+qd!PrbE-+9DL}!)) zX7*<7vqLX(aDd5iqS}KUzgJ@=G+oA%0IDoRP7=?b-%>CBhT~%w$p2rXmm1nP*60Vs zX=4%$$QX5z3SKgbSRY`L6RdDM>rcWM?aM%(`2JdKvz3h1jdy!al&sBk1Y+j!aeQzn5Z>6c20_bfmn9E%;wcfn1Np^rDkCKtzvzhs++y59Q5DcQ83C&OWz<%L#Sbz5+-UgzG2Lwnf zDLi37dHi?%=a1$`dNI4ZqbYzv#w5xBH=|3N2q#r3p}(8ocD_Y&7QbJcHr6dZmpKHr z|Kg31I7POWVNg}iu+p7;#D1s@!)q6zrH_NG=kI~nF+wG(Vf39)EGvx7A`JC>c<&+O zd?t#y4$a{9*V3|@R$eIU*l?o;KSB?q869`+eh#B|=T6Y~MuFW&7_>)iaxXKf_mVQ$ z@b(=+OO10Kz?c(f8*EgqVzWH?s!1teH zEWDw})_~#Z*8Ds{nO*2D)g0FgdTzi7%vKG8Dg8C*;WR* zt6?#x`ho0GQ~TV`^2`5gdu?d`Wp0`cR$-(-;C5f_yjG&|+J*gBB||C~N2IFPbwy4r zIBq@pNZ|3D(0wJKGM^Cle~|zpbr4`m%$fwKVZg;FBYWG=-94ORz(iMRfF(sU?KDPI z8G+5``Bli+288RbI3=&P;RZZIso8jg5z|L+ z<6sa8I2}y3>(UF5?C3`8bWKt*kQR8NqPFbO08j?qQ|+1hBNZ6O1lfE-Wt!WQ0k(@3 z^;Kk#9tC$)HVBWA_e!IUDM1-me+~2TqF(Pgl`Nu6j|1Djj~m2L~R7Q^b-=XKR3JzXED*> z7~Q4^%NY=F_6CG{*J5==ghOowIsdMBNM<+$!Opn@hkYnpu61~OSx5WiYWChfnB(C( zOynU^|0m*hRMs@HHtwqLY6B*U#@`PX&)bm8Lyj(=3eOW122~rC4g`|;+XT5rVsr9P^huxMvydHuiOc|N;fN*I~y+uEtl$Tm!4N`z6q;Geh_D` z-6Fc_XTOwgV!u>%bCU?pFl_g2l~t6e5>6H|&9p{-sXeT0G$G(j4&)>{4SEbvVFFyK z=xNw6;F*&!8YcYjL-Lp&;bR_O?6aDS?;CaUE15*GoS!LH{qHOmGuvZIE@9?iI(YCV2TN+)S)cbGTNgZX8ZvJi%t`h~vr&p)!dRA z*+Fc&muAaRA#_S#JqzE?Ly1h^i8&D(4k`hdlnglvNIK>Yv0VRAXYY$N3k#X&q&}e9 zT3ko(#!eOl9v~`+213H`2)%gqL2F6RK;isuoMCxJt2ok)v4z)iOB@%}9LZ^-wjI zDeD$24&u?lN_VL9s7f@bKe~lQ(=z<2Ns1x?Ole?<$#?Jujx}}u)M_ z?yz*iHZq@h?O9SDdon#fvthDxBz6dd=A&SG7HAw~uJ2_#!@Z2jkUmcdC>SMs_1+HT z7aX!>_y>*A5Q9zAdl6tF2~^qN|4FXq;Q_k&N}MakwuN^$YwE6kOo0*sqHtmMpP(J% zfyOJ*ow#n+PXSA3z!-&>lA&y{h{N~(r(y9w!KK1i_pH;`_dq?(Xi8?hfe& zX{5VTKpLbk-60(!AQG2G`qEv}UDAzoyrZA*?|q*8FT(-+(aE$$PEa?BdBb&iWGOSZR|lXi<32&2)=43ZS%U+7V_u~7S~^@ zFE2s!E9eMy7WMk9Pr(~SWF#15TgFhQ5*zU1>=Kh(XUr4{Cj@bcMdHBHF#`qq%E z2LKTTu39b%NCZ^gFMgX?P_j|JxhcB>)zcGYed16m;f+K8`zn#v`8+ak?(LH4qJdAJ zgjWmZ<~_v~wjB7!LgQ_PP4rsoNCK;H>bs3)CuP)O4xSci-l{3~e8!!Rqd3{K)W_rM z)%k(S{7Ko#p>E}^1OpR|ThdC*Z7*-OqG%r?WXoHJtvrk#l?)XP=Y}FF<{8^Pumae;^Dl%%GW;agxp9USy{75yG(Y?o= z7EB>}@7OW&Os{km@i+83qh6^GF^YN@Jv~=Afg*)Zl9=OOmH69s=OWm76kO`j zx<{Ox;MwjZCOtlK{gK$ zs_Ze1Gj_X!@@@^bn|^lUxIYcHg6r`~ob0*m0H?d0mJ-&xmdJ+vX*uJSI9!w7hc5#*taEZ-Pa(T2`9f^1AoAUlHA(`Sj*b zv06wM-#%vP;w&}_wLVJYl|NC(qxGTP?~gps<_rFk1>0~8|i0PDN zrjEpv-ow*l_Eu&iL7!r6TA6Lj$%cE;+=a$S4!%pz+#tj;jz?-P*o2NGxteB*9Q-0r znvYr@O-6`a1gWpYRivboOzkxd-tNUnKx9W!gWtQS+|2i)TE)tm`a~X)=I!pG5BE0D z9owgn;`d1j&l{BW-V95eFCZLm2qjRjF^!6wSnel-$bE00^JgE6C~ruj zzyO=iy2HaqE@I#bhnm}BzLeg%-~?n7@l)f zM#27B+>n$76)XqXkXSD>g6uG=A#F)F|hXEJS=>aHi(3RA$vp z_*4P+EJgEvcJbMO{u|po-<<0y5YLLwzhr!Qqvcq{#FqGw>K8lmip1O2gFzR||W#(s1Y7WH#;ttC+apu`Rr^rck z7xm_n{#q{wWbYw%Wt+H;e&1u93=pG>*uGa}{e}9@4BmG7+v(T>>+Qsikq(;=?Vb<= ztN^>uLUIdv*2jwtWG7^+gBp3iRd&DmaCp;|d(elmnNnD>(#yYH0i_@Iv z)=?9&h+@74%Uj>*Rn_LWSKV}=#)QPUiDzfRkciqC{tCOd{(F>~a6YIRjFnRXu- zm)S-l6?P{-^R}f>ZD`y!^kc{^Y%v9bqw;xXUla;b&{+Qd(F*-$F5~ltHJ?fqwy@|y z1g_+})Z{^$d>!dHha?ZqQ_PLiQNvnHwmu8#x(-;6-Ei2qMo~x+zQTtu_OH0J1#eL! zw)21ZV)+(2L^NZH-zh->Bv9cN&T^kn)Rov>kgu7(_gtE5&Dr$QY@9r8%9gOq-{hKE z#}amiTX6t;JD~WxvSH$a{v7nSqrqcay70$C(wp@bGKBcNqPqu&ut;(@Fz4N^Tq0TP zOBns>mklb-p+?E$(yaH10>TkM>fQ3&DZ=CkCnY@!Z!Z9i@pT^`HRzD2 zbI=*N0O_Y#p8${P|B}yi#Ayu&%!H)JC9ix4W4Npl_lof5tDUf-cnwnjEHLfPbX6TH zcYx>2$#nvHqIlyTTO=dI#zHO3fR6pHz?0kTeBVCFay+H|#Ba|eC1=kNKnY;J<^j4R zHIQKf92pHxel3eS`ah8yW-qpd0y_CSm~*4PW*v9x$dI0qeu=lWTyZH9lZ%J)>m`;iubdp)fN77-Gn=or%AF0hh08%LsBi4Ysp!a_AEkb3VD?`W2 zf|r4GNXuTkN;s2d&DH6chy-s{D~D zg8$NIbEHByK43m3sYcBnsUcc+c@v1PZ%z2@GdrfVjTZ*4c1fa;`Osy_`|ihEE1N|p zKh$IvDHk60s7C*8gR;acuM*ztU25Pkvuggs!Nh;^A$@>;>VVE!H$GPkrBbK=hBe!i z?@O7~f0=mt8~sD*txt5hs@p3fF$jMjJ@Dg4xcndSEj88h9q^Id7Sv@(nrNWx#Sc&( zs9YH~A@908vkb4_P;3HXINSOM8JB#ATR&6AN&=^k>sL_wq75-#$Gg@7Ym1D=MUr}&^&6}9wn;YbdsJLIY|wZf`goU>4HQjRO#;S_gx4F0BeZWS*ld85?kZ|F zQ90((aQS7~ouh z-`-bu>opP+D;QtjEb^_PR2Cc74}o{FY``(~fxA&nf!x^E<4PFbiU;bo zvw`Y-6=ib%!y=g7c~^Rk&*{D)lJH0`oAzjSf`-D7KjVEVT7N5{-sz9ejlGNyDYq5J zoYM(T40TdqcM=Yzr*RsYu9SE>qwu$3H+R*kC{YZkTs3m&^{MqCk14A`8gwm%jE(ao=oz z5-OOr=lp%ee!P%^{7cV_a?xKA%WCl|Bh5O4<(M!BelC#|H^{y_qPg)GZQhnzs{cf( zmO4`HBn2Ehay>S#%g6o>AEJk-=d15Y85m0ga)^5+M|AD9OuE0ZhpmqG3aujAE$1XI z==v`3$78;^Dj&1IvIKg2&uu4<>eG9~n&%Ho{*NPIJGlHqg`{+eeAsrFG1!mJHeq)tYCU zMBOh`B>7_a87w0UEtN#7k!Whqmy2-PtfOug;;C#Mzh(W!gza{+8#5qn#ae_jD+}Y- zeV8vkdu>er z%2>lK3T=ApamoLqJ?Vg&Dnm-ni#-`zZXM*>` zgp~gZg)_FKMMSA-qs3ke!YJtWWt)g`wE0tqU&Dgx(re8CZ1C2FQbM9hQLNxFYSi?#UY@yHyBCL zc|i?#fIjxT{(hzFcIELAC|V}&i-uaRf7l$;!_Bn%F+~(+I<)5wQR;3d)f8n!YV1Uk z9LUeJ!twFAy)jt^U!525%SA(ns%Z{g%N16DyKmBc_nF41f5;#4QKw`^b`29qW@??P z19Jn!hvo;dxgSu-v89U1E@)^5Wl$o#jvJ^_0|H4bE2;=3`{1IubZj**V-t{Kg$73x zb-C=!7Dh(BxzE@lJI3j;zcYj>fS-+$iU<|+E+8-R0pRtPy+YGBxyGZ({s-mGP6|wpF~l`#qvg|R5PMRcXX;g44qPPvip&Z)36akw!L$4M`nCP z;a!BpWKw=|{C~v$o%ZtR_2&BnK}eN#(BBTx%6unGsJ*XCL0-9;=1O~e^|icNEh+gv z<1%eWgu`o>L}iAS9GloeH+67LNoS#IE7@Q@SGTVGB^xNV@*hBR#3!OUSpfuHJWe1bAQ=DF}+i(g$Rt zzLm7B=6SQVdm0gQ;Olyrw(LL&8tciU{~Z}L8@FEpGg-$6OlgGN=gpqKTz%M#Yf0OS z)1!tiu5H8RtAJxL(BG_Cp3>6|&Fg^r%DprElZ=x;qZ{0*+WeIZ2J0@rLq1pXFTIi>cOkuX(AAjBQ{%O_Zd`#WCxc zWi4}+$Sk#JANzF4JULh^4?n?-QYYRV{L@nthXtP-olFpHJ4INl!v0-A#^jK|2W1Hx z$8vAm9WE{k=PY+%>&&_ZJla1$rBLU?U3ap-OIFsV<-1a${Hw z({A|fuCvwEUV*&GrT(0~bcWNO^LHfZ4PaSH(a0xw6r2{n(u&}2a!*L8$d(fB5$!BI z9^Sq-48jdnAg6)|I_5h^)*^qia^#>3lYTN#Utoz2z?G+(C4M)=z%LbNop=yMEi4jq zF?y465L5Ider6hwBDF(cL@fe}l)PY4v@%(siuF{FigHR}P_+5d3~J}1?3KFDUx%{P zZtUa<5pNS<9gT`qN(*o%p^ec i;qu_!Iz5TE5bC5y6_E+bHb^rvFC8m8_KE0^85 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 Team Module Auth0 Function FlowAUTH0api.algocommunity.orgDOMAIN:advancedalgos1.eu.auth0.comalgocommunity.org (SPA)AAWeb.algocommunity.org (SPA) GRAPHQLAPI SERVER1573298111046 \ No newline at end of file diff --git a/docs/assets/AATeamAuth0FunctionFlow@2x.png b/docs/assets/AATeamAuth0FunctionFlow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e117e23f7bc5f3d23c09448a187d613b5b1b41a1 GIT binary patch literal 33602 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/b(*HrPLt^yk@u4r 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%0D$8 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 literal 0 HcmV?d00001 diff --git a/docs/assets/AATeamDemoArchiteture.svg b/docs/assets/AATeamDemoArchiteture.svg new file mode 100644 index 000000000..82a58c820 --- /dev/null +++ b/docs/assets/AATeamDemoArchiteture.svg @@ -0,0 +1 @@ +AATeamDemoArchitetureAA Team Module Demo ArchitecturePRISMA GRAPHQLSERVICEPOSTGRES DBNGINX WEB SERVERAUTH0Virtual Machineteam-api2.algocommunity.orgapi.algocommunity.orgAAWeb.algocommunity.orgalgocommunity.org GRAPHQLAPI SERVERVirtual MachineUser Web BrowserSingle-Page Web App (SPA)123456798 \ No newline at end of file diff --git a/docs/assets/AATeamDemoArchiteture@2x.png b/docs/assets/AATeamDemoArchiteture@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..069212acd83cfbb94872a854c24ff84e4ea925da GIT binary patch literal 40399 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 000000000..9b73b96c1 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "AATeamModule", + "version": "0.0.1", + "description": "Advanced Algos Team Module", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/AdvancedAlgos/AATeamModule.git.git" + }, + "keywords": [ + "Advanced Algos" + ], + "author": "Barry Low ", + "license": "AGPL-3.0", + "bugs": { + "url": "https://github.com/AdvancedAlgos/AATeamModule.git/issues" + }, + "homepage": "https://github.com/AdvancedAlgos/AATeamModule.git#readme" +} diff --git a/packages/aateam-api/.env.sample b/packages/aateam-api/.env.sample new file mode 100644 index 000000000..920ececef --- /dev/null +++ b/packages/aateam-api/.env.sample @@ -0,0 +1,5 @@ +PRISMA_SECRET="prisma-secret" +PRISMA_ENDPOINT="http://localhost:4466" +AUTH0_DOMAIN="auth0-domain" +AUTH0_AUDIENCE="auth0-audience" +AUTH0_ISSUER="auth0-issuer" diff --git a/packages/aateam-api/.gitignore b/packages/aateam-api/.gitignore new file mode 100644 index 000000000..c5d0ef852 --- /dev/null +++ b/packages/aateam-api/.gitignore @@ -0,0 +1,9 @@ +/.env +/database/.env +/database/docker-compose.prisma.prod.yml +/docker-compose.prisma.prod.yml +dist +node_modules +.idea +.vscode +*.log diff --git a/packages/aateam-api/.graphqlconfig.yml b/packages/aateam-api/.graphqlconfig.yml new file mode 100644 index 000000000..52d56acb1 --- /dev/null +++ b/packages/aateam-api/.graphqlconfig.yml @@ -0,0 +1,12 @@ +projects: + app: + schemaPath: src/schema.graphql + extensions: + endpoints: + dev1: + url: http://localhost:4000/graphql + + database: + schemaPath: src/generated/prisma.graphql + extensions: + prisma: database/prisma.yml diff --git a/packages/aateam-api/Dockerfile b/packages/aateam-api/Dockerfile new file mode 100644 index 000000000..43a95af54 --- /dev/null +++ b/packages/aateam-api/Dockerfile @@ -0,0 +1,25 @@ +FROM mhart/alpine-node:8 + +ARG PORT=4000 +ARG APP_PATH=/usr/src/app + +RUN mkdir -p /usr && \ + mkdir -p $APP_PATH && \ + mkdir -p $APP_PATH /node_modules + +# Use app directory as current workdir +WORKDIR $APP_PATH + +# Copy package.json to workdir +COPY package.json . + +# Install dependencies +RUN npm install + +# Copy application code +COPY . . + +RUN NODE_ENV=production npm run start + +# Expose Port +EXPOSE $PORT diff --git a/packages/aateam-api/README.md b/packages/aateam-api/README.md new file mode 100644 index 000000000..8dfe0fcc6 --- /dev/null +++ b/packages/aateam-api/README.md @@ -0,0 +1,114 @@ +# Advance Algos Team GraphQL API Server + +This is the Advanced Algos Team Module server-side GraphQL API server. We use Webpack 4 + Docker to develop locally, then build to a distribution bundle that can then be uploaded via FTP, git or used with a continuous integration workflow. + +This modules client-side component is the [aateam-client package](../aateam-client#README). + +For more information on the general architecture and related technology of this module, please visit this repos [main documenation](../../docs#README). + +## Getting Started + +Run +``` + npm install +``` +then +``` + npm run dev +``` + +### Using Docker + +Get latest Docker and Docker Compose: [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/) + +#### Using Docker container for Development + +To run starter kit in development mode with hot code reload execute: + +Run docker container in background: + +``` +docker-compose up -d +``` + +If image issues, try running: +``` +docker-compose up --build +``` +then run +``` +docker-compose up -d +``` + +To view logs +``` +docker-compose logs -f -t +``` +Hit Ctrl + c to exit logs without stopping service + +To stop service +``` +docker-compose down +``` + +## Overview +The development architecture of the Algobots Community site is to allow both rapid initial development and ongoing rapid-evolution. As with any opinionated workflow, there's a learning curve, but the libraries and architecture of this application have been chosen to maximize collaboration, flexibility, and extensibility. + +### Main Libraries + +- [*Webpack 4*](https://webpack.js.org/):web application bundler. Allows us to us latest newer JS ECMA features that increase productivity and code clarity. Also allows additional libraries such as modular and programmable CSS via SASS/SCSS/LESS. Provides webserver for local development. +- [*Bulma CSS Framework*](https://bulma.io/documentation/): Bulma is a highly-customizable CSS-only framework allowing us to quickly prototype the layout of a webapp without being complicated by opinionated functionality represented in libraries such as Bootstrap or Material UI. Grants us the flexibility to create a custom look at top speed whilst minimizing baggage. +- [*HyperApp*](https://github.com/hyperapp/hyperapp): Allows a controlled Flux-styled approach to state-management and data-flow through components like React minus the excess boilerplate and learning curve. +- [*Docker*](https://www.docker.com/what-docker) + +### File organization + +``` +. # Top level directory located at your choice +├── src +│ ├── actions # Actions are functions that change the app state +│ ├── assets # images, logos and other static assets +│ ├── state # Schema of state — the single source of truth concerning app state. +│ ├── styles # SASS/SCSS styles +│ ├── utils # Local storage and other utils +│ └── views # Main folder for editing site content +│ ├─ nav # Nav components — header, footer, etc. +│ ├─ pages # Nav components — header, footer, etc. +│ │ ├─ landing # Homepage +│ │ │ ├─ sections # Homepage sections. Collated in its own index.js +│ │ │ └─ index.js # Main homepage component. Pulls in sections +│ │ └─ ... # Other page/component folders +│ └─ index.js # Main view container. Main router +├── html +│ └── index.html # index.html template pulled in by Webpack to attach transpiled bundles +├── index.js # JS entry point to website +│ +├── tools # utility scripts, mostly for webpack configuration +│ +├── node_modules # created by running `npm install` in this packages root dir +├── dist # created by `npm run develop` - a cache of bundled files served by Webpack for local development +└── build # created by `npm run build` - location of deployable production bundle + +``` + +## Deployment + +The simplest deployment is compiling/transpiling the site to a distribution bundle and then uploading the files in the bundle to a web-accessible folder or storage. + +For this application we use Webpack to transpile the application which combines and minimizes all code and assets into an optimized bundle without and of the development code and resources. + +To build, run: +``` + npm run build +``` +Looking in this packages directory, there should be a ./build directory with the final built files that can be uploaded. + +### Create Docker image + +``` + docker build -t aateamapi/prod . +``` + +### Deployment instructions + +Coming soon... diff --git a/packages/aateam-api/database/datamodel.graphql b/packages/aateam-api/database/datamodel.graphql new file mode 100644 index 000000000..8d353546c --- /dev/null +++ b/packages/aateam-api/database/datamodel.graphql @@ -0,0 +1,51 @@ +enum Role { + OWNER + MANAGER + MEMBER +} + +type Team { + id: ID! @unique + createdAt: DateTime! + name: String! @unique + slug: String! @unique + owner: Member! @relation (name: "TeamOwner", onDelete: CASCADE) + profile: TeamProfile + members: [TeamMembers!]! @relation (name: "TeamMembers", onDelete: SET_NULL) + anonymous: Boolean! @default(value: true) +} + +type TeamMembers { + id: ID! @unique + member: Member @relation (name: "MemberOnTeam", onDelete: SET_NULL) + team: Team @relation (name: "TeamMembers", onDelete: SET_NULL) + role: Role @default(value: MEMBER) +} + +type TeamProfile { + id: ID! @unique + createdAt: DateTime! + description: String + motto: String + avatar: String +} + +type Member { + id: ID! @unique + nickname: String + teams: [TeamMembers!]! @relation (name: "MemberOnTeam", onDelete: SET_NULL) + profile: MemberProfile + auth0id: String! @unique + visible: Boolean! @default(value: false) + anonymous: Boolean! @default(value: true) +} + +type MemberProfile { + id: ID! @unique + createdAt: DateTime! + bio: String + status: String + avatar: String + repo: String + email: String +} diff --git a/packages/aateam-api/database/prisma.yml b/packages/aateam-api/database/prisma.yml new file mode 100644 index 000000000..39994dc66 --- /dev/null +++ b/packages/aateam-api/database/prisma.yml @@ -0,0 +1,8 @@ +secret: ${env:PRISMA_SECRET} +endpoint: ${env:PRISMA_ENDPOINT} +datamodel: datamodel.graphql + +hooks: + post-deploy: + - graphql get-schema --project database + - graphql prepare diff --git a/packages/aateam-api/docker-compose.prisma.yml b/packages/aateam-api/docker-compose.prisma.yml new file mode 100644 index 000000000..1c6f0561a --- /dev/null +++ b/packages/aateam-api/docker-compose.prisma.yml @@ -0,0 +1,29 @@ +version: '3' +services: + prisma: + image: prismagraphql/prisma:1.15.1 + restart: always + ports: + - "4466:4466" + environment: + PRISMA_CONFIG: | + managementApiSecret: PRISMA_SECRET + port: 4466 + databases: + default: + connector: postgres + host: postgres + port: 5432 + user: prisma + password: prisma + migrations: true + postgres: + image: postgres + restart: always + environment: + POSTGRES_USER: prisma + POSTGRES_PASSWORD: prisma + volumes: + - postgres:/var/lib/postgresql/data +volumes: + postgres: diff --git a/packages/aateam-api/docker-compose.prod.yml b/packages/aateam-api/docker-compose.prod.yml new file mode 100644 index 000000000..94c8f4cc5 --- /dev/null +++ b/packages/aateam-api/docker-compose.prod.yml @@ -0,0 +1,31 @@ +version: '3' +services: + node: + image: aateamapi/prod + environment: + - NODE_ENV=production + - GENERATE_SOURCEMAP=false + - APP_PATH=/usr/src/app + - COMPOSE_HTTP_TIMEOUT=2000 + - VIRTUAL_HOST=api.algocommunity.org + - LETSENCRYPT_HOST=api.algocommunity.org + - LETSENCRYPT_EMAIL=barry@algocommunity.org + - VIRTUAL_PORT=4000 + container_name: aateamapi + tty: true + stdin_open: true + volumes: + - ./:${APP_PATH} + - ${APP_PATH}/build + - ${APP_PATH}/node_modules + working_dir: ${APP_PATH} + restart: always + command: npm run start + expose: + - 4000 + - 80 + network_mode: webproxy +networks: + default: + external: + name: webproxy diff --git a/packages/aateam-api/docker-compose.yml b/packages/aateam-api/docker-compose.yml new file mode 100644 index 000000000..ccbd2f161 --- /dev/null +++ b/packages/aateam-api/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3' + +services: + app: + build: + context: . + dockerfile: Dockerfile + environment: + NODE_ENV: development + ports: + - "4000:4000" + - "3000:3000" + volumes: + - .:/var/www/application + - /var/www/application/node_modules + container_name: aateam-api diff --git a/packages/aateam-api/package.json b/packages/aateam-api/package.json new file mode 100644 index 000000000..96e7dabb5 --- /dev/null +++ b/packages/aateam-api/package.json @@ -0,0 +1,26 @@ +{ + "name": "aa-team-api", + "scripts": { + "start": "nodemon -e js,graphql -x node -r dotenv/config src/index.js", + "debug": "nodemon -e js,graphql -x node --inspect -r dotenv/config src/index.js", + "playground": "graphql playground --dotenv dotenv/config", + "dev": "npm-run-all --parallel debug playground" + }, + "dependencies": { + "cors": "^2.8.4", + "express-jwt": "^5.3.1", + "graphql-import": "^0.6.0", + "graphql-tools": "3.1.1", + "graphql-yoga": "^1.16.1", + "jsonwebtoken": "^8.3.0", + "jwks-rsa": "^1.3.0", + "lodash.get": "^4.4.2", + "nodemon": "^1.18.3", + "prisma-binding": "2.1.4" + }, + "devDependencies": { + "graphql-cli": "^2.16.5", + "npm-run-all": "4.1.3", + "prisma": "^1.14.0" + } +} diff --git a/packages/aateam-api/src/directives.js b/packages/aateam-api/src/directives.js new file mode 100644 index 000000000..2888c65a5 --- /dev/null +++ b/packages/aateam-api/src/directives.js @@ -0,0 +1,116 @@ +const _get = require('lodash.get') +const validateAndParseIdToken = require('./helpers/validateAndParseIdToken') +const createPrismaMember = require('./index') + +const memberLocationOnContext = 'request.member' +const bearerAccessToken = 'request.headers.authorization' + +const ctxMember = ctx => _get(ctx, memberLocationOnContext) +const ctxToken = ctx => _get(ctx, bearerAccessToken) + +const isLoggedIn = async ctx => { + let member = ctxMember(ctx, memberLocationOnContext) + let token = ctxToken(ctx, bearerAccessToken) + let memberToken + console.log('authenticate.member0: ', ctx.request.headers, member, token) + if (!member && token) { + let scheme, credentials + const tokenParts = token.split(' ') + if (tokenParts.length === 2) { + scheme = tokenParts[0] + credentials = tokenParts[1] + } + + if (/^Bearer$/i.test(scheme)) { + token = credentials + //verify token + try { + memberToken = await validateAndParseIdToken(token) + const auth0id = memberToken.sub + console.log('authenticate.member1: ', memberToken, member) + member = await ctx.db.query.member({ where: { auth0id } }) + console.log('authenticate.member2: ', memberToken, member) + if (!member) { + member = await createPrismaMember(ctx, memberToken) + } + } catch (err) { + console.log('authenticate.validateAndParseIdToken err: ', err) + memberToken = false + } + } + console.log('isLoggedIn token: ', await memberToken) + } + + console.log('member: ', await member) + + if (!token && !member) { + throw new Error(`Not logged in`) + } + return member +} + + +const isRequestingMemberAlsoOwner = ({ ctx, memberId, type, typeId }) => + ctx.db.exists[type]({ id: typeId, member: { id: memberId } }) +const isRequestingMember = ({ ctx, memberId }) => ctx.db.exists.Member({ id: memberId }) + +const directiveResolvers = { + isAuthenticated: async (next, source, args, ctx) => { + let result = await isLoggedIn(ctx) + console.log('isAuthenticated: ', result) + return next() + }, + hasRole: (next, source, { roles }, ctx) => { + const { role } = isLoggedIn(ctx) + if (roles.includes(role)) { + return next() + } + throw new Error(`Unauthorized, incorrect role`) + }, + isOwner: async (next, source, { type }, ctx) => { + const { id: typeId } = + source && source.id + ? source + : ctx.request.body.variables ? ctx.request.body.variables : { id: null } + const { id: memberId } = isLoggedIn(ctx) + const isOwner = + type === `Member` + ? memberId === typeId + : await isRequestingMemberAlsoOwner({ ctx, memberId, type, typeId }) + if (isOwner) { + return next() + } + throw new Error(`Unauthorized, must be owner`) + }, + isOwnerOrHasRole: async (next, source, { roles, type }, ctx, ...p) => { + const { id: memberId, role } = isLoggedIn(ctx) + if (roles.includes(role)) { + return next() + } + + const { id: typeId } = ctx.request.body.variables + const isOwner = await isRequestingMemberAlsoOwner({ + ctx, + memberId, + type, + typeId + }) + + if (isOwner) { + return next() + } + + const hasRole = await isRequestingMember({ + ctx, + memberId, + type, + typeId + }) + if(hasRole){ + return next() + } + throw new Error(`Unauthorized, not owner or incorrect role`) + } +} + +module.exports = { directiveResolvers } diff --git a/packages/aateam-api/src/generated/prisma.graphql b/packages/aateam-api/src/generated/prisma.graphql new file mode 100644 index 000000000..e1aae9350 --- /dev/null +++ b/packages/aateam-api/src/generated/prisma.graphql @@ -0,0 +1,1737 @@ +# source: http://localhost:4466 +# timestamp: Sat Sep 01 2018 03:46:06 GMT-0700 (Pacific Daylight Time) + +type AggregateMember { + count: Int! +} + +type AggregateMemberProfile { + count: Int! +} + +type AggregateTeam { + count: Int! +} + +type AggregateTeamMembers { + count: Int! +} + +type AggregateTeamProfile { + count: Int! +} + +type BatchPayload { + """The number of nodes that have been affected by the Batch operation.""" + count: Long! +} + +scalar DateTime + +""" +The `Long` scalar type represents non-fractional signed whole numeric values. +Long can represent values between -(2^63) and 2^63 - 1. +""" +scalar Long + +type Member implements Node { + id: ID! + nickname: String + teams(where: TeamMembersWhereInput, orderBy: TeamMembersOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamMembers!] + profile(where: MemberProfileWhereInput): MemberProfile + auth0id: String! + visible: Boolean! + anonymous: Boolean! +} + +"""A connection to a list of items.""" +type MemberConnection { + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """A list of edges.""" + edges: [MemberEdge]! + aggregate: AggregateMember! +} + +input MemberCreateInput { + nickname: String + auth0id: String! + visible: Boolean + anonymous: Boolean + teams: TeamMembersCreateManyWithoutMemberInput + profile: MemberProfileCreateOneInput +} + +input MemberCreateOneInput { + create: MemberCreateInput + connect: MemberWhereUniqueInput +} + +input MemberCreateOneWithoutTeamsInput { + create: MemberCreateWithoutTeamsInput + connect: MemberWhereUniqueInput +} + +input MemberCreateWithoutTeamsInput { + nickname: String + auth0id: String! + visible: Boolean + anonymous: Boolean + profile: MemberProfileCreateOneInput +} + +"""An edge in a connection.""" +type MemberEdge { + """The item at the end of the edge.""" + node: Member! + + """A cursor for use in pagination.""" + cursor: String! +} + +enum MemberOrderByInput { + id_ASC + id_DESC + nickname_ASC + nickname_DESC + auth0id_ASC + auth0id_DESC + visible_ASC + visible_DESC + anonymous_ASC + anonymous_DESC + updatedAt_ASC + updatedAt_DESC + createdAt_ASC + createdAt_DESC +} + +type MemberPreviousValues { + id: ID! + nickname: String + auth0id: String! + visible: Boolean! + anonymous: Boolean! +} + +type MemberProfile implements Node { + id: ID! + createdAt: DateTime! + bio: String + status: String + avatar: String + repo: String + email: String +} + +"""A connection to a list of items.""" +type MemberProfileConnection { + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """A list of edges.""" + edges: [MemberProfileEdge]! + aggregate: AggregateMemberProfile! +} + +input MemberProfileCreateInput { + bio: String + status: String + avatar: String + repo: String + email: String +} + +input MemberProfileCreateOneInput { + create: MemberProfileCreateInput + connect: MemberProfileWhereUniqueInput +} + +"""An edge in a connection.""" +type MemberProfileEdge { + """The item at the end of the edge.""" + node: MemberProfile! + + """A cursor for use in pagination.""" + cursor: String! +} + +enum MemberProfileOrderByInput { + id_ASC + id_DESC + createdAt_ASC + createdAt_DESC + bio_ASC + bio_DESC + status_ASC + status_DESC + avatar_ASC + avatar_DESC + repo_ASC + repo_DESC + email_ASC + email_DESC + updatedAt_ASC + updatedAt_DESC +} + +type MemberProfilePreviousValues { + id: ID! + createdAt: DateTime! + bio: String + status: String + avatar: String + repo: String + email: String +} + +type MemberProfileSubscriptionPayload { + mutation: MutationType! + node: MemberProfile + updatedFields: [String!] + previousValues: MemberProfilePreviousValues +} + +input MemberProfileSubscriptionWhereInput { + """Logical AND on all given filters.""" + AND: [MemberProfileSubscriptionWhereInput!] + + """Logical OR on all given filters.""" + OR: [MemberProfileSubscriptionWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [MemberProfileSubscriptionWhereInput!] + + """ + The subscription event gets dispatched when it's listed in mutation_in + """ + mutation_in: [MutationType!] + + """ + The subscription event gets only dispatched when one of the updated fields names is included in this list + """ + updatedFields_contains: String + + """ + The subscription event gets only dispatched when all of the field names included in this list have been updated + """ + updatedFields_contains_every: [String!] + + """ + The subscription event gets only dispatched when some of the field names included in this list have been updated + """ + updatedFields_contains_some: [String!] + node: MemberProfileWhereInput +} + +input MemberProfileUpdateDataInput { + bio: String + status: String + avatar: String + repo: String + email: String +} + +input MemberProfileUpdateInput { + bio: String + status: String + avatar: String + repo: String + email: String +} + +input MemberProfileUpdateOneInput { + create: MemberProfileCreateInput + connect: MemberProfileWhereUniqueInput + disconnect: Boolean + delete: Boolean + update: MemberProfileUpdateDataInput + upsert: MemberProfileUpsertNestedInput +} + +input MemberProfileUpsertNestedInput { + update: MemberProfileUpdateDataInput! + create: MemberProfileCreateInput! +} + +input MemberProfileWhereInput { + """Logical AND on all given filters.""" + AND: [MemberProfileWhereInput!] + + """Logical OR on all given filters.""" + OR: [MemberProfileWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [MemberProfileWhereInput!] + id: ID + + """All values that are not equal to given value.""" + id_not: ID + + """All values that are contained in given list.""" + id_in: [ID!] + + """All values that are not contained in given list.""" + id_not_in: [ID!] + + """All values less than the given value.""" + id_lt: ID + + """All values less than or equal the given value.""" + id_lte: ID + + """All values greater than the given value.""" + id_gt: ID + + """All values greater than or equal the given value.""" + id_gte: ID + + """All values containing the given string.""" + id_contains: ID + + """All values not containing the given string.""" + id_not_contains: ID + + """All values starting with the given string.""" + id_starts_with: ID + + """All values not starting with the given string.""" + id_not_starts_with: ID + + """All values ending with the given string.""" + id_ends_with: ID + + """All values not ending with the given string.""" + id_not_ends_with: ID + createdAt: DateTime + + """All values that are not equal to given value.""" + createdAt_not: DateTime + + """All values that are contained in given list.""" + createdAt_in: [DateTime!] + + """All values that are not contained in given list.""" + createdAt_not_in: [DateTime!] + + """All values less than the given value.""" + createdAt_lt: DateTime + + """All values less than or equal the given value.""" + createdAt_lte: DateTime + + """All values greater than the given value.""" + createdAt_gt: DateTime + + """All values greater than or equal the given value.""" + createdAt_gte: DateTime + bio: String + + """All values that are not equal to given value.""" + bio_not: String + + """All values that are contained in given list.""" + bio_in: [String!] + + """All values that are not contained in given list.""" + bio_not_in: [String!] + + """All values less than the given value.""" + bio_lt: String + + """All values less than or equal the given value.""" + bio_lte: String + + """All values greater than the given value.""" + bio_gt: String + + """All values greater than or equal the given value.""" + bio_gte: String + + """All values containing the given string.""" + bio_contains: String + + """All values not containing the given string.""" + bio_not_contains: String + + """All values starting with the given string.""" + bio_starts_with: String + + """All values not starting with the given string.""" + bio_not_starts_with: String + + """All values ending with the given string.""" + bio_ends_with: String + + """All values not ending with the given string.""" + bio_not_ends_with: String + status: String + + """All values that are not equal to given value.""" + status_not: String + + """All values that are contained in given list.""" + status_in: [String!] + + """All values that are not contained in given list.""" + status_not_in: [String!] + + """All values less than the given value.""" + status_lt: String + + """All values less than or equal the given value.""" + status_lte: String + + """All values greater than the given value.""" + status_gt: String + + """All values greater than or equal the given value.""" + status_gte: String + + """All values containing the given string.""" + status_contains: String + + """All values not containing the given string.""" + status_not_contains: String + + """All values starting with the given string.""" + status_starts_with: String + + """All values not starting with the given string.""" + status_not_starts_with: String + + """All values ending with the given string.""" + status_ends_with: String + + """All values not ending with the given string.""" + status_not_ends_with: String + avatar: String + + """All values that are not equal to given value.""" + avatar_not: String + + """All values that are contained in given list.""" + avatar_in: [String!] + + """All values that are not contained in given list.""" + avatar_not_in: [String!] + + """All values less than the given value.""" + avatar_lt: String + + """All values less than or equal the given value.""" + avatar_lte: String + + """All values greater than the given value.""" + avatar_gt: String + + """All values greater than or equal the given value.""" + avatar_gte: String + + """All values containing the given string.""" + avatar_contains: String + + """All values not containing the given string.""" + avatar_not_contains: String + + """All values starting with the given string.""" + avatar_starts_with: String + + """All values not starting with the given string.""" + avatar_not_starts_with: String + + """All values ending with the given string.""" + avatar_ends_with: String + + """All values not ending with the given string.""" + avatar_not_ends_with: String + repo: String + + """All values that are not equal to given value.""" + repo_not: String + + """All values that are contained in given list.""" + repo_in: [String!] + + """All values that are not contained in given list.""" + repo_not_in: [String!] + + """All values less than the given value.""" + repo_lt: String + + """All values less than or equal the given value.""" + repo_lte: String + + """All values greater than the given value.""" + repo_gt: String + + """All values greater than or equal the given value.""" + repo_gte: String + + """All values containing the given string.""" + repo_contains: String + + """All values not containing the given string.""" + repo_not_contains: String + + """All values starting with the given string.""" + repo_starts_with: String + + """All values not starting with the given string.""" + repo_not_starts_with: String + + """All values ending with the given string.""" + repo_ends_with: String + + """All values not ending with the given string.""" + repo_not_ends_with: String + email: String + + """All values that are not equal to given value.""" + email_not: String + + """All values that are contained in given list.""" + email_in: [String!] + + """All values that are not contained in given list.""" + email_not_in: [String!] + + """All values less than the given value.""" + email_lt: String + + """All values less than or equal the given value.""" + email_lte: String + + """All values greater than the given value.""" + email_gt: String + + """All values greater than or equal the given value.""" + email_gte: String + + """All values containing the given string.""" + email_contains: String + + """All values not containing the given string.""" + email_not_contains: String + + """All values starting with the given string.""" + email_starts_with: String + + """All values not starting with the given string.""" + email_not_starts_with: String + + """All values ending with the given string.""" + email_ends_with: String + + """All values not ending with the given string.""" + email_not_ends_with: String +} + +input MemberProfileWhereUniqueInput { + id: ID +} + +type MemberSubscriptionPayload { + mutation: MutationType! + node: Member + updatedFields: [String!] + previousValues: MemberPreviousValues +} + +input MemberSubscriptionWhereInput { + """Logical AND on all given filters.""" + AND: [MemberSubscriptionWhereInput!] + + """Logical OR on all given filters.""" + OR: [MemberSubscriptionWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [MemberSubscriptionWhereInput!] + + """ + The subscription event gets dispatched when it's listed in mutation_in + """ + mutation_in: [MutationType!] + + """ + The subscription event gets only dispatched when one of the updated fields names is included in this list + """ + updatedFields_contains: String + + """ + The subscription event gets only dispatched when all of the field names included in this list have been updated + """ + updatedFields_contains_every: [String!] + + """ + The subscription event gets only dispatched when some of the field names included in this list have been updated + """ + updatedFields_contains_some: [String!] + node: MemberWhereInput +} + +input MemberUpdateDataInput { + nickname: String + auth0id: String + visible: Boolean + anonymous: Boolean + teams: TeamMembersUpdateManyWithoutMemberInput + profile: MemberProfileUpdateOneInput +} + +input MemberUpdateInput { + nickname: String + auth0id: String + visible: Boolean + anonymous: Boolean + teams: TeamMembersUpdateManyWithoutMemberInput + profile: MemberProfileUpdateOneInput +} + +input MemberUpdateOneInput { + create: MemberCreateInput + connect: MemberWhereUniqueInput + delete: Boolean + update: MemberUpdateDataInput + upsert: MemberUpsertNestedInput +} + +input MemberUpdateOneWithoutTeamsInput { + create: MemberCreateWithoutTeamsInput + connect: MemberWhereUniqueInput + disconnect: Boolean + delete: Boolean + update: MemberUpdateWithoutTeamsDataInput + upsert: MemberUpsertWithoutTeamsInput +} + +input MemberUpdateWithoutTeamsDataInput { + nickname: String + auth0id: String + visible: Boolean + anonymous: Boolean + profile: MemberProfileUpdateOneInput +} + +input MemberUpsertNestedInput { + update: MemberUpdateDataInput! + create: MemberCreateInput! +} + +input MemberUpsertWithoutTeamsInput { + update: MemberUpdateWithoutTeamsDataInput! + create: MemberCreateWithoutTeamsInput! +} + +input MemberWhereInput { + """Logical AND on all given filters.""" + AND: [MemberWhereInput!] + + """Logical OR on all given filters.""" + OR: [MemberWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [MemberWhereInput!] + id: ID + + """All values that are not equal to given value.""" + id_not: ID + + """All values that are contained in given list.""" + id_in: [ID!] + + """All values that are not contained in given list.""" + id_not_in: [ID!] + + """All values less than the given value.""" + id_lt: ID + + """All values less than or equal the given value.""" + id_lte: ID + + """All values greater than the given value.""" + id_gt: ID + + """All values greater than or equal the given value.""" + id_gte: ID + + """All values containing the given string.""" + id_contains: ID + + """All values not containing the given string.""" + id_not_contains: ID + + """All values starting with the given string.""" + id_starts_with: ID + + """All values not starting with the given string.""" + id_not_starts_with: ID + + """All values ending with the given string.""" + id_ends_with: ID + + """All values not ending with the given string.""" + id_not_ends_with: ID + nickname: String + + """All values that are not equal to given value.""" + nickname_not: String + + """All values that are contained in given list.""" + nickname_in: [String!] + + """All values that are not contained in given list.""" + nickname_not_in: [String!] + + """All values less than the given value.""" + nickname_lt: String + + """All values less than or equal the given value.""" + nickname_lte: String + + """All values greater than the given value.""" + nickname_gt: String + + """All values greater than or equal the given value.""" + nickname_gte: String + + """All values containing the given string.""" + nickname_contains: String + + """All values not containing the given string.""" + nickname_not_contains: String + + """All values starting with the given string.""" + nickname_starts_with: String + + """All values not starting with the given string.""" + nickname_not_starts_with: String + + """All values ending with the given string.""" + nickname_ends_with: String + + """All values not ending with the given string.""" + nickname_not_ends_with: String + auth0id: String + + """All values that are not equal to given value.""" + auth0id_not: String + + """All values that are contained in given list.""" + auth0id_in: [String!] + + """All values that are not contained in given list.""" + auth0id_not_in: [String!] + + """All values less than the given value.""" + auth0id_lt: String + + """All values less than or equal the given value.""" + auth0id_lte: String + + """All values greater than the given value.""" + auth0id_gt: String + + """All values greater than or equal the given value.""" + auth0id_gte: String + + """All values containing the given string.""" + auth0id_contains: String + + """All values not containing the given string.""" + auth0id_not_contains: String + + """All values starting with the given string.""" + auth0id_starts_with: String + + """All values not starting with the given string.""" + auth0id_not_starts_with: String + + """All values ending with the given string.""" + auth0id_ends_with: String + + """All values not ending with the given string.""" + auth0id_not_ends_with: String + visible: Boolean + + """All values that are not equal to given value.""" + visible_not: Boolean + anonymous: Boolean + + """All values that are not equal to given value.""" + anonymous_not: Boolean + teams_every: TeamMembersWhereInput + teams_some: TeamMembersWhereInput + teams_none: TeamMembersWhereInput + profile: MemberProfileWhereInput +} + +input MemberWhereUniqueInput { + id: ID + auth0id: String +} + +type Mutation { + createTeam(data: TeamCreateInput!): Team! + createTeamMembers(data: TeamMembersCreateInput!): TeamMembers! + createTeamProfile(data: TeamProfileCreateInput!): TeamProfile! + createMemberProfile(data: MemberProfileCreateInput!): MemberProfile! + createMember(data: MemberCreateInput!): Member! + updateTeam(data: TeamUpdateInput!, where: TeamWhereUniqueInput!): Team + updateTeamMembers(data: TeamMembersUpdateInput!, where: TeamMembersWhereUniqueInput!): TeamMembers + updateTeamProfile(data: TeamProfileUpdateInput!, where: TeamProfileWhereUniqueInput!): TeamProfile + updateMemberProfile(data: MemberProfileUpdateInput!, where: MemberProfileWhereUniqueInput!): MemberProfile + updateMember(data: MemberUpdateInput!, where: MemberWhereUniqueInput!): Member + deleteTeam(where: TeamWhereUniqueInput!): Team + deleteTeamMembers(where: TeamMembersWhereUniqueInput!): TeamMembers + deleteTeamProfile(where: TeamProfileWhereUniqueInput!): TeamProfile + deleteMemberProfile(where: MemberProfileWhereUniqueInput!): MemberProfile + deleteMember(where: MemberWhereUniqueInput!): Member + upsertTeam(where: TeamWhereUniqueInput!, create: TeamCreateInput!, update: TeamUpdateInput!): Team! + upsertTeamMembers(where: TeamMembersWhereUniqueInput!, create: TeamMembersCreateInput!, update: TeamMembersUpdateInput!): TeamMembers! + upsertTeamProfile(where: TeamProfileWhereUniqueInput!, create: TeamProfileCreateInput!, update: TeamProfileUpdateInput!): TeamProfile! + upsertMemberProfile(where: MemberProfileWhereUniqueInput!, create: MemberProfileCreateInput!, update: MemberProfileUpdateInput!): MemberProfile! + upsertMember(where: MemberWhereUniqueInput!, create: MemberCreateInput!, update: MemberUpdateInput!): Member! + updateManyTeams(data: TeamUpdateInput!, where: TeamWhereInput): BatchPayload! + updateManyTeamMemberses(data: TeamMembersUpdateInput!, where: TeamMembersWhereInput): BatchPayload! + updateManyTeamProfiles(data: TeamProfileUpdateInput!, where: TeamProfileWhereInput): BatchPayload! + updateManyMemberProfiles(data: MemberProfileUpdateInput!, where: MemberProfileWhereInput): BatchPayload! + updateManyMembers(data: MemberUpdateInput!, where: MemberWhereInput): BatchPayload! + deleteManyTeams(where: TeamWhereInput): BatchPayload! + deleteManyTeamMemberses(where: TeamMembersWhereInput): BatchPayload! + deleteManyTeamProfiles(where: TeamProfileWhereInput): BatchPayload! + deleteManyMemberProfiles(where: MemberProfileWhereInput): BatchPayload! + deleteManyMembers(where: MemberWhereInput): BatchPayload! +} + +enum MutationType { + CREATED + UPDATED + DELETED +} + +"""An object with an ID""" +interface Node { + """The id of the object.""" + id: ID! +} + +"""Information about pagination in a connection.""" +type PageInfo { + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! + + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! + + """When paginating backwards, the cursor to continue.""" + startCursor: String + + """When paginating forwards, the cursor to continue.""" + endCursor: String +} + +type Query { + teams(where: TeamWhereInput, orderBy: TeamOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Team]! + teamMemberses(where: TeamMembersWhereInput, orderBy: TeamMembersOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamMembers]! + teamProfiles(where: TeamProfileWhereInput, orderBy: TeamProfileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamProfile]! + memberProfiles(where: MemberProfileWhereInput, orderBy: MemberProfileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [MemberProfile]! + members(where: MemberWhereInput, orderBy: MemberOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Member]! + team(where: TeamWhereUniqueInput!): Team + teamMembers(where: TeamMembersWhereUniqueInput!): TeamMembers + teamProfile(where: TeamProfileWhereUniqueInput!): TeamProfile + memberProfile(where: MemberProfileWhereUniqueInput!): MemberProfile + member(where: MemberWhereUniqueInput!): Member + teamsConnection(where: TeamWhereInput, orderBy: TeamOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamConnection! + teamMembersesConnection(where: TeamMembersWhereInput, orderBy: TeamMembersOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamMembersConnection! + teamProfilesConnection(where: TeamProfileWhereInput, orderBy: TeamProfileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamProfileConnection! + memberProfilesConnection(where: MemberProfileWhereInput, orderBy: MemberProfileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): MemberProfileConnection! + membersConnection(where: MemberWhereInput, orderBy: MemberOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): MemberConnection! + + """Fetches an object given its ID""" + node( + """The ID of an object""" + id: ID! + ): Node +} + +enum Role { + OWNER + MANAGER + MEMBER +} + +type Subscription { + team(where: TeamSubscriptionWhereInput): TeamSubscriptionPayload + teamMembers(where: TeamMembersSubscriptionWhereInput): TeamMembersSubscriptionPayload + teamProfile(where: TeamProfileSubscriptionWhereInput): TeamProfileSubscriptionPayload + memberProfile(where: MemberProfileSubscriptionWhereInput): MemberProfileSubscriptionPayload + member(where: MemberSubscriptionWhereInput): MemberSubscriptionPayload +} + +type Team implements Node { + id: ID! + createdAt: DateTime! + name: String! + slug: String! + owner(where: MemberWhereInput): Member! + profile(where: TeamProfileWhereInput): TeamProfile + members(where: TeamMembersWhereInput, orderBy: TeamMembersOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamMembers!] + anonymous: Boolean! +} + +"""A connection to a list of items.""" +type TeamConnection { + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """A list of edges.""" + edges: [TeamEdge]! + aggregate: AggregateTeam! +} + +input TeamCreateInput { + name: String! + slug: String! + anonymous: Boolean + owner: MemberCreateOneInput! + profile: TeamProfileCreateOneInput + members: TeamMembersCreateManyWithoutTeamInput +} + +input TeamCreateOneWithoutMembersInput { + create: TeamCreateWithoutMembersInput + connect: TeamWhereUniqueInput +} + +input TeamCreateWithoutMembersInput { + name: String! + slug: String! + anonymous: Boolean + owner: MemberCreateOneInput! + profile: TeamProfileCreateOneInput +} + +"""An edge in a connection.""" +type TeamEdge { + """The item at the end of the edge.""" + node: Team! + + """A cursor for use in pagination.""" + cursor: String! +} + +type TeamMembers implements Node { + id: ID! + member(where: MemberWhereInput): Member + team(where: TeamWhereInput): Team + role: Role +} + +"""A connection to a list of items.""" +type TeamMembersConnection { + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """A list of edges.""" + edges: [TeamMembersEdge]! + aggregate: AggregateTeamMembers! +} + +input TeamMembersCreateInput { + role: Role + member: MemberCreateOneWithoutTeamsInput + team: TeamCreateOneWithoutMembersInput +} + +input TeamMembersCreateManyWithoutMemberInput { + create: [TeamMembersCreateWithoutMemberInput!] + connect: [TeamMembersWhereUniqueInput!] +} + +input TeamMembersCreateManyWithoutTeamInput { + create: [TeamMembersCreateWithoutTeamInput!] + connect: [TeamMembersWhereUniqueInput!] +} + +input TeamMembersCreateWithoutMemberInput { + role: Role + team: TeamCreateOneWithoutMembersInput +} + +input TeamMembersCreateWithoutTeamInput { + role: Role + member: MemberCreateOneWithoutTeamsInput +} + +"""An edge in a connection.""" +type TeamMembersEdge { + """The item at the end of the edge.""" + node: TeamMembers! + + """A cursor for use in pagination.""" + cursor: String! +} + +enum TeamMembersOrderByInput { + id_ASC + id_DESC + role_ASC + role_DESC + updatedAt_ASC + updatedAt_DESC + createdAt_ASC + createdAt_DESC +} + +type TeamMembersPreviousValues { + id: ID! + role: Role +} + +type TeamMembersSubscriptionPayload { + mutation: MutationType! + node: TeamMembers + updatedFields: [String!] + previousValues: TeamMembersPreviousValues +} + +input TeamMembersSubscriptionWhereInput { + """Logical AND on all given filters.""" + AND: [TeamMembersSubscriptionWhereInput!] + + """Logical OR on all given filters.""" + OR: [TeamMembersSubscriptionWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [TeamMembersSubscriptionWhereInput!] + + """ + The subscription event gets dispatched when it's listed in mutation_in + """ + mutation_in: [MutationType!] + + """ + The subscription event gets only dispatched when one of the updated fields names is included in this list + """ + updatedFields_contains: String + + """ + The subscription event gets only dispatched when all of the field names included in this list have been updated + """ + updatedFields_contains_every: [String!] + + """ + The subscription event gets only dispatched when some of the field names included in this list have been updated + """ + updatedFields_contains_some: [String!] + node: TeamMembersWhereInput +} + +input TeamMembersUpdateInput { + role: Role + member: MemberUpdateOneWithoutTeamsInput + team: TeamUpdateOneWithoutMembersInput +} + +input TeamMembersUpdateManyWithoutMemberInput { + create: [TeamMembersCreateWithoutMemberInput!] + connect: [TeamMembersWhereUniqueInput!] + disconnect: [TeamMembersWhereUniqueInput!] + delete: [TeamMembersWhereUniqueInput!] + update: [TeamMembersUpdateWithWhereUniqueWithoutMemberInput!] + upsert: [TeamMembersUpsertWithWhereUniqueWithoutMemberInput!] +} + +input TeamMembersUpdateManyWithoutTeamInput { + create: [TeamMembersCreateWithoutTeamInput!] + connect: [TeamMembersWhereUniqueInput!] + disconnect: [TeamMembersWhereUniqueInput!] + delete: [TeamMembersWhereUniqueInput!] + update: [TeamMembersUpdateWithWhereUniqueWithoutTeamInput!] + upsert: [TeamMembersUpsertWithWhereUniqueWithoutTeamInput!] +} + +input TeamMembersUpdateWithoutMemberDataInput { + role: Role + team: TeamUpdateOneWithoutMembersInput +} + +input TeamMembersUpdateWithoutTeamDataInput { + role: Role + member: MemberUpdateOneWithoutTeamsInput +} + +input TeamMembersUpdateWithWhereUniqueWithoutMemberInput { + where: TeamMembersWhereUniqueInput! + data: TeamMembersUpdateWithoutMemberDataInput! +} + +input TeamMembersUpdateWithWhereUniqueWithoutTeamInput { + where: TeamMembersWhereUniqueInput! + data: TeamMembersUpdateWithoutTeamDataInput! +} + +input TeamMembersUpsertWithWhereUniqueWithoutMemberInput { + where: TeamMembersWhereUniqueInput! + update: TeamMembersUpdateWithoutMemberDataInput! + create: TeamMembersCreateWithoutMemberInput! +} + +input TeamMembersUpsertWithWhereUniqueWithoutTeamInput { + where: TeamMembersWhereUniqueInput! + update: TeamMembersUpdateWithoutTeamDataInput! + create: TeamMembersCreateWithoutTeamInput! +} + +input TeamMembersWhereInput { + """Logical AND on all given filters.""" + AND: [TeamMembersWhereInput!] + + """Logical OR on all given filters.""" + OR: [TeamMembersWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [TeamMembersWhereInput!] + id: ID + + """All values that are not equal to given value.""" + id_not: ID + + """All values that are contained in given list.""" + id_in: [ID!] + + """All values that are not contained in given list.""" + id_not_in: [ID!] + + """All values less than the given value.""" + id_lt: ID + + """All values less than or equal the given value.""" + id_lte: ID + + """All values greater than the given value.""" + id_gt: ID + + """All values greater than or equal the given value.""" + id_gte: ID + + """All values containing the given string.""" + id_contains: ID + + """All values not containing the given string.""" + id_not_contains: ID + + """All values starting with the given string.""" + id_starts_with: ID + + """All values not starting with the given string.""" + id_not_starts_with: ID + + """All values ending with the given string.""" + id_ends_with: ID + + """All values not ending with the given string.""" + id_not_ends_with: ID + role: Role + + """All values that are not equal to given value.""" + role_not: Role + + """All values that are contained in given list.""" + role_in: [Role!] + + """All values that are not contained in given list.""" + role_not_in: [Role!] + member: MemberWhereInput + team: TeamWhereInput +} + +input TeamMembersWhereUniqueInput { + id: ID +} + +enum TeamOrderByInput { + id_ASC + id_DESC + createdAt_ASC + createdAt_DESC + name_ASC + name_DESC + slug_ASC + slug_DESC + anonymous_ASC + anonymous_DESC + updatedAt_ASC + updatedAt_DESC +} + +type TeamPreviousValues { + id: ID! + createdAt: DateTime! + name: String! + slug: String! + anonymous: Boolean! +} + +type TeamProfile implements Node { + id: ID! + createdAt: DateTime! + description: String + motto: String + avatar: String +} + +"""A connection to a list of items.""" +type TeamProfileConnection { + """Information to aid in pagination.""" + pageInfo: PageInfo! + + """A list of edges.""" + edges: [TeamProfileEdge]! + aggregate: AggregateTeamProfile! +} + +input TeamProfileCreateInput { + description: String + motto: String + avatar: String +} + +input TeamProfileCreateOneInput { + create: TeamProfileCreateInput + connect: TeamProfileWhereUniqueInput +} + +"""An edge in a connection.""" +type TeamProfileEdge { + """The item at the end of the edge.""" + node: TeamProfile! + + """A cursor for use in pagination.""" + cursor: String! +} + +enum TeamProfileOrderByInput { + id_ASC + id_DESC + createdAt_ASC + createdAt_DESC + description_ASC + description_DESC + motto_ASC + motto_DESC + avatar_ASC + avatar_DESC + updatedAt_ASC + updatedAt_DESC +} + +type TeamProfilePreviousValues { + id: ID! + createdAt: DateTime! + description: String + motto: String + avatar: String +} + +type TeamProfileSubscriptionPayload { + mutation: MutationType! + node: TeamProfile + updatedFields: [String!] + previousValues: TeamProfilePreviousValues +} + +input TeamProfileSubscriptionWhereInput { + """Logical AND on all given filters.""" + AND: [TeamProfileSubscriptionWhereInput!] + + """Logical OR on all given filters.""" + OR: [TeamProfileSubscriptionWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [TeamProfileSubscriptionWhereInput!] + + """ + The subscription event gets dispatched when it's listed in mutation_in + """ + mutation_in: [MutationType!] + + """ + The subscription event gets only dispatched when one of the updated fields names is included in this list + """ + updatedFields_contains: String + + """ + The subscription event gets only dispatched when all of the field names included in this list have been updated + """ + updatedFields_contains_every: [String!] + + """ + The subscription event gets only dispatched when some of the field names included in this list have been updated + """ + updatedFields_contains_some: [String!] + node: TeamProfileWhereInput +} + +input TeamProfileUpdateDataInput { + description: String + motto: String + avatar: String +} + +input TeamProfileUpdateInput { + description: String + motto: String + avatar: String +} + +input TeamProfileUpdateOneInput { + create: TeamProfileCreateInput + connect: TeamProfileWhereUniqueInput + disconnect: Boolean + delete: Boolean + update: TeamProfileUpdateDataInput + upsert: TeamProfileUpsertNestedInput +} + +input TeamProfileUpsertNestedInput { + update: TeamProfileUpdateDataInput! + create: TeamProfileCreateInput! +} + +input TeamProfileWhereInput { + """Logical AND on all given filters.""" + AND: [TeamProfileWhereInput!] + + """Logical OR on all given filters.""" + OR: [TeamProfileWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [TeamProfileWhereInput!] + id: ID + + """All values that are not equal to given value.""" + id_not: ID + + """All values that are contained in given list.""" + id_in: [ID!] + + """All values that are not contained in given list.""" + id_not_in: [ID!] + + """All values less than the given value.""" + id_lt: ID + + """All values less than or equal the given value.""" + id_lte: ID + + """All values greater than the given value.""" + id_gt: ID + + """All values greater than or equal the given value.""" + id_gte: ID + + """All values containing the given string.""" + id_contains: ID + + """All values not containing the given string.""" + id_not_contains: ID + + """All values starting with the given string.""" + id_starts_with: ID + + """All values not starting with the given string.""" + id_not_starts_with: ID + + """All values ending with the given string.""" + id_ends_with: ID + + """All values not ending with the given string.""" + id_not_ends_with: ID + createdAt: DateTime + + """All values that are not equal to given value.""" + createdAt_not: DateTime + + """All values that are contained in given list.""" + createdAt_in: [DateTime!] + + """All values that are not contained in given list.""" + createdAt_not_in: [DateTime!] + + """All values less than the given value.""" + createdAt_lt: DateTime + + """All values less than or equal the given value.""" + createdAt_lte: DateTime + + """All values greater than the given value.""" + createdAt_gt: DateTime + + """All values greater than or equal the given value.""" + createdAt_gte: DateTime + description: String + + """All values that are not equal to given value.""" + description_not: String + + """All values that are contained in given list.""" + description_in: [String!] + + """All values that are not contained in given list.""" + description_not_in: [String!] + + """All values less than the given value.""" + description_lt: String + + """All values less than or equal the given value.""" + description_lte: String + + """All values greater than the given value.""" + description_gt: String + + """All values greater than or equal the given value.""" + description_gte: String + + """All values containing the given string.""" + description_contains: String + + """All values not containing the given string.""" + description_not_contains: String + + """All values starting with the given string.""" + description_starts_with: String + + """All values not starting with the given string.""" + description_not_starts_with: String + + """All values ending with the given string.""" + description_ends_with: String + + """All values not ending with the given string.""" + description_not_ends_with: String + motto: String + + """All values that are not equal to given value.""" + motto_not: String + + """All values that are contained in given list.""" + motto_in: [String!] + + """All values that are not contained in given list.""" + motto_not_in: [String!] + + """All values less than the given value.""" + motto_lt: String + + """All values less than or equal the given value.""" + motto_lte: String + + """All values greater than the given value.""" + motto_gt: String + + """All values greater than or equal the given value.""" + motto_gte: String + + """All values containing the given string.""" + motto_contains: String + + """All values not containing the given string.""" + motto_not_contains: String + + """All values starting with the given string.""" + motto_starts_with: String + + """All values not starting with the given string.""" + motto_not_starts_with: String + + """All values ending with the given string.""" + motto_ends_with: String + + """All values not ending with the given string.""" + motto_not_ends_with: String + avatar: String + + """All values that are not equal to given value.""" + avatar_not: String + + """All values that are contained in given list.""" + avatar_in: [String!] + + """All values that are not contained in given list.""" + avatar_not_in: [String!] + + """All values less than the given value.""" + avatar_lt: String + + """All values less than or equal the given value.""" + avatar_lte: String + + """All values greater than the given value.""" + avatar_gt: String + + """All values greater than or equal the given value.""" + avatar_gte: String + + """All values containing the given string.""" + avatar_contains: String + + """All values not containing the given string.""" + avatar_not_contains: String + + """All values starting with the given string.""" + avatar_starts_with: String + + """All values not starting with the given string.""" + avatar_not_starts_with: String + + """All values ending with the given string.""" + avatar_ends_with: String + + """All values not ending with the given string.""" + avatar_not_ends_with: String +} + +input TeamProfileWhereUniqueInput { + id: ID +} + +type TeamSubscriptionPayload { + mutation: MutationType! + node: Team + updatedFields: [String!] + previousValues: TeamPreviousValues +} + +input TeamSubscriptionWhereInput { + """Logical AND on all given filters.""" + AND: [TeamSubscriptionWhereInput!] + + """Logical OR on all given filters.""" + OR: [TeamSubscriptionWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [TeamSubscriptionWhereInput!] + + """ + The subscription event gets dispatched when it's listed in mutation_in + """ + mutation_in: [MutationType!] + + """ + The subscription event gets only dispatched when one of the updated fields names is included in this list + """ + updatedFields_contains: String + + """ + The subscription event gets only dispatched when all of the field names included in this list have been updated + """ + updatedFields_contains_every: [String!] + + """ + The subscription event gets only dispatched when some of the field names included in this list have been updated + """ + updatedFields_contains_some: [String!] + node: TeamWhereInput +} + +input TeamUpdateInput { + name: String + slug: String + anonymous: Boolean + owner: MemberUpdateOneInput + profile: TeamProfileUpdateOneInput + members: TeamMembersUpdateManyWithoutTeamInput +} + +input TeamUpdateOneWithoutMembersInput { + create: TeamCreateWithoutMembersInput + connect: TeamWhereUniqueInput + disconnect: Boolean + delete: Boolean + update: TeamUpdateWithoutMembersDataInput + upsert: TeamUpsertWithoutMembersInput +} + +input TeamUpdateWithoutMembersDataInput { + name: String + slug: String + anonymous: Boolean + owner: MemberUpdateOneInput + profile: TeamProfileUpdateOneInput +} + +input TeamUpsertWithoutMembersInput { + update: TeamUpdateWithoutMembersDataInput! + create: TeamCreateWithoutMembersInput! +} + +input TeamWhereInput { + """Logical AND on all given filters.""" + AND: [TeamWhereInput!] + + """Logical OR on all given filters.""" + OR: [TeamWhereInput!] + + """Logical NOT on all given filters combined by AND.""" + NOT: [TeamWhereInput!] + id: ID + + """All values that are not equal to given value.""" + id_not: ID + + """All values that are contained in given list.""" + id_in: [ID!] + + """All values that are not contained in given list.""" + id_not_in: [ID!] + + """All values less than the given value.""" + id_lt: ID + + """All values less than or equal the given value.""" + id_lte: ID + + """All values greater than the given value.""" + id_gt: ID + + """All values greater than or equal the given value.""" + id_gte: ID + + """All values containing the given string.""" + id_contains: ID + + """All values not containing the given string.""" + id_not_contains: ID + + """All values starting with the given string.""" + id_starts_with: ID + + """All values not starting with the given string.""" + id_not_starts_with: ID + + """All values ending with the given string.""" + id_ends_with: ID + + """All values not ending with the given string.""" + id_not_ends_with: ID + createdAt: DateTime + + """All values that are not equal to given value.""" + createdAt_not: DateTime + + """All values that are contained in given list.""" + createdAt_in: [DateTime!] + + """All values that are not contained in given list.""" + createdAt_not_in: [DateTime!] + + """All values less than the given value.""" + createdAt_lt: DateTime + + """All values less than or equal the given value.""" + createdAt_lte: DateTime + + """All values greater than the given value.""" + createdAt_gt: DateTime + + """All values greater than or equal the given value.""" + createdAt_gte: DateTime + name: String + + """All values that are not equal to given value.""" + name_not: String + + """All values that are contained in given list.""" + name_in: [String!] + + """All values that are not contained in given list.""" + name_not_in: [String!] + + """All values less than the given value.""" + name_lt: String + + """All values less than or equal the given value.""" + name_lte: String + + """All values greater than the given value.""" + name_gt: String + + """All values greater than or equal the given value.""" + name_gte: String + + """All values containing the given string.""" + name_contains: String + + """All values not containing the given string.""" + name_not_contains: String + + """All values starting with the given string.""" + name_starts_with: String + + """All values not starting with the given string.""" + name_not_starts_with: String + + """All values ending with the given string.""" + name_ends_with: String + + """All values not ending with the given string.""" + name_not_ends_with: String + slug: String + + """All values that are not equal to given value.""" + slug_not: String + + """All values that are contained in given list.""" + slug_in: [String!] + + """All values that are not contained in given list.""" + slug_not_in: [String!] + + """All values less than the given value.""" + slug_lt: String + + """All values less than or equal the given value.""" + slug_lte: String + + """All values greater than the given value.""" + slug_gt: String + + """All values greater than or equal the given value.""" + slug_gte: String + + """All values containing the given string.""" + slug_contains: String + + """All values not containing the given string.""" + slug_not_contains: String + + """All values starting with the given string.""" + slug_starts_with: String + + """All values not starting with the given string.""" + slug_not_starts_with: String + + """All values ending with the given string.""" + slug_ends_with: String + + """All values not ending with the given string.""" + slug_not_ends_with: String + anonymous: Boolean + + """All values that are not equal to given value.""" + anonymous_not: Boolean + owner: MemberWhereInput + profile: TeamProfileWhereInput + members_every: TeamMembersWhereInput + members_some: TeamMembersWhereInput + members_none: TeamMembersWhereInput +} + +input TeamWhereUniqueInput { + id: ID + name: String + slug: String +} diff --git a/packages/aateam-api/src/helpers/validateAndParseIdToken.js b/packages/aateam-api/src/helpers/validateAndParseIdToken.js new file mode 100644 index 000000000..6317d5a5e --- /dev/null +++ b/packages/aateam-api/src/helpers/validateAndParseIdToken.js @@ -0,0 +1,29 @@ +const jwksClient = require('jwks-rsa') +const jwt = require('jsonwebtoken') +const jwks = jwksClient({ + cache: true, + rateLimit: true, + jwksRequestsPerMinute: 1, + jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json` +}) + +const validateAndParseIdToken = idToken => + new Promise((resolve, reject) => { + const { header, payload } = jwt.decode(idToken, { complete: true }) + if (!header || !header.kid || !payload) reject(new Error('Invalid Token')) + jwks.getSigningKey(header.kid, (err, key) => { + if (err) reject(new Error('Error getting signing key: ' + err.message)) + jwt.verify( + idToken, + key.publicKey, + { algorithms: ['RS256'] }, + (err, decoded) => { + if (err) reject('jwt verify error: ' + err.message) + console.log('jwks-verify: ', decoded) + resolve(decoded) + } + ) + }) + }) + +module.exports = validateAndParseIdToken diff --git a/packages/aateam-api/src/index.js b/packages/aateam-api/src/index.js new file mode 100644 index 000000000..6ef516632 --- /dev/null +++ b/packages/aateam-api/src/index.js @@ -0,0 +1,237 @@ +const { GraphQLServer } = require('graphql-yoga') +const { + Prisma, + extractFragmentReplacements, + forwardTo +} = require('prisma-binding') +const { makeExecutableSchema } = require('graphql-tools') +const { importSchema } = require('graphql-import') +const { checkJwt } = require('./middleware/jwt') +const { getMember } = require('./middleware/getMember') +const validateAndParseIdToken = require('./helpers/validateAndParseIdToken') +const { directiveResolvers } = require('./directives') + +const createPrismaMember = async function (ctx, info, idToken) { + console.log('createPrismaMember', idToken) + const member = await ctx.db.mutation.upsertMember({ + where: { + auth0id: idToken.sub, + }, + create: { + auth0id: idToken.sub, + nickname: idToken.nickname, + profile: { + create: { + email: idToken.email, + avatar: idToken.picture + } + } + }, + update: { + auth0id: idToken.sub, + nickname: idToken.nickname, + profile: { + update: { + email: idToken.email, + avatar: idToken.picture + } + } + } + }, info) + return member +} +const ctxMember = ctx => ctx.request.member + +const resolvers = { + Query: { + async member(parent, { auth0id }, ctx, info) { + return ctx.db.query.member({ where: { auth0id } }, info) + }, + teams(parent, args, ctx, info) { + return ctx.db.query.teamsConnection({}, + `{ + edges { + node { + id + name + slug + profile { + avatar + description + motto + } + owner { + nickname + visible + profile { + avatar + } + } + members { + role + member { + nickname + visible + profile { + avatar + } + } + } + } + } + }`) + }, + async teamById(parent, { id }, ctx, info) { + return ctx.db.query.team({ where: { id } }, info) + }, + async teamByName(parent, { name }, ctx, info) { + return ctx.db.query.team({ where: { name: name } }, `{ name }`) + }, + async teamByOwner(parent, { ownerId }, ctx, info) { + return ctx.db.query.teamsConnection({where: { owner: { auth0id: ownerId }}}, + `{ + edges { + node { + id + name + slug + profile { + avatar + description + motto + } + owner { + auth0id + nickname + visible + profile { + avatar + } + } + members { + role + member { + nickname + visible + profile { + avatar + } + } + } + } + } + }`) + }, + async owner(parent, args, ctx, info) { + console.log('resolver.query.owner ctx: ', ctxMember(ctx)) + return ctx.db.query.member({ where: { id: ctxMember(ctx).auth0id } }, info) + }, + members: forwardTo('db') + }, + Mutation: { + async authenticate(parent, { idToken }, ctx, info) { + let memberToken = null + try { + memberToken = await validateAndParseIdToken(idToken) + console.log('authenticate.memberToken: ', await memberToken) + } catch (err) { + console.log('authenticat.validateAndParseIdToken err: ', err) + throw new Error(err.message) + } + const auth0id = memberToken.sub + let member = await ctx.db.query.member({ where: { auth0id } }, info) + + if (!member) { + try { + return createPrismaMember(ctx, info, memberToken) + } catch (error) { + try { + return createPrismaMember(ctx, info, memberToken) + } catch (error) { + throw new Error(error.message) + } + } + } + return member + }, + async createTeam(parent, { name, slug, owner }, ctx, info) { + ctx.db.mutation.createTeam({ + data: { + name: name, + slug: slug, + owner: {connect:{auth0id: owner}}, + members: {create: {role: 'OWNER', member: {connect: {auth0id: owner}}}} + } + }, info) + }, + async deleteTeam(parent, { id, owner }, ctx, info) { + ctx.db.mutation.deleteTeam({ where: { id, member: {where: { auth0id: owner } } } }, owner) + } + } +} + +const db = new Prisma({ + fragmentReplacements: extractFragmentReplacements(resolvers), + typeDefs: 'src/generated/prisma.graphql', + endpoint: process.env.PRISMA_ENDPOINT, + secret: process.env.PRISMA_SECRET, + debug: true +}) + +console.log(process.env.PRISMA_ENDPOINT) +const schema = makeExecutableSchema({ + typeDefs: importSchema('src/schema.graphql'), + resolvers, + resolverValidationOptions :{ requireResolversForResolveType: false }, + directiveResolvers +}) + +const server = new GraphQLServer({ + schema, + context: req => ({ + ...req, + db + }) +}) + +server.express.post( + server.options.endpoint, + checkJwt, + (err, req, res, next) => { + console.log('server.express.post:',err, req, res, next, req.token) + if (err) return res.status(401).send(err.message) + next() + } +) + +server.express.post(server.options.endpoint, (req, res, done) => + getMember(req, res, done, db) +) + +const whitelist = [ + 'http://localhost:8000', + 'http://localhost:1337', + 'http://localhost:3000', + 'http://localhost:4000', + 'http://0.0.0.0:5000' +] +const corsOptionsDelegate = (req, callback) => { + var corsOptions + if (whitelist.indexOf(req.header('Origin')) !== -1) { + corsOptions = { origin: true, credentials: true } // reflect (enable) the requested origin in the CORS response + } else { + corsOptions = { origin: false, credentials: true } // disable CORS for this request + } + callback(null, corsOptions) // callback expects two parameters: error and options +} + +const options = { + cors: corsOptionsDelegate, + endpoint: '/graphql', + subscriptions: '/graphql', + playground: '/playground' +} + +server.start(options, () => console.log(`Server is running on http://localhost:4000${server.options.endpoint}`)) + +module.exports= { createPrismaMember } diff --git a/packages/aateam-api/src/middleware/getMember.js b/packages/aateam-api/src/middleware/getMember.js new file mode 100644 index 000000000..71b018c14 --- /dev/null +++ b/packages/aateam-api/src/middleware/getMember.js @@ -0,0 +1,10 @@ +const getMember = async (req, res, next, db) => { + if (!req.user) return next() + const member = await db.query.member({ + where: { auth0id: req.user.sub } + }) + req.user = { token: req.member, ...member } + next() +} + +module.exports = { getMember } diff --git a/packages/aateam-api/src/middleware/jwt.js b/packages/aateam-api/src/middleware/jwt.js new file mode 100644 index 000000000..39e8ecbe3 --- /dev/null +++ b/packages/aateam-api/src/middleware/jwt.js @@ -0,0 +1,24 @@ +const jwt = require('express-jwt') +const jwksRsa = require('jwks-rsa') +// Authentication middleware. When used, the +// if the access token exists, it be verified against +// the Auth0 JSON Web Key Set +const checkJwt = jwt({ + // Dynamically provide a signing key + // based on the kid in the header and + // the signing keys provided by the JWKS endpoint. + secret: jwksRsa.expressJwtSecret({ + cache: true, + rateLimit: true, + jwksRequestsPerMinute: 1, + jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json` + }), + + // Validate the audience and the issuer. + credentialsRequired: false, + audience: process.env.AUTH0_AUDIENCE, + issuer: process.env.AUTH0_ISSUER, + algorithms: [`RS256`] +}) + +module.exports = { checkJwt } diff --git a/packages/aateam-api/src/schema.graphql b/packages/aateam-api/src/schema.graphql new file mode 100644 index 000000000..56c7b07b2 --- /dev/null +++ b/packages/aateam-api/src/schema.graphql @@ -0,0 +1,35 @@ +# import Query.members, Query.TeamConnection, Team from "./generated/prisma.graphql" + +directive @isAuthenticated on QUERY | FIELD | MUTATION +directive @hasRole(roles: [String]) on QUERY | FIELD | MUTATION +directive @isOwner(type: String) on QUERY | MUTATION +directive @isOwnerOrHasRole(type: String, roles: [String]) on QUERY | MUTATION + +type Query { + teams: TeamConnection + teamDetails: [Team!]! @isAuthenticated + teamByName(name: String!): Team + teamById(teamId: String!): Team + teamByOwner(ownerId: String!): TeamConnection + owner: Member @isAuthenticated + member(auth0id: String!): Member @isAuthenticated +} + +type Mutation { + authenticate(idToken: String!): Member + createTeam(name: String!, slug: String, owner: String): Team @isAuthenticated + deleteTeam(id: ID!, owner: String!): Team @isOwnerOrHasRole(type: "Member", roles: ["OWNER"]) + updateProfile(data: MemberProfileInput): Member @isAuthenticated +} + +input MemberProfileInput { + auth0id: String! + nickname: String! + anonymous: Boolean + visible: Boolean + avatar: String + email: String + repo: String + bio: String + status: String +} diff --git a/packages/aateam-client/.babelrc b/packages/aateam-client/.babelrc new file mode 100644 index 000000000..11f905f29 --- /dev/null +++ b/packages/aateam-client/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + ["@babel/env", { + "modules": false + }] + ], + "plugins": [ + "syntax-dynamic-import", + ["transform-react-jsx", { "pragma": "h" }] + ] +} diff --git a/packages/aateam-client/.dockerignore b/packages/aateam-client/.dockerignore new file mode 100644 index 000000000..1d9642c3b --- /dev/null +++ b/packages/aateam-client/.dockerignore @@ -0,0 +1,7 @@ +.git +.cache +dist +build +.DS_Store +node_modules +npm-debug.log diff --git a/packages/aateam-client/.env.sample b/packages/aateam-client/.env.sample new file mode 100644 index 000000000..13035ff91 --- /dev/null +++ b/packages/aateam-client/.env.sample @@ -0,0 +1,11 @@ +PORT=5000 +NODE_ENV=development + +DEV_GRAPHQL=http://localhost:9090/graphql +PROD_GRAPHQL=https://production.com/graphql + +AUTH0_DOMAIN= +AUTH0_AUDIENCE= +AUTH0_ISSUER= +AUTH0_CLIENTID= +AUTH0_CALLBACKURL= diff --git a/packages/aateam-client/.eslintrc b/packages/aateam-client/.eslintrc new file mode 100644 index 000000000..e3578aadf --- /dev/null +++ b/packages/aateam-client/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "standard" +} diff --git a/packages/aateam-client/.gitignore b/packages/aateam-client/.gitignore new file mode 100644 index 000000000..64458ae7a --- /dev/null +++ b/packages/aateam-client/.gitignore @@ -0,0 +1,71 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# Build folder js files +build/ +dist/ + +# Visual Studio Code +.vscode + +# JetBrains ide +.idea + +#Mac specific files +.DS_Store diff --git a/packages/aateam-client/Dockerfile b/packages/aateam-client/Dockerfile new file mode 100644 index 000000000..740cc1c3e --- /dev/null +++ b/packages/aateam-client/Dockerfile @@ -0,0 +1,29 @@ +FROM mhart/alpine-node + +ENV PORT=5000 +ENV NODE_ENV=development +ENV APP_PATH=/var/www/application + +RUN apk update && apk upgrade && \ + apk add --no-cache bash git + +# Create app directory +RUN mkdir -p $APP_PATH + +# Use app directory as current workdir +WORKDIR $APP_PATH + +# Copy package.json to workdir +COPY package.json . + +# Install dependencies +RUN npm install + +# Copy application code +COPY . . + +# Expose Port +EXPOSE $PORT + +# Run command +CMD npm run develop diff --git a/packages/aateam-client/README.md b/packages/aateam-client/README.md new file mode 100644 index 000000000..243701ffd --- /dev/null +++ b/packages/aateam-client/README.md @@ -0,0 +1,108 @@ +# Advance Algos Team Client-side Application + +This is the Advanced Algos Team Module client-side web app a.k.a. single-page-application (SPA). We use Webpack 4 + Docker to develop locally, then build to a distribution bundle that can then be uploaded via FTP, git or used with a continuous integration workflow. + +This webapp's server-side component is the [aateam-api package](../aateam-api#README). + +For more information on the general architecture and related technology of this module, please visit this repos [main documenation](../../docs#README). + +## Getting Started + +Run +``` + npm install +``` +then +``` + npm run develop +``` + +### Using Docker + +Get latest Docker and Docker Compose: [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/) + +#### Using Docker container for Development + +To run starter kit in development mode with hot code reload execute: + +Run docker container in background: + +``` +docker-compose up -d +``` + +If image issues, try running: +``` +docker-compose up --build +``` +then run +``` +docker-compose up -d +``` + +To view logs +``` +docker-compose logs -f -t +``` +Hit Ctrl + c to exit logs without stopping service + +To stop service +``` +docker-compose down +``` + +## Overview +The development architecture of the Algobots Community site is to allow both rapid initial development and ongoing rapid-evolution. As with any opinionated workflow, there's a learning curve, but the libraries and architecture of this application have been chosen to maximize collaboration, flexibility, and extensibility. + +### Main Libraries + +- [*Webpack 4*](https://webpack.js.org/):web application bundler. Allows us to us latest newer JS ECMA features that increase productivity and code clarity. Also allows additional libraries such as modular and programmable CSS via SASS/SCSS/LESS. Provides webserver for local development. +- [*Bulma CSS Framework*](https://bulma.io/documentation/): Bulma is a highly-customizable CSS-only framework allowing us to quickly prototype the layout of a webapp without being complicated by opinionated functionality represented in libraries such as Bootstrap or Material UI. Grants us the flexibility to create a custom look at top speed whilst minimizing baggage. +- [*HyperApp*](https://github.com/hyperapp/hyperapp): Allows a controlled Flux-styled approach to state-management and data-flow through components like React minus the excess boilerplate and learning curve. +- [*Docker*](https://www.docker.com/what-docker) + +### File organization + +``` +. # Top level directory located at your choice +├── src +│ ├── actions # Actions are functions that change the app state +│ ├── assets # images, logos and other static assets +│ ├── state # Schema of state — the single source of truth concerning app state. +│ ├── styles # SASS/SCSS styles +│ ├── utils # Local storage and other utils +│ └── views # Main folder for editing site content +│ ├─ nav # Nav components — header, footer, etc. +│ ├─ pages # Nav components — header, footer, etc. +│ │ ├─ landing # Homepage +│ │ │ ├─ sections # Homepage sections. Collated in its own index.js +│ │ │ └─ index.js # Main homepage component. Pulls in sections +│ │ └─ ... # Other page/component folders +│ └─ index.js # Main view container. Main router +├── html +│ └── index.html # index.html template pulled in by Webpack to attach transpiled bundles +├── index.js # JS entry point to website +│ +├── tools # utility scripts, mostly for webpack configuration +│ +├── node_modules # created by running `npm install` in this packages root dir +├── dist # created by `npm run develop` - a cache of bundled files served by Webpack for local development +└── build # created by `npm run build` - location of deployable production bundle + +``` + +## Deployment + +The simplest deployment is compiling/transpiling the site to a distribution bundle and then uploading the files in the bundle to a web-accessible folder or storage. + +For this application we use Webpack to transpile the application which combines and minimizes all code and assets into an optimized bundle without and of the development code and resources. + +To build, run: +``` + npm run build +``` +Looking in this packages directory, there should be a ./build directory with the final built files that can be uploaded. + +### Deployment instructions + +Coming soon... diff --git a/packages/aateam-client/docker-compose.yml b/packages/aateam-client/docker-compose.yml new file mode 100644 index 000000000..ab6dfd9c2 --- /dev/null +++ b/packages/aateam-client/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' + +services: + app: + build: + context: . + dockerfile: Dockerfile + environment: + NODE_ENV: development + ports: + - "5000:5000" + - "4536:4536" + expose: + - "5000" + - "4536" + volumes: + - .:/var/www/application + - /var/www/application/node_modules + container_name: aateam-client diff --git a/packages/aateam-client/html/aa-logo.png b/packages/aateam-client/html/aa-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9701ee1c0e1858370837bc61930333be69bc4cd6 GIT binary patch literal 4770 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 CP}HCR literal 0 HcmV?d00001 diff --git a/packages/aateam-client/html/android-chrome-192x192.png b/packages/aateam-client/html/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..150043a067d25f23a50da98a6210b918f475fc2f GIT binary patch literal 2515 zcma);c|6pM0>yu`8A}+KON2(2#!lDPaI<8|KE_U%8f(aqFoem?zJ!uJV@YJY6vjRz z`+hx!ipgFgMpU+W-e2$i`OfEa&i8ZvI{%(TjD-;=yAV470G!4*^s#58{>QA4v-AKL zsGb4prE9JW0QHYKj&H%vI_MtONDrtT6aIWwTrg%f24+5ip8toKOy-Kw)fEGE=HcP0 z*|n41-J`XYH5;Q1SM2VK=igt~{2Uwp;*0wlcK2|ewjCdR(9^N=EGz2CTxDI@N-is3PD=8K!+-~G)Pkzr;o2vBo$yW zHEbgpZui17gCnuiX(!{_>*!h0O-qum6w@B(Yc`P--EuQ3#?geP9FytBcF|z5yBdW> zxIuJenE`}N-H9Qlh$!`k4jG6laSj8TH(tWM)#yT^)W(l7T*%f~Rzk8N@M8zqwgg`2 zih)rg;ot{x@Esz!0JuzLBm5Wn0_C}Mtck*vxVI4U{j4YF8j%2gQ9i zX|GQJy*lAykM?d>qE7pcguOY{W@E>V;N zTQU_2=w|8#HM)Ze-6j5nqc~g-Tm`bJw+yBCE+8)q$HV?+yHtkbN`5Cw2E(Bf!k@R$ zD+U^)jM(4)r3*q;y_w_s1=3k}Cb0|gQR`?AShYa7&wd;?`1z^dE~&kOKq?0NNMiz| z7B0tpF*ksq45=VE0A0fV98&F|91*au5uH=#YN~O~-q0-YbW?g}MDPekO`6~5i-76K zUg(nPfMGsG_1qjyHv)2aWqrQTEJ=n@vdwus+9xEFFssZK$j_z3{LH@!m8^~ErgGCm z0ruW_Ye2DNvS|hHtXR}ndLs;&$gb8{0O;2ZX9ge3m_}%Tbc}z6kouz34nC-97J*j+ z>P#?mLq!hF&QkHT&ZaOvplY5)6f|~;7Yja_P84kX7AOqGgw#uBCc}-1^9R;2HBh>G zHvemjBCBqoVLLjbB~U10NnIc`K1rM2J!CW=vo>!VVeRS_IS$*w`8{nMDPm|yhj{O8 zai?=~6N@EY8&b`NCItz9yR<>Hj=quLRhMgWa+ArH+BmoTg$p>9Q$UzbyzB0b`~0vUU7MKuOB3*x+H=3g0OBT+rAG8-;cmxh;3i{m#GzVM zC!Ixps#Z7N6-Ih31B*9j1a%N#dBfe~9V>|CRue=+5vAl8T4(0HSWvs5t!Of7$@g9u zS7eB1)doUFgbQPr=()tMLLODeZg7C@{*Xw6k+lq*eti;x%2O4m3D|o(R9>a+7Aftu zo&I&p)_~v0Uvz*`%1f)$MWNHNhBeg9JwY$hHOKf>OK6A&fLWsvHM6@-jYx9pTBmyW zPE|PYCc8$KuzVdoanRBr8d;{M!iN>qpZ5*kJ!MBnrzDVxT;4}apLUG zLe>?c+8-6P%jEoN{?SSPAeHio2cKf{_7@2$TbA|mKzyp@JF}(r-Mr&gyx&DL2QZ1< z-L9ws$-e|~ZNA#qrmi7@icVGknPMC8L3p{t*$kt1w|%puLk!}GWfxv9YN#zl#;aLwXRWn;=ikS8|p9*?rrH@wK^>u2F0#>7Aua zzt7w%?Y7~lRISu*oa&;@?``k*bH4)RF2Q?i?0f-Ex3>qkE@3rE#&WF;Z#D1;XV*~I zY81dL;$$_J;wO>Al;aK7CJhd%w4HbIgF4X6+n2dgs*ZeHb6>n?O<48_?oavpdDyP- z!LxC+#bJJPejQKSdhd8a)QRG4mvuJII_HYA>Q|S{TLqLhAW7Fjt!!7`2P)<5zCtnD zE8Lkq9A?tP&^pE=Z{$srR_7rZ8!kbGdQ-Kh1AK~Wf1;|0S$fZg&@h@4?MpemAYkjd zcQs4+IR*bz|Her#UlQ|l%PE97QEylABdstpFn4{@=ws0Q>W6aO+LMP-?w0?shuD;1 z)wE}-BtM8~li&5~Pp0sfsh&na_wj|cNycO9&#O4iJ3}bq_oKN}`)slr5%-(s{OI(y0@K6cu1drfee7-EcV6nLQu zty=Ul^chTs=G?J~&eU4Wc*BBAW27BGD1Luwor``?Ok}>m-8V|+f)9dlSdK?mT-=?8vxJ>rtY1)=u52j%n8rid~TL60-MobM?@I)^WYe?_t3`PFVA(`Y6vg|+MqRy)ux;~O92{*? z)qzdx9a$|6e`89s?hZwmCYK+{g?(V{5Epzyp}9;^z2bDN8>lJGABkak{v>x@&%6e64J%JZRlMx$>8~ zi@WU#(K^|y&BCuEvqa=x{mJ*a6-|%@iI)!5_+LbW3EbTDQz%8h83DRGxynZ1XAaGkjo?_gH^26e)X{R#KF4%uXMlon0+K>YaTEMM)+wA^xb5WtR!zjok&N z&u#LaofrFX8;4-*txzN(D8SRl&jT4uBzPcw2*G#&2rF1-oMR2NL!pK&hewQ8u>eGz zLjljhE6!{Bgb%`t)F-LDb%%(*wm}ZlrU!aQdWC!8!=xKz69wRl08cPOPc`do0x&kP K(680Q#rzwV-;{R% literal 0 HcmV?d00001 diff --git a/packages/aateam-client/html/android-chrome-512x512.png b/packages/aateam-client/html/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d98b9ce8dfd54d6032578443e2fbcd100ded89d3 GIT binary patch literal 6543 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 literal 0 HcmV?d00001 diff --git a/packages/aateam-client/html/apple-touch-icon.png b/packages/aateam-client/html/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..95ec62746f406ac4380317ecac6e421082e89075 GIT binary patch literal 3064 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 + + + + + #da532c + + + diff --git a/packages/aateam-client/html/favicon-16x16.png b/packages/aateam-client/html/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..99bda00afe0b53c6844ec2924ab42b8084224fe3 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM*td0G|-oC+?P*$S1Q9Q;z5jjV*#G}eH@M4% zFtxQ5G*3A7;>)7tYEs%i8|0gcj+?SRpWd`F!giHnjIP?6-Q0Y+&Og@|xz``q@?w{_ za)q+8n&F33wH*DlW04+@&l#sfR-UsOAu{|Cy&nOiTJ zTUc4xd$I_#u!2j2$>9`c<;@`qr*B+2apcSqnIr6{8$1?x=`p+#7cBYYWI7dS1%s!n KpUXO@geCw#&&NOj literal 0 HcmV?d00001 diff --git a/packages/aateam-client/html/favicon-32x32.png b/packages/aateam-client/html/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..08c2369b05c014d615766ea699a4a355d454ed25 GIT binary patch literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaNh0(?STpSW9MBA?7cOhHmb9xo5e1==E8666=m`18dn79M*BrayZh-qaTI zmCkr?yu4|4beYn`w#~+>nYKWut@Cto46!(!8{D~VwE_=IWK-Af(%gUl&F{0ksr?$_ zr+wPT$%wP7&Q0OE$+VDrE7=c)Wysog^s~4=U$OJaqVqlR{CUgoZFtuEhS~9{f=x__ zzg$z!RIZd6$$i0hKboDLCid*mUjdy`^;UrmH|B9nTb6VvT+>^79Y;AZK-eEt`*#*_ z8%4Bi|HPQ_V54Hq&#(4p70!K|soiq_#Uyd3d2jyP9N1xb_Qb~4v)n?GD?$s31&_Rn z?b^m$AimK^^ZZLCmRk(dWhOSvNshGMx%hWXVZq8u8J)<2#QymSN7YX_=B$dll*51U zV?DFAedaZb8O<}^8$L9$Ni5g2G?Mn7lyP*|5do*W!e_IK7HT~U{WA5;CxJ^oSDtH3 zy&gHqVQy#IOvR2Tcb;AH7Mr^+=&5Lz%H-(RS9l)2I_dEC!Tu~Z=jYe|t)KL&Xz7Z2 z+2;Ji;jdSAPq7WYy|?GtquMe*ld0cw3)key-sW56Iz@Y_y%|?LOY5=&S45STif5)3 zE2{|A_$zCj`&tvSa%G)d-%_7mBs%pCTA7B)RSA|5B1SOU$6cpvBW#*(RlvEa^Dr6RvBr`Bn%z6BYhodk| zL*tbH=`)^BgBX~Vx%HB{g_VW9CyOu(E4Vb698O_Y-W;NE`o@(LN6s9PIl_Lr!DE4! a9>Xhf!IDo-rc;4dFnGH9xvX` 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 literal 0 HcmV?d00001 diff --git a/packages/aateam-client/html/index.html b/packages/aateam-client/html/index.html new file mode 100644 index 000000000..a6a5d9c04 --- /dev/null +++ b/packages/aateam-client/html/index.html @@ -0,0 +1,26 @@ + + + + + AlgoCommunity + + + + + + + + + + + + + + + + + + +
+ + diff --git a/packages/aateam-client/html/manifest.webmanifest b/packages/aateam-client/html/manifest.webmanifest new file mode 100644 index 000000000..002445914 --- /dev/null +++ b/packages/aateam-client/html/manifest.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "Advanced Algos", + "short_name": "Advanced Algos", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/packages/aateam-client/html/mstile-150x150.png b/packages/aateam-client/html/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..78a06c05a5974bb75c8c71e99d32a960ed0d6497 GIT binary patch literal 2535 zcmbVO`8OMg8coN(jU}Z)6ji&#T7+UOwM&R-il%Msp_ZtN3?4JVW?uxqLio^f-zwl8q z#N}s*R16aC3DDTM#&<&I;Fsf>f%92Zl3Pq%MMXORAV_zzvqmLMt(UW2OlygzQ^ok# zcDYB29Hl6!znJjpQl5rL@+tFhE)kt}KP^r6pXUD#g1zPlTO9o)3Brp$Wrf1Y_9^Yh z`Yt6Fx7}?Q|B6u~##hdWf73hn&6`G6Zo^KrpC3Jd7LmN_1cHZOhSk5GK3_GHL55qH z`cAXPzDNWpCaHy@D#v^_)E6w#8W~ivz%MZ?Uk{lU)MHd`}eF4C_;ZV==bjlUP~6d^RNG~vN^bafSL>y zl1ZJs5id)T=?)#iFjq=5gr?=mp@sh07hTZPp_zh1l{U+gy-!OwEi~Mpw@L&U`?8BO zgj~IcI~iu4?6>bZUUW%H;Z%#v&f4>+dWa=d`m1G47|*gt8~977J@l7lWiIVHY-nPR zmFO^1ShDcxI%(6Uezd3%Dqyi5qucM31I}-pT~_`)j%)^_)W^9McAz4ejz-YA1y4Dt z^`@JxSWvL;UdVCER%GU=U3D+XP41je=?iU6I~byC6bxg46iEoZ&vbp6H4~!Tx_IX& z-xFH2S!GADXEZ$cJdp`3N2IDd*hmVmuwPd{Appeu9oK5r?7PEWDE6S`UlUEh;e5LteoLP zwrwr9_uw-17+4^);`EW)-ADMV4ttYeRL;=Wb=2K`m@d*hxpZ2V39#VQP%4hrC+OZ; z_4#sRE9GMDhl`1VJNdKt2F1E03ght6gYyEhcjG7`8w>WSc95vztlaY=icleZHN@D_lrM!2_0dsHTaZ&UVOsVzOUZ@4;3v{`Ax_MwZ?1;z;`yJE%3R z_#UmYl6lQRdb6tfwu-5F=;M;`h__hBqvT8Y0xqSVgzkLHXbyV zASR@LIj#>8_&3e)HAPTT zjjNR#Gx-8VZfTx!_A8qveWC0Gzz;?eo~3$C*5>-C8)oLZ&#&3%1$xLoT^)+^!B_NI zHfZXP0Oclf1!%vsUp31pqh3QwVhy$!#HPuV66FrmNVRTz-Ix8ZKay+9SZ9j+v|)M_ zM!DQpRS`tuZ5h15Yqa;fhyUkUK%OrD=2X}@sgZoGb(kuCIl&qEG}lP1dmM|n`CdM_ z#4C)6t95i<0+PGe_H49>;+dRW{d(YG9-bM-n_y6zNIR$m<<7?_J6ozlSWem0E_W4+ zz*}*Oor#x%OLBJ}+QJ&-w4U`f;=o` zGmVp>9e>(hHFi`Ju0(7wtcFZ9uR`m4<$v$|wP;uISphRyBh-F4fcC8`X7`8+uBa$> z?-&k@+-fU^8osl_=q$6U=M20d*@WmS4t~nYSiDQ3%1&*9p4>9p4g_drZEjH@kn%^DRp|L@t;SF4;|-#3RZB|~mb#~MBQmPPN+zbl z>84<^>ZXVyjI9r|*g$w{Lgt6*qu&Vpb6w5pM!9XGu(H$JTYZKUM5D*s6iXwB z!nS+xaF9t$E3l=;L1OUC>zoF)Gok4N36~h<=sXvr*1oIB)n}c$2HrgXK=L1V?sTvG z10vjVYr4)>^-++VW%i2y_)!XH;2PQN3Rk=+E6#5qx`>h5 zc(NCi6>QNoGrghaOLZu{Fe@1-T@i9t>rQcxLDIYD@+I<|$0`Gya4ybz zO)1G6xS|gHjA7{7TdaJ$d*=px_1?B~C-Wk+_DFpN;o2Q7`=}^Qj@MW%VL5U0!*8l+@*M5#LB{do6)Vsx_4tE?=kT=p zj6^=+y0DLSD`F0#sH(^SB|sv5AHNSsj8yXKFhp#W~nyE6w#@Xf`g~D?mYziJt=x|@U2QehPNPZ8LD3U87J+aFBsP#WO zF)E`5yWM;BOB1B&DW%9Z+-U)`MS|wVcwn0QBhTZOZq&VXqNEO`A zv!nQT?g|2H~y;D#av51uEg9V*CMsgtGZ \ No newline at end of file diff --git a/packages/aateam-client/package-lock.json b/packages/aateam-client/package-lock.json new file mode 100644 index 000000000..7503ae3e9 --- /dev/null +++ b/packages/aateam-client/package-lock.json @@ -0,0 +1,19553 @@ +{ + "name": "aateam-client", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz", + "integrity": "sha512-W7IeG4MoVf4oUvWfHUx9VG9if3E0xSUDf1urrnNYtC2ow1dz2ptvQ6YsJfyVXDuPTFXz66jkHhzMW7a5Eld7TA==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.47" + } + }, + "@babel/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", + "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helpers": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "convert-source-map": "^1.1.0", + "debug": "^3.1.0", + "json5": "^0.5.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.47.tgz", + "integrity": "sha512-fJP+9X+gqgTTZzTqrKJHwebPwt6S/e/4YuyRyKyWHAIirGgUwjRoZgbFci24wwGYMJW7nlkCSwWG7QvCVsG0eg==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.47", + "jsesc": "^2.5.1", + "lodash": "^4.17.5", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz", + "integrity": "sha512-9HdU8lrAc4FUZOy+y2w//kUhynSpkGIRYDzJW1oKJx7+v8m6UEAbAd2tSvxirsq2kJTXJZZS6Eo8FnUDUH0ZWw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-call-delegate": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz", + "integrity": "sha512-HdYG6vr4KgXHK0q1QRZ8guoYCF5rZjIdPlhcVY+j4EBK/FDR+cXRM5/6lQr3NIWDc7dO1KfgjG5rfH6lM89VBw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-define-map": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz", + "integrity": "sha512-acbCxYS9XufWxsBiclmXMK1CFz7en/XSYvHFcbb3Jb8BqjFEBrA46WlIsoSQTRG/eYN60HciUnzdyQxOZhrHfw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.0.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz", + "integrity": "sha512-5gLPwdDnYf8GfPsjS+UmZUtYE1jaXTFm1P+ymGobqvXbA0q3ANgpH60+C6zDrRAWXYbQXYvzzQC/r0gJVNNltQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.47.tgz", + "integrity": "sha512-0LSvt95XCYaOrDA5K68KkTyldKXizDwBnKACdYzQszp1GdbtzmSeGwFU5Ecw86fU6bkYXtDvkFTOQwk/WQSJPw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.47", + "@babel/template": "7.0.0-beta.47", + "@babel/types": "7.0.0-beta.47" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.47.tgz", + "integrity": "sha512-63j0i3YUW8CO//uQc3ACffJdIlYcIlysuHjMF0yzQhqKoQ/CUPv0hf3nBwdRGjiWrr3JcL6++NF4XmXdwSU+fA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.47" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz", + "integrity": "sha512-QdwmTTlPmT7TZcf30dnqm8pem+o48tVt991xXogE5CQCwqSpWKuzH2E9v8VWeccQ66a6/CmrLZ+bwp66JYeM5A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz", + "integrity": "sha512-3o4sYLOsK6m0A7t1P0saTanBPmk5MAlxVnp9773Of4L8PMVLukU7loZix5KoJgflxSo2c2ETTzseptc0rQEp7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz", + "integrity": "sha512-fsSv7VogxzMSmGch6DwhKHGsciVXo7hbfhBgH9ZrgJMXKMjO7ASQTUfbVL7MU1uCfviyqjucazGK7TWPT9weuQ==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-simple-access": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz", + "integrity": "sha512-CNeuX52jbQSq4j1n+R+21xrjbTjsnXa9n1aERbgHRD/p9h4Udkxr1n24yPMQmnTETHdnQDvkVSYWFw/ETAymYg==", + "dev": true, + "requires": { + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.47.tgz", + "integrity": "sha512-jx8GmxryT6Qy4+24W6M6TnVL9T8bxqdyg5UKHjxBdw0Y2Sano1n0WphUS2seuOugn04W2ZQLqGc0ut8nGe/taA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.47" + } + }, + "@babel/helper-wrap-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz", + "integrity": "sha512-kjprWPDNVPZ/9pyLRXcZBvfjnFwqokmXTPTaC4AV8Ns7WRl7ewSxrB19AWZzQsC/WSPQLOw1ciR8uPYkAM1znA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/helpers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0.tgz", + "integrity": "sha512-jbvgR8iLZPnyk6m/UqdXYsSxbVtRi7Pd3CzB4OPwPBnmhNG1DWjiiy777NTuoyIcniszK51R40L5pgfXAfHDtw==", + "dev": true, + "requires": { + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.47.tgz", + "integrity": "sha512-d505K3Hth1eg0b2swfEF7oFMw3J9M8ceFg0s6dhCSxOOF+07WDvJ0HKT/YbK/Jk9wn8Wyr6HIRAUPKJ9Wfv8Rg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz", + "integrity": "sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz", + "integrity": "sha512-QsXmmjLrFADCcDQAfdQn7tfBRLjpTzRWaDpKpW4ZXW1fahPG4SvjcF1xfvVnXGC662RSExYXL+6DAqbtgqMXeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.0.0", + "@babel/plugin-syntax-async-generators": "^7.0.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", + "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.0.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.0.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", + "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.2.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", + "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", + "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", + "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz", + "integrity": "sha512-CiWNhSMZzj1n3uEKUUS/oL+a7Xi8hnPQB6GpC1WfL/ZYvxBLDBn14sHMo5EyOaeArccSonyk5jFIKMRRbrHOnQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", + "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", + "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.10" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz", + "integrity": "sha512-8LBm7XsHQiNISEmb+ejBiHi1pUihwUf+lrIwyVsXVbQ1vLqgkvhgayK5JnW3WXvQD2rmM0qxFAIyDE5vtMem2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.0.0", + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.0.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", + "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz", + "integrity": "sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", + "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", + "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz", + "integrity": "sha512-Ig74elCuFQ0mvHkWUq5qDCNI3qHWlop5w4TcDxdtJiOk8Egqe2uxDRY9XnXGSlmWClClmnixcoYumyvbAuj4dA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", + "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz", + "integrity": "sha512-mR7JN9vkwsAIot74pSwzn/2Gq4nn2wN0HKtQyJLc1ghAarsymdBMTfh+Q/aeR2N3heXs3URQscTLrKe3yUU7Yw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", + "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz", + "integrity": "sha512-CtSVpT/0tty/4405qczoIHm41YfFbPChplsmfBwsi3RTq/M9cHgVb3ixI5bqqgdKkqWwSX2sXqejvMKLuTVU+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz", + "integrity": "sha512-BIcQLgPFCxi7YygtNpz5xj+7HxhOprbCGZKeLW6Kxsn1eHS6sJZMw4MfmqFZagl/v6IVa0AJoMHdDXLVrpd3Aw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz", + "integrity": "sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz", + "integrity": "sha512-EMyKpzgugxef+R1diXDwqw/Hmt5ls8VxfI8Gq5Lo8Qp3oKIepkYG4L/mvE2dmZSRalgL9sguoPKbnQ1m96hVFw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz", + "integrity": "sha512-BfAiF1l18Xr1shy1NyyQgLiHDvh/S7APiEM5+0wxTsQ+e3fgXO+NA47u4PvppzH0meJS21y0gZHcjnvUAJj8tQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.0.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz", + "integrity": "sha512-eWngvRBWx0gScot0xa340JzrkA+8HGAk1OaCHDfXAjkrTFkp73Lcf+78s7AStSdRML5nzx5aXpnjN1MfrjkBoA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.0.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", + "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", + "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", + "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", + "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", + "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", + "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/preset-env": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0.tgz", + "integrity": "sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-json-strings": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.0.0", + "@babel/plugin-syntax-async-generators": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-dotall-regex": "^7.0.0", + "@babel/plugin-transform-duplicate-keys": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-amd": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-modules-systemjs": "^7.0.0", + "@babel/plugin-transform-modules-umd": "^7.0.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typeof-symbol": "^7.0.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "browserslist": "^4.1.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/template": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.47.tgz", + "integrity": "sha512-mAzrOCLwOb4jAobHi0kTwIkoamP1Do28c6zxvrDXjYSJFZHz6KGuzMaT0AV7ZCq7M3si7QypVVMVX2bE6IsuOg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.47", + "@babel/types": "7.0.0-beta.47", + "babylon": "7.0.0-beta.47", + "lodash": "^4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.47.tgz", + "integrity": "sha512-kYGGs//OnUnei+9TTldxlgf7llprj7VUeDKtG50+g+0k1g0yZyrkEgbyFheYFdnudR8IDEHOEXVsUuY82r5Aiw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.47", + "@babel/generator": "7.0.0-beta.47", + "@babel/helper-function-name": "7.0.0-beta.47", + "@babel/helper-split-export-declaration": "7.0.0-beta.47", + "@babel/types": "7.0.0-beta.47", + "babylon": "7.0.0-beta.47", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.17.5" + } + }, + "@babel/types": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.47.tgz", + "integrity": "sha512-MOP5pOosg7JETrVGg8OQyzmUmbyoSopT5j2HlblHsto89mPz3cmxzn1IA4UNUmnWKgeticSwfhS+Gdy25IIlBQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.5", + "to-fast-properties": "^2.0.0" + } + }, + "@hyperapp/fx": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@hyperapp/fx/-/fx-0.7.0.tgz", + "integrity": "sha512-G9OjI/gwC8AXR0+NO/SHxWEJUYnCGmLr/SxLti56ugjIXRUHaSqPzKoRdugfApK6TqDeo+VNf91qDJL04ApDUA==" + }, + "@hyperapp/router": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@hyperapp/router/-/router-0.7.0.tgz", + "integrity": "sha512-hLCKkDMj/QBnT4minTlZ+tFPvi/6fOzpRrHiR7AnW7CpS59SfE4O+1rZRbQ/fY9jO0Lx2vF22rv3sn9iGmFKIg==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.1.tgz", + "integrity": "sha512-KU/VDjC5RwtDUZiz3d+DHXJF2lp5hB9dn552TXIyptj8SH1vXmR40mG0JgGq03IlYsOgGfcv8xrLpSQ0YUMQdA==", + "dev": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sheerun/eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@sheerun/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha512-aalIRUtcR6nPf50kEwnYvepSJIdpulrbMeeNMwiOmFgBg4MgScCmlI7SqOmsGJNqaH65+benoqt0H4N0RR2Okg==", + "dev": true + }, + "@shellscape/koa-send": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@shellscape/koa-send/-/koa-send-4.1.3.tgz", + "integrity": "sha512-akNxJetq2ak8aj7U6ys+EYXfWY4k8keleDZJbHWvpuVDj0/PUbbOuPkeBYaie7C6d5fRNLK+0M1Puu8ywTlj3w==", + "dev": true, + "requires": { + "debug": "^2.6.3", + "http-errors": "^1.6.1", + "mz": "^2.6.0", + "resolve-path": "^1.3.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@shellscape/koa-static": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@shellscape/koa-static/-/koa-static-4.0.5.tgz", + "integrity": "sha512-0T2g2NtaO2zhbqR8EBACIGtBy+haodKb8PuJ17RGDXAJwhjkgghUKLrLEnm05zuiwupfYm2APIax6D2TwLoflA==", + "dev": true, + "requires": { + "@shellscape/koa-send": "^4.1.0", + "debug": "^2.6.8" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@types/async": { + "version": "2.0.49", + "resolved": "https://registry.npmjs.org/@types/async/-/async-2.0.49.tgz", + "integrity": "sha512-Benr3i5odUkvpFkOpzGqrltGdbSs+EVCkEBGXbuR7uT0VzhXKIkhem6PDzHdx5EonA+rfbB3QvP6aDOw5+zp5Q==", + "optional": true + }, + "@types/graphql": { + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz", + "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ==" + }, + "@types/node": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.0.tgz", + "integrity": "sha512-hWzNviaVFIr1TqcRA8ou49JaSHp+Rfabmnqg2kNvusKqLhPU0rIsGPUj5WJJ7ld4Bb7qdgLmIhLfCD1qS08IVA==", + "dev": true + }, + "@types/tapable": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-0.2.5.tgz", + "integrity": "sha512-dEoVvo/I9QFomyhY+4Q6Qk+I+dhG59TYceZgC6Q0mCifVPErx6Y83PNTKGDS5e9h9Eti6q0S2mm16BU6iQK+3w==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.2.tgz", + "integrity": "sha512-o8hU2+4xsyGC27Vujoklvxl88Ew5zmJuTBYMX1Uro2rYUt4HEFJKL6fuq8aGykvS+ssIsIzerWWP2DRxonownQ==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack": { + "version": "3.8.12", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-3.8.12.tgz", + "integrity": "sha512-Q8ro/vCAyE8piwBvRgzeerrVkGy3XBmK2O2bk5g+NBHDqR0R2qZGwpBsz+js5mBH9PvvenQCojqB9nZC9Gz4MQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^0", + "@types/uglify-js": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/zen-observable": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz", + "integrity": "sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg==" + }, + "@webassemblyjs/ast": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", + "dev": true, + "requires": { + "debug": "^3.1.0" + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.13" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", + "dev": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", + "dev": true, + "requires": { + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } + } + }, + "@webassemblyjs/utf8": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "^3.2.0" + } + }, + "@webpack-contrib/config-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@webpack-contrib/config-loader/-/config-loader-1.2.1.tgz", + "integrity": "sha512-C7XsS6bXft0aRlyt7YCLg+fm97Mb3tWd+i5fVVlEl0NW5HKy8LoXVKj3mB7ECcEHNEEdHhgzg8gxP+Or8cMj8Q==", + "dev": true, + "requires": { + "@webpack-contrib/schema-utils": "^1.0.0-beta.0", + "chalk": "^2.1.0", + "cosmiconfig": "^5.0.2", + "is-plain-obj": "^1.1.0", + "loud-rejection": "^1.6.0", + "merge-options": "^1.0.1", + "minimist": "^1.2.0", + "resolve": "^1.6.0", + "webpack-log": "^1.1.2" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "@webpack-contrib/schema-utils": { + "version": "1.0.0-beta.0", + "resolved": "https://registry.npmjs.org/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz", + "integrity": "sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chalk": "^2.3.2", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "webpack-log": "^1.1.2" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", + "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "dev": true + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-colors": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.0.5.tgz", + "integrity": "sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg==", + "dev": true + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "apollo-cache": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.16.tgz", + "integrity": "sha512-gVWKYyXF0SlpMyZ/i//AthzyPjjmAVYciEjwepLqMzIf0+7bzIwekpHDuzME8jf4XQepXcNNY571+BRyYHysmg==", + "requires": { + "apollo-utilities": "^1.0.20" + } + }, + "apollo-cache-inmemory": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.2.9.tgz", + "integrity": "sha512-Z4m4NpT2eboM4qUww/46CsjOyITavxrKPBrsCugDlmwSzonqMLZmAyZEQgnYXCj8L5q5epnOuf0sqyYK/6sGIQ==", + "requires": { + "apollo-cache": "^1.1.16", + "apollo-utilities": "^1.0.20", + "graphql-anywhere": "^4.1.18" + } + }, + "apollo-client": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.4.1.tgz", + "integrity": "sha512-E6pQD+BwI1zboM9oX83yzH9BmBjJWU5pL36CpGC2+XaaBDc6UvrPtacxQsg/h7Fq5T5IKJoIhuBEWtefJIb9xg==", + "requires": { + "@types/async": "2.0.49", + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.1.16", + "apollo-link": "^1.0.0", + "apollo-link-dedup": "^1.0.0", + "apollo-utilities": "1.0.20", + "symbol-observable": "^1.0.2", + "zen-observable": "^0.8.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + } + } + }, + "apollo-link": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz", + "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==", + "requires": { + "@types/graphql": "0.12.6", + "apollo-utilities": "^1.0.0", + "zen-observable-ts": "^0.8.9" + } + }, + "apollo-link-context": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.8.tgz", + "integrity": "sha512-wgDwBbWqHblf7W0DD2b80kXLtSAfvbXnsxSrli0GuF77VwxjLChijiHinW5bjurzZvP8YRMNhitmrrF5ia7NsA==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-link-dedup": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/apollo-link-dedup/-/apollo-link-dedup-1.0.9.tgz", + "integrity": "sha512-RbuEKpmSHVMtoREMPh2wUFTeh65q+0XPVeqgaOP/rGEAfvLyOMvX0vT2nVaejMohoMxuUnfZwpldXaDFWnlVbg==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-link-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.0.tgz", + "integrity": "sha512-4Vu/IUn6Kn6+Fthym4iuqypCKcLdwTg3MaCvtLdaLbt9X2hNCq3y8mv6vuWIlAY51X8wKhCgYghQSOs5R/embQ==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-link-http": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.4.tgz", + "integrity": "sha512-e9Ng3HfnW00Mh3TI6DhNRfozmzQOtKgdi+qUAsHBOEcTP0PTAmb+9XpeyEEOueLyO0GXhB92HUCIhzrWMXgwyg==", + "requires": { + "apollo-link": "^1.2.2", + "apollo-link-http-common": "^0.2.4" + } + }, + "apollo-link-http-common": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.4.tgz", + "integrity": "sha512-4j6o6WoXuSPen9xh4NBaX8/vL98X1xY2cYzUEK1F8SzvHe2oFONfxJBTekwU8hnvapcuq8Qh9Uct+gelu8T10g==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-link-ws": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.8.tgz", + "integrity": "sha512-ucuGvr8CBBwCHl/Rbtyuv9Fn0FN5Qoyvy84KHtuMl2Uux2Sq+jt3bUum+pZ+hZntEd9k8M1OjrrXqRJ4PtEpyA==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-utilities": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.20.tgz", + "integrity": "sha512-2M4BJCyX/9UXGJFoV4sTnVTZ4Q29aM18Z1avDrwvlCGGwoRTz50sGBAfTiWnUnnNQyPIIJEYElScw46DgIu0Rg==", + "requires": { + "fast-json-stable-stringify": "^2.0.0" + } + }, + "app-root-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", + "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "auth0-js": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.7.3.tgz", + "integrity": "sha512-iZAqoN4EbsNCS/3VkFPNb4glTyj8hq57T7gcUF+XH8Rua7hBTUzpb101K9zqcdUIBilIdF9XBLCTJ4JGgZ/oFA==", + "requires": { + "base64-js": "^1.2.0", + "idtoken-verifier": "^1.2.0", + "js-cookie": "^2.2.0", + "qs": "^6.4.0", + "superagent": "^3.8.2", + "url-join": "^1.1.0", + "winchan": "^0.2.0" + }, + "dependencies": { + "url-join": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", + "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" + } + } + }, + "auth0-lock": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/auth0-lock/-/auth0-lock-11.9.0.tgz", + "integrity": "sha512-t+YlMHOJPtfhK7DWO2oEevfb8A1+BiB6bhBlqMbsLa6ayz5YOfRd+Dtr0YRP5nvmCE4rRYyNE2ZG39A4rH4/WQ==", + "requires": { + "auth0-js": "^9.7.3", + "auth0-password-policies": "github:auth0/auth0-password-policies#0b3da9b369b122a8b294d496143abfd33311e6b2", + "blueimp-md5": "2.3.1", + "fbjs": "^0.3.1", + "immutable": "^3.7.3", + "jsonp": "^0.2.0", + "password-sheriff": "^1.1.0", + "prop-types": "^15.6.0", + "react": "^15.6.2", + "react-dom": "^15.6.2", + "react-transition-group": "^2.2.1", + "trim": "0.0.1", + "url-join": "^1.1.0" + }, + "dependencies": { + "url-join": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", + "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" + } + } + }, + "auth0-password-policies": { + "version": "github:auth0/auth0-password-policies#0b3da9b369b122a8b294d496143abfd33311e6b2", + "from": "github:auth0/auth0-password-policies#v1.0.1", + "requires": { + "password-sheriff": "^1.1.0" + } + }, + "autoprefixer": { + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz", + "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==", + "dev": true, + "requires": { + "browserslist": "^3.2.8", + "caniuse-lite": "^1.0.30000864", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.23", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz", + "integrity": "sha512-Qt2lz2egBxNYWqN9JIO2z4NOOf8i4b5JS6CFoYrOZZTDssueiV1jH/jsefyg+86SeNY3rB361/mi3kE1WK2WYQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.40", + "@babel/traverse": "^7.0.0-beta.40", + "@babel/types": "^7.0.0-beta.40", + "babylon": "^7.0.0-beta.40", + "eslint-scope": "~3.7.1", + "eslint-visitor-keys": "^1.0.0" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-evaluate-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.3.0.tgz", + "integrity": "sha512-dRFlMTqUJRGzx5a2smKxmptDdNCXKSkPcXWzKLwAV72hvIZumrd/0z9RcewHkr7PmAEq+ETtpD1GK6wZ6ZUXzw==", + "dev": true + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-flip-expressions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.3.0.tgz", + "integrity": "sha512-kNGohWmtAG3b7tN1xocRQ5rsKkH/hpvZsMiGOJ1VwGJKhnwzR5KlB3rvKBaBPl5/IGHcopB2JN+r1SUEX1iMAw==", + "dev": true + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.3.0.tgz", + "integrity": "sha512-JVqdX8y7Rf/x4NwbqtUI7mdQjL9HWoDnoAEQ8Gv8oxzjvbJv+n75f7l36m9Y8C7sCUltX3V5edndrp7Hp1oSXQ==", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.3.0.tgz", + "integrity": "sha512-nrho5Dg4vl0VUgURVpGpEGiwbst5JX7efIyDHFxmkCx/ocQFnrPt8ze9Kxl6TKjR29bJ7D/XKY1NMlSxOQJRbQ==", + "dev": true + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-remove-or-void": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.3.0.tgz", + "integrity": "sha512-D68W1M3ibCcbg0ysh3ww4/O0g10X1CXK720oOuR8kpfY7w0yP4tVcpK7zDmI1JecynycTQYAZ1rhLJo9aVtIKQ==", + "dev": true + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.3.0.tgz", + "integrity": "sha512-1uCrBD+EAaMnAYh7hc944n8Ga19y3daEnoXWPYDvFVsxMCc1l8aDjksApaCEaNSSuewq8BEcff47Cy1PbLg2Gw==", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0.tgz", + "integrity": "sha512-lBUGBz411lSfT+8MHPEaqIVQ44odS1D/wxuTMhijqHc9arZR6jhJEaJa0RpZlCSITZoeK6xoDXTaVTrSoFD7IQ==", + "dev": true, + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-minify-webpack-plugin": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.3.1.tgz", + "integrity": "sha512-Johg6Ju0Gxevk2R55eutMqnyXwlyUzCtwunBpiyNzoxGnKum+x5nfNuYZYHGd5Bmc1gmhjwzb7GkxHWOtYWmtQ==", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-preset-minify": "^0.3.0", + "webpack-sources": "^1.0.1" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz", + "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0" + } + }, + "babel-plugin-minify-builtins": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.3.0.tgz", + "integrity": "sha512-MqhSHlxkmgURqj3144qPksbZ/qof1JWdumcbucc4tysFcf3P3V3z3munTevQgKEFNMd8F5/ECGnwb63xogLjAg==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.3.0" + } + }, + "babel-plugin-minify-constant-folding": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.3.0.tgz", + "integrity": "sha512-1XeRpx+aY1BuNY6QU/cm6P+FtEi3ar3XceYbmC+4q4W+2Ewq5pL7V68oHg1hKXkBIE0Z4/FjSoHz6vosZLOe/A==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.3.0" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.3.0.tgz", + "integrity": "sha512-SjM2Fzg85YZz+q/PNJ/HU4O3W98FKFOiP9K5z3sfonlamGOzvZw3Eup2OTiEBsbbqTeY8yzNCAv3qpJRYCgGmw==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.3.0", + "babel-helper-mark-eval-scopes": "^0.3.0", + "babel-helper-remove-or-void": "^0.3.0", + "lodash.some": "^4.6.0" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.3.0.tgz", + "integrity": "sha512-B8lK+ekcpSNVH7PZpWDe5nC5zxjRiiT4nTsa6h3QkF3Kk6y9qooIFLemdGlqBq6j0zALEnebvCpw8v7gAdpgnw==", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.3.0" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.3.0.tgz", + "integrity": "sha512-O+6CvF5/Ttsth3LMg4/BhyvVZ82GImeKMXGdVRQGK/8jFiP15EjRpdgFlxv3cnqRjqdYxLCS6r28VfLpb9C/kA==", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "^0.3.0" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.3.0.tgz", + "integrity": "sha512-Sj8ia3/w9158DWieUxU6/VvnYVy59geeFEkVgLZYBE8EBP+sN48tHtBM/jSgz0ejEdBlcfqJ6TnvPmVXTzR2BQ==", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.3.0.tgz", + "integrity": "sha512-PYTonhFWURsfAN8achDwvR5Xgy6EeTClLz+fSgGRqjAIXb0OyFm3/xfccbQviVi1qDXmlSnt6oJhBg8KE4Fn7Q==", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "^0.3.0" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.3.0.tgz", + "integrity": "sha512-TgZj6ay8zDw74AS3yiIfoQ8vRSNJisYO/Du60S8nPV7EW7JM6fDMx5Sar6yVHlVuuwNgvDUBh191K33bVrAhpg==", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.3.0.tgz", + "integrity": "sha512-VR6tTg2Lt0TicHIOw04fsUtpPw7RaRP8PC8YzSFwEixnzvguZjZJoL7TgG7ZyEWQD1cJ96UezswECmFNa815bg==", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.3.0.tgz", + "integrity": "sha512-2M16ytQOCqBi7bYMu4DCWn8e6KyFCA108F6+tVrBJxOmm5u2sOmTFEa8s94tR9RHRRNYmcUf+rgidfnzL3ik9Q==", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "^0.3.0", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.3.0" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.3.0.tgz", + "integrity": "sha512-XRXpvsUCPeVw9YEUw+9vSiugcSZfow81oIJT0yR9s8H4W7yJ6FHbImi5DJHoL8KcDUjYnL9wYASXk/fOkbyR6Q==", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.3.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.3.0.tgz", + "integrity": "sha512-iZsYAIjYLLfLK0yN5WVT7Xf7Y3wQ9Z75j9A8q/0IglQSpUt2ppTdHlwl/GeaXnxdaSmsxBu861klbTBbv2n+RA==", + "dev": true + }, + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", + "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", + "dev": true + }, + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", + "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", + "dev": true + }, + "babel-plugin-transform-minify-booleans": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", + "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-property-literals": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", + "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + } + } + }, + "babel-plugin-transform-regexp-constructors": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.3.0.tgz", + "integrity": "sha512-h92YHzyl042rb0naKO8frTHntpRFwRgKkfWD8602kFHoQingjJNtbvZzvxqHncJ6XmKVyYvfrBpDOSkCTDIIxw==", + "dev": true + }, + "babel-plugin-transform-remove-console": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", + "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", + "dev": true + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", + "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.3.0.tgz", + "integrity": "sha512-TYGQucc8iP3LJwN3kDZLEz5aa/2KuFrqpT+s8f8NnHsBU1sAgR3y8Opns0xhC+smyDYWscqFCKM1gbkWQOhhnw==", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.3.0" + } + }, + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", + "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", + "dev": true + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", + "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", + "dev": true + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-minify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.3.0.tgz", + "integrity": "sha512-+VV2GWEyak3eDOmzT1DDMuqHrw3VbE9nBNkx2LLVs4pH/Me32ND8DRpVDd8IRvk1xX5p75nygyRPtkMh6GIAbQ==", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.3.0", + "babel-plugin-minify-constant-folding": "^0.3.0", + "babel-plugin-minify-dead-code-elimination": "^0.3.0", + "babel-plugin-minify-flip-comparisons": "^0.3.0", + "babel-plugin-minify-guarded-expressions": "^0.3.0", + "babel-plugin-minify-infinity": "^0.3.0", + "babel-plugin-minify-mangle-names": "^0.3.0", + "babel-plugin-minify-numeric-literals": "^0.3.0", + "babel-plugin-minify-replace": "^0.3.0", + "babel-plugin-minify-simplify": "^0.3.0", + "babel-plugin-minify-type-constructors": "^0.3.0", + "babel-plugin-transform-inline-consecutive-adds": "^0.3.0", + "babel-plugin-transform-member-expression-literals": "^6.9.0", + "babel-plugin-transform-merge-sibling-variables": "^6.9.0", + "babel-plugin-transform-minify-booleans": "^6.9.0", + "babel-plugin-transform-property-literals": "^6.9.0", + "babel-plugin-transform-regexp-constructors": "^0.3.0", + "babel-plugin-transform-remove-console": "^6.9.0", + "babel-plugin-transform-remove-debugger": "^6.9.0", + "babel-plugin-transform-remove-undefined": "^0.3.0", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.0", + "babel-plugin-transform-undefined-to-void": "^6.9.0", + "lodash.isplainobject": "^4.0.6" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", + "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "binaryextensions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "blueimp-md5": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.3.1.tgz", + "integrity": "sha1-mSpnN3M7naHt1kFVDcOsqy6c/Fo=" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "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": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.0.tgz", + "integrity": "sha512-kQBKB8hnq1SRfSpwHDpM1JNHAyk9fydW8hIDvndR2ijTFKIlBPEvkJkCt8JznOugdm12/YCaRgyq/sqDGz9PwA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000878", + "electron-to-chromium": "^1.3.61", + "node-releases": "^1.0.0-alpha.11" + }, + "dependencies": { + "electron-to-chromium": { + "version": "1.3.62", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.62.tgz", + "integrity": "sha512-x09ndL/Gjnuk3unlAyoGyUg3wbs4w/bXurgL7wL913vXHAOWmMhrLf1VNGRaMLngmadd5Q8gsV9BFuIr6rP+Xg==", + "dev": true + } + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bulma": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.7.1.tgz", + "integrity": "sha512-wRSO2LXB+qI9Pyz2id+uZr4quz5aftSN7Ay1ysr1+krzVp3utD+Ci4CeKuZdrYGc800t65b7heXBL6qw2Wo/lQ==" + }, + "bulma-o-steps": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/bulma-o-steps/-/bulma-o-steps-1.0.8.tgz", + "integrity": "sha512-rtLh54nW6Z1/U8D0IxmV9yTU5MC3vIJpJ9kaIORkxAPbt3NJqaWU3ATFovqz7giB8cYQS9ImlVygBPH4KSmWhw==", + "dev": true, + "requires": { + "bulma": "^0.7.1", + "npm": "^6.1.0" + }, + "dependencies": { + "bulma": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.7.1.tgz", + "integrity": "sha512-wRSO2LXB+qI9Pyz2id+uZr4quz5aftSN7Ay1ysr1+krzVp3utD+Ci4CeKuZdrYGc800t65b7heXBL6qw2Wo/lQ==", + "dev": true + } + } + }, + "bulma-timeline": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bulma-timeline/-/bulma-timeline-2.0.3.tgz", + "integrity": "sha1-SbaJnwPEeByOdakU7PtjuuRDURo=" + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "requires": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000847", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000847.tgz", + "integrity": "sha1-/0BypUaICf7ArprDtANe+JHlsUQ=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000883", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000883.tgz", + "integrity": "sha512-ovvb0uya4cKJct8Rj9Olstz0LaWmyJhCp3NawRG5fVigka8pEhIIwipF7zyYd2Q58UZb5YfIt52pVF444uj2kQ==", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "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" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.4.0.tgz", + "integrity": "sha512-Oqmw2pVfCl8sCL+1QgMywPfdxPJPkC51y4usw0iiE2S9qnEOAqXy8bwl1CpMpnoU39g4iKJTz6QZj+28FvOnjQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "^1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "dev": true, + "requires": { + "source-map": "0.5.x" + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "dev": true, + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "dependencies": { + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "common-tags": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz", + "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "cookies": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "dev": true, + "requires": { + "depd": "~1.1.1", + "keygrip": "~1.0.2" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "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": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "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" + } + }, + "create-react-class": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + } + } + }, + "cross-fetch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz", + "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=", + "requires": { + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "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" + } + }, + "crypto-js": { + "version": "3.1.9-1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz", + "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg=" + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": "^3.10.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.1.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + }, + "dependencies": { + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "deglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", + "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "dev": true, + "requires": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^3.0.9", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-conflict": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", + "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "dlv": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.2.tgz", + "integrity": "sha512-xxD4VSH67GbRvSGUrckvha94RD7hjgOH7rqGxiytLpkaeMvixOHFZTGFK6EkIm3T761OVHT8ABHmGkq9gXgu6Q==", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-helpers": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + }, + "dotenv-webpack": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.5.7.tgz", + "integrity": "sha1-xEOVqyHR/SjXmpCUKnsUsd69FF8=", + "requires": { + "dotenv": "^5.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.47", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz", + "integrity": "sha1-dk6IfKkQTQGgrI6r7n38DizhQQQ=", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "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": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "envinfo": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-5.10.0.tgz", + "integrity": "sha512-rXbzXWvnQxy+TcqZlARbWVQwgGVVouVJgFZhLVN5htjLxl1thstrP2ZGi0pXC309AbK7gVOPU+ulz/tmpCI7iw==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-inject": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", + "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=", + "dev": true + }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-config-standard": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", + "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "eslint-plugin-es": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz", + "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==", + "dev": true, + "requires": { + "eslint-utils": "^1.3.0", + "regexpp": "^2.0.0" + }, + "dependencies": { + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", + "dev": true, + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" + } + }, + "eslint-plugin-promise": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz", + "integrity": "sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "dev": true, + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + } + } + }, + "eslint-plugin-standard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", + "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "fbjs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.3.2.tgz", + "integrity": "sha1-AzpUBZUIS13jUJpAXQbxoqjlufs=", + "requires": { + "core-js": "^1.0.0", + "loose-envify": "^1.0.0", + "promise": "^7.0.3", + "ua-parser-js": "^0.7.9", + "whatwg-fetch": "^0.9.0" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "whatwg-fetch": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", + "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" + } + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "flow-parser": { + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.80.0.tgz", + "integrity": "sha512-9gM1jEJUtDshAoqx0lqrUdyjnKL12A/Ka64cejERTDqhim5dGnWSNcuzJLibAwZ/MmYMMxCB2celPQkxMsSC7g==", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gh-got": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", + "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", + "dev": true, + "requires": { + "got": "^7.0.0", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "github-username": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", + "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", + "dev": true, + "requires": { + "gh-got": "^6.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "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" + } + }, + "glob-all": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", + "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", + "dev": true, + "requires": { + "glob": "^7.0.5", + "yargs": "~1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", + "dev": true + }, + "yargs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", + "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", + "dev": true, + "requires": { + "minimist": "^0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graphql": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz", + "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==", + "requires": { + "iterall": "^1.2.1" + } + }, + "graphql-anywhere": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.1.18.tgz", + "integrity": "sha512-n0jsAEpGpQxsF0RDaxSjtEQdIP3tx2C3q++QuHYFyUl+4Npl5t64zFjWwO3ZhotxmTgs8zaSbZPVFpydn6k0dQ==", + "requires": { + "apollo-utilities": "^1.0.20" + } + }, + "graphql-tag": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.9.2.tgz", + "integrity": "sha512-qnNmof9pAqj/LUzs3lStP0Gw1qhdVCUS7Ab7+SUB6KD5aX1uqxWQRwMnOGTkhKuLvLNIs1TvNz+iS9kUGl1MhA==" + }, + "grouped-queue": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", + "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", + "dev": true, + "requires": { + "lodash": "^4.17.2" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-minifier": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.16.tgz", + "integrity": "sha512-zP5EfLSpiLRp0aAgud4CQXPQZm9kXwWjR/cF0PfdOj+jjWnOaCgeZcll4kYXSvIBPeUMmyaSc7mM4IDtA+kboA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.1.x", + "commander": "2.15.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.3.x" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.3.28", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz", + "integrity": "sha512-68Rc/aA6cswiaQ5SrE979UJcXX+ADA1z33/ZsPd+fbAiVdjZ16OXdbtGO+rJUUBgK6qdf3SOPhQf3K/ybF5Miw==", + "dev": true, + "requires": { + "commander": "~2.15.0", + "source-map": "~0.6.1" + } + } + } + }, + "html-webpack-harddisk-plugin": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-harddisk-plugin/-/html-webpack-harddisk-plugin-0.2.0.tgz", + "integrity": "sha1-RlQUpTQhm2nB/YEntYX42GiX+y0=", + "dev": true, + "requires": { + "@types/webpack": "^3.0.5", + "mkdirp": "^0.5.1" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-assert": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.3.0.tgz", + "integrity": "sha1-oxpc+IyHPsu1eWkH1NbxMujAHko=", + "dev": true, + "requires": { + "deep-equal": "~1.0.1", + "http-errors": "~1.6.1" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-errors": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.0.tgz", + "integrity": "sha512-hz3BtSHB7Z6dNWzYc+gUbWqG4dIpJedwwOhe1cvGUq5tGmcTTIRkPiAbyh/JlZx+ksSJyGJlgcHo5jGahiXnKw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "hyperapp": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/hyperapp/-/hyperapp-1.2.8.tgz", + "integrity": "sha512-BqPu/1cJ9hWdMUYNPfmsnh92pap6IAzlG0KOJrdtdMkciJJVUOSwaQTDEaP086TmVOWwjRzlQrZngLQwAE6ocg==" + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "idtoken-verifier": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-1.2.0.tgz", + "integrity": "sha512-8jmmFHwdPz8L73zGNAXHHOV9yXNC+Z0TUBN5rafpoaFaLFltlIFr1JkQa3FYAETP23eSsulVw0sBiwrE8jqbUg==", + "requires": { + "base64-js": "^1.2.0", + "crypto-js": "^3.1.9-1", + "jsbn": "^0.1.0", + "superagent": "^3.8.2", + "url-join": "^1.1.0" + }, + "dependencies": { + "url-join": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", + "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" + } + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "dev": true + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-ci": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.0.tgz", + "integrity": "sha512-plgvKjQtalH2P3Gytb7L61Lmz95g2DlpzFiQyRSFew8WoJKxtKRzrZMeyRN2supblm3Psc8OQGy7Xjb6XG11jw==", + "dev": true, + "requires": { + "ci-info": "^1.3.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-function": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-scoped": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", + "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", + "dev": true, + "requires": { + "scoped-regex": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isemail": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.3.tgz", + "integrity": "sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw==", + "dev": true, + "requires": { + "punycode": "2.x.x" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istextorbinary": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "dev": true, + "requires": { + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "iterall": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", + "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" + }, + "joi": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", + "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", + "dev": true, + "requires": { + "hoek": "4.x.x", + "isemail": "3.x.x", + "topo": "2.x.x" + } + }, + "js-base64": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", + "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", + "dev": true + }, + "js-cookie": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.0.tgz", + "integrity": "sha1-Gywnmm7s44ChIWi5JIUmWzWx7/s=" + }, + "js-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jscodeshift": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.1.tgz", + "integrity": "sha512-sRMollbhbmSDrR79JMAnhEjyZJlQQVozeeY9A6/KNuV26DNcuB3mGSCWXp0hks9dcwRNOELbNOiwraZaXXRk5Q==", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^7.0.0-beta.47", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "neo-async": "^2.5.0", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.15.0", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", + "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", + "requires": { + "debug": "^2.1.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "^3.0.3" + } + }, + "keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha1-rTKXxVcGneqLz+ek+kkbdcXd65E=", + "dev": true + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "koa": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.5.2.tgz", + "integrity": "sha512-MoVGWre9g3p35pCqXNhOT/a4trwK5CGvalIoPi7qOA2RCZaep3GCsa/G/tD9QMjQI7bmVWn3XF3SOau8RkPh6w==", + "dev": true, + "requires": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.7.1", + "debug": "^3.1.0", + "delegates": "^1.0.0", + "depd": "^1.1.2", + "destroy": "^1.0.4", + "error-inject": "^1.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^1.2.0", + "koa-is-json": "^1.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + } + }, + "koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "koa-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/koa-connect/-/koa-connect-2.0.1.tgz", + "integrity": "sha512-MNaiK5og8aj4I+tx8l+jSW24QX7aaQyZemV821VPY+AOJ8XUbrrAj9AzrpZKDQp5jTmylAZW2sXhTz2+SRqZog==", + "dev": true + }, + "koa-convert": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", + "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", + "dev": true, + "requires": { + "co": "^4.6.0", + "koa-compose": "^3.0.0" + }, + "dependencies": { + "koa-compose": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", + "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } + } + } + }, + "koa-is-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", + "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=", + "dev": true + }, + "koa-webpack": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/koa-webpack/-/koa-webpack-4.0.0.tgz", + "integrity": "sha512-P+j2TzeZAqFwscd/dlLykk/sxwr6wQ5Tp3FYDhqv1+y9aRIffTPnu2zK+1BhfM+Kyh8bepU1jFR420maE+Vajw==", + "dev": true, + "requires": { + "app-root-path": "^2.0.1", + "merge-options": "^1.0.0", + "webpack-dev-middleware": "^3.0.0", + "webpack-hot-client": "^3.0.0", + "webpack-log": "^1.1.1" + }, + "dependencies": { + "webpack-hot-client": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-3.0.0.tgz", + "integrity": "sha512-6k91015hZ4Okkz8u6OzRgJygEL+3J3ay6HVZhWBF3tT2P0rZJ0mgca39dotJxngggUm3S8707c0vrcynn1IzEQ==", + "dev": true, + "requires": { + "json-stringify-safe": "^5.0.1", + "loglevelnext": "^1.0.2", + "strip-ansi": "^4.0.0", + "uuid": "^3.1.0", + "webpack-log": "^1.1.1", + "ws": "^4.0.0" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + } + } + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "listr": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.2.tgz", + "integrity": "sha512-vmaNJ1KlGuGWShHI35X/F8r9xxS0VTHh9GejVXwSN20fG5xpq3Jh4bJbnumoT6q5EDM/8/YP1z3YMtQbFmhuXw==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.4.0", + "listr-verbose-renderer": "^0.4.0", + "p-map": "^1.1.1", + "rxjs": "^6.1.0" + }, + "dependencies": { + "rxjs": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.1.tgz", + "integrity": "sha512-hRVfb1Mcf8rLXq1AZEjYpzBnQbO7Duveu1APXkWRTvqzhmkoQ40Pl2F9Btacx+gJCOqsMiugCGG4I2HPQgJRtA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loglevel-colored-level-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", + "integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "make-plural": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-4.2.0.tgz", + "integrity": "sha512-zhDAr/erfvZtE1A66DIQ7ZNdGlexVGNDP1P1kvLZprRE0meA0zmxNbp6xmXzNRuZmgW0Ui4ibbaMPYPFHVRMkQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", + "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", + "dev": true, + "requires": { + "through2": "^2.0.0", + "vinyl": "^1.1.0", + "vinyl-file": "^2.0.0" + } + }, + "mem-fs-editor": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz", + "integrity": "sha512-tgWmwI/+6vwu6POan82dTjxEpwAoaj0NAFnghtVo/FcLK2/7IhPUtFUUYlwou4MOY6OtjTUJtwpfH1h+eSUziw==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "deep-extend": "^0.6.0", + "ejs": "^2.5.9", + "glob": "^7.0.3", + "globby": "^7.1.1", + "isbinaryfile": "^3.0.2", + "mkdirp": "^0.5.0", + "multimatch": "^2.0.0", + "rimraf": "^2.2.8", + "through2": "^2.0.0", + "vinyl": "^2.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + } + }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", + "dev": true + }, + "messageformat": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/messageformat/-/messageformat-1.1.1.tgz", + "integrity": "sha512-Q0uXcDtF5pEZsVSyhzDOGgZZK6ykN79VY9CwU3Nv0gsqx62BjdJW0MT+63UkHQ4exe3HE33ZlxR2/YwoJarRTg==", + "dev": true, + "requires": { + "glob": "~7.0.6", + "make-plural": "^4.1.1", + "messageformat-parser": "^1.1.0", + "nopt": "~3.0.6", + "reserved-words": "^0.1.2" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "messageformat-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-1.1.0.tgz", + "integrity": "sha512-Hwem6G3MsKDLS1FtBRGIs8T50P1Q00r3srS6QJePCFbad9fq0nYxwf3rnU2BreApRGhmpKMV7oZI06Sy1c9TPA==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "microee": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/microee/-/microee-0.0.6.tgz", + "integrity": "sha1-oSvbAQNoHosSapsHHrpMRnx4//4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "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": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz", + "integrity": "sha512-ots7URQH4wccfJq9Ssrzu2+qupbncAce4TmTzunI9CIwlQMp2XI+WNUw6xWF6MMAGAm1cbUVINrSjATaVMyKXg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minilog": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minilog/-/minilog-3.1.0.tgz", + "integrity": "sha1-0tDxiHyjY9Gs8OqG1cTfKTs/tnU=", + "dev": true, + "requires": { + "microee": "0.0.6" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "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": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true + }, + "nanoassert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", + "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=", + "dev": true + }, + "nanobus": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/nanobus/-/nanobus-4.3.3.tgz", + "integrity": "sha512-4/uzl+LkMGoVv/9eMzH2QFvefmlJErT0KR7EmuYbmht2QvxSEqTjhFFOZ/KHE6chH58fKL3njrOcEwbYV0h9Yw==", + "dev": true, + "requires": { + "nanotiming": "^7.2.0", + "remove-array-items": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "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" + } + }, + "nanoscheduler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/nanoscheduler/-/nanoscheduler-1.0.3.tgz", + "integrity": "sha512-jBbrF3qdU9321r8n9X7yu18DjP31Do2ItJm3mWrt90wJTrnDO+HXpoV7ftaUglAtjgj9s+OaCxGufbvx6pvbEQ==", + "dev": true, + "requires": { + "nanoassert": "^1.1.0" + } + }, + "nanotiming": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/nanotiming/-/nanotiming-7.3.1.tgz", + "integrity": "sha512-l3lC7v/PfOuRWQa8vV29Jo6TG10wHtnthLElFXs4Te4Aas57Fo4n1Q8LH9n+NDh9riOzTVvb2QNBhTS4JUKNjw==", + "dev": true, + "requires": { + "nanoassert": "^1.1.0", + "nanoscheduler": "^1.0.2" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-dir": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", + "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "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-releases": { + "version": "1.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz", + "integrity": "sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", + "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "2.87.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "dev": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true + }, + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "dev": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.4.1.tgz", + "integrity": "sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "aproba": "~1.2.0", + "archy": "~1.0.0", + "bin-links": "^1.1.2", + "bluebird": "~3.5.1", + "byte-size": "^4.0.3", + "cacache": "^11.2.0", + "call-limit": "~1.1.0", + "chownr": "~1.0.1", + "ci-info": "^1.4.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.5.0", + "cmd-shim": "~2.0.2", + "columnify": "~1.5.4", + "config-chain": "~1.1.11", + "debuglog": "*", + "detect-indent": "~5.0.0", + "detect-newline": "^2.1.0", + "dezalgo": "~1.0.3", + "editor": "~1.0.0", + "figgy-pudding": "^3.4.1", + "find-npm-prefix": "^1.0.2", + "fs-vacuum": "~1.2.10", + "fs-write-stream-atomic": "~1.0.10", + "gentle-fs": "^2.0.1", + "glob": "~7.1.2", + "graceful-fs": "~4.1.11", + "has-unicode": "~2.0.1", + "hosted-git-info": "^2.7.1", + "iferr": "^1.0.2", + "imurmurhash": "*", + "inflight": "~1.0.6", + "inherits": "~2.0.3", + "ini": "^1.3.5", + "init-package-json": "^1.10.3", + "is-cidr": "^2.0.6", + "json-parse-better-errors": "^1.0.2", + "lazy-property": "~1.0.0", + "libcipm": "^2.0.2", + "libnpmhook": "^4.0.1", + "libnpx": "^10.2.0", + "lock-verify": "^2.0.2", + "lockfile": "^1.0.4", + "lodash._baseindexof": "*", + "lodash._baseuniq": "~4.6.0", + "lodash._bindcallback": "*", + "lodash._cacheindexof": "*", + "lodash._createcache": "*", + "lodash._getnative": "*", + "lodash.clonedeep": "~4.5.0", + "lodash.restparam": "*", + "lodash.union": "~4.6.0", + "lodash.uniq": "~4.5.0", + "lodash.without": "~4.4.0", + "lru-cache": "^4.1.3", + "meant": "~1.0.1", + "mississippi": "^3.0.0", + "mkdirp": "~0.5.1", + "move-concurrently": "^1.0.1", + "node-gyp": "^3.8.0", + "nopt": "~4.0.1", + "normalize-package-data": "~2.4.0", + "npm-audit-report": "^1.3.1", + "npm-cache-filename": "~1.0.2", + "npm-install-checks": "~3.0.0", + "npm-lifecycle": "^2.1.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.11", + "npm-pick-manifest": "^2.1.0", + "npm-profile": "^3.0.2", + "npm-registry-client": "^8.6.0", + "npm-registry-fetch": "^1.1.0", + "npm-user-validate": "~1.0.0", + "npmlog": "~4.1.2", + "once": "~1.4.0", + "opener": "^1.5.0", + "osenv": "^0.1.5", + "pacote": "^8.1.6", + "path-is-inside": "~1.0.2", + "promise-inflight": "~1.0.1", + "qrcode-terminal": "^0.12.0", + "query-string": "^6.1.0", + "qw": "~1.0.1", + "read": "~1.0.7", + "read-cmd-shim": "~1.0.1", + "read-installed": "~4.0.3", + "read-package-json": "^2.0.13", + "read-package-tree": "^5.2.1", + "readable-stream": "^2.3.6", + "readdir-scoped-modules": "*", + "request": "^2.88.0", + "retry": "^0.12.0", + "rimraf": "~2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.5.0", + "sha": "~2.0.1", + "slide": "~1.1.6", + "sorted-object": "~2.0.1", + "sorted-union-stream": "~2.1.3", + "ssri": "^6.0.0", + "stringify-package": "^1.0.0", + "tar": "^4.4.6", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "uid-number": "0.0.6", + "umask": "~1.1.0", + "unique-filename": "~1.1.0", + "unpipe": "~1.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.3.2", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^1.3.1", + "worker-farm": "^1.6.0", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "agent-base": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true, + "dev": true + }, + "aws4": { + "version": "1.8.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "cmd-shim": "^2.0.2", + "gentle-fs": "^2.0.0", + "graceful-fs": "^4.1.11", + "write-file-atomic": "^2.3.0" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.1", + "bundled": true, + "dev": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "builtins": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "byline": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "byte-size": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "cacache": { + "version": "11.2.0", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "figgy-pudding": "^3.1.0", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.3", + "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.0", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "call-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ci-info": { + "version": "1.4.0", + "bundled": true, + "dev": true + }, + "cidr-regex": { + "version": "2.0.9", + "bundled": true, + "dev": true, + "requires": { + "ip-regex": "^2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.5.0", + "bundled": true, + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" + } + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "colors": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "err-code": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es6-promise": { + "version": "4.2.4", + "bundled": true, + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "extend": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "figgy-pudding": { + "version": "3.4.1", + "bundled": true, + "dev": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "genfun": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "gentle-fs": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.2", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "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-dirs": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "got": { + "version": "6.7.1", + "bundled": true, + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true, + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true, + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "ip": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "^1.0.0" + } + }, + "is-cidr": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "requires": { + "cidr-regex": "^2.0.8" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true, + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "libcipm": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "lock-verify": "^2.0.2", + "mkdirp": "^0.5.1", + "npm-lifecycle": "^2.0.3", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "pacote": "^8.1.6", + "protoduck": "^5.0.0", + "read-package-json": "^2.0.13", + "rimraf": "^2.6.2", + "worker-farm": "^1.6.0" + } + }, + "libnpmhook": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.1.0", + "npm-registry-fetch": "^3.0.0" + }, + "dependencies": { + "npm-registry-fetch": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "figgy-pudding": "^3.1.0", + "lru-cache": "^4.1.2", + "make-fetch-happen": "^4.0.0", + "npm-package-arg": "^6.0.0" + } + } + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "dev": true, + "requires": { + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lock-verify": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^5.1.2 || 6", + "semver": "^5.4.1" + } + }, + "lockfile": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "signal-exit": "^3.0.2" + } + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "requires": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0" + } + }, + "lodash._createset": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true, + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true, + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-fetch-happen": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "meant": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mime-db": { + "version": "1.35.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mississippi": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true, + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-gyp": { + "version": "3.8.0", + "bundled": true, + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-audit-report": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "cli-table3": "^0.5.0", + "console-control-strings": "^1.1.0" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^2.3.0 || 3.x || 4 || 5" + } + }, + "npm-lifecycle": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.11", + "node-gyp": "^3.8.0", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-profile": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.2 || 2", + "make-fetch-happen": "^2.5.0 || 3 || 4" + } + }, + "npm-registry-client": { + "version": "8.6.0", + "bundled": true, + "dev": true, + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true, + "dev": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, + "npm-registry-fetch": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "figgy-pudding": "^2.0.1", + "lru-cache": "^4.1.2", + "make-fetch-happen": "^3.0.0", + "npm-package-arg": "^6.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "mississippi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "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": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + } + } + }, + "figgy-pudding": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "make-fetch-happen": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^10.0.4", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.0", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^3.0.1", + "ssri": "^5.2.4" + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true, + "dev": true + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "requires": { + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "socks": "^1.1.10" + } + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.0", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "pacote": { + "version": "8.1.6", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "cacache": "^11.0.2", + "get-stream": "^3.0.0", + "glob": "^7.1.2", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.3", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.10", + "npm-pick-manifest": "^2.1.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.5.0", + "ssri": "^6.0.0", + "tar": "^4.4.3", + "unique-filename": "^1.1.0", + "which": "^1.3.0" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "pify": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true, + "dev": true + } + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "bundled": true, + "dev": true + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "genfun": "^4.0.1" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "psl": { + "version": "1.1.29", + "bundled": true, + "dev": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "qs": { + "version": "6.5.2", + "bundled": true, + "dev": true + }, + "query-string": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "strict-uri-encode": "^2.0.0" + } + }, + "qw": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "read": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "graceful-fs": "^4.1.2", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + } + }, + "read-package-json": { + "version": "2.0.13", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.1", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "request": { + "version": "2.88.0", + "bundled": true, + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "retry": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "readable-stream": "^2.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slash": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "smart-buffer": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "socks": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "dev": true, + "requires": { + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" + } + }, + "isarray": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.0", + "bundled": true, + "dev": true + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-package": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar": { + "version": "4.4.6", + "bundled": true, + "dev": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.3", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "through": { + "version": "2.3.8", + "bundled": true, + "dev": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, + "umask": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "util-extend": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.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", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.3.tgz", + "integrity": "sha512-iOfMsuGMPbM/bZZ731gwtAXfXjIkR97BXqUXsPGIzBaQzpvqajsoIFlR+z+Q7FLcq2TmV4JFGo80d98ttfRzhA==", + "dev": true, + "requires": { + "cssnano": "^3.10.0", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "ora": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", + "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-lazy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", + "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "got": { + "version": "6.7.1", + "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "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-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "password-sheriff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/password-sheriff/-/password-sheriff-1.1.0.tgz", + "integrity": "sha1-/bPD2EWgo8kt5CKyrZNGzginFBM=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "dev": true, + "requires": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "^5.0.16" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "^5.0.5" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.3.tgz", + "integrity": "sha512-CIWJNU+cFFdeA0GJSzzFkxiq2WuMvWZMlz6cV/EXhPlRnI3esSFMh+lNmyZ8z/X8O8C1U60Sc8puXALj4/WmZw==", + "dev": true + }, + "prettier-eslint": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-8.8.1.tgz", + "integrity": "sha512-8YMkJZnA+XVfEW6fPet05jpNmSQbD+Htbh/QyOxQcVf2GIUEZsnGP7ZScaM9Mq2Ra2261eCu60E7/TRIy9coXQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^4.0.0", + "indent-string": "^3.2.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^1.7.0", + "pretty-format": "^22.0.3", + "require-relative": "^0.8.7", + "typescript": "^2.5.1", + "typescript-eslint-parser": "^11.0.0" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + } + } + }, + "prettier-standard": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/prettier-standard/-/prettier-standard-8.0.1.tgz", + "integrity": "sha512-egiIKvmlizoXuRkh83myjB4elmdIahCaUACLDaZyCgvspZQyps0fUayQpvcv4/gW/XahMTu95a3f9Fu8ouGYZw==", + "dev": true, + "requires": { + "@sheerun/eslint-config-standard": "^10.2.1", + "babel-eslint": ">=7.2.3", + "babel-runtime": "^6.23.0", + "chalk": "^2.3.0", + "core-js": "^2.5.3", + "eslint": "^4.7.2", + "find-up": "^2.1.0", + "get-stdin": "^5.0.1", + "glob": "^7.1.2", + "ignore": "^3.3.3", + "indent-string": "^3.1.0", + "lodash.memoize": "^4.1.2", + "loglevel-colored-level-prefix": "^1.0.0", + "messageformat": "^1.0.2", + "minimist": "1.2.0", + "prettier": "1.9.x", + "prettier-eslint": "^8.1.1", + "regenerator-runtime": "^0.11.1", + "rxjs": "^5.4.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "prettier": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.9.2.tgz", + "integrity": "sha512-piXx9N2WT8hWb7PBbX1glAuJVIkEyUV9F5fMXFINpZ0x3otVOFKKeGmeuiclFJlP/UrgTckyV606VjH2rNK4bw==", + "dev": true + } + } + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", + "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "randomatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "react": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", + "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", + "requires": { + "create-react-class": "^15.6.0", + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + } + } + }, + "react-dom": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", + "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + } + } + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-transition-group": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.4.0.tgz", + "integrity": "sha512-Xv5d55NkJUxUzLCImGSanK8Cl/30sgpOEMGc5m86t8+kZwrPxPCPcFqyx83kkr+5Lz5gs6djuvE5By+gce+VjA==", + "requires": { + "dom-helpers": "^3.3.1", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "read-chunk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", + "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", + "dev": true, + "requires": { + "pify": "^3.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "recast": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.15.3.tgz", + "integrity": "sha512-xqnagxQH7mL4+UpcCVMObPPdjCEE2dmfGcTwcdpyNgZOd9W0rfdLRF3+smoA+AQqMw6xK6G4021dAQK8XfPYIQ==", + "dev": true, + "requires": { + "ast-types": "0.11.5", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "regexpu-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.4.0", + "regjsparser": "^0.3.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regjsgen": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", + "dev": true + }, + "regjsparser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-array-items": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remove-array-items/-/remove-array-items-1.0.0.tgz", + "integrity": "sha1-B79CyzMvTPboXq2DteToltIyayE=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", + "dev": true + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", + "dev": true, + "requires": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + } + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", + "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "sass-loader": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.7.tgz", + "integrity": "sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + } + } + }, + "scoped-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", + "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", + "dev": true + }, + "script-ext-html-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-kUH+XhpjG95ABMnWeKCguM7NCOqSrGlYEnJQKgvPIyq5+FzQuACMLzWOB/Lp7t0sKqKLWNLu8i6MmLRKRo1IUw==", + "dev": true, + "requires": { + "debug": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz", + "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "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": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "standard": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", + "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "dev": true, + "requires": { + "eslint": "~5.4.0", + "eslint-config-standard": "12.0.0", + "eslint-config-standard-jsx": "6.0.2", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-node": "~7.0.1", + "eslint-plugin-promise": "~4.0.0", + "eslint-plugin-react": "~7.11.1", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "~9.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true + }, + "acorn-jsx": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz", + "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==", + "dev": true, + "requires": { + "acorn": "^5.0.3" + } + }, + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "dev": true, + "requires": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + } + }, + "eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true + }, + "eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "dev": true, + "requires": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + } + }, + "eslint-plugin-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.0.tgz", + "integrity": "sha512-3on8creJifkmNHvT425jCWSuVK0DG0Quf3H75ENZFqvHl6/s2xme8z6bfxww13XwqfELYWKxc/N3AtBXyV1hdg==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz", + "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz", + "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==", + "dev": true, + "requires": { + "acorn": "^5.6.0", + "acorn-jsx": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "regexpp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz", + "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + } + } + }, + "standard-engine": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", + "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "dev": true, + "requires": { + "deglob": "^2.1.0", + "get-stdin": "^6.0.0", + "minimist": "^1.1.0", + "pkg-conf": "^2.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "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": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^0.4.5" + } + }, + "subscriptions-transport-ws": { + "version": "0.9.14", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.14.tgz", + "integrity": "sha512-n1+mgupVdJn1MIls1ZhSJurJjc+islp7Tv9EIaEJ3HAd9DaINneKq0KRqOYNOrvUI7orVWGomEnlIxoudjfbeA==", + "requires": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + } + } + }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "requires": { + "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": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + } + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "textextensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "time-fix-plugin": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/time-fix-plugin/-/time-fix-plugin-2.0.3.tgz", + "integrity": "sha512-5StGdiXCiBsq2+RdBQ0NrunFeKqVX0f2Myn8s1YqOxRS+kmuiHcdpPm27ucbM6FYawBKGTOOYxPnqxIBZyiqEg==", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "dev": true + }, + "typescript-eslint-parser": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-11.0.0.tgz", + "integrity": "sha512-/fBHTBRBSorWQGKWOOjeMPkzd3o8cOPtFjTRwU5JLNGgVtmMa3KDkiw0R2n+H6ovo9y3OX30/5usm6YTqY44PQ==", + "dev": true, + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "ua-parser-js": { + "version": "0.7.18", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", + "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-join": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-3.0.0.tgz", + "integrity": "sha1-JugROs4ZXqMND8OBhuRUAPnOpnI=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", + "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.1.tgz", + "integrity": "sha512-vdPYogljzWPhFKDj3Gcp01Vqgu7K3IQlybc3XIdKSQHelK1C3eIQuysEUR7MxKJmdandZlQB/9BG2Jb1leJHaw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.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": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + }, + "dependencies": { + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true + }, + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } + } + }, + "webpack-addons": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", + "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", + "dev": true, + "requires": { + "jscodeshift": "^0.4.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "ast-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "dev": true + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jscodeshift": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", + "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", + "dev": true, + "requires": { + "async": "^1.5.0", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^6.17.3", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.12.5", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "recast": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", + "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", + "dev": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "^2.4.1", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.5.tgz", + "integrity": "sha512-CiWQR+1JS77rmyiO6y1q8Kt/O+e8nUUC9YfJ25JtSmzDwbqJV7vIsh3+QKRHVTbTCa0DaVh8iY1LBiagUIDB3g==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "diff": "^3.5.0", + "enhanced-resolve": "^4.0.0", + "envinfo": "^5.7.0", + "glob-all": "^3.1.0", + "global-modules": "^1.0.0", + "got": "^8.3.1", + "import-local": "^1.0.0", + "inquirer": "^5.2.0", + "interpret": "^1.1.0", + "jscodeshift": "^0.5.0", + "listr": "^0.14.1", + "loader-utils": "^1.1.0", + "lodash": "^4.17.10", + "log-symbols": "^2.2.0", + "mkdirp": "^0.5.1", + "p-each-series": "^1.0.0", + "p-lazy": "^1.0.0", + "prettier": "^1.12.1", + "supports-color": "^5.4.0", + "v8-compile-cache": "^2.0.0", + "webpack-addons": "^1.1.5", + "yargs": "^11.1.0", + "yeoman-environment": "^2.1.1", + "yeoman-generator": "^2.0.5" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.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", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz", + "integrity": "sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA==", + "dev": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + } + } + }, + "webpack-hot-client": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-4.1.1.tgz", + "integrity": "sha512-Gu3hEkFJIsvC+2Dg86FvAzIL8KSR88Ptk0QnV4wEucObB0c9aMIYbjSA9oPTV4X5OZRH6ftrk4FcSGsZmTLiWA==", + "dev": true, + "requires": { + "@webpack-contrib/schema-utils": "^1.0.0-beta.0", + "json-stringify-safe": "^5.0.1", + "loglevelnext": "^1.0.2", + "merge-options": "^1.0.1", + "strip-ansi": "^4.0.0", + "uuid": "^3.1.0", + "webpack-log": "^1.1.1", + "ws": "^4.0.0" + }, + "dependencies": { + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-merge": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", + "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-serve": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/webpack-serve/-/webpack-serve-1.0.4.tgz", + "integrity": "sha512-WhI9PMY2YLFliZhDsQFE5Os/On5Py6DGZpeBJyDM8xl0cspxgvXmWFywACn2YWWDgowqIxRqveyGh2RwdFWTNQ==", + "dev": true, + "requires": { + "@shellscape/koa-static": "^4.0.4", + "@webpack-contrib/config-loader": "^1.1.1", + "chalk": "^2.3.0", + "clipboardy": "^1.2.2", + "cosmiconfig": "^5.0.2", + "debug": "^3.1.0", + "find-up": "^2.1.0", + "get-port": "^3.2.0", + "import-local": "^1.0.0", + "killable": "^1.0.0", + "koa": "^2.4.1", + "koa-webpack": "^4.0.0", + "lodash": "^4.17.5", + "loud-rejection": "^1.6.0", + "meow": "^5.0.0", + "nanobus": "^4.3.1", + "opn": "^5.1.0", + "resolve": "^1.6.0", + "time-fix-plugin": "^2.0.0", + "update-notifier": "^2.3.0", + "url-join": "3.0.0", + "v8-compile-cache": "^2.0.0", + "webpack-hot-client": "^3.0.0", + "webpack-log": "^1.1.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "webpack-hot-client": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-3.0.0.tgz", + "integrity": "sha512-6k91015hZ4Okkz8u6OzRgJygEL+3J3ay6HVZhWBF3tT2P0rZJ0mgca39dotJxngggUm3S8707c0vrcynn1IzEQ==", + "dev": true, + "requires": { + "json-stringify-safe": "^5.0.1", + "loglevelnext": "^1.0.2", + "strip-ansi": "^4.0.0", + "uuid": "^3.1.0", + "webpack-log": "^1.1.1", + "ws": "^4.0.0" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "winchan": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/winchan/-/winchan-0.2.0.tgz", + "integrity": "sha1-OGMCjn+XSw2hQS8oQXukJJcqvZQ=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "workbox-background-sync": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.4.1.tgz", + "integrity": "sha512-Ksb2nCg/2wOyBMhSBqSbtCEwuKaf5sHgTY8HdCxbLIQSzDh9/qZqg+1P11CKlgJmHtje3EK3B8EsrzukZo10xA==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-broadcast-cache-update": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.4.1.tgz", + "integrity": "sha512-+WPqHFk4ER4RICAMOYrP88yBbiUQ9ZOFNruqwbl9YxGfbADV16OEGmYpIs+Az6HT6DNDCx8eQqtFiaG8N3O11Q==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-build": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.4.1.tgz", + "integrity": "sha512-Qi04XdHjkXbRN0CV5XO1oqDWbJSIm7VYhxmxjtnVcKK8PrMT6rOUFUi9ziDI+8UQgcXbLK4ZChWf2ptZS1/MbA==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "common-tags": "^1.4.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.2", + "joi": "^11.1.1", + "lodash.template": "^4.4.0", + "pretty-bytes": "^4.0.2", + "workbox-background-sync": "^3.4.1", + "workbox-broadcast-cache-update": "^3.4.1", + "workbox-cache-expiration": "^3.4.1", + "workbox-cacheable-response": "^3.4.1", + "workbox-core": "^3.4.1", + "workbox-google-analytics": "^3.4.1", + "workbox-navigation-preload": "^3.4.1", + "workbox-precaching": "^3.4.1", + "workbox-range-requests": "^3.4.1", + "workbox-routing": "^3.4.1", + "workbox-strategies": "^3.4.1", + "workbox-streams": "^3.4.1", + "workbox-sw": "^3.4.1" + } + }, + "workbox-cache-expiration": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.4.1.tgz", + "integrity": "sha512-AzOPB+dwfxg13v4+q5jWkxsw/oim9mPIzew1anu8ALA3vB8qySaJJToXp+ZlVh/Co+sDK0tgjlB76bvSFHgZ4g==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-cacheable-response": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.4.1.tgz", + "integrity": "sha512-SO2k830JT93GitPwc5tzJI49d9VwyVxXwiCbyvo+Sqo+dcvWSrmpsyuXdzy6zuasbPrWUF0vsFj1uGtZbOym8Q==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-cli": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-cli/-/workbox-cli-3.4.1.tgz", + "integrity": "sha512-QDKSAQfT3K7Y2U4pO2d7aPPSKbWJZA/1ouwskoCICo51nVVCQ+xR0czvJ++OzcR2qB3RsgZ7ZSbDvhOgyh9CTg==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "common-tags": "^1.4.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.2", + "inquirer": "^3.3.0", + "meow": "^3.7.0", + "ora": "^1.3.0", + "pretty-bytes": "^4.0.2", + "update-notifier": "^2.3.0", + "workbox-build": "^3.4.1" + } + }, + "workbox-core": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.4.1.tgz", + "integrity": "sha512-RqMV2so9/KLAu9aUxJ/85pvrZMUn835B8zoHmqRyGNetiDr8B1zSBeKXPZAjFlX/88KdhizNwiRlJtqlXtM4tA==", + "dev": true + }, + "workbox-google-analytics": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.4.1.tgz", + "integrity": "sha512-w6Osz2Rr1/4+W0gram6Yzg6NNWLvHP51RwFCNAZSpEnipr0qSEtD+yvwrdaHfiJHWhcK2yH/V6E1MV8Hrczmvw==", + "dev": true, + "requires": { + "workbox-background-sync": "^3.4.1", + "workbox-core": "^3.4.1", + "workbox-routing": "^3.4.1", + "workbox-strategies": "^3.4.1" + } + }, + "workbox-navigation-preload": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.4.1.tgz", + "integrity": "sha512-P3FHAcyZ8db2QiW/BpMkuosC1OkRsEoUaT7U3QOgg7JSjjsJoEbF7G5olNe+P+PQYdVhJA7TCuptI6dy2gLS/g==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-precaching": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.4.1.tgz", + "integrity": "sha512-ykU2mly9xmRrCW6iMeUWYydWiso/WSE16+7wponhI0WC53jiQSt2JvykWm0VpWFJSs6ZTSZZ1WK2gs/brRnPug==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-range-requests": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.4.1.tgz", + "integrity": "sha512-ktgjl6liZrRTmQjPw1pBblC5umHnTb8XcvFVitdGz17B23jj6cUV4EXzEU2ilGn6jO6+MLV1Vn9SWajtLSc2Gg==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-routing": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.4.1.tgz", + "integrity": "sha512-6j6cXMUYfMPYTycmElxVOfBTr6WV5zAn/JUFJ7GJ5pYFIE9cqztprnrcOsWJ42+AiNIeHPbKfyIWE/rZVviMxQ==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-strategies": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.4.1.tgz", + "integrity": "sha512-7mJuzFsgejflzjfnChXCFma1S0mi9WC6wlSU2wE50M7bJmEuf9A3j3MojpKcsTEM58hbhbnU6QF/u9iIV7+opw==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-streams": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.4.1.tgz", + "integrity": "sha512-krw+5bp+oe9Za5c6WlTWM3SgZGfExYcqRSn1gsyYgKeXmgzTwf+DOb5Lwult0KSWlJfq8B3Wk7sW8Sl7lRzSbA==", + "dev": true, + "requires": { + "workbox-core": "^3.4.1" + } + }, + "workbox-sw": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.4.1.tgz", + "integrity": "sha512-nnm2by5oaQGXRH7x4M5/n2KqjUGVmP4P8azUmJITnYa3DWVYn/ghDg3LJ5+h4A28vYq9V6ePgATaEPfb6B5pug==", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yeoman-environment": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.3.3.tgz", + "integrity": "sha512-HBpXdNw8V66EwqIFt01rNhSgX33BOzgVb9CxpIvESvCI4ELeOSniB6gV6RXwrBur8kmHZCIAkYQYpib7Qxx8FQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "diff": "^3.5.0", + "escape-string-regexp": "^1.0.2", + "globby": "^8.0.1", + "grouped-queue": "^0.3.3", + "inquirer": "^6.0.0", + "is-scoped": "^1.0.0", + "lodash": "^4.17.10", + "log-symbols": "^2.2.0", + "mem-fs": "^1.1.0", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "untildify": "^3.0.3" + }, + "dependencies": { + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inquirer": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "rxjs": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.1.tgz", + "integrity": "sha512-hRVfb1Mcf8rLXq1AZEjYpzBnQbO7Duveu1APXkWRTvqzhmkoQ40Pl2F9Btacx+gJCOqsMiugCGG4I2HPQgJRtA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "yeoman-generator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.5.tgz", + "integrity": "sha512-rV6tJ8oYzm4mmdF2T3wjY+Q42jKF2YiiD0VKfJ8/0ZYwmhCKC9Xs2346HVLPj/xE13i68psnFJv7iS6gWRkeAg==", + "dev": true, + "requires": { + "async": "^2.6.0", + "chalk": "^2.3.0", + "cli-table": "^0.3.1", + "cross-spawn": "^6.0.5", + "dargs": "^5.1.0", + "dateformat": "^3.0.3", + "debug": "^3.1.0", + "detect-conflict": "^1.0.0", + "error": "^7.0.2", + "find-up": "^2.1.0", + "github-username": "^4.0.0", + "istextorbinary": "^2.2.1", + "lodash": "^4.17.10", + "make-dir": "^1.1.0", + "mem-fs-editor": "^4.0.0", + "minimist": "^1.2.0", + "pretty-bytes": "^4.0.2", + "read-chunk": "^2.1.0", + "read-pkg-up": "^3.0.0", + "rimraf": "^2.6.2", + "run-async": "^2.0.0", + "shelljs": "^0.8.0", + "text-table": "^0.2.0", + "through2": "^2.0.0", + "yeoman-environment": "^2.0.5" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "ylru": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", + "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", + "dev": true + }, + "zen-observable": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.8.tgz", + "integrity": "sha512-HnhhyNnwTFzS48nihkCZIJGsWGFcYUz+XPDlPK5W84Ifji8SksC6m7sQWOf8zdCGhzQ4tDYuMYGu5B0N1dXTtg==" + }, + "zen-observable-ts": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz", + "integrity": "sha512-KJz2O8FxbAdAU5CSc8qZ1K2WYEJb1HxS6XDRF+hOJ1rOYcg6eTMmS9xYHCXzqZZzKw6BbXWyF4UpwSsBQnHJeA==", + "requires": { + "zen-observable": "^0.8.0" + } + } + } +} diff --git a/packages/aateam-client/package.json b/packages/aateam-client/package.json new file mode 100644 index 000000000..814b1d410 --- /dev/null +++ b/packages/aateam-client/package.json @@ -0,0 +1,95 @@ +{ + "name": "aateam-client", + "version": "0.0.1", + "description": "Advanced Algos Team client-side web app", + "main": "src/index.js", + "scripts": { + "develop": "NODE_ENV=development PORT=5000 webpack-serve --config ./webpack.config.js", + "build": "NODE_ENV=production webpack --mode production --config ./webpack.config.js", + "lint": "node_modules/.bin/eslint src", + "format": "prettier-standard 'src/**/*.js'", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "hyperapp", + "bulma" + ], + "repository": "", + "author": "Barry Low ", + "license": "AGPL-3.0", + "devDependencies": { + "@babel/core": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "autoprefixer": "^8.6.5", + "babel-eslint": "8.2.2", + "babel-loader": "^8.0.0", + "babel-minify-webpack-plugin": "^0.3.1", + "babel-plugin-dynamic-import-node": "^1.2.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "bulma-o-steps": "^1.0.8", + "connect-history-api-fallback": "^1.5.0", + "css-loader": "^0.28.11", + "eslint": "^4.19.1", + "eslint-config-standard": "^11.0.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-node": "^6.0.1", + "eslint-plugin-promise": "^3.8.0", + "eslint-plugin-standard": "^3.1.0", + "file-loader": "^1.1.11", + "html-webpack-harddisk-plugin": "^0.2.0", + "html-webpack-plugin": "^3.2.0", + "koa-connect": "^2.0.1", + "mini-css-extract-plugin": "^0.4.2", + "minilog": "^3.1.0", + "node-sass": "^4.9.3", + "optimize-css-assets-webpack-plugin": "^4.0.3", + "postcss-loader": "^2.1.6", + "prettier-standard": "^8.0.1", + "sass-loader": "^6.0.7", + "script-ext-html-webpack-plugin": "^2.0.1", + "standard": "^12.0.1", + "style-loader": "^0.21.0", + "uglifyjs-webpack-plugin": "^1.3.0", + "webpack": "^4.17.1", + "webpack-cli": "^2.1.5", + "webpack-hot-client": "^4.1.1", + "webpack-merge": "^4.1.4", + "webpack-serve": "^1.0.4", + "workbox-build": "^3.4.1", + "workbox-cli": "^3.4.1" + }, + "dependencies": { + "@hyperapp/fx": "^0.7.0", + "@hyperapp/router": "^0.7.0", + "apollo-cache-inmemory": "^1.2.9", + "apollo-client": "^2.4.1", + "apollo-link": "^1.2.2", + "apollo-link-context": "^1.0.8", + "apollo-link-error": "^1.1.0", + "apollo-link-http": "^1.5.4", + "apollo-link-ws": "^1.0.8", + "apollo-utilities": "^1.0.20", + "auth0-lock": "^11.9.0", + "babel-polyfill": "^6.26.0", + "bulma": "^0.7.1", + "bulma-timeline": "^2.0.3", + "cross-fetch": "^2.2.2", + "dotenv-webpack": "^1.5.7", + "graphql": "^0.13.2", + "graphql-tag": "^2.9.2", + "hyperapp": "^1.2.8", + "subscriptions-transport-ws": "^0.9.14" + }, + "standard": { + "parser": "babel-eslint", + "ignore": [ + "dist/", + "build/" + ] + }, + "prettier": { + "semi": false + } +} diff --git a/packages/aateam-client/postcss.config.js b/packages/aateam-client/postcss.config.js new file mode 100644 index 000000000..88752c6cb --- /dev/null +++ b/packages/aateam-client/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: [ + require('autoprefixer') + ] +} diff --git a/packages/aateam-client/src/actions/index.js b/packages/aateam-client/src/actions/index.js new file mode 100644 index 000000000..a82841208 --- /dev/null +++ b/packages/aateam-client/src/actions/index.js @@ -0,0 +1,58 @@ +import { action, log } from '@hyperapp/fx' +import { location } from '@hyperapp/router' + +import { nav } from '../modules/nav/actions' +import { team } from '../modules/team/actions' +import { algobot } from '../modules/algobots/actions' +import { community } from '../modules/community/actions' + +export const actions = { + location: location.actions, + isLoggedIn: authStatus => async (state, actions) => { + authStatus.then((result) => { + if (result) { + actions.setLoggedIn(result) + actions.redirect('dashboard') + } else { + actions.loggedIn(result) + actions.redirect('/') + } + }) + }, + loggedIn: loggedIn => ({ loggedIn }), + redirect: redirect => ({ redirect }), + setLoggedIn: profile => [ + log('setLoggedIn', profile, window.location.pathname), + action('loggedIn', true), + action('setUserProfile', profile), + action('redirect', window.location.pathname) + ], + setLoggedOut: () => [ + log('setLoggedOut', true), + action('loggedIn', false), + action('setUserProfileEmpty') + ], + setUserProfile: profile => { + const user = { + id: profile.sub, + name: profile.name, + username: profile.nickname, + avatar: profile.picture, + email: profile.email + } + return { user } + }, + setUserProfileEmpty: () => ({ user: '' }), + toggleModal: form => (state, actions) => { + return { + modal: { + content: form, + isActive: !state.modal.isActive + } + } + }, + nav, + team, + algobot, + community +} diff --git a/packages/aateam-client/src/assets/AlgonetWebPlatform.jpg b/packages/aateam-client/src/assets/AlgonetWebPlatform.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f5176e33c4194326f0b00005a3c5f6989a393ac GIT binary patch literal 79418 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 Wwuj@uspjVSDMc%9zBigwNuQ@Ec0W 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 LKED9|I`RJi4iEx1 literal 0 HcmV?d00001 diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/aa-logo-vert.svg b/packages/aateam-client/src/assets/logos/advanced-algos/aa-logo-vert.svg new file mode 100644 index 000000000..442e9a7fd --- /dev/null +++ b/packages/aateam-client/src/assets/logos/advanced-algos/aa-logo-vert.svg @@ -0,0 +1 @@ +aa-logo-vert \ No newline at end of file diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/aa-logo.png b/packages/aateam-client/src/assets/logos/advanced-algos/aa-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9701ee1c0e1858370837bc61930333be69bc4cd6 GIT binary patch literal 4770 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 CP}HCR literal 0 HcmV?d00001 diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/android-chrome-192x192.png b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..150043a067d25f23a50da98a6210b918f475fc2f GIT binary patch literal 2515 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 K(680Q#rzwV-;{R% literal 0 HcmV?d00001 diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/android-chrome-512x512.png b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d98b9ce8dfd54d6032578443e2fbcd100ded89d3 GIT binary patch literal 6543 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 literal 0 HcmV?d00001 diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/apple-touch-icon.png b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..95ec62746f406ac4380317ecac6e421082e89075 GIT binary patch literal 3064 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 + + + + + #da532c + + + diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon-16x16.png b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..99bda00afe0b53c6844ec2924ab42b8084224fe3 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM*td0G|-oC+?P*$S1Q9Q;z5jjV*#G}eH@M4% zFtxQ5G*3A7;>)7tYEs%i8|0gcj+?SRpWd`F!giHnjIP?6-Q0Y+&Og@|xz``q@?w{_ za)q+8n&F33wH*DlW04+@&l#sfR-UsOAu{|Cy&nOiTJ zTUc4xd$I_#u!2j2$>9`c<;@`qr*B+2apcSqnIr6{8$1?x=`p+#7cBYYWI7dS1%s!n KpUXO@geCw#&&NOj literal 0 HcmV?d00001 diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon-32x32.png b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..08c2369b05c014d615766ea699a4a355d454ed25 GIT binary patch literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaNh0(?STpSW9MBA?7cOhHmb9xo5e1==E8666=m`18dn79M*BrayZh-qaTI zmCkr?yu4|4beYn`w#~+>nYKWut@Cto46!(!8{D~VwE_=IWK-Af(%gUl&F{0ksr?$_ zr+wPT$%wP7&Q0OE$+VDrE7=c)Wysog^s~4=U$OJaqVqlR{CUgoZFtuEhS~9{f=x__ zzg$z!RIZd6$$i0hKboDLCid*mUjdy`^;UrmH|B9nTb6VvT+>^79Y;AZK-eEt`*#*_ z8%4Bi|HPQ_V54Hq&#(4p70!K|soiq_#Uyd3d2jyP9N1xb_Qb~4v)n?GD?$s31&_Rn z?b^m$AimK^^ZZLCmRk(dWhOSvNshGMx%hWXVZq8u8J)<2#QymSN7YX_=B$dll*51U zV?DFAedaZb8O<}^8$L9$Ni5g2G?Mn7lyP*|5do*W!e_IK7HT~U{WA5;CxJ^oSDtH3 zy&gHqVQy#IOvR2Tcb;AH7Mr^+=&5Lz%H-(RS9l)2I_dEC!Tu~Z=jYe|t)KL&Xz7Z2 z+2;Ji;jdSAPq7WYy|?GtquMe*ld0cw3)key-sW56Iz@Y_y%|?LOY5=&S45STif5)3 zE2{|A_$zCj`&tvSa%G)d-%_7mBs%pCTA7B)RSA|5B1SOU$6cpvBW#*(RlvEa^Dr6RvBr`Bn%z6BYhodk| zL*tbH=`)^BgBX~Vx%HB{g_VW9CyOu(E4Vb698O_Y-W;NE`o@(LN6s9PIl_Lr!DE4! a9>Xhf!IDo-rc;4dFnGH9xvX` zzjMCl-|yaeq^f$=e0BD0CB9r;`*~IUvZ|`(<(QwUs=sONlsNk<4^`FgB=C%6bfh{b zVm&=S+hY&Pzc2p!Zcp^EXs!!W$aL;^ojdMzFdKJ_Ul2bpx-J?8F@FLq;tzxm!a>Xv z7I9)f6x|Zl9dt+Q{RhDZ;V5JNiss)Gn0GX8(pKyv_el8AgP-&x`(SsyzZbZOxiOdV zFV`5ecOJ~*5C0h0!}b%hKMFi0#x6g+4krh$yA#QQ?4@`Y*j+DYmJ&8iijsz z9dG-<`kNx(kz;kC^)wgfPUU>7++qAcw+MV0Giwna;s)+A=EiJ4h-?9R}yDXQUs@*r5)}x^<1fS-&BAA^gmk+w4fre)KgS`b?YbtZNOO)GKi$&dvDV z(b`CaKhy~C*OY(b&^+OrW?ORPcWz~eSHnRS;o3c9S0p_(|SUG!rrC_*|zmr*3gYy*rF!rcfOsxKB1evf>M4p zH!t@bZ}yTNae4(i*dTB2hY35=@awEGQV-MueKr!g_d9h;25g=Cwrv@7is*&5{440op-*Cy{|Ro9LEU^MLfZ3o$xljV|kE_ zb3hHz75wX>6Xi zamx&&KCo0v^jXc@joW{nTz7Zl8+{M#;uzvTfYsUI`_hb8&8RPGB_&`jI+jig{ z<0J3S><2b@v}PQAjU5Ygby0ptO2!yC%UyuIe&|hm$we7OZ&bHEoVL^ zANE{3;2$+(!u+t0^pOwhq|D11%}bkp*E^o}yDbO4do0_RF6R^c|g7NgvTC;DY>KLdJCle(yU+jz^LyF&xDh+l769gO9Z4n5J*w@CQHX zA;;ahF@Ad8@i+dl_uElmZt9TD^4&YsoEVPvbI9ZvYF>`*M;re8?%^ihwt3)l%37-anFa{csmF>;I0{{C+%k{P1&ivg|;y>~D8{aJ0?Q8Jz9bq5%ZgG8`Nc|Z9 zEL_;iyT{)o)Q$0vN*`y@dE7F@Q{?w}SM3=8vETm(@i%ZAv+II;r;L3W|A{;JAoh+* zR`|*~;k$1r;=ZA0=~3UCCH5b!cia3HM#mf6t`Fm7UJ~m=^!Qwx&XZm<7IA9kmZ*$- zIddZe(tJJm+S1-Cq57_~t@g!>iTAcbB9&olAUM|E_9&x30Ga;$PME z+LHJs5%WvCdwfCsMa}2Me=FV-{UEC93%&2fFRZTjw#C<$HhcdQUtipshi}gBB)-$z znZK)fUG47i_4D&zFyC5TNPKs&$Lpo{)4aZ2|C#-IBlx}G+rjGz{%(@5>n5MyTmN@( z1q8kIR&Yfm%~L%1e_G3;mqq#iX`RyK7$4OLe>dbB()cH$=R^a>m=@3bM+pVJ)-C?5 z=!$4v|1&Se6`%1DJN(V!zgvvOakv=r z=^W#OKGIE|AA&e5PLA=-wrvwU*F+zPK9Bv+Y{4|bfdtLJQIA+H> z#2wSI`1x!b=WLMUgnwXrL-bS|4y}*b4;f-d?NFo6RhHvSLBzJXhh1#C|ELLS!MgI@ z)bv9#;B`LjdycF2T)SW-_vnRR5v6(-ckf}>JwR?(gdViK?UnOSLa)zUlKj4RZbPSQ zk-UJ-ddgV5t@YAoIUdWiPl|KM4?<=P z6MKHNpWZFZHRc`4eQJH?`0#AV*gicEHe-PM-C`MIH2$&LGltNcdlXwD@^f)3e&_=qxY;-MPWuH0=fizR{ay<_)MYbX*mj)Co*%>+>`&ZlrSHwL|7K7taIs`(4#fm9%zhR_vL-p-+s7chr6a9 zvEf~B-+eFnn>WQ^KV1jilP%v5+?U(|wrSs~J@;mc&p~a>A}<@%1T~L6Fkqj)JJ8)X zi>)>p*>Ud41@8}NYR&1#0zErR`h8`wuGjS&%bMuoM!m~)Q0wQ5^xUrhQD0r})k|x= zdU0+3=EC~I&5N50gLiip2kY-Fu5P~c=<3etM_23jMH_z_)c1A=^|t5-QN2^p)~alX zHftV!r{HIaWl{c};t*9*_=^9(5q&IrU23_bCVIu|+RJ|{Y5bDtpCb3|_ZkB+JsPJT z_Z-ezaBOmJQ}lZgx;_$}i~TVSTE{LjZ;3t=eJkQz`Tg>^=BGK&qwzDM$79U-v$2-% zR?o$=Um=g3Ph)J%*gq%Y_ha_I6yd{Lg$>KH{w3=?8WU$QJ67hz%(%{mEOGlw$bKm9 zy2P&I%{g?u6K9CUlf`*_w+`(3|8f0PW9uOH#Ei9%d=}25H8A6+al1Z<0k*#lIb=SL zv9bDocRZe#40xUoIdnR{cnc$Wk}-47qnK y(q4T}zioaY`a@Oi>PD^Ws=9f#s(!UpRZlAee-v$qwtu1Db2qea`by*5RrP<{ez-3H literal 0 HcmV?d00001 diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/html_code.html b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/html_code.html new file mode 100644 index 000000000..a66b72bb6 --- /dev/null +++ b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/html_code.html @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/mstile-150x150.png b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..78a06c05a5974bb75c8c71e99d32a960ed0d6497 GIT binary patch literal 2535 zcmbVO`8OMg8coN(jU}Z)6ji&#T7+UOwM&R-il%Msp_ZtN3?4JVW?uxqLio^f-zwl8q z#N}s*R16aC3DDTM#&<&I;Fsf>f%92Zl3Pq%MMXORAV_zzvqmLMt(UW2OlygzQ^ok# zcDYB29Hl6!znJjpQl5rL@+tFhE)kt}KP^r6pXUD#g1zPlTO9o)3Brp$Wrf1Y_9^Yh z`Yt6Fx7}?Q|B6u~##hdWf73hn&6`G6Zo^KrpC3Jd7LmN_1cHZOhSk5GK3_GHL55qH z`cAXPzDNWpCaHy@D#v^_)E6w#8W~ivz%MZ?Uk{lU)MHd`}eF4C_;ZV==bjlUP~6d^RNG~vN^bafSL>y zl1ZJs5id)T=?)#iFjq=5gr?=mp@sh07hTZPp_zh1l{U+gy-!OwEi~Mpw@L&U`?8BO zgj~IcI~iu4?6>bZUUW%H;Z%#v&f4>+dWa=d`m1G47|*gt8~977J@l7lWiIVHY-nPR zmFO^1ShDcxI%(6Uezd3%Dqyi5qucM31I}-pT~_`)j%)^_)W^9McAz4ejz-YA1y4Dt z^`@JxSWvL;UdVCER%GU=U3D+XP41je=?iU6I~byC6bxg46iEoZ&vbp6H4~!Tx_IX& z-xFH2S!GADXEZ$cJdp`3N2IDd*hmVmuwPd{Appeu9oK5r?7PEWDE6S`UlUEh;e5LteoLP zwrwr9_uw-17+4^);`EW)-ADMV4ttYeRL;=Wb=2K`m@d*hxpZ2V39#VQP%4hrC+OZ; z_4#sRE9GMDhl`1VJNdKt2F1E03ght6gYyEhcjG7`8w>WSc95vztlaY=icleZHN@D_lrM!2_0dsHTaZ&UVOsVzOUZ@4;3v{`Ax_MwZ?1;z;`yJE%3R z_#UmYl6lQRdb6tfwu-5F=;M;`h__hBqvT8Y0xqSVgzkLHXbyV zASR@LIj#>8_&3e)HAPTT zjjNR#Gx-8VZfTx!_A8qveWC0Gzz;?eo~3$C*5>-C8)oLZ&#&3%1$xLoT^)+^!B_NI zHfZXP0Oclf1!%vsUp31pqh3QwVhy$!#HPuV66FrmNVRTz-Ix8ZKay+9SZ9j+v|)M_ zM!DQpRS`tuZ5h15Yqa;fhyUkUK%OrD=2X}@sgZoGb(kuCIl&qEG}lP1dmM|n`CdM_ z#4C)6t95i<0+PGe_H49>;+dRW{d(YG9-bM-n_y6zNIR$m<<7?_J6ozlSWem0E_W4+ zz*}*Oor#x%OLBJ}+QJ&-w4U`f;=o` zGmVp>9e>(hHFi`Ju0(7wtcFZ9uR`m4<$v$|wP;uISphRyBh-F4fcC8`X7`8+uBa$> z?-&k@+-fU^8osl_=q$6U=M20d*@WmS4t~nYSiDQ3%1&*9p4>9p4g_drZEjH@kn%^DRp|L@t;SF4;|-#3RZB|~mb#~MBQmPPN+zbl z>84<^>ZXVyjI9r|*g$w{Lgt6*qu&Vpb6w5pM!9XGu(H$JTYZKUM5D*s6iXwB z!nS+xaF9t$E3l=;L1OUC>zoF)Gok4N36~h<=sXvr*1oIB)n}c$2HrgXK=L1V?sTvG z10vjVYr4)>^-++VW%i2y_)!XH;2PQN3Rk=+E6#5qx`>h5 zc(NCi6>QNoGrghaOLZu{Fe@1-T@i9t>rQcxLDIYD@+I<|$0`Gya4ybz zO)1G6xS|gHjA7{7TdaJ$d*=px_1?B~C-Wk+_DFpN;o2Q7`=}^Qj@MW%VL5U0!*8l+@*M5#LB{do6)Vsx_4tE?=kT=p zj6^=+y0DLSD`F0#sH(^SB|sv5AHNSsj8yXKFhp#W~nyE6w#@Xf`g~D?mYziJt=x|@U2QehPNPZ8LD3U87J+aFBsP#WO zF)E`5yWM;BOB1B&DW%9Z+-U)`MS|wVcwn0QBhTZOZq&VXqNEO`A zv!nQT?g|2H~y;D#av51uEg9V*CMsgtGZ \ No newline at end of file diff --git a/packages/aateam-client/src/assets/logos/advanced-algos/favicon/site.webmanifest b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/site.webmanifest new file mode 100644 index 000000000..002445914 --- /dev/null +++ b/packages/aateam-client/src/assets/logos/advanced-algos/favicon/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "Advanced Algos", + "short_name": "Advanced Algos", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/packages/aateam-client/src/auth/index.js b/packages/aateam-client/src/auth/index.js new file mode 100644 index 000000000..4da43d3ac --- /dev/null +++ b/packages/aateam-client/src/auth/index.js @@ -0,0 +1,217 @@ +import Auth0Lock from 'auth0-lock' +import gql from 'graphql-tag' + +import { getItem, setItem, removeItem } from '../utils/local-storage' +import { validObject, deleteCookie } from '../utils/js-helpers' + +import { actions } from '../actions' +import { client } from '../index' + +export const AUTH_CONFIG = { + api_audience: process.env.AUTH0_AUDIENCE, + domain: process.env.AUTH0_DOMAIN, + clientId: process.env.AUTH0_CLIENTID, + callbackUrl: process.env.AUTH0_CALLBACK_URL +} + +console.log(process.env.AUTH0_CLIENTID) + +const AUTHENTICATE = gql` + mutation authenticate($idToken: String!) { + authenticate(idToken: $idToken) { + id + nickname + auth0id + profile { + email + avatar + } + } + } +` +const lock = new Auth0Lock(AUTH_CONFIG.clientId, AUTH_CONFIG.domain, { + oidcConformant: true, + autoclose: true, + auth: { + sso: true, + redirectUrl: window.location.origin + '/callback', + responseType: 'token id_token', + audience: `${AUTH_CONFIG.api_audience}`, + params: { + scope: `openid profile email user_metadata app_metadata picture` + } + } +}) + +class Auth { + constructor (cb, apolloClient) { + this.handleAuthentication() + // binds functions to keep this context + this.apolloClient = apolloClient + this.cb = cb.bind(this) + this.login = this.login.bind(this) + this.logout = this.logout.bind(this) + this.isAuthenticated = this.isAuthenticated.bind(this) + this.checkSession = this.checkSession.bind(this) + } + + login () { + // Call the show method to display the widget. + lock.show() + } + + handleAuthentication () { + // Add a callback for Lock's `authenticated` event + lock.on('authenticated', this.setSession.bind(this)) + // Add a callback for Lock's `authorization_error` event + lock.on('authorization_error', err => { + console.log(err) + const data = { status: `error`, errMessage: err.error } + this.cb(data) + }) + } + + checkSession () { + return new Promise((resolve, reject) => { + // Add a callback for Lock's `authenticated` event + lock.checkSession( + { + responseType: 'token id_token', + audience: AUTH_CONFIG.api_audience, + scope: + 'openid email profile read:teams write:teams read:member write:member', + connection: 'github', + prompt: 'none' + }, + function (err, authResult) { + if (!err) { + resolve(authResult) + } else { + reject(err) + } + } + ) + }) + } + + setSession (authResult) { + console.log('setSession') + if (authResult && authResult.accessToken && authResult.idToken) { + // Set the time that the access token will expire at + let expiresAt = JSON.stringify( + authResult.expiresIn * 1000 + new Date().getTime() + ) + setItem('access_token', authResult.accessToken) + setItem('id_token', authResult.idToken) + setItem('expires_at', expiresAt) + const data = { + status: `success`, + accessToken: authResult.accessToken, + idToken: authResult.idToken, + expiresAt + } + console.log('setSession idTokenPayload: ', authResult.idTokenPayload) + + this.signinOrCreateAccount({ ...data }) + this.cb(data) + console.log(authResult.idTokenPayload) + setItem('user', JSON.stringify(authResult.idTokenPayload)) + if (window.location.href.includes(`callback`)) { + window.location.href = '/dashboard' + } + return true + } + } + + async signinOrCreateAccount ({ accessToken, idToken, expiresAt }) { + console.log( + 'signinOrCreateAccount: ', + client, + this.apolloClient, + accessToken, + idToken, + expiresAt + ) + try { + const data = await client.mutate({ + mutation: AUTHENTICATE, + variables: { idToken } + }) + + console.log('signinOrCreateAccount auth: ', await data) + setItem('user', data.data.authenticate.auth0id) + if (window.location.href.includes(`callback`)) { + window.location.href = '/' + } else { + window.location.reload() + } + return data + } catch (err) { + return console.log('Sign in or create account error: ', err) + } + } + + logout () { + // Clear access token and ID token from local storage + removeItem('access_token') + removeItem('id_token') + removeItem('expires_at') + removeItem('user') + removeItem('auth0.ssodata') + window.localStorage.clear() + deleteCookie('ajs_anonymous_id') + deleteCookie('ajs_user_id') + deleteCookie('current_tenant') + actions.setLoggedOut() + lock.logout({ returnTo: 'http://0.0.0.0:5000' }) + console.log('logout') + } + + async isAuthenticated () { + // check session and run Auth0 SS0 + const getUser = await getItem('user') + let user = JSON.parse(getUser) + + if (validObject(user, 'exp') && new Date().getTime() < (user.exp * 1000)) { + console.log('handleAuth.user exp: ', user, window.location.href) + actions.setLoggedIn(user) + return user + } + console.log('handleAuth.user: ', user, actions, window.location.href) + const checkSSO = await this.checkSession() + .then(result => { + console.log('handleAuth.checksessions: ', result) + setItem('user', result.idTokenPayload.sub) + // user confirmed, log into client + this.setSession(result) + return result.idTokenPayload + }) + .catch(err => { + console.log('handleAuth.checksessions err: ', err) + if (err.error === 'login_required') { + // return this.login() + } + return err + }) + if ( + (window.location.href.includes(`manage`) || + window.location.href.includes(`profile`)) && + !user + ) { + window.location.href = '/' + } + + if (/manage|profile|create|dashboard/.test(window.location.href) && !user) { + this.login() + } + + console.log('handleAuth.isAuthenticated 2: ', checkSSO, user) + if (validObject(checkSSO, 'error')) { + return false + } else { + return checkSSO + } + } +} + +export default Auth diff --git a/packages/aateam-client/src/index.js b/packages/aateam-client/src/index.js new file mode 100644 index 000000000..06e146c99 --- /dev/null +++ b/packages/aateam-client/src/index.js @@ -0,0 +1,143 @@ +/* eslint-disable no-unused-vars */ +import { app } from 'hyperapp' +import { location } from '@hyperapp/router' +import { withFx } from '@hyperapp/fx' + +import { ApolloClient } from 'apollo-client' +import { HttpLink } from 'apollo-link-http' +import { InMemoryCache } from 'apollo-cache-inmemory' +import { ApolloLink, concat, split, Observable } from 'apollo-link' +import { onError } from 'apollo-link-error' +import { WebSocketLink } from 'apollo-link-ws' +import { SubscriptionClient } from 'subscriptions-transport-ws' +import { getMainDefinition } from 'apollo-utilities' + +import Auth from './auth' + +import log from '../tools/log' +import { getItem, setItem, removeItem } from './utils/local-storage' + +import { actions } from './actions/' +import { state } from './state/' +import { view } from './views/' + +import css from './styles/app.scss' + +const graphqlEndpoint = + process.env.NODE_ENV === 'production' + ? process.env.PROD_GRAPHQL + : process.env.DEV_GRAPHQL + +const wsUri = graphqlEndpoint.replace(/^http/, 'ws') + +const globalVar = + typeof global !== 'undefined' + ? global + : typeof window !== 'undefined' + ? window + : {} +const webSocketImpl = globalVar.WebSocket || globalVar.MozWebSocket + +const wsClient = new SubscriptionClient( + wsUri, + { + reconnect: true + }, + webSocketImpl +) + +wsClient.onDisconnected(() => { + // console.log('onDisconnected') +}) + +wsClient.onReconnected(() => { + // console.log('onReconnected') +}) + +const httpLink = new HttpLink({ uri: graphqlEndpoint }) + +const link = split( + ({ query }) => { + const { kind, operation } = getMainDefinition(query) + return kind === 'OperationDefinition' && operation === 'subscription' + }, + new WebSocketLink(wsClient), + httpLink +) + +const authLink = onError(({ graphQLErrors, networkError, operation, forward }) => { + if (graphQLErrors) { + // User access token has expired + console.log('authLink: ', graphQLErrors) + if (graphQLErrors[0].message === 'Not logged in') { + // We assume we have both tokens needed to run the async request + // Let's refresh token through async request + return new Observable(observer => { + getItem('access_token') + .then(accessToken => { + operation.setContext(({ headers = {} }) => ({ + headers: { + // Re-add old headers + ...headers, + // Switch out old access token for new one + Authorization: `Bearer ${accessToken}` || null + } + })) + }) + .then(() => { + const subscriber = { + next: observer.next.bind(observer), + error: observer.error.bind(observer), + complete: observer.complete.bind(observer) + } + + // Retry last failed request + forward(operation).subscribe(subscriber) + }) + .catch(error => { + // No refresh or client token available, we force user to login + observer.error(error) + }) + }) + } + } +}) + +const linkWithAuth = concat(authLink, link) + +let apolloClient + +const cache = new InMemoryCache().restore(window.__APOLLO_STATE__) + +export const client = new ApolloClient({ + link: linkWithAuth, + cache, + connectToDevTools: true +}) + +export const auth = new Auth(result => console.log('auth result', result), client) + +let frontendReloadCount = 0 + +export const main = withFx(app)( + state, + actions, + view, + document.getElementById('root') +) +location.subscribe(main.location) + +if (process.env.NODE_ENV === 'development') { + if (module.hot) { + module.hot.accept() + + module.hot.accept('./index', () => { + try { + log.debug('Updating front-end') + frontendReloadCount = (frontendReloadCount || 0) + 1 + } catch (err) { + log(err.stack) + } + }) + } +} diff --git a/packages/aateam-client/src/modules/algobots/actions/index.js b/packages/aateam-client/src/modules/algobots/actions/index.js new file mode 100644 index 000000000..a74e828c8 --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/actions/index.js @@ -0,0 +1,233 @@ +import { action, throttle } from '@hyperapp/fx' + +import { UniqueAlgobotnameQuery } from '../graphql/UniqueAlgobotnameQuery' +import { AddAlgobotMutation } from '../graphql/AddAlgobotMutation' +import { GetAlgobotQuery } from '../graphql/GetAlgobotQuery' +import { DeleteAlgobotMutation } from '../graphql/DeleteAlgobotMutation' + +import { client } from '../../../index' + +import { mergeDeep } from '../../../utils/js-helpers' + +export const algobot = { + form: ({ form, message }) => state => { + return { + form: { + form, + message + } + } + }, + clearForms: () => ({ + form: { + form: 'login', + message: '' + }, + createAlgobot: { + input: '', + unique: false, + placeholder: 'Your algobotname' + } + }), + checkAlgobotname: value => [ + action('throttleAlgobotname', value), + action('createAlgobot.input', value) + ], + throttleAlgobotname: value => throttle(750, 'uniqueAlgobotname', value), + uniqueAlgobotname: value => async (state, actions) => { + const result = await client.query({ + query: UniqueAlgobotnameQuery, + variables: { algobotname: value } + }) + return actions.createAlgobot.unique(result.data.uniqueAlgobotname) + }, + createAlgobot: { + input: value => state => { + const algobotnameInput = { + input: value + } + return mergeDeep(algobotnameInput, state.createAlgobot) + }, + unique: value => state => { + const algobotnameInput = { + unique: value + } + return mergeDeep(algobotnameInput, state.createAlgobot) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.createAlgobot) + } + }, + profile: profile => (state, actions) => { + return { + profile + } + }, + addAlgobot: result => [ + action('form', { + form: 'addAlgobotNotice', + message: `Adding your algobot...` + }), + action('addAlgobotSubmit', result) + ], + addAlgobotSubmit: algobotForm => async (state, actions) => { + algobotForm.preventDefault() + algobotForm.target.blur() + + const algobotname = algobotForm.target.form[0].value + + const slug = await algobotname.replace(/[^a-zA-Z0-9]+/g, '-').toLowerCase() + const validateSlug = new RegExp('^[a-z0-9-]+$') + const valid = await validateSlug.test(slug) + await console.log('actions.algobot.addAlgobot: ', valid, slug) + if (!valid) { + return actions.form({ + form: 'addAlgobotError', + message: + 'Algobot name not valid. Please only letters, numbers and spaces' + }) + } + + const teamId = algobotForm.target.form[2].value + + if (teamId === '') { + return actions.form({ + form: 'addAlgobotError', + message: 'Please create a team first!' + }) + } + + const algobot = { + name: algobotname, + slug: slug, + owner: algobotForm.target.form[1].value, + team_id: teamId + } + + const uniqueAlgobot = await client.query({ + query: UniqueAlgobotnameQuery, + variables: { algobotname: algobotname } + }) + await console.log( + 'actions.algobot.addAlgobot: ', + algobot, + valid, + uniqueAlgobot, + uniqueAlgobot.data.uniqueAlgobotname + ) + if (!uniqueAlgobot.data.uniqueAlgobotname) { + return actions.form({ + form: 'addAlgobotError', + message: 'Sorry, this algobot name is taken. Please create a new one' + }) + } + + const result = await client.mutate({ + mutation: AddAlgobotMutation, + variables: { input: algobot }, + options: { + update: (proxy, { data: { getAlgobotByOwner } }) => { + const data = proxy.readQuery({ GetAlgobotQuery }) + data.getAlgobotByOwner.push(getAlgobotByOwner) + proxy.writeQuery({ GetAlgobotQuery, data }) + } + } + }) + + if (result.data.addAlgobot !== null) { + return actions.addAlgobotSuccess(result.data.addAlgobot) + } else { + return actions.form({ + form: 'addAlgobotError', + message: `Unable to add Algobot: ${ + result.data.addAlgobot.errors[0].message + }` + }) + } + }, + addAlgobotSuccess: result => [ + action('form', { form: 'addAlgobotSuccess', message: 'Algobot Added!' }), + action('profile', result), + action('createAlgobot.input', ''), + action('toggleModal', '') + ], + toggleModal: form => (state, actions) => { + return { + modal: { + content: form, + isActive: !state.modal.isActive + } + } + }, + getAlgobots: id => [ + action('form', { + form: 'getAlgobotLoad', + message: 'Getting your algobot...' + }), + action('getAlgobotbyOwner', id) + ], + getAlgobotbyOwner: id => async (state, actions) => { + /* + const result = await client.query({ + query: GetAlgobotQuery, + variables: { owner: id }, + fetchPolicy: 'network-only' + }) + + if (result.data.getAlgobotByOwner !== null) { + return actions.getAlgobotSuccess(result.data.getAlgobotByOwner) + } else { + return actions.getAlgobotNoAlgobot() + } */ + return actions.getAlgobotNoAlgobot() + }, + getAlgobotSuccess: profile => [ + action('form', { form: 'getAlgobotSuccess', message: 'Your algobot' }), + action('profile', profile) + ], + getAlgobotNoAlgobot: profile => [ + action('form', { form: 'getAlgobotNotice', message: 'No algobot found' }), + action('profile', { name: '' }) + ], + deleteAlgobot: id => [ + action('form', { + form: 'deleteAlgobotLoad', + message: 'Removing your algobot...' + }), + action('deleteAlgobotSubmit', id) + ], + deleteAlgobotSubmit: id => async (state, actions) => { + const result = await client.mutate({ + mutation: DeleteAlgobotMutation, + variables: { id: Number(id) }, + options: { + update: (proxy, { data: { getAlgobotByOwner } }) => { + const data = proxy.readQuery({ GetAlgobotQuery }) + data.getAlgobotByOwner.push(getAlgobotByOwner) + proxy.writeQuery({ GetAlgobotQuery, data }) + } + } + }) + + if (result.data.deleteAlgobot.id !== null) { + return actions.deleteAlgobotSuccess({ name: '' }) + } else { + return actions.form({ + form: 'deleteAlgobotError', + message: 'No algobot found' + }) + } + }, + deleteAlgobotSuccess: profile => [ + action('form', { + form: 'deleteAlgobotSuccess', + message: 'Your algobot has been deleted' + }), + action('profile', profile) + ] +} + +export default algobot diff --git a/packages/aateam-client/src/modules/algobots/graphql/AddAlgobotMutation.js b/packages/aateam-client/src/modules/algobots/graphql/AddAlgobotMutation.js new file mode 100644 index 000000000..f9470e458 --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/graphql/AddAlgobotMutation.js @@ -0,0 +1,17 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const AddAlgobotMutation = gql` + mutation addAlgobot($input: AddAlgobotInput!) { + addAlgobot(input: $input) { + id + name + slug + owner + avatar + repo + team_id + type + } + } +` diff --git a/packages/aateam-client/src/modules/algobots/graphql/DeleteAlgobotMutation.js b/packages/aateam-client/src/modules/algobots/graphql/DeleteAlgobotMutation.js new file mode 100644 index 000000000..50e7e294a --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/graphql/DeleteAlgobotMutation.js @@ -0,0 +1,10 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const DeleteAlgobotMutation = gql` + mutation deleteAlgobot($id: Int!) { + deleteAlgobot(id: $id) { + id + } + } +` diff --git a/packages/aateam-client/src/modules/algobots/graphql/GetAlgobotQuery.js b/packages/aateam-client/src/modules/algobots/graphql/GetAlgobotQuery.js new file mode 100644 index 000000000..9ea18b346 --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/graphql/GetAlgobotQuery.js @@ -0,0 +1,19 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const GetAlgobotQuery = gql` + query getAlgobotByOwner($owner: Int!) { + getAlgobotByOwner(owner: $owner) { + id + name + slug + owner + avatar + repo + team_id + type + } + } +` + +export default GetAlgobotQuery diff --git a/packages/aateam-client/src/modules/algobots/graphql/UniqueAlgobotnameQuery.js b/packages/aateam-client/src/modules/algobots/graphql/UniqueAlgobotnameQuery.js new file mode 100644 index 000000000..587e9bece --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/graphql/UniqueAlgobotnameQuery.js @@ -0,0 +1,10 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const UniqueAlgobotnameQuery = gql` + query uniqueAlgobotname($algobotname: String!) { + uniqueAlgobotname(algobotname: $algobotname) + } +` + +export default UniqueAlgobotnameQuery diff --git a/packages/aateam-client/src/modules/algobots/index.js b/packages/aateam-client/src/modules/algobots/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aateam-client/src/modules/algobots/state/index.js b/packages/aateam-client/src/modules/algobots/state/index.js new file mode 100644 index 000000000..c2d6a33ca --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/state/index.js @@ -0,0 +1,28 @@ +export const algobot = { + form: { + type: 'login', + message: '' + }, + createAlgobot: { + input: '', + unique: true, + placeholder: 'Your algobot name', + error: '' + }, + profile: { + id: '', + name: '', + slug: '', + owner: '', + avatar: '', + repo: '', + team_id: '' + }, + members: [], + modal: { + content: '', + isActive: false + } +} + +export default algobot diff --git a/packages/aateam-client/src/modules/algobots/views/add-algobot.js b/packages/aateam-client/src/modules/algobots/views/add-algobot.js new file mode 100644 index 000000000..c8cb4abea --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/views/add-algobot.js @@ -0,0 +1,90 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const AddAlgobotForm = props => (state, actions) => ( +
+

Add An Algobot

+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.algobot.createAlgobot.placeholder} + oninput={({ target: { value } }) => + actions.algobot.checkAlgobotname(value) + } + onblur={({ target: { value } }) => + actions.algobot.checkAlgobotname(value) + } + value={state.algobot.createAlgobot.input} + placeholder={state.algobot.createAlgobot.placeholder} + /> + + + +
+
+

+ This algobotname is already taken. Please create a new one. +

+

+ {state.algobot.form.message} +

+
+ + + +
+ +) + +export default AddAlgobotForm diff --git a/packages/aateam-client/src/modules/algobots/views/algobot-list.js b/packages/aateam-client/src/modules/algobots/views/algobot-list.js new file mode 100644 index 000000000..6aadccea5 --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/views/algobot-list.js @@ -0,0 +1,164 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' +import { validObject } from '../../../utils/js-helpers' + +export const AlgobotList = props => (state, actions) => { + const algobot = state.algobot.profile + console.log(state.algobot.form.form, state.algobot.form.message, algobot.name) + if ( + state.algobot.form.form === 'getAlgobotNotice' && + state.algobot.form.message === 'No algobot found' && + algobot.name === '' && + state.team.profile.name === '' + ) { + return ( +
+

+ You don't have a team yet! Please create one before adding an algobot. +

+
+
+ + Go to Team Overview → + +
+
+
+ ) + } + + if ( + state.algobot.form.form === 'getAlgobotNotice' && + state.algobot.form.message === 'No algobot found' && + algobot.name === '' + ) { + return ( +
+

Algobot creation currently disabled

+ +
+ ) + } + + if ( + (algobot.name !== '' && algobot.name !== null) || + state.algobot.form.form === 'deleteAlgobotSuccess' + ) { + const initial = algobot.name.substring(0, 1) + return ( +
+

+ {state.algobot.form.message} +

+ + + + + + + + + + + + + + {algobot.name !== '' ? ( + + + + + + + + ) : ( + '' + )} + +
 Algobot NameTeamTypeOwnerRepoActions
+ {algobot.avatar !== null && algobot.avatar !== '' ? ( +
+ {algobot.name} +
+ ) : ( +
+ {initial} +
+ )} +
+ {algobot.name} + {state.team.profile.name} + {state.user.profile.username} + + +
+
+ ) + } + + return ( +
+

{state.algobot.form.message}

+
+
+ + + +
+
+
+ ) +} + +export default AlgobotList diff --git a/packages/aateam-client/src/modules/algobots/views/algobot-panel.js b/packages/aateam-client/src/modules/algobots/views/algobot-panel.js new file mode 100644 index 000000000..7285fd42f --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/views/algobot-panel.js @@ -0,0 +1,121 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' +import { validObject } from '../../../utils/js-helpers' + +export const AlgobotPanel = props => (state, actions) => { + const algobot = validObject(state.algobot.profile, 'edges') ? state.team.profile.edges : '' + + if (algobot === '') { + return ( +
+

Algobots

+

+ Create a team first,
then setup your algobot! +

+
+ ) + } + + if ( + state.algobot.form.form === 'getAlgobotNotice' && + state.algobot.form.message === 'No algobot found' && + algobot.name === '' + ) { + return ( +
+

Algobots

+

Algobot creation currently disabled

+ +
+ ) + } + + if ( + (algobot.name !== '' && algobot.name !== null) || + state.algobot.form.form === 'deleteAlgobotSuccess' + ) { + const initial = algobot.name.substring(0, 1) + return ( +
+

Algobots

+ + + + + + + + + + + {algobot.name !== '' ? ( + + + + + + + ) : ( + '' + )} + +
 NameTeamOwner
+ {algobot.avatar !== null && algobot.avatar !== '' ? ( +
+ {algobot.name} +
+ ) : ( +
+ {initial} +
+ )} +
+ {algobot.name} + {state.team.profile.name}{state.user.profile.username}
+
+ ) + } + + return ( +
+

Algobots

+

{state.algobot.form.message}

+
+
+ + + +
+
+
+ ) +} + +export default AlgobotPanel diff --git a/packages/aateam-client/src/modules/algobots/views/index.js b/packages/aateam-client/src/modules/algobots/views/index.js new file mode 100644 index 000000000..2e5a1ce5d --- /dev/null +++ b/packages/aateam-client/src/modules/algobots/views/index.js @@ -0,0 +1,5 @@ +import { AddAlgobotForm } from './add-algobot' +import { AlgobotList } from './algobot-list' +import { AlgobotPanel } from './algobot-panel' + +export { AddAlgobotForm, AlgobotList, AlgobotPanel } diff --git a/packages/aateam-client/src/modules/auth/actions/index.js b/packages/aateam-client/src/modules/auth/actions/index.js new file mode 100644 index 000000000..711a736a3 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/actions/index.js @@ -0,0 +1,569 @@ +import { action, throttle, delay } from '@hyperapp/fx' + +import { client } from '../../../index' +import { UniqueUsernameQuery } from '../graphql/UniqueUsernameQuery' +import { RegisterSubmitMutation } from '../graphql/RegisterSubmit' +import { VerifyEmailMutation } from '../graphql/VerifyEmail' +import { FinishRegisterMutation } from '../graphql/FinishRegisterMutation' +import { ForgotPassSubmitMutation } from '../graphql/ForgotPass' +import { ResetPassSubmitMutation } from '../graphql/ResetPass' + +import { mergeDeep } from '../../../utils/js-helpers' + +const emailRegex = new RegExp( + "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" +) + +export const auth = { + form: ({ form, message }) => state => { + return { + form: { + form, + message + } + } + }, + clearForms: () => ({ + form: { + form: 'login', + message: '' + }, + username: { + input: '', + placeholder: 'Your username or email', + valid: false + }, + createUsername: { + input: '', + placeholder: 'Create a username', + valid: false, + unique: false + }, + email: { + input: '', + placeholder: 'Your email address', + valid: false + }, + registerEmail: { + input: '' + }, + password: { + input: '', + placeholder: 'Your password', + valid: false + }, + createPassword: { + input: '', + placeholder: 'Your new password', + secure: false, + valid: false + }, + confirmPassword: { + input: '', + placeholder: 'Confirm your password', + matches: false, + valid: false + }, + forgotEmail: { + input: '', + placeholder: 'Enter your email address', + valid: false + }, + resetPassword: { + input: '', + placeholder: 'Set a new password', + strength: '', + valid: false + }, + confirmResetPassword: { + input: '', + placeholder: 'Confirm your new password', + matches: false, + valid: false + }, + finishRegister: { + load: false, + error: false, + message: '', + success: false + } + }), + username: { + input: value => state => { + const usernameInput = { + input: value + } + return mergeDeep(usernameInput, state.username) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.username) + } + }, + email: { + input: value => state => { + const emailInput = { + input: value, + valid: emailRegex.test(value) + } + return mergeDeep(emailInput, state.email) + }, + sent: value => state => { + const emailInput = { + input: value + } + return mergeDeep(emailInput, state.email) + } + }, + registerEmail: { + input: value => state => { + const emailInput = { + input: value + } + return mergeDeep(emailInput, state.registerEmail) + } + }, + password: { + input: value => state => { + const passwordInput = { + input: value, + valid: value !== '' + } + return mergeDeep(passwordInput, state.password) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.password) + } + }, + checkUsername: value => [ + action('throttleUsername', value), + action('createUsername.input', value) + ], + throttleUsername: value => throttle(750, 'uniqueUsername', value), + uniqueUsername: value => async (state, actions) => { + const result = await client.query({ + query: UniqueUsernameQuery, + variables: { username: value } + }) + + const unique = result.data.uniqueUsername + if (unique) { + return actions.setUsername(unique) + } else { + return actions.setUsernameError(unique) + } + }, + setUsername: value => [ + action('createUsername.setUnique', value), + action('createUsername.error', '') + ], + setUsernameError: value => [ + action('createUsername.setUnique', value), + action('createUsername.error', 'This username already exists') + ], + createUsername: { + input: value => state => { + const usernameInput = { + input: value + } + return mergeDeep(usernameInput, state.createUsername) + }, + setUnique: value => state => { + const usernameInput = { + unique: value + } + return mergeDeep(usernameInput, state.createUsername) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.createUsername) + } + }, + createPassword: { + input: value => state => { + let passStrength = 'weak' + const strongRegex = new RegExp( + '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{10,})' + ) + const mediumRegex = new RegExp( + '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})' + ) + if (mediumRegex.test(value)) { + passStrength = 'medium' + } + if (strongRegex.test(value)) { + passStrength = 'strong' + } + const passwordInput = { + input: value, + strength: passStrength + } + return mergeDeep(passwordInput, state.createPassword) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.createPassword) + } + }, + confirmPassword: { + input: ({ value, confirm }) => state => { + const passwordInput = { + input: value, + matches: value === confirm + } + return mergeDeep(passwordInput, state.confirmPassword) + } + }, + register: registerForm => [ + action('form', { + form: 'registerLoad', + message: 'Submitting registration...' + }), + action('registerSubmit', registerForm) + ], + registerSubmit: registerForm => async (state, actions) => { + registerForm.preventDefault() + registerForm.target.blur() + + const email = registerForm.target.form[0].value + + if (!state.email.valid) { + return action('form', { + form: 'registerSignup', + message: 'Please submit a valid email address' + }) + } + const result = await client.mutate({ + mutation: RegisterSubmitMutation, + variables: { input: { email } } + }) + + if ( + result.data.registerSubmit.user !== '' && + result.data.registerSubmit.user !== null + ) { + return actions.registerSubmitSuccess(result) + } else { + return actions.form({ + form: 'registerError', + message: result.data.registerSubmit.errors[0].message + }) + } + }, + registerSubmitSuccess: result => [ + action('form', { + form: 'registerSuccess', + message: + 'To continue registration, please check your email for further instructions' + }), + action('email.input', '') + ], + verifyRegister: token => [ + action('form', { form: 'loading', message: 'Verifying registration...' }), + action('verifyEmail', token) + ], + verifyEmail: token => async (state, actions) => { + const result = await client.mutate({ + mutation: VerifyEmailMutation, + variables: { token: token } + }) + + const email = await result.data.verifyEmail.user.email + console.log('actions.auth.verifyEmail: ', email) + if (email !== '' && email !== null) { + return actions.verifySuccess(email) + } else { + return actions.form({ + form: 'error', + message: `Could not verify token: ${ + result.data.verifyEmail.errors[0].message + }` + }) + } + }, + verifySuccess: email => [ + action('registerEmail.input', email), + action('form', { + form: 'verifySuccess', + message: 'Continue registration...' + }) + ], + finishRegister: { + load: value => state => { + const newState = { + load: value + } + return mergeDeep(newState, state.finishRegister) + }, + error: value => state => { + const newState = { + error: value + } + return mergeDeep(newState, state.finishRegister) + }, + message: value => state => { + const newState = { + message: value + } + return mergeDeep(newState, state.finishRegister) + }, + success: value => state => { + const newState = { + success: value + } + return mergeDeep(newState, state.finishRegister) + } + }, + finish: registerForm => [ + action('finishRegister.load', true), + action('finishRegister.message', 'Completing registration...'), + action('finishSubmit', registerForm) + ], + finishSubmit: registerForm => async (state, actions) => { + registerForm.preventDefault() + registerForm.target.blur() + + const username = registerForm.target.form[0].value + const password = registerForm.target.form[1].value + const confirm = registerForm.target.form[2].value + const email = registerForm.target.form[3].value + console.log( + 'actions.auth.finishSubmit: ', + username, + password, + confirm, + email + ) + + var checkUsername = await client.query({ + query: UniqueUsernameQuery, + variables: { username: username } + }) + + if (!checkUsername) { + actions.finishRegister.load(false) + actions.finishRegister.error(true) + actions.finishRegister.message('Username already exist.') + return false + } + + if (password !== confirm) { + actions.finishRegister.load(false) + actions.finishRegister.error(true) + actions.finishRegister.message('Passwords do not match') + actions.confirmPassword.input({ value: confirm, confirm: password }) + return false + } + + if (checkUsername && password === confirm) { + const result = await client.mutate({ + mutation: FinishRegisterMutation, + variables: { input: { username, email, password } } + }) + if (result.data.finishRegister.user !== null) { + actions.finishRegister.load(false) + actions.finishRegister.error(false) + actions.finishRegister.success(true) + actions.finishRegister.message( + 'Registration complete. Logging you in...' + ) + return actions.form({ + form: 'finishSuccess', + message: 'Registration complete. Logging you in...' + }) + } else { + actions.finishRegister.load(false) + actions.finishRegister.error(true) + actions.finishRegister.message( + `${result.data.finishRegister.errors[0].field}: ${ + result.data.finishRegister.errors[0].message + }` + ) + actions.confirmPassword.input({ value: confirm, confirm: password }) + return false + } + } + + return state + }, + finishSubmitError: result => [ + action('form', { form: 'finishError', message: `Error: ${result}` }) + ], + checkEmailUsername: value => [ + action('throttleUsername', value), + action('createUsername.input', value) + ], + throttleEmailUsername: value => throttle(750, 'uniqueUsername', value), + forgotEmail: { + input: value => state => { + const usernameInput = { + input: value + } + return mergeDeep(usernameInput, state.forgotEmail) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.forgotEmail) + }, + valid: value => state => { + const emailInput = { + valid: emailRegex.test(value) + } + return mergeDeep(emailInput, state.forgotEmail) + } + }, + forgotPass: forgotPassForm => [ + action('form', { + form: 'forgotPassLoad', + message: 'Submitting password reset...' + }), + action('forgotPassSubmit', forgotPassForm) + ], + forgotPassSubmit: forgotPassForm => async (state, actions) => { + forgotPassForm.preventDefault() + forgotPassForm.target.blur() + + const email = forgotPassForm.target.form[0].value + console.log('actions.auth.forgotPassSubmit: ', email) + if (!emailRegex.test(email)) { + return action('form', { + form: 'registerSignup', + message: 'Please submit a valid email address' + }) + } + const result = await client.mutate({ + mutation: ForgotPassSubmitMutation, + variables: { input: { email: email } } + }) + console.log('actions.auth.forgotPassSubmit 2: ', result) + if ( + result.data.forgotPassword !== '' && + result.data.forgotPassword !== null + ) { + if (result.data.forgotPassword === 'Success') { + return actions.form({ + form: 'forgotPassSuccess', + message: 'Please check your email for further instructions' + }) + } + return actions.form({ + form: 'forgotPassError', + message: `Failed to reset password: ${result.data.forgotPassword}` + }) + } + }, + resetPassword: { + input: value => state => { + let passStrength = 'weak' + const strongRegex = new RegExp( + '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{10,})' + ) + const mediumRegex = new RegExp( + '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})' + ) + if (mediumRegex.test(value)) { + passStrength = 'medium' + } + if (strongRegex.test(value)) { + passStrength = 'strong' + } + const passwordInput = { + input: value, + strength: passStrength + } + return mergeDeep(passwordInput, state.resetPassword) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.resetPassword) + } + }, + confirmResetPassword: { + input: ({ value, confirm }) => state => { + const passwordInput = { + input: value, + matches: value === confirm + } + return mergeDeep(passwordInput, state.confirmResetPassword) + } + }, + resetPass: resetPassForm => [ + action('form', { + form: 'resetPassLoad', + message: 'Updating your password...' + }), + action('resetPassSubmit', resetPassForm) + ], + resetPassSubmit: resetPassForm => async (state, actions) => { + resetPassForm.preventDefault() + resetPassForm.target.blur() + + const password = resetPassForm.target.form[0].value + const confirm = resetPassForm.target.form[1].value + const token = resetPassForm.target.form[2].value + console.log( + 'actions.auth.resetPassSubmit: ', + password, + confirm, + token, + resetPassForm + ) + if (password !== confirm) { + return action('form', { + form: 'resetPassError', + message: 'Passwords do not match' + }) + } + const result = await client.mutate({ + mutation: ResetPassSubmitMutation, + variables: { + input: { + password: password, + passwordConfirmation: confirm, + token: token + } + } + }) + console.log('actions.auth.resetPassSubmit 2: ', result) + if ( + result.data.resetPassword !== '' && + result.data.resetPassword !== null + ) { + if (result.data.resetPassword.errors === null) { + actions.form({ + form: 'resetPassDone', + message: 'Redirecting to Login...' + }) + return actions.delayResetRedirect() + } + return actions.form({ + form: 'resetPassError', + message: `Failed to reset password: ${ + result.data.resetPassword.errors[0].message + }` + }) + } + }, + delayResetRedirect: () => delay(3000, 'resetPassSuccess'), + resetPassSuccess: resetPassForm => [ + action('form', { + form: 'resetPassSuccess', + message: 'Redirecting to Login...' + }) + ] +} + +export default auth diff --git a/packages/aateam-client/src/modules/auth/graphql/FinishRegisterMutation.js b/packages/aateam-client/src/modules/auth/graphql/FinishRegisterMutation.js new file mode 100644 index 000000000..c8f1cc3ba --- /dev/null +++ b/packages/aateam-client/src/modules/auth/graphql/FinishRegisterMutation.js @@ -0,0 +1,18 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const FinishRegisterMutation = gql` + mutation finishRegister($input: RegisterUserInput!) { + finishRegister(input: $input) { + user { + id + email + username + } + errors { + field + message + } + } + } +` diff --git a/packages/aateam-client/src/modules/auth/graphql/ForgotPass.js b/packages/aateam-client/src/modules/auth/graphql/ForgotPass.js new file mode 100644 index 000000000..4b759ba33 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/graphql/ForgotPass.js @@ -0,0 +1,8 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const ForgotPassSubmitMutation = gql` + mutation forgotPassword($input: ForgotPasswordInput!) { + forgotPassword(input: $input) + } +` diff --git a/packages/aateam-client/src/modules/auth/graphql/RegisterSubmit.js b/packages/aateam-client/src/modules/auth/graphql/RegisterSubmit.js new file mode 100644 index 000000000..df107f807 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/graphql/RegisterSubmit.js @@ -0,0 +1,53 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const RegisterSubmitMutation = gql` + mutation registerSubmit($input: RegisterSubmitInput!) { + registerSubmit(input: $input) { + user { + id + email + } + errors { + field + message + } + } + } +` + +export const UserInfo = gql` + fragment UserInfo on User { + id + username + role + isActive + email + profile { + firstName + lastName + fullName + } + auth { + certificate { + serial + } + facebook { + fbId + displayName + } + google { + googleId + displayName + } + github { + ghId + displayName + } + linkedin { + lnId + displayName + } + } + } +` diff --git a/packages/aateam-client/src/modules/auth/graphql/ResetPass.js b/packages/aateam-client/src/modules/auth/graphql/ResetPass.js new file mode 100644 index 000000000..b6b29f8df --- /dev/null +++ b/packages/aateam-client/src/modules/auth/graphql/ResetPass.js @@ -0,0 +1,13 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const ResetPassSubmitMutation = gql` + mutation resetPassword($input: ResetPasswordInput!) { + resetPassword(input: $input) { + errors { + field + message + } + } + } +` diff --git a/packages/aateam-client/src/modules/auth/graphql/UniqueUsernameQuery.js b/packages/aateam-client/src/modules/auth/graphql/UniqueUsernameQuery.js new file mode 100644 index 000000000..b93d367fb --- /dev/null +++ b/packages/aateam-client/src/modules/auth/graphql/UniqueUsernameQuery.js @@ -0,0 +1,10 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const UniqueUsernameQuery = gql` + query uniqueUsername($username: String!) { + uniqueUsername(username: $username) + } +` + +export default UniqueUsernameQuery diff --git a/packages/aateam-client/src/modules/auth/graphql/VerifyEmail.js b/packages/aateam-client/src/modules/auth/graphql/VerifyEmail.js new file mode 100644 index 000000000..3d2bddca3 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/graphql/VerifyEmail.js @@ -0,0 +1,16 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const VerifyEmailMutation = gql` + mutation verifyEmail($token: String!) { + verifyEmail(token: $token) { + user { + email + } + errors { + field + message + } + } + } +` diff --git a/packages/aateam-client/src/modules/auth/index.js b/packages/aateam-client/src/modules/auth/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aateam-client/src/modules/auth/state/index.js b/packages/aateam-client/src/modules/auth/state/index.js new file mode 100644 index 000000000..e566c6fcd --- /dev/null +++ b/packages/aateam-client/src/modules/auth/state/index.js @@ -0,0 +1,67 @@ +export const auth = { + form: { + type: 'login', + message: '' + }, + username: { + input: '', + placeholder: 'Your username or email', + valid: false + }, + createUsername: { + input: '', + placeholder: 'Create a username', + valid: false, + unique: true + }, + email: { + input: '', + placeholder: 'Your email address', + valid: false + }, + registerEmail: { + input: '' + }, + password: { + input: '', + placeholder: 'Your password', + valid: false + }, + createPassword: { + input: '', + placeholder: 'Your new password', + strength: '', + valid: false + }, + confirmPassword: { + input: '', + placeholder: 'Confirm your password', + matches: false, + valid: false + }, + forgotEmail: { + input: '', + placeholder: 'Enter your email address or username', + valid: false + }, + resetPassword: { + input: '', + placeholder: 'Set a new password', + strength: '', + valid: false + }, + confirmResetPassword: { + input: '', + placeholder: 'Confirm your new password', + matches: false, + valid: false + }, + finishRegister: { + load: false, + error: false, + message: '', + success: false + } +} + +export default auth diff --git a/packages/aateam-client/src/modules/auth/views/finish-register.js b/packages/aateam-client/src/modules/auth/views/finish-register.js new file mode 100644 index 000000000..a04758ed2 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/views/finish-register.js @@ -0,0 +1,261 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const FinishRegisterForm = props => (state, actions) => ( +
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.createUsername.placeholder} + oninput={({ target: { value } }) => actions.auth.checkUsername(value)} + onblur={({ target: { value } }) => actions.auth.checkUsername(value)} + value={state.auth.createUsername.input} + placeholder={state.auth.createUsername.placeholder} + /> + + + + + + +

+ This username is already taken. Please create a new one. +

+
+
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.createPassword.placeholder} + oninput={({ target: { value } }) => + actions.auth.createPassword.input(value) + } + onblur={({ target: { value } }) => + actions.auth.createPassword.input(value) + } + value={state.auth.createPassword.input} + placeholder={state.auth.createPassword.placeholder} + /> + + + + + + +

+ Password strength is {state.auth.createPassword.strength} +

+

+ + At least 10 characters, upper & lower case letters
+ a + number + a special char [! @ # $ % ^ & *] +
+

+
+
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.confirmPassword.placeholder} + oninput={({ target: { value } }) => + actions.auth.confirmPassword.input({ + value: value, + confirm: state.auth.createPassword.input + }) + } + onblur={({ target: { value } }) => + actions.auth.confirmPassword.input({ + value: value, + confirm: state.auth.createPassword.input + }) + } + value={state.auth.confirmPassword.input} + placeholder={state.auth.confirmPassword.placeholder} + /> + + + + + + +

+ Passwords match! +

+
+
+

+ {state.auth.finishRegister.message} +

+
+ + +
+ +) + +export default FinishRegisterForm diff --git a/packages/aateam-client/src/modules/auth/views/forgot-pass-form.js b/packages/aateam-client/src/modules/auth/views/forgot-pass-form.js new file mode 100644 index 000000000..df2491f72 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/views/forgot-pass-form.js @@ -0,0 +1,79 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +export const ForgotPassForm = props => (state, actions) => ( +
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.forgotEmail.placeholder} + oninput={({ target: { value } }) => + actions.auth.forgotEmail.input(value) + } + value={state.auth.forgotEmail.input} + placeholder={state.auth.forgotEmail.placeholder} + /> + + + + + + +
+

+ {state.auth.form.message} +

+
+
+ + + Back to Login → + +
+ +) + +export default ForgotPassForm diff --git a/packages/aateam-client/src/modules/auth/views/index.js b/packages/aateam-client/src/modules/auth/views/index.js new file mode 100644 index 000000000..211a361d6 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/views/index.js @@ -0,0 +1,13 @@ +import LoginForm from './login' +import RegisterForm from './register' +import FinishRegisterForm from './finish-register' +import ForgotPassForm from './forgot-pass-form' +import ResetPassForm from './reset-pass-form' + +export { + LoginForm, + RegisterForm, + FinishRegisterForm, + ForgotPassForm, + ResetPassForm +} diff --git a/packages/aateam-client/src/modules/auth/views/login.js b/packages/aateam-client/src/modules/auth/views/login.js new file mode 100644 index 000000000..e18fcf239 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/views/login.js @@ -0,0 +1,99 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +export const LoginForm = props => (state, actions) => ( +
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.username.placeholder} + oninput={({ target: { value } }) => + actions.auth.username.input(value) + } + value={state.auth.username.input} + placeholder={state.auth.username.placeholder} + /> + + + + +
+
+ +
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.password.placeholder} + oninput={({ target: { value } }) => + actions.auth.password.input(value) + } + value={state.auth.password.input} + placeholder={state.auth.password.placeholder} + /> + + + + + + +
+

+ {state.user.form.message} +

+
+
+ + + Forgot password? + +
+ +) + +export default LoginForm diff --git a/packages/aateam-client/src/modules/auth/views/register.js b/packages/aateam-client/src/modules/auth/views/register.js new file mode 100644 index 000000000..cc0f9d485 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/views/register.js @@ -0,0 +1,71 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const RegisterForm = props => (state, actions) => ( +
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.email.placeholder} + oninput={({ target: { value } }) => actions.auth.email.input(value)} + value={state.auth.email.input} + placeholder={state.auth.email.placeholder} + /> + + + + + + +
+

+ {state.auth.form.message} +

+
+
+ +
+ +) + +export default RegisterForm diff --git a/packages/aateam-client/src/modules/auth/views/reset-pass-form.js b/packages/aateam-client/src/modules/auth/views/reset-pass-form.js new file mode 100644 index 000000000..6a8465074 --- /dev/null +++ b/packages/aateam-client/src/modules/auth/views/reset-pass-form.js @@ -0,0 +1,200 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const ResetPassForm = ({ token }) => (state, actions) => ( +
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.resetPassword.placeholder} + oninput={({ target: { value } }) => + actions.auth.resetPassword.input(value) + } + onblur={({ target: { value } }) => + actions.auth.resetPassword.input(value) + } + value={state.auth.resetPassword.input} + placeholder={state.auth.resetPassword.placeholder} + /> + + + + + + +

+ Password strength is {state.auth.resetPassword.strength} +

+

+ + At least 10 characters, upper & lower case letters
+ a + number + a special char [! @ # $ % ^ & *] +
+

+
+
+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.auth.confirmResetPassword.placeholder} + oninput={({ target: { value } }) => + actions.auth.confirmResetPassword.input({ + value: value, + confirm: state.auth.resetPassword.input + }) + } + onblur={({ target: { value } }) => + actions.auth.confirmResetPassword.input({ + value: value, + confirm: state.auth.resetPassword.input + }) + } + value={state.auth.confirmResetPassword.input} + placeholder={state.auth.confirmResetPassword.placeholder} + /> + + + + + + +

+ Passwords match! +

+
+
+

+ {state.auth.form.message} +

+
+ + +
+ +) + +export default ResetPassForm diff --git a/packages/aateam-client/src/modules/community/actions/index.js b/packages/aateam-client/src/modules/community/actions/index.js new file mode 100644 index 000000000..dd8659590 --- /dev/null +++ b/packages/aateam-client/src/modules/community/actions/index.js @@ -0,0 +1,94 @@ +import { action } from '@hyperapp/fx' + +import { GetAllTeamsQuery } from '../graphql/GetAllTeamsQuery' +import { GetAllAlgobotsQuery } from '../graphql/GetAllAlgobotsQuery' + +import { client } from '../../../index' + +export const community = { + form: ({ form, message }) => state => { + return { + form: { + form, + message + } + } + }, + clearForms: () => ({ + form: { + form: 'login', + message: '' + } + }), + toggleModal: form => (state, actions) => { + return { + modal: { + content: form, + isActive: !state.modal.isActive + } + } + }, + teams: teams => ({ teams }), + algobots: algobots => ({ algobots }), + getTeams: id => [ + action('form', { + form: 'getTeamsLoad', + message: 'Getting community teams...' + }), + action('getAllTeams') + ], + getAllTeams: () => async (state, actions) => { + const result = await client.query({ + query: GetAllTeamsQuery, + variables: { limit: 10, after: 0 }, + fetchPolicy: 'network-only' + }) + console.log(result.data.teams) + if (result.data.teams.edges.length > 0) { + return actions.getAllTeamsSuccess(result.data.teams) + } else { + return actions.noTeams() + } + }, + getAllTeamsSuccess: teams => [ + action('form', { form: 'getAllTeamsSuccess', message: 'Community Teams' }), + action('teams', teams) + ], + noTeams: profile => [ + action('form', { form: 'getAlgobotsNotice', message: 'No teams found' }), + action('teams', []) + ], + getAlgobots: id => [ + action('form', { + form: 'getAlgobotsLoad', + message: 'Getting community algobots...' + }), + action('getAllAlgobots', id) + ], + getAllAlgobots: () => async (state, actions) => { + const result = await client.query({ + query: GetAllAlgobotsQuery, + variables: { limit: 10, after: 0 }, + fetchPolicy: 'network-only' + }) + console.log(result.data.getAlgobots) + if (result.data.getAlgobots !== null) { + return actions.getAllAlgobotsSuccess(result.data.getAlgobots) + } else { + return actions.noAlgobots() + } + }, + getAllAlgobotsSuccess: algobots => [ + action('form', { + form: 'getAlgobotSuccess', + message: 'Community Algobots' + }), + action('algobots', algobots) + ], + noAlgobots: profile => [ + action('form', { form: 'getAlgobotsNotice', message: 'No algobots found' }), + action('algobots', []) + ] +} + +export default community diff --git a/packages/aateam-client/src/modules/community/graphql/GetAllAlgobotsQuery.js b/packages/aateam-client/src/modules/community/graphql/GetAllAlgobotsQuery.js new file mode 100644 index 000000000..bc723a0d5 --- /dev/null +++ b/packages/aateam-client/src/modules/community/graphql/GetAllAlgobotsQuery.js @@ -0,0 +1,29 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const GetAllAlgobotsQuery = gql` + query algobots($limit: Int!, $after: Int) { + algobots(limit: $limit, after: $after) { + totalCount + edges { + cursor + node { + id + name + slug + owner + avatar + repo + team_id + type + } + } + pageInfo { + endCursor + hasNextPage + } + } + } +` + +export default GetAllAlgobotsQuery diff --git a/packages/aateam-client/src/modules/community/graphql/GetAllTeamsQuery.js b/packages/aateam-client/src/modules/community/graphql/GetAllTeamsQuery.js new file mode 100644 index 000000000..12acb8702 --- /dev/null +++ b/packages/aateam-client/src/modules/community/graphql/GetAllTeamsQuery.js @@ -0,0 +1,40 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const GetAllTeamsQuery = gql` + query teamsQuery { + teams { + edges { + node { + id + name + slug + profile { + avatar + description + motto + } + owner { + nickname + visible + profile { + avatar + } + } + members { + role + member { + nickname + visible + profile { + avatar + } + } + } + } + } + } + } +` + +export default GetAllTeamsQuery diff --git a/packages/aateam-client/src/modules/community/index.js b/packages/aateam-client/src/modules/community/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aateam-client/src/modules/community/state/index.js b/packages/aateam-client/src/modules/community/state/index.js new file mode 100644 index 000000000..ef73eb693 --- /dev/null +++ b/packages/aateam-client/src/modules/community/state/index.js @@ -0,0 +1,15 @@ +export const community = { + form: { + form: 'login', + message: '' + }, + filter: {}, + teams: [], + algobots: [], + modal: { + content: 'AddAlgobot', + isActive: false + } +} + +export default community diff --git a/packages/aateam-client/src/modules/community/views/algobots-list.js b/packages/aateam-client/src/modules/community/views/algobots-list.js new file mode 100644 index 000000000..f689a0841 --- /dev/null +++ b/packages/aateam-client/src/modules/community/views/algobots-list.js @@ -0,0 +1,141 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +export const AlgobotsList = props => (state, actions) => { + const algobot = state.algobot.profile + console.log(state.algobot.form.form, state.algobot.form.message, algobot.name) + + if ( + state.algobot.form.form === 'getAlgobotNotice' && + state.algobot.form.message === 'No algobot found' && + algobot.name === '' + ) { + return ( + + ) + } + + if ( + (algobot.name !== '' && algobot.name !== null) || + state.algobot.form.form === 'deleteAlgobotSuccess' + ) { + const initial = algobot.name.substring(0, 1) + return ( +
+

+ {state.algobot.form.message} +

+ + + + + + + + + + + + + + {algobot.name !== '' ? ( + + + + + + + + ) : ( + '' + )} + +
 Algobot NameTeamTypeOwnerRepoActions
+ {algobot.avatar !== null && algobot.avatar !== '' ? ( +
+ {algobot.name} +
+ ) : ( +
+ {initial} +
+ )} +
+ {algobot.name} + {state.team.profile.name} + {state.user.profile.username} + + +
+
+ ) + } + + return ( +
+

{state.algobot.form.message}

+
+
+ + + +
+
+
+ ) +} + +export default AlgobotsList diff --git a/packages/aateam-client/src/modules/community/views/index.js b/packages/aateam-client/src/modules/community/views/index.js new file mode 100644 index 000000000..dd8f0e56b --- /dev/null +++ b/packages/aateam-client/src/modules/community/views/index.js @@ -0,0 +1,5 @@ +import { AlgobotsList } from './algobots-list' +import { TeamsList } from './teams-list' +import { TeamsListWrapper } from './teams-list-wrapper' + +export { AlgobotsList, TeamsList, TeamsListWrapper } diff --git a/packages/aateam-client/src/modules/community/views/teams-item.js b/packages/aateam-client/src/modules/community/views/teams-item.js new file mode 100644 index 000000000..ab518a1aa --- /dev/null +++ b/packages/aateam-client/src/modules/community/views/teams-item.js @@ -0,0 +1,29 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const TeamsItem = ({ team }) => ( + + + {team.profile !== null && team.profile.avatar !== '' ? ( +
+ {team.name} +
+ ) : ( +
+ {team.name.substring(0, 1)} +
+ )} + + + {team.name} + + + {team.owner.nickname} + + + {team.members.length} + + +) + +export default TeamsItem diff --git a/packages/aateam-client/src/modules/community/views/teams-list-wrapper.js b/packages/aateam-client/src/modules/community/views/teams-list-wrapper.js new file mode 100644 index 000000000..2ecb9a65f --- /dev/null +++ b/packages/aateam-client/src/modules/community/views/teams-list-wrapper.js @@ -0,0 +1,25 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { TeamsList } from './teams-list' + +export const TeamsListWrapper = () => (state, actions) => ( +
actions.community.getTeams()} + > +
+
+
+

+ Community Teams +

+ +
+
+
+
+) + +export default TeamsListWrapper diff --git a/packages/aateam-client/src/modules/community/views/teams-list.js b/packages/aateam-client/src/modules/community/views/teams-list.js new file mode 100644 index 000000000..ef524efe8 --- /dev/null +++ b/packages/aateam-client/src/modules/community/views/teams-list.js @@ -0,0 +1,73 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import { TeamsItem } from './teams-item' + +import { validObject } from '../../../utils/js-helpers' + +export const TeamsList = props => (state, actions) => { + const teams = validObject(state.community.teams, 'edges') ? state.community.teams.edges : '' + console.log(state.community.form.form, state.community.form.message) + + if ( + state.community.teams.length > 0 || + state.community.form.form === 'getAllTeamsSuccess' + ) { + return ( +
+

+ {state.community.form.message} +

+ + + + + + + + + + + {teams.map((team, i) => ( + + ))} + +
 Team NameTeam Owner# of Members
+
+ ) + } + + return ( +
+

{state.community.form.message}

+
+
+ + + +
+
+
+ ) +} + +export default TeamsList diff --git a/packages/aateam-client/src/modules/nav/actions/index.js b/packages/aateam-client/src/modules/nav/actions/index.js new file mode 100644 index 000000000..5bf0a06be --- /dev/null +++ b/packages/aateam-client/src/modules/nav/actions/index.js @@ -0,0 +1,16 @@ +import { mergeDeep } from '../../../utils/js-helpers' + +export const nav = { + top: { + toggleMobileMenu: () => state => { + const menu = { mobileMenu: !state.mobileMenu } + return mergeDeep(menu, state.top) + }, + more: () => state => { + const more = { more: !state.more } + return mergeDeep(more, state.top) + } + } +} + +export default nav diff --git a/packages/aateam-client/src/modules/nav/state/index.js b/packages/aateam-client/src/modules/nav/state/index.js new file mode 100644 index 000000000..040498c3c --- /dev/null +++ b/packages/aateam-client/src/modules/nav/state/index.js @@ -0,0 +1,8 @@ +export const navState = { + top: { + mobileMenu: false, + more: false + } +} + +export default navState diff --git a/packages/aateam-client/src/modules/onboard/actions/index.js b/packages/aateam-client/src/modules/onboard/actions/index.js new file mode 100644 index 000000000..831200109 --- /dev/null +++ b/packages/aateam-client/src/modules/onboard/actions/index.js @@ -0,0 +1,41 @@ +import { action } from '@hyperapp/fx' + +import { mergeDeep } from '../../../utils/js-helpers' + +export const onboard = { + form: ({ form, message }) => state => { + return { + form: { + form, + message + } + } + }, + clearForms: () => ({ + form: { + form: 'login', + message: '' + }, + dashboard: { + team: false, + algobot: false, + develop: false, + compete: false, + active: true + } + }), + registerEmail: { + input: value => state => { + const emailInput = { + input: value + } + return mergeDeep(emailInput, state.registerEmail) + } + }, + checkUsername: value => [ + action('throttleUsername', value), + action('createUsername.input', value) + ] +} + +export default onboard diff --git a/packages/aateam-client/src/modules/onboard/state/index.js b/packages/aateam-client/src/modules/onboard/state/index.js new file mode 100644 index 000000000..771005a98 --- /dev/null +++ b/packages/aateam-client/src/modules/onboard/state/index.js @@ -0,0 +1,19 @@ +export const onboard = { + form: { + type: 'login', + message: '' + }, + dashboard: { + team: false, + algobot: false, + develop: false, + compete: false, + active: true + }, + modal: { + content: 'AddTeam', + isActive: false + } +} + +export default onboard diff --git a/packages/aateam-client/src/modules/onboard/views/dashboard-steps.js b/packages/aateam-client/src/modules/onboard/views/dashboard-steps.js new file mode 100644 index 000000000..be425f0d1 --- /dev/null +++ b/packages/aateam-client/src/modules/onboard/views/dashboard-steps.js @@ -0,0 +1,57 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const DashboardSteps = props => (state, actions) => ( + +) + +export default DashboardSteps diff --git a/packages/aateam-client/src/modules/onboard/views/index.js b/packages/aateam-client/src/modules/onboard/views/index.js new file mode 100644 index 000000000..15005a66b --- /dev/null +++ b/packages/aateam-client/src/modules/onboard/views/index.js @@ -0,0 +1,3 @@ +import DashboardSteps from './dashboard-steps' + +export { DashboardSteps } diff --git a/packages/aateam-client/src/modules/team/actions/index.js b/packages/aateam-client/src/modules/team/actions/index.js new file mode 100644 index 000000000..81d17743a --- /dev/null +++ b/packages/aateam-client/src/modules/team/actions/index.js @@ -0,0 +1,210 @@ +import { action, throttle } from '@hyperapp/fx' + +import { UniqueTeamnameQuery } from '../graphql/UniqueTeamnameQuery' +import { AddTeamMutation } from '../graphql/AddTeamMutation' +import { GetTeamQuery } from '../graphql/GetTeamQuery' +import { DeleteTeamMutation } from '../graphql/DeleteTeamMutation' + +import { client } from '../../../index' + +import { mergeDeep } from '../../../utils/js-helpers' + +export const team = { + form: ({ form, message }) => state => { + return { + form: { + form, + message + } + } + }, + clearForms: () => ({ + form: { + form: 'login', + message: '' + }, + createTeam: { + input: '', + unique: false, + placeholder: 'Your teamname' + } + }), + checkTeamname: value => [ + action('throttleTeamname', value), + action('createTeam.input', value) + ], + throttleTeamname: value => throttle(750, 'uniqueTeamname', value), + uniqueTeamname: value => async (state, actions) => { + const result = await client.query({ + query: UniqueTeamnameQuery, + variables: { name: value } + }) + return actions.createTeam.unique(result.data.teamByName.name === null) + }, + createTeam: { + input: value => state => { + const teamnameInput = { + input: value + } + return mergeDeep(teamnameInput, state.createTeam) + }, + unique: value => state => { + const teamnameInput = { + unique: value + } + return mergeDeep(teamnameInput, state.createTeam) + }, + error: message => state => { + const errorInput = { + message: message + } + return mergeDeep(errorInput, state.createTeam) + } + }, + profile: profile => (state, actions) => { + return { + profile + } + }, + addTeam: result => [ + action('form', { form: 'addTeamNotice', message: `Adding your team...` }), + action('addTeamSubmit', result) + ], + addTeamSubmit: teamForm => async (state, actions) => { + teamForm.preventDefault() + teamForm.target.blur() + + const teamname = teamForm.target.form[0].value + + const slug = await teamname.replace(/[^a-zA-Z0-9]+/g, '-').toLowerCase() + const validateSlug = new RegExp('^[a-z0-9-]+$') + const valid = await validateSlug.test(slug) + await console.log('actions.team.addTeam: ', valid, slug) + if (!valid) { + return actions.form({ + form: 'addTeamError', + message: 'Team name not valid. Please only letters, numbers and spaces' + }) + } + + const team = { + name: teamname, + slug: slug, + owner: teamForm.target.form[1].value + } + + const uniqueTeam = await client.query({ + query: UniqueTeamnameQuery, + variables: { name: teamname } + }) + await console.log( + 'actions.team.addTeam: ', + team, + valid, + uniqueTeam, + uniqueTeam.data.uniqueTeamname + ) + if (uniqueTeam.data.teamByName !== null) { + return actions.form({ + form: 'addTeamError', + message: 'Sorry, this team name is taken. Please create a new one' + }) + } + + const result = await client.mutate({ + mutation: AddTeamMutation, + variables: { name: teamname, slug: slug, owner: teamForm.target.form[1].value }, + options: { + update: (proxy, { data: { getTeamByOwner } }) => { + const data = proxy.readQuery({ GetTeamQuery }) + data.getTeamByOwner.push(getTeamByOwner) + proxy.writeQuery({ GetTeamQuery, data }) + } + } + }) + + if (result.data.addTeam !== null) { + return actions.addTeamSuccess(result.data.addTeam) + } else { + return actions.form({ + form: 'addTeamError', + message: `Unable to add Team: ${result.data.addTeam.errors[0].message}` + }) + } + }, + addTeamSuccess: result => [ + action('form', { form: 'addTeamSuccess', message: 'Team Added!' }), + action('profile', result), + action('createTeam.input', ''), + action('toggleModal', '') + ], + toggleModal: form => (state, actions) => { + return { + modal: { + content: form, + isActive: !state.modal.isActive + } + } + }, + getTeam: id => [ + action('form', { form: 'getTeamLoad', message: 'Getting your team...' }), + action('getTeambyOwner', id) + ], + getTeambyOwner: id => async (state, actions) => { + const result = await client.query({ + query: GetTeamQuery, + variables: { auth0id: id }, + fetchPolicy: 'network-only' + }) + + if (result.data.teamByOwner.edges.length > 0) { + return actions.getTeamSuccess(result.data.teamByOwner) + } else { + return actions.getTeamNoTeam() + } + }, + getTeamSuccess: profile => [ + action('form', { form: 'getTeamSuccess', message: 'Your team' }), + action('profile', profile) + ], + getTeamNoTeam: profile => [ + action('form', { form: 'getTeamNotice', message: 'No team found' }), + action('profile', { name: '' }) + ], + deleteTeam: id => [ + action('form', { + form: 'deleteTeamLoad', + message: 'Removing your team...' + }), + action('deleteTeamSubmit', id) + ], + deleteTeamSubmit: ({id, owner}) => async (state, actions) => { + console.log('deleteTeamSubmit: ', id, owner) + const result = await client.mutate({ + mutation: DeleteTeamMutation, + variables: { id: id, owner: owner }, + options: { + update: (proxy, { data: { getTeamByOwner } }) => { + const data = proxy.readQuery({ GetTeamQuery }) + data.getTeamByOwner.push(getTeamByOwner) + proxy.writeQuery({ GetTeamQuery, data }) + } + } + }) + + if (result.data.deleteTeam.id !== null) { + return actions.deleteTeamSuccess({ name: '' }) + } else { + return actions.form({ form: 'deleteTeamError', message: 'No team found' }) + } + }, + deleteTeamSuccess: profile => [ + action('form', { + form: 'deleteTeamSuccess', + message: 'Your team has been deleted' + }), + action('profile', profile) + ] +} + +export default team diff --git a/packages/aateam-client/src/modules/team/graphql/AddTeamMutation.js b/packages/aateam-client/src/modules/team/graphql/AddTeamMutation.js new file mode 100644 index 000000000..903ea5b59 --- /dev/null +++ b/packages/aateam-client/src/modules/team/graphql/AddTeamMutation.js @@ -0,0 +1,16 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const AddTeamMutation = gql` + mutation CreateTeamMutation($name: String!, $slug: String!, $owner: String!) { + createTeam(name: $name, slug: $slug, owner: $owner) { + id + name + slug + owner { + auth0id + id + } + } + } +` diff --git a/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js b/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js new file mode 100644 index 000000000..1540cc3e9 --- /dev/null +++ b/packages/aateam-client/src/modules/team/graphql/DeleteTeamMutation.js @@ -0,0 +1,10 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const DeleteTeamMutation = gql` + mutation deleteTeam($id: ID!, $owner: String!) { + deleteTeam(id: $id, owner: $owner) { + id + } + } +` diff --git a/packages/aateam-client/src/modules/team/graphql/GetTeamQuery.js b/packages/aateam-client/src/modules/team/graphql/GetTeamQuery.js new file mode 100644 index 000000000..8f97b6687 --- /dev/null +++ b/packages/aateam-client/src/modules/team/graphql/GetTeamQuery.js @@ -0,0 +1,40 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const GetTeamQuery = gql` + query teamDetailsQuery($auth0id: String!) { + teamByOwner(ownerId: $auth0id) { + edges { + node { + id + name + slug + profile { + avatar + description + motto + } + owner { + nickname + visible + profile { + avatar + } + } + members { + role + member { + nickname + visible + profile { + avatar + } + } + } + } + } + } + } +` + +export default GetTeamQuery diff --git a/packages/aateam-client/src/modules/team/graphql/UniqueTeamnameQuery.js b/packages/aateam-client/src/modules/team/graphql/UniqueTeamnameQuery.js new file mode 100644 index 000000000..e7366ef27 --- /dev/null +++ b/packages/aateam-client/src/modules/team/graphql/UniqueTeamnameQuery.js @@ -0,0 +1,12 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const UniqueTeamnameQuery = gql` + query uniqueTeamname($name: String!) { + teamByName(name: $name){ + name + } + } +` + +export default UniqueTeamnameQuery diff --git a/packages/aateam-client/src/modules/team/index.js b/packages/aateam-client/src/modules/team/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aateam-client/src/modules/team/state/index.js b/packages/aateam-client/src/modules/team/state/index.js new file mode 100644 index 000000000..4fa15b664 --- /dev/null +++ b/packages/aateam-client/src/modules/team/state/index.js @@ -0,0 +1,20 @@ +export const team = { + form: { + type: 'login', + message: '' + }, + createTeam: { + input: '', + unique: true, + placeholder: 'Your teamname', + error: '' + }, + profile: {}, + members: [], + modal: { + content: '', + isActive: false + } +} + +export default team diff --git a/packages/aateam-client/src/modules/team/views/add-team.js b/packages/aateam-client/src/modules/team/views/add-team.js new file mode 100644 index 000000000..8e57b3943 --- /dev/null +++ b/packages/aateam-client/src/modules/team/views/add-team.js @@ -0,0 +1,72 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const AddTeamForm = props => (state, actions) => ( +
+

Add A Team

+
+ +
+ { + if ( + oldAttributes.value !== element.value || + (oldAttributes.value !== '' && element.value === '') + ) { + element.focus() + } + }} + aria-label={state.team.createTeam.placeholder} + oninput={({ target: { value } }) => actions.team.checkTeamname(value)} + onblur={({ target: { value } }) => actions.team.checkTeamname(value)} + value={state.team.createTeam.input} + placeholder={state.team.createTeam.placeholder} + /> + + + +
+
+

+ This teamname is already taken. Please create a new one. +

+

+ {state.team.form.message} +

+
+ + +
+ +) + +export default AddTeamForm diff --git a/packages/aateam-client/src/modules/team/views/index.js b/packages/aateam-client/src/modules/team/views/index.js new file mode 100644 index 000000000..8f8e7f26b --- /dev/null +++ b/packages/aateam-client/src/modules/team/views/index.js @@ -0,0 +1,5 @@ +import { AddTeamForm } from './add-team' +import { TeamList } from './team-list' +import { TeamPanel } from './team-panel' + +export { AddTeamForm, TeamList, TeamPanel } diff --git a/packages/aateam-client/src/modules/team/views/team-list.js b/packages/aateam-client/src/modules/team/views/team-list.js new file mode 100644 index 000000000..4043e0aee --- /dev/null +++ b/packages/aateam-client/src/modules/team/views/team-list.js @@ -0,0 +1,57 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { validObject } from '../../../utils/js-helpers' + +export const TeamList = props => (state, actions) => { + const team = validObject(state.team.profile, 'edges') ? state.team.profile.edges : '' + + if (team === '') { + return ( +
+

You don't have a team yet!

+ +
+ ) + } + + if (team[0].node.name !== '' && team[0].node.name !== null) { + const initial = team[0].node.name.substring(0, 1) + return ( +
+ {team[0].node.profile !== null && team[0].node.profile.avatar !== '' ? ( +
+ {team[0].node.name} +
+ ) : ( +
+ {initial} +
+ )} +

{team[0].node.name}

+

Team leader: {team[0].node.owner.nickname}

+
+ ) + } + + return ( +
+

{state.team.form.message}

+
+
+ + + +
+
+
+ ) +} diff --git a/packages/aateam-client/src/modules/team/views/team-panel.js b/packages/aateam-client/src/modules/team/views/team-panel.js new file mode 100644 index 000000000..418080ec3 --- /dev/null +++ b/packages/aateam-client/src/modules/team/views/team-panel.js @@ -0,0 +1,61 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { validObject } from '../../../utils/js-helpers' + +export const TeamPanel = props => (state, actions) => { + const team = validObject(state.team.profile, 'edges') ? state.team.profile.edges : '' + if (team === '') { + return ( +
+

Team

+

You don't have a team yet!

+ +
+ ) + } + + if (team[0].node.name !== '' && team[0].node.name !== null) { + const initial = team[0].node.name.substring(0, 1) + return ( +
+

Team

+ {team[0].node.profile !== null && team[0].node.profile.avatar !== '' ? ( +
+ {team[0].node.name} +
+ ) : ( +
+ {initial} +
+ )} +

{team[0].node.name}

+

Team leader: {team[0].node.owner.nickname}

+
+ ) + } + + return ( +
+

Team

+

{state.team.form.message}

+
+
+ + + +
+
+
+ ) +} + +export default TeamPanel diff --git a/packages/aateam-client/src/modules/user/actions/index.js b/packages/aateam-client/src/modules/user/actions/index.js new file mode 100644 index 000000000..6bcba54a0 --- /dev/null +++ b/packages/aateam-client/src/modules/user/actions/index.js @@ -0,0 +1,95 @@ +import { action } from '@hyperapp/fx' + +import { client } from '../../../index' +import { LoginMutation } from '../graphql/Login' + +// import { auth } from '../../auth/actions' + +import { removeItem } from '../../../utils/local-storage' + +export const user = { + form: ({ form, message }) => state => { + return { + form: { + form, + message + } + } + }, + clearForms: () => ({ + form: { + form: 'login', + message: '' + } + }), + login: value => [ + action('form', { form: 'loginNotice', message: 'Logging you in...' }), + action('loginSubmit', value) + ], + loginSubmit: loginForm => async (state, actions) => { + loginForm.preventDefault() + loginForm.target.blur() + + const usernameOrEmail = loginForm.target.form[0].value + const password = loginForm.target.form[1].value + const result = await client.mutate({ + mutation: LoginMutation, + variables: { input: { usernameOrEmail, password } } + }) + console.log('actions.user.loginSubmit: ', result.data.login) + if (result.data.login.user !== null) { + return actions.setLoggedIn(result.data.login.user) + } else { + return actions.form({ + form: 'loginError', + message: result.data.login.errors[0].message + }) + } + }, + loginRegister: user => async (state, actions) => { + const usernameOrEmail = user.username + const password = user.password + const result = await client.mutate({ + mutation: LoginMutation, + variables: { input: { usernameOrEmail, password } } + }) + console.log('actions.user.loginRegister: ', result.data.login) + if (result.data.login.user !== null) { + return actions.setLoggedIn(result.data.login.user) + } else { + return actions.form({ + form: 'loginError', + message: result.data.login.errors[0].message + }) + } + }, + setLoggedIn: user => state => ({ + auth: { + loggedIn: true, + role: user.role + }, + profile: { + id: user.id, + ghId: '', + username: user.username, + email: user.email, + name: '', + avatar: '', + url: '' + } + }), + logOut: () => async (state, actions) => { + await removeItem('accessToken') + await removeItem('refreshToken') + return actions.loggedOut() + }, + loggedOut: () => state => ({ + auth: { + loggedIn: false, + role: '' + }, + profile: {} + }) +} + +export default user diff --git a/packages/aateam-client/src/modules/user/graphql/CurrentUserQuery.js b/packages/aateam-client/src/modules/user/graphql/CurrentUserQuery.js new file mode 100644 index 000000000..4af1320b4 --- /dev/null +++ b/packages/aateam-client/src/modules/user/graphql/CurrentUserQuery.js @@ -0,0 +1,12 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const currentUser = gql` + query currentUser { + currentUser { + ...UserInfo + } + } +` + +export default currentUser diff --git a/packages/aateam-client/src/modules/user/graphql/Login.js b/packages/aateam-client/src/modules/user/graphql/Login.js new file mode 100644 index 000000000..2685ce036 --- /dev/null +++ b/packages/aateam-client/src/modules/user/graphql/Login.js @@ -0,0 +1,86 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const LoginMutation = gql` + mutation login($input: LoginUserInput!) { + login(input: $input) { + tokens { + accessToken + refreshToken + } + user { + id + username + role + isActive + email + profile { + firstName + lastName + fullName + } + auth { + certificate { + serial + } + facebook { + fbId + displayName + } + google { + googleId + displayName + } + github { + ghId + displayName + } + linkedin { + lnId + displayName + } + } + } + errors { + field + message + } + } + } +` + +export const UserInfo = gql` + fragment UserInfo on User { + id + username + role + isActive + email + profile { + firstName + lastName + fullName + } + auth { + certificate { + serial + } + facebook { + fbId + displayName + } + google { + googleId + displayName + } + github { + ghId + displayName + } + linkedin { + lnId + displayName + } + } + } +` diff --git a/packages/aateam-client/src/modules/user/graphql/Profile.graphql b/packages/aateam-client/src/modules/user/graphql/Profile.graphql new file mode 100644 index 000000000..f4eadd27d --- /dev/null +++ b/packages/aateam-client/src/modules/user/graphql/Profile.graphql @@ -0,0 +1,5 @@ +fragment UserProfileInfo on UserProfile { + firstName + lastName + fullName +} diff --git a/packages/aateam-client/src/modules/user/graphql/RefreshTokens.js b/packages/aateam-client/src/modules/user/graphql/RefreshTokens.js new file mode 100644 index 000000000..385df900c --- /dev/null +++ b/packages/aateam-client/src/modules/user/graphql/RefreshTokens.js @@ -0,0 +1,13 @@ +/* eslint-disable no-unused-vars */ +import gql from 'graphql-tag' + +export const RefreshTokens = gql` + mutation refreshTokens($refreshToken: String!) { + refreshTokens(refreshToken: $refreshToken) { + accessToken + refreshToken + } + } +` + +export default RefreshTokens diff --git a/packages/aateam-client/src/modules/user/graphql/User.graphql b/packages/aateam-client/src/modules/user/graphql/User.graphql new file mode 100644 index 000000000..5f64d0446 --- /dev/null +++ b/packages/aateam-client/src/modules/user/graphql/User.graphql @@ -0,0 +1,33 @@ +#import "./Profile.graphql" + +fragment UserInfo on User { + id + username + role + isActive + email + profile { + ...UserProfileInfo + } + auth { + certificate { + serial + } + facebook { + fbId + displayName + } + google { + googleId + displayName + } + github { + ghId + displayName + } + linkedin { + lnId + displayName + } + } +} diff --git a/packages/aateam-client/src/modules/user/index.js b/packages/aateam-client/src/modules/user/index.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aateam-client/src/modules/user/state/index.js b/packages/aateam-client/src/modules/user/state/index.js new file mode 100644 index 000000000..4825351ec --- /dev/null +++ b/packages/aateam-client/src/modules/user/state/index.js @@ -0,0 +1,21 @@ +export const user = { + form: { + type: 'login', + message: '' + }, + auth: { + loggedIn: false, + role: 'pending' + }, + profile: { + id: '', + ghId: '', + username: '', + email: '', + name: '', + avatar: '', + url: '' + } +} + +export default user diff --git a/packages/aateam-client/src/state/index.js b/packages/aateam-client/src/state/index.js new file mode 100644 index 000000000..0fae14fca --- /dev/null +++ b/packages/aateam-client/src/state/index.js @@ -0,0 +1,33 @@ +import { location } from '@hyperapp/router' +import { getStateFromStorage } from '../utils/local-storage' + +import auth from '../modules/auth/state' +import nav from '../modules/nav/state' +import team from '../modules/team/state' +import algobot from '../modules/algobots/state' +import community from '../modules/community/state' + +const appVersion = '0.0.7' +export const state = getStateFromStorage(appVersion) || { + location: location.state, + appVersion: appVersion, + data: {}, + loggedIn: false, + redirect: '', + user: { + id: '', + name: '', + username: '', + avatar: '', + email: '' + }, + modal: { + isActive: false, + content: '' + }, + auth, + nav, + team, + algobot, + community +} diff --git a/packages/aateam-client/src/styles/_background-shapes.scss b/packages/aateam-client/src/styles/_background-shapes.scss new file mode 100644 index 000000000..063ca5711 --- /dev/null +++ b/packages/aateam-client/src/styles/_background-shapes.scss @@ -0,0 +1,181 @@ +@mixin centerer($horizontal: true, $vertical: true) { + position: absolute; + @if ($horizontal and $vertical) { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } @else if ($horizontal) { + left: 50%; + transform: translate(-50%, 0); + } @else if ($vertical) { + top: 50%; + transform: translate(0, -50%); + } +} + +// 1344, 1152, 960 +$width: 100vw; +$height: 10rem; + +.separator-down { + width: $width; + height: $height; + position: relative; + color: $white; + &:after { + content: ''; + position: absolute; + bottom: 0; + width: 0; + height: 0; + border-top: $height solid $info; + border-left: $width/2 solid transparent; + border-right: $width/2 solid transparent; + } + @media only screen and (min-width: 1408px){ + &:after { + left: -32px; + border-left: 704px solid transparent; + border-right: 704px solid transparent; + } + } + @media only screen and (min-width: 1216px) and (max-width: 1407px){ + &:after { + left: -32px; + border-left: 608px solid transparent; + border-right: 608px solid transparent; + } + } + @media only screen and (min-width: 1024px) and (max-width: 1215px){ + &:after { + left: -32px; + border-left: 512px solid transparent; + border-right: 512px solid transparent; + } + } + &.is-light{ + color: $grey-lighter; + &:after { + border-top: $height solid $white; + } + } + &.is-primary { + &:after { + border-top: $height solid $primary; + } + } + &.is-primary.has-background-light { + &:after { + border-top: $height solid #EAE2DE; + } + } +} + +.separator-up { + width: $width; + height: $height; + position: relative; + color: white; + &:after { + content: ''; + position: absolute; + bottom: 0; + width: 0; + height: 0; + border-bottom: $height solid white; + border-left: $width/2 solid transparent; + border-right: $width/2 solid transparent; + } + @media only screen and (min-width: 1408px){ + &:after { + left: -32px; + border-left: 704px solid transparent; + border-right: 704px solid transparent; + } + } + @media only screen and (min-width: 1216px) and (max-width: 1407px){ + &:after { + left: -32px; + border-left: 608px solid transparent; + border-right: 608px solid transparent; + } + } + @media only screen and (min-width: 1024px) and (max-width: 1215px){ + &:after { + left: -32px; + border-left: 512px solid transparent; + border-right: 512px solid transparent; + } + } +} + +.chevron-down { + position: relative; + text-align: center; + padding: 0; + margin-top: -3rem; + margin-bottom: 0; + height: 17rem; + width: $width; + background: white; + z-index: 5; + .container{ + position: relative; + top: 5rem; + z-index: 10; + } + &:before { + z-index: 0; + content: ''; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 50%; + background: $grey-lighter; + transform: skew(0deg, 10deg); + } + &:after { + z-index: 0; + content: ''; + position: absolute; + top: 0; + right: 0; + height: 100%; + width: 50%; + background: $grey-lighter; + transform: skew(0deg, -10deg); + } +} + +/* +.chevron-up { + + position: relative; + text-align: center; + padding: 12px; + margin-bottom: 6px; + height: $height; + width: $width; + + &:before { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 100%; + width: 50%; + background: red; + transform: skew(0deg, -6deg); + }​ + &:after { + content: ''; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 51%; + transform: skew(0deg, 6deg); + } +} +*/ diff --git a/packages/aateam-client/src/styles/_backgrounds.scss b/packages/aateam-client/src/styles/_backgrounds.scss new file mode 100644 index 000000000..04bf736f0 --- /dev/null +++ b/packages/aateam-client/src/styles/_backgrounds.scss @@ -0,0 +1,24 @@ + + +.background-home-intro{ + background-repeat: no-repeat; + background-position: bottom center; + background-size:contain; + @media only screen and (max-width: 520px){ + height: 30rem; + margin-bottom: 4rem; + background-size:cover; + } + @media only screen and (max-width: 780px){ + height: 30rem; + margin-bottom: 4rem; + } + @media only screen and (min-width: 781px) and (max-width: 1216px){ + height: 40rem; + margin-bottom: 5rem; + } + @media only screen and (min-width: 1217px) and (max-width: 1408px){ + height: 50rem; + margin-bottom: 5rem; + } +} diff --git a/packages/aateam-client/src/styles/_bulma-ext-overrides.scss b/packages/aateam-client/src/styles/_bulma-ext-overrides.scss new file mode 100644 index 000000000..975c601ad --- /dev/null +++ b/packages/aateam-client/src/styles/_bulma-ext-overrides.scss @@ -0,0 +1,3 @@ +// Timeline overrides +$timeline-content-padding: 1.5rem 2rem 1rem 2rem; +$timeline-icon-size: $size-3; diff --git a/packages/aateam-client/src/styles/_customize.scss b/packages/aateam-client/src/styles/_customize.scss new file mode 100644 index 000000000..f7ea298c5 --- /dev/null +++ b/packages/aateam-client/src/styles/_customize.scss @@ -0,0 +1,41 @@ +$family-sans-serif: 'Saira', 'Saira Condensed', Arial, 'Arial Narrow', Calibri, Candara, Arial, sans-serif; + +$body-size: 14px; + +$radius: 0; +$radius-small: 0; +$radius-large: 0; + +$link-hover: $primary-dark; +$link-focus: $primary-dark; +$link-active: $primary-dark; + +$button-hover-color: $grey-darker; +$button-focus: $black-ter; +$button-active-color: $black-ter; + +$navbar-height: 4rem; +$navbar-item-img-max-height: 100%; +$navbar-background-color: $white; +$navbar-item-hover-background-color: $grey-lighter; +$navbar-item-hover-color: $black; +$navbar-item-active-color: $blue; +$navbar-item-active-background-color: transparent; +$navbar-tab-hover-background-color: transparent; +$navbar-dropdown-arrow: $blue; + +$footer-background-color: $dark; + +$input-color: $grey-darker; +$input-background-color: $white; +$input-border-color: $grey-lighter; +$input-shadow: inset 0 1px 2px rgba($black, 0.1); + +$input-hover-color: $grey-darker; +$input-hover-border-color: $grey-light; + +$input-focus-color: $grey-darker; +$input-focus-border-color: $link; +$input-focus-box-shadow-size: 0 0 0 0.125em; +$input-focus-box-shadow-color: rgba($link, 0.25); + diff --git a/packages/aateam-client/src/styles/_inverts.scss b/packages/aateam-client/src/styles/_inverts.scss new file mode 100644 index 000000000..c7c801cbc --- /dev/null +++ b/packages/aateam-client/src/styles/_inverts.scss @@ -0,0 +1,23 @@ +// Invert colors + +$orange-invert: findColorInvert($orange); +$yellow-invert: findColorInvert($yellow); +$green-invert: findColorInvert($green); +$turquoise-invert: findColorInvert($turquoise); +$cyan-invert: findColorInvert($cyan); +$blue-invert: findColorInvert($blue); +$purple-invert: findColorInvert($purple); +$red-invert: findColorInvert($red); +$rusted-invert: findColorInvert($rusted); +$danger-invert: findColorInvert($danger); +$white-invert: findColorInvert($white); +$navy-invert: findColorInvert($navy); + +$primary-invert: $red-invert; +$link-invert: $turquoise-invert; +$info-invert: $blue-invert; +$success-invert: $green-invert; +$warning-invert: $orange-invert; + +$light-invert: $dark; +$dark-invert: $light; diff --git a/packages/aateam-client/src/styles/_overrides.scss b/packages/aateam-client/src/styles/_overrides.scss new file mode 100644 index 000000000..9ac21976f --- /dev/null +++ b/packages/aateam-client/src/styles/_overrides.scss @@ -0,0 +1,276 @@ +$custom-colors: ( + "red": ($red, $red-invert), + "rusted": ($rusted, $rusted-invert), + "orange": ($orange, $orange-invert), + "purple": ($purple, $purple-invert), + "yellow": ($yellow, $yellow-invert), + "turquoise": ($turquoise, $turquoise-invert), + "green": ($green, $green-invert), + "blue": ($blue, $blue-invert), + "cyan": ($cyan, $cyan-invert), + "navy": ($navy, $navy-invert) +); + +$colors: mergeColorMaps(("white": ($white, $black), "black": ($black, $white), "light": ($light, $light-invert), "dark": ($dark, $dark-invert), "primary": ($primary, $primary-invert), "link": ($link, $link-invert), "info": ($info, $info-invert), "success": ($success, $success-invert), "warning": ($warning, $warning-invert), "danger": ($danger, $danger-invert)), $custom-colors); +// $colors: map-merge($colors, $customcolors); +// Overrides +@import url(https://fonts.googleapis.com/css?family=Saira+Condensed:300,600|Saira:300,600&subset=latin-ext,vietnamese); +.button, +.control.has-icons-left .icon, +.control.has-icons-right .icon, +.input, +.pagination-ellipsis, +.pagination-link, +.pagination-next, +.pagination-previous, +.select, +.select select, +.textarea { + height: 2.6667rem; +} + +// Add a serif family +$font-primary: 'Saira', Arial, sans-serif; +$font-condensed: 'Saira Condensed', 'Arial Narrow', sans-serif; + +$family-primary: $font-primary; + +.is-relative { + position: relative; +} +.is-absolute{ + z-index: 100; + position: absolute; + left: 50%; + transform: translate(-50%, 0); +} + +.is-condensed { + font-family: $font-condensed; +} +.is-centered{ + display: block; + margin: 0 auto; +} +.is-rounded{ + border-radius: .5rem; +} +.card.is-rounded img{ + border-radius: .5rem .5rem 0 0; +} + +.hero.has-background-grey-lighter{ + background: hsl(0, 0%, 86%); +} + +.container.no-margin{ + margin-left: 0; + margin-right: 0; +} + +.button { + &.is-active, + &.is-focused, + &:active, + &:focus { + box-shadow: inset 1px 1px 4px rgba($grey-darker, 0.3); + } + @each $name, + $pair in $colors { + $color: nth($pair, 1); + $color-invert: nth($pair, 2); + &.is-#{$name} { + &.is-hovered, + &:hover { + background-color: darken($color, 10); + } + &.is-active, + &.is-focused, + &:active, + &:focus { + box-shadow: inset 1px 0 3px rgba($grey-darker, 0.3); + background-color: darken($color, 10); + } + } + } +} + +.input, +.textarea { + box-shadow: none; +} + +.box, +.card { + box-shadow: 0 0 0 1px $border; +} + +.notification { + @each $name, + $pair in $colors { + $color: nth($pair, 1); + $color-invert: nth($pair, 2); + &.is-#{$name} { + a:not(.button) { + color: $color-invert; + text-decoration: underline; + } + } + } +} + +.progress { + height: $size-small; +} + +.progress, +.tag { + border-radius: $radius; +} + + + +.hero { + // Colors + .navbar:not(.is-transparent) { + background-color: $black-ter; + } + @each $name, + $pair in $colors { + $color: nth($pair, 1); + $color-invert: nth($pair, 2); + &.is-#{$name} { + .navbar { + background: none; + } + .navbar-item, + .navbar-link { + color: $color-invert; + &.is-active, + &:hover { + background-color: darken($color, 10); + color: $color-invert; + } + &:after { + border-color: $color-invert; + } + } + .navbar-menu { + background-color: $color; + } + .navbar-burger { + span { + background-color: $color-invert; + } + } + @include desktop { + .navbar-dropdown a.navbar-item { + color: $grey-dark; + } + } + } + } +} + +.columns .column{ + &.is-blue{ + background-color: $blue; + .menu-list { + a { + background-color: $blue; + color: $white-ter; + } + + a:hover{ + background-color: $blue; + color: $white; + text-decoration: underline; + } + } + .menu-label{ + color: $white-ter; + } + } + &.is-navy{ + background-color: $navy; + .menu-list { + a { + background-color: $navy; + color: $white-ter; + } + a:hover{ + background-color: $navy; + color: $white; + text-decoration: underline; + } + a.is-active { + color: $cyan; + } + } + .menu-label{ + color: $white-ter; + } + } + &.is-light{ + background-color: $light; + } +} + +.up-7{ + top: -7rem; +} +.down-1{ + bottom: 1rem; +} + +.timeline-content ul{ + margin-top: 0; +} + +.timeline-content p:not(:last-child){ + margin-bottom: 0.5rem; +} + +.timeline .timeline-item .timeline-marker.is-icon > i.fa, .timeline .timeline-item .timeline-marker.is-icon > i.fas { + font-size: 0.75rem !important; +} + +.timeline .timeline-item .timeline-marker.is-success.is-icon > i.fa { + color: rgba(255, 255, 255, 1) !important; +} + + +.avatar { + float: left; + border-radius: 50%; + text-align: center; + cursor: context-menu; + &.is-16x16{ + line-height: 16px; + } + &.is-32x32{ + line-height: 32px; + } + &.is-96x96{ + line-height: 96px; + } + &.is-blue{ + background-color: $blue; + } + &.is-red{ + background-color: $red; + } + &.is-green{ + background-color: $green; + } + &.is-centered{ + float: none; + display: block; + margin: 0 auto; + } +} + +.avatar-wrapper{ + line-height: 32px; + cursor: context-menu; +} diff --git a/packages/aateam-client/src/styles/_rebuild.sass b/packages/aateam-client/src/styles/_rebuild.sass new file mode 100644 index 000000000..e69de29bb diff --git a/packages/aateam-client/src/styles/_utilities.scss b/packages/aateam-client/src/styles/_utilities.scss new file mode 100644 index 000000000..5c7a2970c --- /dev/null +++ b/packages/aateam-client/src/styles/_utilities.scss @@ -0,0 +1,158 @@ +/** UTILITIES **/ +//1. Atomic adjustments +//2. CSS Pre-loader + +/* Atomic adjustments +// Adjust padding and margin on elements atomically +// +// usage: [m|p]-[size]-[position] +// sizes: units (rem) - [0,qtr,hlf,3qtr,1,2,3,5,10] +// positions: [t, b, l, r] - top, bottom, left, right +// +// example uses: +// add 1rem margin to top: m_t_1 +// add 0.25rem padding to left and right: p-qtr-l p-qtr-r +*/ + +// $sizeUnit: rem; +$marginKey: 'm'; +$paddingKey: 'p'; +$separator: '-'; +$spaceSizes: ( + ('0', 0), + ('qtr', 0.25), + ('hlf', 0.5), + ('3qtr', 0.5), + ('1', 1), + ('2', 2), + ('3', 3), + ('4', 4), + ('5', 5), + ('7', 7), + ('10', 10) +); +$positions: ( + ('t', 'top'), + ('r', 'right'), + ('b', 'bottom'), + ('l', 'left') +); + +@function spaceSizeValue($key, $value) { + @return if($key == 'none', 0, $value + rem); +} + +@each $size in $spaceSizes { + $sizeKey: nth($size, 1); + $sizeValue: nth($size, 2); + .#{$marginKey}#{$separator}#{$sizeKey} { + margin: spaceSizeValue($sizeKey, $sizeValue) !important; + } + .#{$paddingKey}#{$separator}#{$sizeKey} { + padding: spaceSizeValue($sizeKey, $sizeValue) !important; + } + @each $position in $positions { + $posKey: nth($position, 1); + $posValue: nth($position, 2); + .#{$marginKey}#{$separator}#{$posKey}#{$separator}#{$sizeKey} { + margin-#{$posValue}: spaceSizeValue($sizeKey, $sizeValue) !important; + } + .#{$paddingKey}#{$separator}#{$posKey}#{$separator}#{$sizeKey} { + padding-#{$posValue}: spaceSizeValue($sizeKey, $sizeValue) !important; + } + } +} + +/*CSS Pre-loader +// +// This only works with JavaScript, +// — no JS, loader doesn't display +// +*/ + +.no-js .loader { display: none; } +.js .loader { display: block; position: absolute; left: 100px; top: 0; } +.se-pre-con { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 9999; + background: $red; +} + +.loader { + position: absolute; + width: 78px; + height: 78px; + left: 50%; + top:50%; + margin-left: -39px; + margin-top: -39px; +} + +.loading:before { + content: ''; + position: absolute; + width: 35px; + height: 35px; + top: 50%; + margin-top: -18px; + left: 50%; + margin-left: -18px; + border-width: 2px 1px; + border-style: solid; + border-color: rgb(255,255,255) rgba(247,247,247,0.3); + border-radius: 50%; + box-sizing: border-box; + animation: spin 3.45s infinite; +} +.loading:after { + content: ''; + position: absolute; + width: 6px; + height: 6px; + top: 50%; + margin-top: -3px; + left: 50%; + margin-left: -3px; + background-color: rgb(255,255,255); + border-radius: 50%; + box-sizing: border-box; + animation: pulse 6.9s infinite, borderPulse 6.9s infinite; +} + +.copy2clip, .copyP2clip{ + cursor: pointer; +} +#clipNotify { + position: fixed; + left: 50%; + bottom: 3rem; + width: 50%; + margin-left: -25%; + z-index: 100; + opacity: 0.8; +} + +.justify-between{ + justify-content: space-between; +} + +#clipNotify textarea.textarea { + border: none; + overflow: auto; + outline: none; + resize: none; + overflow: auto; + background: transparent; + height: 100%; + width: 100%; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + color: white; + font-weight: 600; + +} diff --git a/packages/aateam-client/src/styles/_variables.scss b/packages/aateam-client/src/styles/_variables.scss new file mode 100644 index 000000000..34d244380 --- /dev/null +++ b/packages/aateam-client/src/styles/_variables.scss @@ -0,0 +1,32 @@ +// Advanced Algos Custom colors +$orange: #F0A202; +$yellow: #F4E409; +$green: #BCD643; +$turquoise: #1B998B; +$cyan: #B4F3FA; +$blue: #2A96FF; +$purple: #5B507A; +$red: #E3493C; +$rusted: #CC5835; +$white: #FFFFFF; +$navy: #13293D; + +$primary: $blue; +$primary-dark: darken($blue, 20); + +$link: $turquoise; +$info: $cyan; +$success: $green; +$warning: $orange; +$danger: $rusted; + +$light: rgb(245, 243, 243); +$dark: #303036; + +$grey-darker: #333; +$black-ter: #222; + +$radius-small: 0px; +$radius: 0px; +$radius-large: 0px; +$radius-rounded: 290486px; diff --git a/packages/aateam-client/src/styles/app.scss b/packages/aateam-client/src/styles/app.scss new file mode 100644 index 000000000..d8d382476 --- /dev/null +++ b/packages/aateam-client/src/styles/app.scss @@ -0,0 +1,36 @@ +//Note: In SCSS, filenames with underscores denotes file is imported and can be imported without '_'. +// e.g. _variables.scss -> @import "variables"; +@charset "utf-8"; +@import "../../node_modules/bulma/sass/utilities/_all"; +//@import "../../node_modules/bulma/bulma"; +// 1. Import the initial variables +//@import "../../node_modules/bulma/sass/utilities/initial-variables"; +//@import "../../node_modules/bulma/sass/utilities/functions"; +//@import "../../node_modules/bulma/sass/utilities/mixins"; + +// 2. Add custom and ovverride variables +@import "variables"; +@import "inverts"; + + +// 3. Add new variables to the map. +// @import "../../node_modules/bulma/sass/utilities/derived-variables"; + +@import "bulma-ext-overrides"; +@import "customize"; + +// 4. Apply Bulma overrides +@import "overrides"; +@import "utilities"; +@import "background-shapes"; +@import "backgrounds"; + + +// 5. Add extensions + + +// 6. Import the rest of Bulma +@import "../../node_modules/bulma/bulma"; +//@import "../../node_modules/bulma-timeline/dist/bulma-timeline"; +//@import "../../node_modules/bulma-o-steps/bulma-steps.sass"; + diff --git a/packages/aateam-client/src/utils/js-helpers.js b/packages/aateam-client/src/utils/js-helpers.js new file mode 100644 index 000000000..55dc73320 --- /dev/null +++ b/packages/aateam-client/src/utils/js-helpers.js @@ -0,0 +1,60 @@ +export function isDefined (d) { + return d !== null && typeof d !== 'undefined' +} + +export function isNotDefined (d) { + return !isDefined(d) +} + +export const isArray = Array.isArray + +export function isObject (d) { + return isDefined(d) && typeof d === 'object' && !Array.isArray(d) +} + +export function isEmpty (obj) { + for (var key in obj) { + if (obj.hasOwnProperty(key)) return false + } + return true +} + +export function validObject (object, ...keys) { + return keys.reduce((a, b) => (a || { })[b], object) !== undefined +} + +export function mergeDeep (target, ...sources) { + if (!sources.length) return target + const source = sources.shift() + + if (isObject(target) && isObject(source)) { + for (const key in source) { + if (isObject(source[key])) { + if (!target[key]) Object.assign(target, { [key]: {} }) + mergeDeep(target[key], source[key]) + } else { + Object.assign(target, { [key]: source[key] }) + } + } + } + return mergeDeep(target, ...sources) +} + +export function deleteCookie (c) { + document.cookie.split(';').forEach(function (c) { document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/') }) +} + +export function slugify (string) { + const a = 'àáäâãåèéëêìíïîòóöôùúüûñçßÿœæŕśńṕẃǵǹḿǘẍźḧ·/_,:;' + const b = 'aaaaaaeeeeiiiioooouuuuncsyoarsnpwgnmuxzh------' + const p = new RegExp(a.split('').join('|'), 'g') + + return string.toString().toLowerCase() + .replace(/\s+/g, '-') // Replace spaces with - + .replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters + .replace(/&/g, '-and-') // Replace & with 'and' + .replace(/[^\w-]+/g, '') // Remove all non-word characters + .replace(/--+/g, '-') // Replace multiple - with single - + .replace(/^-+/, '') // Trim - from start of text + .replace(/-+$/, '') // Trim - from end of text +} diff --git a/packages/aateam-client/src/utils/local-storage.js b/packages/aateam-client/src/utils/local-storage.js new file mode 100644 index 000000000..98220f61d --- /dev/null +++ b/packages/aateam-client/src/utils/local-storage.js @@ -0,0 +1,35 @@ +const getStateFromStorage = version => { + const localState = JSON.parse(window.localStorage.getItem('aa-team')) + + try { + if (localState !== undefined && localState !== null) { + if ( + localState.appVersion !== undefined && + localState.appVersion !== null + ) { + if (localState.appVersion === version) { + return localState + } + } + } else { + throw new Error() + } + } catch (error) { + return false + } +} + +const storeStateInStorage = state => + window.localStorage.setItem('aa-team', JSON.stringify(state)) + +const getItem = async name => window.localStorage.getItem(name) +const setItem = async (name, value) => window.localStorage.setItem(name, value) +const removeItem = async name => window.localStorage.removeItem(name) + +export { + getStateFromStorage, + storeStateInStorage, + getItem, + setItem, + removeItem +} diff --git a/packages/aateam-client/src/views/index.js b/packages/aateam-client/src/views/index.js new file mode 100644 index 000000000..b53e065a9 --- /dev/null +++ b/packages/aateam-client/src/views/index.js @@ -0,0 +1,51 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Route, Switch, Redirect } from '@hyperapp/router' + +import { storeStateInStorage } from '../utils/local-storage' + +import { Nav } from './nav/header' +import { Footer } from './nav/footer' + +import { Landing } from './pages/landing' +import { About } from './pages/about' +import { Docs } from './pages/docs' +import { Auth } from './pages/auth' +import { DashboardWrapper } from './pages/dashboard' +import { AccountWrapper } from './pages/account' +import { AlgobotWrapper } from './pages/algobots' +import { TeamWrapper } from './pages/team' +import { SupportWrapper } from './pages/support' +import { CommunityWrapper } from './pages/community' + +export const view = ({ location }) => (state, actions) => { + if (document.location.pathname !== location.pathname) { + return + } + return ( +
+
+ ) +} diff --git a/packages/aateam-client/src/views/nav/components/main-menu.js b/packages/aateam-client/src/views/nav/components/main-menu.js new file mode 100644 index 000000000..4e162d6ac --- /dev/null +++ b/packages/aateam-client/src/views/nav/components/main-menu.js @@ -0,0 +1,93 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import { + NavButtonsLoggedIn, + NavButtonsLoggedInMobile, + NavButtonsLoggedOut +} from './nav-buttons' + +export const MainMenu = ({ match }) => (state, actions) => ( + +) + +export const MobileMenu = ({ match }) => (state, actions) => ( + +) diff --git a/packages/aateam-client/src/views/nav/components/nav-buttons.js b/packages/aateam-client/src/views/nav/components/nav-buttons.js new file mode 100644 index 000000000..cbb3f1890 --- /dev/null +++ b/packages/aateam-client/src/views/nav/components/nav-buttons.js @@ -0,0 +1,95 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import { auth } from '../../../index' + +import { NavUserInfo } from './user-info' + +export const NavButtonsLoggedIn = ({ match }) => (state, actions) => ( +
+ + +
+) + +export const NavButtonsLoggedInMobile = ({ match }) => (state, actions) => ( + +) + +export const NavButtonsLoggedOut = ({ match }) => (state, actions) => ( + +) diff --git a/packages/aateam-client/src/views/nav/components/user-info.js b/packages/aateam-client/src/views/nav/components/user-info.js new file mode 100644 index 000000000..28286d23d --- /dev/null +++ b/packages/aateam-client/src/views/nav/components/user-info.js @@ -0,0 +1,30 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const NavUserInfo = () => (state, actions) => { + const username = state.user.username + const avatar = state.user.avatar + + if (avatar === '' && username !== null && username !== '') { + const initial = username.substring(0, 1) + return ( + + ) + } else { + return ( +
+
+ {username} +
+   {username} +
+ ) + } +} + +export default NavUserInfo diff --git a/packages/aateam-client/src/views/nav/footer.js b/packages/aateam-client/src/views/nav/footer.js new file mode 100644 index 000000000..96b249778 --- /dev/null +++ b/packages/aateam-client/src/views/nav/footer.js @@ -0,0 +1,49 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import aalogo from '../../assets/logos/advanced-algos/aa-logo.png' + +export const Footer = ({ match }) => (state, actions) => ( + +) diff --git a/packages/aateam-client/src/views/nav/header.js b/packages/aateam-client/src/views/nav/header.js new file mode 100644 index 000000000..d2163b7cf --- /dev/null +++ b/packages/aateam-client/src/views/nav/header.js @@ -0,0 +1,51 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import { MainMenu, MobileMenu } from './components/main-menu' + +import logo from '../../assets/logos/advanced-algos/aa-logo.png' + +export const Nav = ({ match }) => (state, actions) => { + if (state.user) { + return ( + + ) + } +} diff --git a/packages/aateam-client/src/views/nav/sidebar.js b/packages/aateam-client/src/views/nav/sidebar.js new file mode 100644 index 000000000..04a7e26a9 --- /dev/null +++ b/packages/aateam-client/src/views/nav/sidebar.js @@ -0,0 +1,65 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +export const Sidebar = ({ match }) => (state, actions) => ( + +) + +export default Sidebar diff --git a/packages/aateam-client/src/views/pages/about/index.js b/packages/aateam-client/src/views/pages/about/index.js new file mode 100644 index 000000000..ca48d0305 --- /dev/null +++ b/packages/aateam-client/src/views/pages/about/index.js @@ -0,0 +1,20 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { Intro, Overview } from './sections' + +export const About = props => () => ( +
+
+
+ + +
+
+
+) + +export default About diff --git a/packages/aateam-client/src/views/pages/about/sections/index.js b/packages/aateam-client/src/views/pages/about/sections/index.js new file mode 100644 index 000000000..3013d69f3 --- /dev/null +++ b/packages/aateam-client/src/views/pages/about/sections/index.js @@ -0,0 +1,4 @@ +import { Intro } from './intro' +import { Overview } from './overview' + +export { Intro, Overview } diff --git a/packages/aateam-client/src/views/pages/about/sections/intro.js b/packages/aateam-client/src/views/pages/about/sections/intro.js new file mode 100644 index 000000000..b8f975d0f --- /dev/null +++ b/packages/aateam-client/src/views/pages/about/sections/intro.js @@ -0,0 +1,27 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Intro = () => ( +
+
+
+
+
+
+
+

+ About the AlgoCommunity +

+

+ Working together to connect, learn, evolve. +

+
+
+
+
+
+
+
+) + +export default Intro diff --git a/packages/aateam-client/src/views/pages/about/sections/overview.js b/packages/aateam-client/src/views/pages/about/sections/overview.js new file mode 100644 index 000000000..eb5c8179f --- /dev/null +++ b/packages/aateam-client/src/views/pages/about/sections/overview.js @@ -0,0 +1,30 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Overview = () => ( +
+
+
+
+
+
+ Bots today tend to be developed by companies as closed-sourced + technology that slows down improvements and diversity of innovation, + confines economic and intellectual wealth, and creates inhibited + competition. +
+
+ Advanced Algos, ltd., does not subscribe to any given ideological + notions but rather projects the above logic and intention in the + spirit cultivated and enabled by technological developments in + decentralization established in the foundational cultures of + blockchain and cryptocurrency. +
+
+
+
+
+
+) + +export default Overview diff --git a/packages/aateam-client/src/views/pages/account/index.js b/packages/aateam-client/src/views/pages/account/index.js new file mode 100644 index 000000000..d097ba63e --- /dev/null +++ b/packages/aateam-client/src/views/pages/account/index.js @@ -0,0 +1,38 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Switch, Route, Redirect } from '@hyperapp/router' + +import { Sidebar } from '../../nav/sidebar' +import { Profile, Settings } from './sections' + +export const AccountWrapper = props => (state, actions) => { + if (state.loggedIn) { + const name = + state.user.username === (undefined || null || '') + ? 'friend' + : state.user.username + return ( +
actions.auth.clearForms()} + > +
+
+ +
+
+ + + + +
+
+
+ ) + } else { + return + } +} + +export default AccountWrapper diff --git a/packages/aateam-client/src/views/pages/account/sections/index.js b/packages/aateam-client/src/views/pages/account/sections/index.js new file mode 100644 index 000000000..ed2db9eaf --- /dev/null +++ b/packages/aateam-client/src/views/pages/account/sections/index.js @@ -0,0 +1,4 @@ +import Profile from './profile' +import Settings from './settings' + +export { Profile, Settings } diff --git a/packages/aateam-client/src/views/pages/account/sections/profile.js b/packages/aateam-client/src/views/pages/account/sections/profile.js new file mode 100644 index 000000000..2697322c7 --- /dev/null +++ b/packages/aateam-client/src/views/pages/account/sections/profile.js @@ -0,0 +1,33 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Profile = () => (state, actions) => { + const username = state.user.profile.username + const avatar = state.user.profile.avatar + const initial = username.substring(0, 1) + return ( +
+
+

+ Your Profile +

+ {avatar !== null && avatar !== '' ? ( +
+ {username} +
+ ) : ( +
+ {initial} +
+ )} +

{username}

+

{state.user.profile.email}

+
+
+ ) +} + +export default Profile diff --git a/packages/aateam-client/src/views/pages/account/sections/settings.js b/packages/aateam-client/src/views/pages/account/sections/settings.js new file mode 100644 index 000000000..623d788ea --- /dev/null +++ b/packages/aateam-client/src/views/pages/account/sections/settings.js @@ -0,0 +1,23 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Settings = () => ( +
+
+

+ Your Settings +

+
+

Notifications

+

Receiving account-related notification by email.

+
+

Mailing List

+

No mailing lists.

+
+
+) + +export default Settings diff --git a/packages/aateam-client/src/views/pages/algobots/index.js b/packages/aateam-client/src/views/pages/algobots/index.js new file mode 100644 index 000000000..55e08651d --- /dev/null +++ b/packages/aateam-client/src/views/pages/algobots/index.js @@ -0,0 +1,66 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Redirect, Switch, Route } from '@hyperapp/router' + +import { Sidebar } from '../../nav/sidebar' +import { Algobots } from './sections' + +import { AddAlgobotForm } from '../../../modules/algobots/views' + +export const AlgobotWrapper = props => (state, actions) => { + if (state.loggedIn) { + const name = + state.user.name === (undefined || null || '') + ? 'friend' + : state.user.name + return ( +
+
+
+ +
+
+ + + + + +
+ +
+
+
+ ) + } else { + return + } +} + +export default AlgobotWrapper diff --git a/packages/aateam-client/src/views/pages/algobots/sections/add-algobot.js b/packages/aateam-client/src/views/pages/algobots/sections/add-algobot.js new file mode 100644 index 000000000..cb5ece795 --- /dev/null +++ b/packages/aateam-client/src/views/pages/algobots/sections/add-algobot.js @@ -0,0 +1,16 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { AddAlgobotForm } from '../../../../modules/algobots/views' + +export const AddAlgobotWrapper = () => (state, actions) => ( +
+
+

Fork an Algobot

+

Enter a desired algobot name

+ +
+
+) + +export default AddAlgobotWrapper diff --git a/packages/aateam-client/src/views/pages/algobots/sections/index.js b/packages/aateam-client/src/views/pages/algobots/sections/index.js new file mode 100644 index 000000000..3ac1d010d --- /dev/null +++ b/packages/aateam-client/src/views/pages/algobots/sections/index.js @@ -0,0 +1,3 @@ +import Algobots from './overview' + +export { Algobots } diff --git a/packages/aateam-client/src/views/pages/algobots/sections/overview.js b/packages/aateam-client/src/views/pages/algobots/sections/overview.js new file mode 100644 index 000000000..10311d868 --- /dev/null +++ b/packages/aateam-client/src/views/pages/algobots/sections/overview.js @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { AlgobotList } from '../../../../modules/algobots/views' + +export const Overview = () => (state, actions) => ( +
actions.algobot.getAlgobots(state.user.id)} + > +
+

+ Algobot Overview +

+
+ +
+
+) + +export default Overview diff --git a/packages/aateam-client/src/views/pages/auth/index.js b/packages/aateam-client/src/views/pages/auth/index.js new file mode 100644 index 000000000..0b4abb074 --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/index.js @@ -0,0 +1,19 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Route, Switch } from '@hyperapp/router' + +import { Callback } from './sections' + +export const Auth = ({ match }) => (state, actions) => ( +
actions.auth.clearForms()} + > + + + +
+) + +export default Auth diff --git a/packages/aateam-client/src/views/pages/auth/sections/callback.js b/packages/aateam-client/src/views/pages/auth/sections/callback.js new file mode 100644 index 000000000..8cd51e9fe --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/callback.js @@ -0,0 +1,38 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link, Redirect } from '@hyperapp/router' + +import { LoginForm } from '../../../../modules/auth/views' + +export const Callback = props => (state, actions) => { + if (state.loggedIn) { + return + } + return ( +
actions.auth.clearForms()} + > +
+
+
+
+
+
+
+

+ + Authenticating...

+
+
+
+
+
+
+
+
+ ) +} + +export default Callback diff --git a/packages/aateam-client/src/views/pages/auth/sections/finish-login-loader.js b/packages/aateam-client/src/views/pages/auth/sections/finish-login-loader.js new file mode 100644 index 000000000..b9cc5e60a --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/finish-login-loader.js @@ -0,0 +1,23 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const FinishLoginLoaderLoader = ({ token }) => (state, actions) => ( +
{ + if (token !== null && token !== '') { + actions.user.loginRegister({ + username: state.auth.createUsername.input, + password: state.auth.createPassword.input + }) + } + }} + > +
+
+

{state.auth.form.message}

+
+
+
+) diff --git a/packages/aateam-client/src/views/pages/auth/sections/finish-register.js b/packages/aateam-client/src/views/pages/auth/sections/finish-register.js new file mode 100644 index 000000000..9a0bcced9 --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/finish-register.js @@ -0,0 +1,18 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { FinishRegisterForm } from '../../../../modules/auth/views' + +export const FinishRegisterWrapper = () => ( +
+
+
+

Email address verified!

+

+ To finish creating your account, please complete the following: +

+ +
+
+
+) diff --git a/packages/aateam-client/src/views/pages/auth/sections/forgot-pass.js b/packages/aateam-client/src/views/pages/auth/sections/forgot-pass.js new file mode 100644 index 000000000..d02d5d402 --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/forgot-pass.js @@ -0,0 +1,37 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Redirect } from '@hyperapp/router' + +import { ForgotPassForm } from '../../../../modules/auth/views' + +export const ForgotPass = props => (state, actions) => { + if (state.user.auth.loggedIn) { + return + } + return ( +
actions.auth.clearForms()} + > +
+
+
+
+
+
+
+

Forgot your password?

+ +
+
+
+
+
+
+
+
+ ) +} + +export default ForgotPass diff --git a/packages/aateam-client/src/views/pages/auth/sections/index.js b/packages/aateam-client/src/views/pages/auth/sections/index.js new file mode 100644 index 000000000..6c1956f96 --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/index.js @@ -0,0 +1,7 @@ +import Callback from './callback' +import Login from './login' +import ForgotPass from './forgot-pass' +import Register from './register' +import ResetPass from './reset-pass' + +export { Callback, Login, Register, ForgotPass, ResetPass } diff --git a/packages/aateam-client/src/views/pages/auth/sections/login.js b/packages/aateam-client/src/views/pages/auth/sections/login.js new file mode 100644 index 000000000..0019e5bdc --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/login.js @@ -0,0 +1,46 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link, Redirect } from '@hyperapp/router' + +import { LoginForm } from '../../../../modules/auth/views' + +export const Login = props => (state, actions) => { + if (state.loggedIn) { + return + } + return ( +
actions.auth.clearForms()} + > +
+
+
+
+
+
+
+

Login

+ +

+ Don't have an account?{' '} + + Create one! + +

+
+
+
+
+
+
+
+
+ ) +} + +export default Login diff --git a/packages/aateam-client/src/views/pages/auth/sections/register-form.js b/packages/aateam-client/src/views/pages/auth/sections/register-form.js new file mode 100644 index 000000000..f959e1d6e --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/register-form.js @@ -0,0 +1,28 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import { RegisterForm } from '../../../../modules/auth/views' + +export const RegisterFormWrapper = () => ( +
+
+
+

Join the AlgoCommunity

+

+ Enter your email address and further instructions will be sent to you +

+ +

+ Your email will not be added to any mailing lists. +

+

+ Already have an account?{' '} + + Login. + +

+
+
+
+) diff --git a/packages/aateam-client/src/views/pages/auth/sections/register.js b/packages/aateam-client/src/views/pages/auth/sections/register.js new file mode 100644 index 000000000..a62a44957 --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/register.js @@ -0,0 +1,59 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Redirect } from '@hyperapp/router' + +import { FinishRegisterWrapper } from './finish-register' +import { RegisterFormWrapper } from './register-form' +import { VerifyLoader } from './verify-loader' +import { FinishLoginLoaderLoader } from './finish-login-loader' + +export const Register = ({ match }) => (state, actions) => { + if (state.user.auth.loggedIn) { + return + } + let token + const param = document.URL.match(/verify=([a-zA-Z0-9.\-_]+)/) + if (param !== null) { + token = + param.length > 0 && param[1] !== null && param[1] !== undefined + ? param[1] + : '' + } + + return ( +
actions.auth.clearForms()} + > +
+
+
+
+
+ {param !== null && state.auth.form.form !== 'verifySuccess' ? ( + + ) : ( + '' + )} + {param !== null && state.auth.form.form !== 'finishSuccess' ? ( + + ) : ( + '' + )} + {param !== null && state.auth.form.form === 'finishSuccess' ? ( + + ) : ( + '' + )} + {param === null ? : ''} +
+
+
+
+
+
+ ) +} + +export default Register diff --git a/packages/aateam-client/src/views/pages/auth/sections/reset-pass.js b/packages/aateam-client/src/views/pages/auth/sections/reset-pass.js new file mode 100644 index 000000000..cd96fafae --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/reset-pass.js @@ -0,0 +1,49 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Redirect } from '@hyperapp/router' + +import { ResetPassForm } from '../../../../modules/auth/views' + +export const ResetPass = ({ match }) => (state, actions) => { + if (state.user.auth.loggedIn) { + return + } + if (state.auth.form.form === 'resetPassSuccess') { + return + } + let token + const param = document.URL.match(/verify=([a-zA-Z0-9.\-_]+)/) + if (param !== null) { + token = + param.length > 0 && param[1] !== null && param[1] !== undefined + ? param[1] + : '' + } + console.log('pages.auth.reset-pass: ', token) + return ( +
actions.auth.clearForms()} + > +
+
+
+
+
+
+
+

Reset your password

+ +
+
+
+
+
+
+
+
+ ) +} + +export default ResetPass diff --git a/packages/aateam-client/src/views/pages/auth/sections/verify-loader.js b/packages/aateam-client/src/views/pages/auth/sections/verify-loader.js new file mode 100644 index 000000000..a38990ff3 --- /dev/null +++ b/packages/aateam-client/src/views/pages/auth/sections/verify-loader.js @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { RegisterForm } from '../../../../modules/auth/views' + +export const VerifyLoader = ({ token }) => (state, actions) => ( +
{ + if (token !== null && token !== '') { + actions.auth.verifyRegister(token) + } + }} + > +
+
+

{state.auth.form.message}

+
+
+
+) diff --git a/packages/aateam-client/src/views/pages/community/index.js b/packages/aateam-client/src/views/pages/community/index.js new file mode 100644 index 000000000..c413c5fcb --- /dev/null +++ b/packages/aateam-client/src/views/pages/community/index.js @@ -0,0 +1,39 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { TeamsListWrapper } from '../../../modules/community/views' + +export const CommunityWrapper = props => (state, actions) => ( +
+
+
+ +
+ +
+
+
+) + +export default CommunityWrapper diff --git a/packages/aateam-client/src/views/pages/community/sections/index.js b/packages/aateam-client/src/views/pages/community/sections/index.js new file mode 100644 index 000000000..3ac1d010d --- /dev/null +++ b/packages/aateam-client/src/views/pages/community/sections/index.js @@ -0,0 +1,3 @@ +import Algobots from './overview' + +export { Algobots } diff --git a/packages/aateam-client/src/views/pages/dashboard/index.js b/packages/aateam-client/src/views/pages/dashboard/index.js new file mode 100644 index 000000000..95d537249 --- /dev/null +++ b/packages/aateam-client/src/views/pages/dashboard/index.js @@ -0,0 +1,66 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Redirect } from '@hyperapp/router' + +import { Sidebar } from '../../nav/sidebar' +import { Dashboard } from './sections' + +import { AddTeamForm } from '../../../modules/team/views' + +export const DashboardWrapper = props => (state, actions) => { + if (state.loggedIn) { + const name = + state.user.name === (undefined || null || '') + ? 'friend' + : state.user.name + return ( +
actions.auth.clearForms()} + > +
+
+ +
+
+ +
+ +
+
+
+ ) + } else { + return + } +} + +export default DashboardWrapper diff --git a/packages/aateam-client/src/views/pages/dashboard/sections/dashboard.js b/packages/aateam-client/src/views/pages/dashboard/sections/dashboard.js new file mode 100644 index 000000000..8a49b3046 --- /dev/null +++ b/packages/aateam-client/src/views/pages/dashboard/sections/dashboard.js @@ -0,0 +1,81 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { DashboardSteps } from '../../../../modules/onboard/views/dashboard-steps' +import { TeamPanel } from '../../../../modules/team/views' +import { AlgobotPanel } from '../../../../modules/algobots/views' +import AlgonetWebPlatform from '../../../../assets/AlgonetWebPlatform.jpg' + +export const Dashboard = () => (state, actions) => ( +
+

+ Dashboard +

+
+
+
+
actions.team.getTeam(state.user.id)} + > +
+ +
+
+
actions.algobot.getAlgobots(state.user.id)} + > +
+ +
+
+
+ +
+
+
+) + +export default Dashboard diff --git a/packages/aateam-client/src/views/pages/dashboard/sections/index.js b/packages/aateam-client/src/views/pages/dashboard/sections/index.js new file mode 100644 index 000000000..9f9679515 --- /dev/null +++ b/packages/aateam-client/src/views/pages/dashboard/sections/index.js @@ -0,0 +1,3 @@ +import Dashboard from './dashboard' + +export { Dashboard } diff --git a/packages/aateam-client/src/views/pages/docs/index.js b/packages/aateam-client/src/views/pages/docs/index.js new file mode 100644 index 000000000..a86726fa0 --- /dev/null +++ b/packages/aateam-client/src/views/pages/docs/index.js @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Route, Switch } from '@hyperapp/router' + +import { DocsSidebar, Overview } from './sections' + +export const Docs = ({ match }) => (state, actions) => ( +
+
+
+ +
+
+ + + +
+
+
+) + +export default Docs diff --git a/packages/aateam-client/src/views/pages/docs/sections/docs-sidebar.js b/packages/aateam-client/src/views/pages/docs/sections/docs-sidebar.js new file mode 100644 index 000000000..0e076f9ec --- /dev/null +++ b/packages/aateam-client/src/views/pages/docs/sections/docs-sidebar.js @@ -0,0 +1,99 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +export const DocsSidebar = () => (state, actions) => ( + +) + +export default DocsSidebar diff --git a/packages/aateam-client/src/views/pages/docs/sections/index.js b/packages/aateam-client/src/views/pages/docs/sections/index.js new file mode 100644 index 000000000..2e5ed0d7b --- /dev/null +++ b/packages/aateam-client/src/views/pages/docs/sections/index.js @@ -0,0 +1,4 @@ +import { DocsSidebar } from './docs-sidebar' +import { Overview } from './overview' + +export { DocsSidebar, Overview } diff --git a/packages/aateam-client/src/views/pages/docs/sections/overview.js b/packages/aateam-client/src/views/pages/docs/sections/overview.js new file mode 100644 index 000000000..662674097 --- /dev/null +++ b/packages/aateam-client/src/views/pages/docs/sections/overview.js @@ -0,0 +1,25 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Overview = () => ( +
+

Documentation

+
+

+ Bots today tend to be developed by companies as closed-sourced + technology that slows down improvements and diversity of innovation, + confines economic and intellectual wealth, and creates inhibited + competition.{' '} +

+

+ Advanced Algos, ltd., does not subscribe to any given ideological + notions but rather projects the above logic and intention in the spirit + cultivated and enabled by technological developments in decentralization + established in the foundational cultures of blockchain and + cryptocurrency. +

+
+
+) + +export default Overview diff --git a/packages/aateam-client/src/views/pages/landing/index.js b/packages/aateam-client/src/views/pages/landing/index.js new file mode 100644 index 000000000..590696dff --- /dev/null +++ b/packages/aateam-client/src/views/pages/landing/index.js @@ -0,0 +1,29 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { Redirect } from '@hyperapp/router' + +import { Intro, Overview } from './sections' +import { auth } from '../../../index' + +export const Landing = props => (state, actions) => { + if (state.redirect === 'dashboard') return + return ( +
{ + actions.isLoggedIn(auth.isAuthenticated()) + }} + > +
+
+ + +
+
+
+ ) +} + +export default Landing diff --git a/packages/aateam-client/src/views/pages/landing/sections/index.js b/packages/aateam-client/src/views/pages/landing/sections/index.js new file mode 100644 index 000000000..3013d69f3 --- /dev/null +++ b/packages/aateam-client/src/views/pages/landing/sections/index.js @@ -0,0 +1,4 @@ +import { Intro } from './intro' +import { Overview } from './overview' + +export { Intro, Overview } diff --git a/packages/aateam-client/src/views/pages/landing/sections/intro.js b/packages/aateam-client/src/views/pages/landing/sections/intro.js new file mode 100644 index 000000000..585c9eed6 --- /dev/null +++ b/packages/aateam-client/src/views/pages/landing/sections/intro.js @@ -0,0 +1,27 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Intro = () => ( +
+
+
+
+
+
+
+

+ Welcome to the Advanced Algos Teams Community +

+

+ Collaborate. Innovate. Evolve. +

+
+
+
+
+
+
+
+) + +export default Intro diff --git a/packages/aateam-client/src/views/pages/landing/sections/overview.js b/packages/aateam-client/src/views/pages/landing/sections/overview.js new file mode 100644 index 000000000..eb94ce0de --- /dev/null +++ b/packages/aateam-client/src/views/pages/landing/sections/overview.js @@ -0,0 +1,23 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Link } from '@hyperapp/router' + +import { auth } from '../../../../index' + +export const Overview = () => ( +
+
+) + +export default Overview diff --git a/packages/aateam-client/src/views/pages/support/index.js b/packages/aateam-client/src/views/pages/support/index.js new file mode 100644 index 000000000..ba52e5d86 --- /dev/null +++ b/packages/aateam-client/src/views/pages/support/index.js @@ -0,0 +1,35 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Redirect } from '@hyperapp/router' + +import { Sidebar } from '../../nav/sidebar' +import { General } from './sections' + +export const SupportWrapper = props => (state, actions) => { + if (state.user.auth.loggedIn) { + const name = + state.user.profile.name === (undefined || null || '') + ? 'friend' + : state.user.profile.name + return ( +
actions.auth.clearForms()} + > +
+
+ +
+
+ +
+
+
+ ) + } else { + return + } +} + +export default SupportWrapper diff --git a/packages/aateam-client/src/views/pages/support/sections/general.js b/packages/aateam-client/src/views/pages/support/sections/general.js new file mode 100644 index 000000000..e5025c05f --- /dev/null +++ b/packages/aateam-client/src/views/pages/support/sections/general.js @@ -0,0 +1,19 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const General = () => ( +
+
+

+ {' '} + Support +

+
+
+
+
+
+
+) + +export default General diff --git a/packages/aateam-client/src/views/pages/support/sections/index.js b/packages/aateam-client/src/views/pages/support/sections/index.js new file mode 100644 index 000000000..80c7a8736 --- /dev/null +++ b/packages/aateam-client/src/views/pages/support/sections/index.js @@ -0,0 +1,3 @@ +import General from './general' + +export { General } diff --git a/packages/aateam-client/src/views/pages/team/index.js b/packages/aateam-client/src/views/pages/team/index.js new file mode 100644 index 000000000..884d81fb9 --- /dev/null +++ b/packages/aateam-client/src/views/pages/team/index.js @@ -0,0 +1,68 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { Switch, Route, Redirect } from '@hyperapp/router' + +import { Sidebar } from '../../nav/sidebar' +import { Overview, Members, Settings } from './sections' +import { Algobots } from '../algobots/sections' + +import { AddTeamForm } from '../../../modules/team/views' + +export const TeamWrapper = props => (state, actions) => { + if (state.loggedIn) { + const name = + state.user.name === (undefined || null || '') + ? 'friend' + : state.user.name + return ( +
+
+
+ +
+
+ + + + + + +
+ +
+
+
+ ) + } else { + return + } +} + +export default TeamWrapper diff --git a/packages/aateam-client/src/views/pages/team/sections/add-team.js b/packages/aateam-client/src/views/pages/team/sections/add-team.js new file mode 100644 index 000000000..65f84a717 --- /dev/null +++ b/packages/aateam-client/src/views/pages/team/sections/add-team.js @@ -0,0 +1,16 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { AddTeamForm } from '../../../../modules/team/views' + +export const AddTeamWrapper = () => (state, actions) => ( +
+
+

Create an Algo Team

+

Enter a desired team name

+ +
+
+) + +export default AddTeamWrapper diff --git a/packages/aateam-client/src/views/pages/team/sections/index.js b/packages/aateam-client/src/views/pages/team/sections/index.js new file mode 100644 index 000000000..03351e46f --- /dev/null +++ b/packages/aateam-client/src/views/pages/team/sections/index.js @@ -0,0 +1,5 @@ +import Overview from './overview' +import Members from './members' +import Settings from './settings' + +export { Overview, Members, Settings } diff --git a/packages/aateam-client/src/views/pages/team/sections/members.js b/packages/aateam-client/src/views/pages/team/sections/members.js new file mode 100644 index 000000000..53c959ad1 --- /dev/null +++ b/packages/aateam-client/src/views/pages/team/sections/members.js @@ -0,0 +1,19 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +export const Members = () => ( +
+
+

+ {' '} + Team Members +

+
+
+
+
+
+
+) + +export default Members diff --git a/packages/aateam-client/src/views/pages/team/sections/overview.js b/packages/aateam-client/src/views/pages/team/sections/overview.js new file mode 100644 index 000000000..a73455be1 --- /dev/null +++ b/packages/aateam-client/src/views/pages/team/sections/overview.js @@ -0,0 +1,22 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' + +import { TeamList } from '../../../../modules/team/views' + +export const Overview = () => (state, actions) => ( +
actions.team.getTeam(state.user.id)} + > +
+

+ Team Overview +

+
+ +
+
+) + +export default Overview diff --git a/packages/aateam-client/src/views/pages/team/sections/settings.js b/packages/aateam-client/src/views/pages/team/sections/settings.js new file mode 100644 index 000000000..92fd8d974 --- /dev/null +++ b/packages/aateam-client/src/views/pages/team/sections/settings.js @@ -0,0 +1,68 @@ +/* eslint-disable no-unused-vars */ +import { h } from 'hyperapp' +import { validObject } from '../../../../utils/js-helpers' + +export const Settings = () => (state, actions) => { + const team = validObject(state.team.profile, 'edges') ? state.team.profile.edges : '' + + return ( +
+

+ Team Settings +

+
+
+

Delete Team

+

+ {' '} + Warning: Deleting team removes all team information and is + irreversible +

+
+ +
+
+ ) +} + +export default Settings diff --git a/packages/aateam-client/tools/docker/Deploy.md b/packages/aateam-client/tools/docker/Deploy.md new file mode 100644 index 000000000..4d12cb315 --- /dev/null +++ b/packages/aateam-client/tools/docker/Deploy.md @@ -0,0 +1,16 @@ +# Deploying Algo Community Portal to Linux VM + +Using Docker reverse-proxied by Docker-NGINX-LetsEncrypt [base setup](https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion) + +In project root: +``` +mkdir build +cp tools/docker/deploy.yml build/deploy.yml && \ + tools/docker/Dockerfile build/Dockerfile && \ + tools/docker/nginx.conf build/nginx.conf && \ + +npm run build +cd build + +docker-compose -f deploy.yml up -d +``` \ No newline at end of file diff --git a/packages/aateam-client/tools/docker/Dockerfile b/packages/aateam-client/tools/docker/Dockerfile new file mode 100644 index 000000000..649483ec8 --- /dev/null +++ b/packages/aateam-client/tools/docker/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:1.15.0-alpine +RUN rm -rf /usr/share/nginx/html +COPY --chown=nginx:nginx . /usr/share/nginx/html +COPY nginx.conf /etc/nginx/nginx.conf +EXPOSE 80 \ No newline at end of file diff --git a/packages/aateam-client/tools/docker/deploy.yml b/packages/aateam-client/tools/docker/deploy.yml new file mode 100644 index 000000000..03d13005a --- /dev/null +++ b/packages/aateam-client/tools/docker/deploy.yml @@ -0,0 +1,15 @@ +version: '3' +services: + node: + build: + context: ./build + dockerfile: ./build/Dockerfile + environment: + - NODE_ENV=production + - VIRTUAL_HOST=algocommunity.org + - LETSENCRYPT_HOST=algocommunity.org + - LETSENCRYPT_EMAIL=barry@algocommunity.org + - VIRTUAL_PORT=80 + container_name: algocommportal + expose: + - 80 diff --git a/packages/aateam-client/tools/docker/nginx.conf b/packages/aateam-client/tools/docker/nginx.conf new file mode 100644 index 000000000..afac717f4 --- /dev/null +++ b/packages/aateam-client/tools/docker/nginx.conf @@ -0,0 +1,17 @@ +events {} + +http { + server { + listen 80; + + root /usr/share/nginx/html; + index index.html; + + location / { + include /etc/nginx/mime.types; + try_files $uri $uri/ /index.html; + } + + try_files $uri $uri/ /index.html; + } +} \ No newline at end of file diff --git a/packages/aateam-client/tools/log.js b/packages/aateam-client/tools/log.js new file mode 100644 index 000000000..978d6d4bb --- /dev/null +++ b/packages/aateam-client/tools/log.js @@ -0,0 +1,13 @@ +import minilog from 'minilog' + +minilog.enable() + +const log = minilog('frontend') + +let consoleLog = global.console.log + +global.console.log = function () { + consoleLog.apply(global.console, arguments) +} + +export default log diff --git a/packages/aateam-client/tools/webpack/helpers/webpack.common.config.js b/packages/aateam-client/tools/webpack/helpers/webpack.common.config.js new file mode 100644 index 000000000..31dabfca0 --- /dev/null +++ b/packages/aateam-client/tools/webpack/helpers/webpack.common.config.js @@ -0,0 +1,18 @@ +const pathConfig = require('./webpack.path.config') + +module.exports = { + context: pathConfig.context, + + entry: ['babel-polyfill', './src/index.js'], + + module: { + rules: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }, + { + test: /\.(png|svg|jpg|gif)$/, + use: [{loader: 'file-loader'} + ] + } + ] + } +} diff --git a/packages/aateam-client/tools/webpack/helpers/webpack.path.config.js b/packages/aateam-client/tools/webpack/helpers/webpack.path.config.js new file mode 100644 index 000000000..4971b1cdc --- /dev/null +++ b/packages/aateam-client/tools/webpack/helpers/webpack.path.config.js @@ -0,0 +1,7 @@ +const path = require('path') + +const context = path.resolve(__dirname, '../../..') + +module.exports = { + context +} diff --git a/packages/aateam-client/tools/webpack/webpack.dev.config.js b/packages/aateam-client/tools/webpack/webpack.dev.config.js new file mode 100644 index 000000000..efe61f723 --- /dev/null +++ b/packages/aateam-client/tools/webpack/webpack.dev.config.js @@ -0,0 +1,55 @@ +const webpack = require('webpack') +const Dotenv = require('dotenv-webpack') +const path = require('path') +const merge = require('webpack-merge') +const history = require('connect-history-api-fallback') +const convert = require('koa-connect') +const commonConfig = require('./helpers/webpack.common.config') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const HtmlWebpackHarddiskPlugin = require('html-webpack-harddisk-plugin') +const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin') + +module.exports = merge(commonConfig, { + mode: 'development', + devtool: 'inline-sourcemap', + + output: { + path: path.resolve(__dirname, '../../build'), + filename: 'script.js' + }, + + plugins: [ + new Dotenv({ + path: '.env' + }), + new webpack.NamedModulesPlugin(), + new webpack.HotModuleReplacementPlugin({ multiStep: false }), + new HtmlWebpackPlugin({ + template: 'html/index.html', + alwaysWriteToDisk: true + }), + new ScriptExtHtmlWebpackPlugin({ + defaultAttribute: 'async' + }), + new HtmlWebpackHarddiskPlugin() + ], + module: { + rules: [ + { + test: /\.s?[ac]ss$/, + loader: 'style-loader!css-loader!postcss-loader!sass-loader' + } + ] + } +}) + +module.exports.serve = { + hot: { + port: 4536 + }, + host: '0.0.0.0', + port: 5000, + add: (app, middleware, options) => { + app.use(convert(history())) + } +} diff --git a/packages/aateam-client/tools/webpack/webpack.prod.config.js b/packages/aateam-client/tools/webpack/webpack.prod.config.js new file mode 100644 index 000000000..1c1f1c3c9 --- /dev/null +++ b/packages/aateam-client/tools/webpack/webpack.prod.config.js @@ -0,0 +1,71 @@ +const webpack = require('webpack') +const path = require('path') +const merge = require('webpack-merge') +const commonConfig = require('./helpers/webpack.common.config') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const UglifyJsPlugin = require('uglifyjs-webpack-plugin') +const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const HtmlWebpackHarddiskPlugin = require('html-webpack-harddisk-plugin') +const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin') +const Dotenv = require('dotenv-webpack') + +module.exports = merge(commonConfig, { + mode: 'production', + output: { + path: path.resolve(__dirname, '../../build'), + filename: 'script.js' + }, + + optimization: { + minimizer: [ + new UglifyJsPlugin({ + cache: true, + parallel: true, + sourceMap: false + }), + new OptimizeCSSAssetsPlugin({}) + ], + splitChunks: { + cacheGroups: { + styles: { + name: 'styles', + test: /\.css$/, + chunks: 'all', + enforce: true + } + } + } + }, + plugins: [ + new Dotenv(), + new MiniCssExtractPlugin({ + filename: '[name].css', + chunkFilename: '[id].css' + }), + new HtmlWebpackPlugin({ + template: 'html/index.html', + alwaysWriteToDisk: true + }), + new ScriptExtHtmlWebpackPlugin({ + defaultAttribute: 'async' + }), + new HtmlWebpackHarddiskPlugin(), + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify('production') + }) + ], + module: { + rules: [ + { + test: /\.scss$/, + use: [ + MiniCssExtractPlugin.loader, + {loader: 'css-loader', options: { importLoaders: 2 }}, + 'postcss-loader', + {loader: 'sass-loader'} + ] + } + ] + } +}) diff --git a/packages/aateam-client/webpack.config.js b/packages/aateam-client/webpack.config.js new file mode 100644 index 000000000..2589e2f07 --- /dev/null +++ b/packages/aateam-client/webpack.config.js @@ -0,0 +1,9 @@ +let config = null + +if (process.env.NODE_ENV === 'production') { + config = require('./tools/webpack/webpack.prod.config.js') +} else { + config = require('./tools/webpack/webpack.dev.config.js') +} + +module.exports = config