From 2a5a5a2aca5c60faf87e4731c36c5f9325d213d8 Mon Sep 17 00:00:00 2001 From: mihanizm56 Date: Tue, 29 Oct 2019 18:40:05 +0200 Subject: [PATCH] =?UTF-8?q?build(build-project):=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit добавлен стор изменена архитектура библиотеки компонентов добавлена архитектура построения redux модулей в соответствие с redux-ducks изменены настройки линтера в соответствие с компонентами из material-ui добавлен инструмент для удобных коммитов commitizen --- .eslintrc.js | 3 + README.md | 44 - config/git/commitizen.js | 65 + config/git/commitlint.js | 47 + package-lock.json | 4652 +++++++++-------- package.json | 107 +- src/_components/atoms/index.ts | 2 + src/_components/atoms/input/index.tsx | 26 + src/_components/{ => atoms}/link/index.ts | 0 src/_components/index.js | 3 + src/_components/molecules/forms/index.ts | 1 + .../forms/test-form/index.module.css | 19 + .../molecules/forms/test-form/index.tsx | 115 + src/_components/molecules/index.ts | 1 + src/_components/organisms/index.js | 0 src/assets/fonts/OpenSans/OpenSans-Bold.ttf | Bin 0 -> 121768 bytes src/assets/fonts/index.css | 7 + src/constants/index.js | 2 + src/index.tsx | 21 +- src/layouts/main-layout/index.tsx | 2 +- src/pages/home/page/index.tsx | 10 +- src/redux/modules/test-module/actions.ts | 11 + src/redux/modules/test-module/constants.ts | 3 + src/redux/modules/test-module/index.ts | 5 + src/redux/modules/test-module/reducer.ts | 26 + src/redux/modules/test-module/sagas/index.ts | 2 + .../modules/test-module/sagas/saga-watcher.ts | 14 + .../modules/test-module/sagas/saga-worker.ts | 17 + src/redux/modules/test-module/selectors.ts | 10 + src/redux/modules/test-module/types/index.ts | 17 + src/redux/store/index.ts | 20 + src/redux/store/root-reducer.ts | 6 + src/redux/store/root-saga.ts | 6 + src/serviceWorker.ts | 143 - src/services/api/constants.ts | 5 + src/services/api/endpoints.ts | 10 + src/services/api/index.ts | 4 + src/services/api/requests.ts | 23 + src/services/api/rest.ts | 120 + src/services/api/types/index.ts | 28 + src/services/api/utils/request-racer.ts | 19 + src/services/index.ts | 3 + src/services/tokens/index.js | 12 + src/services/validations/index.ts | 36 + src/utils/index.ts | 1 + 45 files changed, 3177 insertions(+), 2491 deletions(-) create mode 100644 config/git/commitizen.js create mode 100644 config/git/commitlint.js create mode 100644 src/_components/atoms/index.ts create mode 100644 src/_components/atoms/input/index.tsx rename src/_components/{ => atoms}/link/index.ts (100%) create mode 100644 src/_components/index.js create mode 100644 src/_components/molecules/forms/index.ts create mode 100644 src/_components/molecules/forms/test-form/index.module.css create mode 100644 src/_components/molecules/forms/test-form/index.tsx create mode 100644 src/_components/molecules/index.ts create mode 100644 src/_components/organisms/index.js create mode 100644 src/assets/fonts/OpenSans/OpenSans-Bold.ttf create mode 100644 src/assets/fonts/index.css create mode 100644 src/constants/index.js create mode 100644 src/redux/modules/test-module/actions.ts create mode 100644 src/redux/modules/test-module/constants.ts create mode 100644 src/redux/modules/test-module/index.ts create mode 100644 src/redux/modules/test-module/reducer.ts create mode 100644 src/redux/modules/test-module/sagas/index.ts create mode 100644 src/redux/modules/test-module/sagas/saga-watcher.ts create mode 100644 src/redux/modules/test-module/sagas/saga-worker.ts create mode 100644 src/redux/modules/test-module/selectors.ts create mode 100644 src/redux/modules/test-module/types/index.ts create mode 100644 src/redux/store/index.ts create mode 100644 src/redux/store/root-reducer.ts create mode 100644 src/redux/store/root-saga.ts delete mode 100644 src/serviceWorker.ts create mode 100644 src/services/api/constants.ts create mode 100644 src/services/api/endpoints.ts create mode 100644 src/services/api/index.ts create mode 100644 src/services/api/requests.ts create mode 100644 src/services/api/rest.ts create mode 100644 src/services/api/types/index.ts create mode 100644 src/services/api/utils/request-racer.ts create mode 100644 src/services/index.ts create mode 100644 src/services/tokens/index.js create mode 100644 src/services/validations/index.ts create mode 100644 src/utils/index.ts diff --git a/.eslintrc.js b/.eslintrc.js index 039ab5e..768f7b6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -68,6 +68,9 @@ module.exports = { '@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/explicit-function-return-type': 0, 'no-case-declarations': 0, + 'no-underscore-dangle': 0, + 'react/jsx-props-no-spreading': 0, + 'react/prop-types': 0, }, settings: { 'import/resolver': { diff --git a/README.md b/README.md index a31481c..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,44 +0,0 @@ -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.
-See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.
-It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.
-Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** - -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. - -Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. - -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/config/git/commitizen.js b/config/git/commitizen.js new file mode 100644 index 0000000..69f9a48 --- /dev/null +++ b/config/git/commitizen.js @@ -0,0 +1,65 @@ +module.exports = { + // Добавим описание на русском языке ко всем типам + types: [ + { + value: 'build', + name: + 'build: Сборка проекта или изменения внешних зависимостей или настройка проекта', + }, + { value: 'ci', name: 'ci: Настройка CI и работа со скриптами' }, + { value: 'docs', name: 'docs: Обновление документации' }, + { value: 'feat', name: 'feat: Добавление нового функционала' }, + { value: 'fix', name: 'fix: Исправление ошибок' }, + { + value: 'perf', + name: 'perf: Изменения направленные на улучшение производительности', + }, + { + value: 'refactor', + name: + 'refactor: Правки кода без исправления ошибок или добавления новых функций', + }, + { value: 'revert', name: 'revert: Откат на предыдущие коммиты' }, + { + value: 'style', + name: + 'style: Правки по кодстайлу (табы, отступы, точки, запятые и т.д.)', + }, + { value: 'test', name: 'test: Добавление тестов' }, + ], + + // Область. Она характеризует фрагмент кода, которую затронули изменения + scopes: [ + { name: 'routes' }, + { name: 'components' }, + { name: 'modules' }, + { name: 'build-project' }, + ], + + // Поменяем дефолтные вопросы + messages: { + type: 'Какие изменения вы вносите?', + scope: '\nВыберите ОБЛАСТЬ, которую вы изменили (опционально):', + // Спросим если allowCustomScopes в true + customScope: 'Укажите свою ОБЛАСТЬ:', + subject: 'Напишите КОРОТКОЕ описание в ПОВЕЛИТЕЛЬНОМ наклонении:\n', + body: + 'Напишите ПОДРОБНОЕ описание (опционально). Используйте "|" для новой строки:\n', + breaking: 'Список BREAKING CHANGES (опционально):\n', + footer: + 'Место для мета данных (тикетов, ссылок и остального). Например: SECRETMRKT-700, SECRETMRKT-800:\n', + confirmCommit: 'Вас устраивает получившийся коммит?', + }, + + // Разрешим собственную ОБЛАСТЬ + allowCustomScopes: true, + + // Запрет на Breaking Changes + allowBreakingChanges: false, + + // Префикс для нижнего колонтитула + footerPrefix: 'МЕТА ДАННЫЕ:', + + // limit subject length + subjectLimit: 72, +}; diff --git a/config/git/commitlint.js b/config/git/commitlint.js new file mode 100644 index 0000000..5f952aa --- /dev/null +++ b/config/git/commitlint.js @@ -0,0 +1,47 @@ +// Файл создан на основе @commitlint/config-conventional + +module.exports = { + rules: { + // Тело коммита должно начинаться с пустой строки + 'body-leading-blank': [2, 'always'], + + // Нижний колонтитул коммита должен начинаться с пустой строки + 'footer-leading-blank': [2, 'always'], + + // Максимальная длина заголовка 72 символа + 'header-max-length': [2, 'always', 72], + + // Область всегда только в нижнем регистре + 'scope-case': [2, 'always', 'lower-case'], + + // Описание не может быть пустым + 'subject-empty': [2, 'never'], + + // Описание не должно заканчиваться '.' + 'subject-full-stop': [2, 'never', '.'], + + // Тип всегда только в нижнем регистре + 'type-case': [2, 'always', 'lower-case'], + + // Тип не может быть пустым + 'type-empty': [2, 'never'], + + // Перечислим все возможные варианты коммитов + 'type-enum': [ + 2, + 'always', + [ + 'build', + 'ci', + 'docs', + 'feat', + 'fix', + 'perf', + 'refactor', + 'revert', + 'style', + 'test', + ], + ], + }, +}; diff --git a/package-lock.json b/package-lock.json index 8b8cea8..2afdfce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -868,6 +868,13 @@ "integrity": "sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ==", "requires": { "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } } }, "@babel/template": { @@ -925,6 +932,11 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-9.0.1.tgz", "integrity": "sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA==" }, + "@emotion/hash": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.3.tgz", + "integrity": "sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw==" + }, "@hapi/address": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.2.tgz", @@ -1150,6 +1162,77 @@ "@types/yargs": "^13.0.0" } }, + "@material-ui/core": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.5.2.tgz", + "integrity": "sha512-yARw/hwavOXqljP+biDXHcmfbC63n8EkA8C10/tZt7KkBp7fs+7+z3BNR+ffotd8/uhirIC1jQWWKdLoUc34yA==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.5.2", + "@material-ui/system": "^4.5.2", + "@material-ui/types": "^4.1.1", + "@material-ui/utils": "^4.5.2", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.2", + "convert-css-length": "^2.0.1", + "hoist-non-react-statics": "^3.2.1", + "normalize-scroll-left": "^0.2.0", + "popper.js": "^1.14.1", + "prop-types": "^15.7.2", + "react-transition-group": "^4.3.0" + } + }, + "@material-ui/styles": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.5.2.tgz", + "integrity": "sha512-QUqPk4tdPiDLs/1flB6qdAqUrYSxHv4YLCgvFeZw9A9OK/lf8LFjciF/SsSIDOCwoV2kf3BiGTzWUGjb/TTgzA==", + "requires": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.7.1", + "@material-ui/types": "^4.1.1", + "@material-ui/utils": "^4.5.2", + "clsx": "^1.0.2", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.2.1", + "jss": "^10.0.0", + "jss-plugin-camel-case": "^10.0.0", + "jss-plugin-default-unit": "^10.0.0", + "jss-plugin-global": "^10.0.0", + "jss-plugin-nested": "^10.0.0", + "jss-plugin-props-sort": "^10.0.0", + "jss-plugin-rule-value-function": "^10.0.0", + "jss-plugin-vendor-prefixer": "^10.0.0", + "prop-types": "^15.7.2" + } + }, + "@material-ui/system": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.5.2.tgz", + "integrity": "sha512-h9RWvdM9XKlHHqwiuhyvWdobptQkHli+m2jJFs7i1AI/hmGsIc4reDmS7fInhETgt/Txx7uiAIznfRNIIVHmQw==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.5.2", + "prop-types": "^15.7.2" + } + }, + "@material-ui/types": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.1.1.tgz", + "integrity": "sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==", + "requires": { + "@types/react": "*" + } + }, + "@material-ui/utils": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.5.2.tgz", + "integrity": "sha512-zhbNfHd1gLa8At6RPDG7uMZubHxbY+LtM6IkSfeWi6Lo4Ax80l62YaN1QmUpO1IvGCkn/j62tQX3yObiQZrJsQ==", + "requires": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.6" + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -1164,6 +1247,53 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, + "@redux-saga/core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.1.1.tgz", + "integrity": "sha512-WKXfj2cYkP0eh74dE1ueMjVDoGJIkppXiMFgx0buVRkXENeZmRxIjM4lh9LEWWFqay7I/Qkw7+cMossa7xXoAQ==", + "requires": { + "@babel/runtime": "^7.6.0", + "@redux-saga/deferred": "^1.1.0", + "@redux-saga/delay-p": "^1.1.0", + "@redux-saga/is": "^1.1.0", + "@redux-saga/symbols": "^1.1.0", + "@redux-saga/types": "^1.1.0", + "redux": "^4.0.4", + "typescript-tuple": "^2.2.1" + } + }, + "@redux-saga/deferred": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.1.0.tgz", + "integrity": "sha512-wOCJCby3hx14bvrEeFLJ1JJTjJdXDJyC+B3JQ6eiqgzNghylbf969lIYmS2Arf2QuALfUtRBNPXBIMDKG9km4g==" + }, + "@redux-saga/delay-p": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.1.0.tgz", + "integrity": "sha512-BcRwXs20kKjgiYEwZARkpVoRIe/hHftW3iwPhdeW4/jPyR9gLv/vG8VsJMF5NDEch+/w/mJtdgSubq+wtOS47g==", + "requires": { + "@redux-saga/symbols": "^1.1.0" + } + }, + "@redux-saga/is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.0.tgz", + "integrity": "sha512-0uFXWGSvDCfNBdROHwEVixNhFbI3S+UGBQfcPXQiYL+CjIjyR3DTg2Z+NFH9xzP+H4Oh/yGtTHDhC0GxYp7HQQ==", + "requires": { + "@redux-saga/symbols": "^1.1.0", + "@redux-saga/types": "^1.1.0" + } + }, + "@redux-saga/symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.0.tgz", + "integrity": "sha512-Fzw1wV3j4hbac3MYmgNE18Z53URmQZeilTHZLF7Lm4SQ1jG4fcU47v2kElsEbQXUSaFqj+uJqdRzmDGNb6pRwQ==" + }, + "@redux-saga/types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.1.0.tgz", + "integrity": "sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==" + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -1431,6 +1561,14 @@ "@types/react": "*" } }, + "@types/react-transition-group": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.3.tgz", + "integrity": "sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA==", + "requires": { + "@types/react": "*" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -2212,18 +2350,6 @@ "babel-runtime": "^6.26.0", "core-js": "^2.5.0", "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - }, - "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-jest": { @@ -2352,11 +2478,6 @@ "regenerator-runtime": "^0.11.0" }, "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -2907,483 +3028,21 @@ "upath": "^1.1.1" }, "dependencies": { - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "optional": true, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": 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.3", - "bundled": 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, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": 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 - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": 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", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": 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.3", - "bundled": true, - "optional": true, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": 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, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.0" } } } @@ -3585,6 +3244,11 @@ } } }, + "clsx": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", + "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3775,12 +3439,9 @@ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, "constants-browserify": { "version": "1.0.0", @@ -3805,6 +3466,11 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-css-length": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.1.tgz", + "integrity": "sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg==" + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -3842,14 +3508,14 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" }, "core-js-compat": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.4.tgz", - "integrity": "sha512-7OK3/LPP8R3Ovasf3GilEOp+o1w0ZKJ75FMou2RDfTwIV69G5RkKCGFnqgBv/ZhR6xo9GCzlfVALyHmydbE7DA==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.5.tgz", + "integrity": "sha512-44ZORuapx0MUht0MUk0p9lcQPh7n/LDXehimTmjCs0CYblpKZcqVd5w0OQDUDq5OQjEbazWObHDQJWvvHYPNTg==", "requires": { "browserslist": "^4.7.2", "semver": "^6.3.0" @@ -4071,6 +3737,30 @@ "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" }, + "css-vendor": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.7.tgz", + "integrity": "sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg==", + "requires": { + "@babel/runtime": "^7.6.2", + "is-in-browser": "^1.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", + "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } + } + }, "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", @@ -4213,6 +3903,131 @@ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, + "cz-customizable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cz-customizable/-/cz-customizable-6.2.0.tgz", + "integrity": "sha512-6fBA8pbwApTY20Q5aDkWgJcg5wCmbwlcnccUFyBQypN8AoRJ0Vt4pLehai0/P2Xr29t2UDYoNGOUDhi4eoR0JQ==", + "dev": true, + "requires": { + "editor": "1.0.0", + "find-config": "^1.0.0", + "inquirer": "^6.3.1", + "lodash": "^4.17.11", + "temp": "^0.9.0", + "word-wrap": "^1.2.3" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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" + } + }, + "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" + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "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 + }, + "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 + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "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" + } + } + } + } + } + }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -4263,11 +4078,6 @@ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "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=" - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -4541,6 +4351,30 @@ "utila": "~0.4" } }, + "dom-helpers": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", + "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", + "requires": { + "@babel/runtime": "^7.6.3", + "csstype": "^2.6.7" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", + "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } + } + }, "dom-serializer": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", @@ -4659,6 +4493,12 @@ "safer-buffer": "^2.1.0" } }, + "editor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz", + "integrity": "sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=", + "dev": true + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4804,13 +4644,13 @@ } }, "es5-ext": { - "version": "0.10.51", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", - "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "version": "0.10.52", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", + "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.2", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -4824,12 +4664,12 @@ } }, "es6-symbol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", - "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { "d": "^1.0.1", - "es5-ext": "^0.10.51" + "ext": "^1.1.2" } }, "escape-html": { @@ -5575,6 +5415,21 @@ } } }, + "ext": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.1.2.tgz", + "integrity": "sha512-/KLjJdTNyDepCihrk4HQt57nAE1IRCEo5jUt+WgWGCr1oARhibDvmI2DMcSNWood1T9AUWwq+jaV1wvRqaXfnA==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5805,6 +5660,14 @@ } } }, + "final-form": { + "version": "4.18.5", + "resolved": "https://registry.npmjs.org/final-form/-/final-form-4.18.5.tgz", + "integrity": "sha512-DH/I2W7fWxU8J8ZsbYJ5jLvUbhbatCvLhIKlsU17MvY6W3QnetPEyuX5mcxXgIGFNFKxfvqsG3pDy/1/VwOiTw==", + "requires": { + "@babel/runtime": "^7.3.1" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -5844,6 +5707,21 @@ "pkg-dir": "^3.0.0" } }, + "find-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-config/-/find-config-1.0.0.tgz", + "integrity": "sha1-6vorm8B/qckOmgw++c7PHMgA9TA=", + "dev": true, + "requires": { + "user-home": "^2.0.0" + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -6081,374 +5959,368 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", - "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "g-status": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", - "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", - "dev": true, + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "optional": true, "requires": { - "arrify": "^1.0.1", - "matcher": "^1.0.0", - "simple-git": "^1.85.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz", - "integrity": "sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==" - }, - "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 - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", - "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-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "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=" - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globalyzer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz", - "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==", - "dev": true - }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", - "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" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - } - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true - }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, - "gonzales-pe": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", - "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", - "dev": true, - "requires": { - "minimist": "1.1.x" - }, - "dependencies": { - "minimist": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", - "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" - }, - "handlebars": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.5.tgz", - "integrity": "sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.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=", - "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=", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, "requires": { - "is-buffer": "^1.1.5" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": 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.3", + "bundled": 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, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": 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, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": 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", + "bundled": true, + "optional": true + } + } + }, "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==", + "bundled": true, + "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6459,1520 +6331,1555 @@ "util-deprecate": "~1.0.1" } }, - "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==", + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "glob": "^7.1.3" } - } - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": 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, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + "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=" }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" } }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - } - } + "get-own-enumerable-property-symbols": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz", + "integrity": "sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA==" }, - "html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "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 }, - "html-webpack-plugin": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz", - "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "html-minifier": "^3.5.20", - "loader-utils": "^1.1.0", - "lodash": "^4.17.11", - "pretty-error": "^2.1.1", - "tapable": "^1.1.0", - "util.promisify": "1.0.0" + "pump": "^3.0.0" } }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } + "assert-plus": "^1.0.0" } }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + "glob": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "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" + } }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } + "is-glob": "^4.0.1" } }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + "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=" }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "global-prefix": "^3.0.0" } }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, - "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=" + "globalyzer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz", + "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==", + "dev": true }, - "husky": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.9.tgz", - "integrity": "sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg==", - "dev": true, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", "requires": { - "chalk": "^2.4.2", - "ci-info": "^2.0.0", - "cosmiconfig": "^5.2.1", - "execa": "^1.0.0", - "get-stdin": "^7.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "read-pkg": "^5.2.0", - "run-node": "^1.0.0", - "slash": "^3.0.0" + "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" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" }, "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" } } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "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=" + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "requires": { - "postcss": "^7.0.14" - } + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "gonzales-pe": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", + "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", + "dev": true, "requires": { - "harmony-reflect": "^1.4.6" + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } } }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, - "immer": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", - "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", "requires": { - "import-from": "^2.1.0" + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } } }, - "import-fresh": { + "handle-thing": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "handlebars": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "requires": { - "resolve-from": "^3.0.0" + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "import-local": { + "har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "requires": { - "pkg-dir": "^3.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=" - }, - "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 - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "function-bind": "^1.1.1" } }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "loose-envify": "^1.0.0" + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "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=" + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, - "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=", + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "kind-of": "^3.0.2" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "is-alphabetical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", - "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", - "dev": true - }, - "is-alphanumeric": { + "has-values": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", - "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", - "dev": true, + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "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=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, - "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=", + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { - "binary-extensions": "^1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { - "ci-info": "^2.0.0" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" + "react-is": "^16.7.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=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-decimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", - "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", - "dev": true + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "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" + } + }, + "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" + } } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", "requires": { - "is-extglob": "^2.1.1" + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + } } }, - "is-hexadecimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", - "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "html-webpack-plugin": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz", + "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==", "requires": { - "kind-of": "^3.0.2" + "html-minifier": "^3.5.20", + "loader-utils": "^1.1.0", + "lodash": "^4.17.11", + "pretty-error": "^2.1.1", + "tapable": "^1.1.0", + "util.promisify": "1.0.0" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "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, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "requires": { - "symbol-observable": "^1.1.0" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + } } }, - "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=" + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" }, - "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==", + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "is-path-inside": "^1.0.0" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } } }, - "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=", + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "requires": { - "path-is-inside": "^1.0.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "requires": { - "isobject": "^3.0.1" + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "has": "^1.0.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "is-regexp": { + "https-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + "husky": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.9.tgz", + "integrity": "sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "ci-info": "^2.0.0", + "cosmiconfig": "^5.2.1", + "execa": "^1.0.0", + "get-stdin": "^7.0.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "read-pkg": "^5.2.0", + "run-node": "^1.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + "hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" }, - "is-stream": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", "requires": { - "html-comment-regex": "^1.1.0" + "postcss": "^7.0.14" } }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", "requires": { - "has-symbols": "^1.0.0" + "harmony-reflect": "^1.4.6" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-whitespace-character": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", - "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", - "dev": true + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, - "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==" + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, - "is-word-character": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", - "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", - "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==" }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "requires": { + "import-from": "^2.1.0" + } }, - "isexe": { + "import-fresh": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + } }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "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 + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } + "once": "^1.3.0", + "wrappy": "1" } }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "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==" - } + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" } }, - "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", "requires": { - "handlebars": "^4.1.2" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" } }, - "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } + "loose-envify": "^1.0.0" } }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "kind-of": "^3.0.2" } }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "is-alphabetical": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", + "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", + "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", + "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" } }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "binary-extensions": "^1.0.0" } }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "requires": { - "detect-newline": "^2.1.0" + "ci-info": "^2.0.0" } }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", - "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" } }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" + "kind-of": "^3.0.2" } }, - "jest-environment-jsdom-fourteen": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz", - "integrity": "sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA==", + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-decimal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", + "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", + "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==", "requires": { - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0", - "jsdom": "^14.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { + "kind-of": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "is-extglob": "^2.1.1" } }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + "is-hexadecimal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", + "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", + "dev": true }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": 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.3", - "bundled": 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, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": 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 - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": 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", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": 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.3", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": 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, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true - } + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "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" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "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=", + "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=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-whitespace-character": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz", + "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==", + "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==" + }, + "is-word-character": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz", + "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "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==" + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "requires": { + "handlebars": "^4.1.2" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-fourteen": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz", + "integrity": "sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA==", + "requires": { + "jest-mock": "^24.5.0", + "jest-util": "^24.5.0", + "jsdom": "^14.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" } } } }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, "jest-jasmine2": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", @@ -8404,6 +8311,83 @@ "verror": "1.10.0" } }, + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-camel-case": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0.tgz", + "integrity": "sha512-yALDL00+pPR4FJh+k07A8FeDvfoPPuXU48HLy63enAubcVd3DnS+2rgqPXglHDGixIDVkCSXecl/l5GAMjzIbA==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.0.0" + } + }, + "jss-plugin-default-unit": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0.tgz", + "integrity": "sha512-sURozIOdCtGg9ap18erQ+ijndAfEGtTaetxfU3H4qwC18Bi+fdvjlY/ahKbuu0ASs7R/+WKCP7UaRZOjUDMcdQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + } + }, + "jss-plugin-global": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0.tgz", + "integrity": "sha512-80ofWKSQUo62bxLtRoTNe0kFPtHgUbAJeOeR36WEGgWIBEsXLyXOnD5KNnjPqG4heuEkz9eSLccjYST50JnI7Q==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + } + }, + "jss-plugin-nested": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0.tgz", + "integrity": "sha512-waxxwl/po1hN3azTyixKnr8ReEqUv5WK7WsO+5AWB0bFndML5Yqnt8ARZ90HEg8/P6WlqE/AB2413TkCRZE8bA==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.0", + "tiny-warning": "^1.0.2" + } + }, + "jss-plugin-props-sort": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0.tgz", + "integrity": "sha512-41mf22CImjwNdtOG3r+cdC8+RhwNm616sjHx5YlqTwtSJLyLFinbQC/a4PIFk8xqf1qpFH1kEAIw+yx9HaqZ3g==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + } + }, + "jss-plugin-rule-value-function": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0.tgz", + "integrity": "sha512-Jw+BZ8JIw1f12V0SERqGlBT1JEPWax3vuZpMym54NAXpPb7R1LYHiCTIlaJUyqvIfEy3kiHMtgI+r2whGgRIxQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + } + }, + "jss-plugin-vendor-prefixer": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0.tgz", + "integrity": "sha512-qslqvL0MUbWuzXJWdUxpj6mdNUX8jr4FFTo3aZnAT65nmzWL7g8oTr9ZxmTXXgdp7ANhS1QWE7036/Q2isFBpw==", + "requires": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.6", + "jss": "10.0.0" + } + }, "jsx-ast-utils": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", @@ -8413,6 +8397,11 @@ "object.assign": "^4.1.0" } }, + "just-curry-it": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-3.1.0.tgz", + "integrity": "sha512-mjzgSOFzlrurlURaHVjnQodyPNvrHrf1TbQP2XU9NSqBtHQPuHZ+Eb6TAJP7ASeJN9h9K0KXoRTs8u6ouHBKvg==" + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -8485,18 +8474,19 @@ "dev": true }, "lint-staged": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.2.1.tgz", - "integrity": "sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.5.tgz", + "integrity": "sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA==", "dev": true, "requires": { "chalk": "^2.3.1", "commander": "^2.14.1", - "cosmiconfig": "^5.2.0", + "cosmiconfig": "^5.0.2", "debug": "^3.1.0", "dedent": "^0.7.0", "del": "^3.0.0", "execa": "^1.0.0", + "find-parent-dir": "^0.3.0", "g-status": "^2.0.2", "is-glob": "^4.0.0", "is-windows": "^1.0.2", @@ -8513,7 +8503,7 @@ "staged-git-files": "1.1.2", "string-argv": "^0.0.2", "stringify-object": "^3.2.2", - "yup": "^0.27.0" + "yup": "^0.26.10" }, "dependencies": { "debug": { @@ -8524,15 +8514,6 @@ "requires": { "ms": "^2.1.1" } - }, - "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" - } } } }, @@ -8840,12 +8821,12 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "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.4.2" + "chalk": "^2.0.1" } }, "log-update": { @@ -9686,6 +9667,11 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, + "normalize-scroll-left": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz", + "integrity": "sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA==" + }, "normalize-selector": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", @@ -9990,6 +9976,12 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -10355,6 +10347,11 @@ "ts-pnp": "^1.1.2" } }, + "popper.js": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", + "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" + }, "portfinder": { "version": "1.0.25", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", @@ -11190,17 +11187,6 @@ "lodash": "^4.17.11", "log-symbols": "^2.2.0", "postcss": "^7.0.7" - }, - "dependencies": { - "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" - } - } } }, "postcss-resolve-nested-selector": { @@ -11605,6 +11591,18 @@ "raf": "3.4.1", "regenerator-runtime": "0.13.3", "whatwg-fetch": "3.0.0" + }, + "dependencies": { + "core-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==" + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } } }, "react-app-rewired": { @@ -11781,11 +11779,33 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.3.tgz", "integrity": "sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==" }, + "react-final-form": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/react-final-form/-/react-final-form-6.3.0.tgz", + "integrity": "sha512-jijhXR1fFGUBQwNOSqF4MK8XJO7Ynl1p8vcFsnQS0INSkGI52+4IagjUgtHj3w8EviIHPFK/Eflji6FELUl07w==", + "requires": { + "@babel/runtime": "^7.4.5", + "ts-essentials": "^2.0.8" + } + }, "react-is": { "version": "16.11.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" }, + "react-redux": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.1.1.tgz", + "integrity": "sha512-QsW0vcmVVdNQzEkrgzh2W3Ksvr8cqpAv5FhEk7tNEft+5pp7rXxAudTz3VOPawRkLIepItpkEIyLcN/VVXzjTg==", + "requires": { + "@babel/runtime": "^7.5.5", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + } + }, "react-router5": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/react-router5/-/react-router5-7.1.0.tgz", @@ -11895,9 +11915,26 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" + }, + "fsevents": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz", + "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==", + "optional": true } } }, + "react-transition-group": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.3.0.tgz", + "integrity": "sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -11987,6 +12024,40 @@ "strip-indent": "^2.0.0" } }, + "reduce-reducers": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/reduce-reducers/-/reduce-reducers-0.4.3.tgz", + "integrity": "sha512-+CNMnI8QhgVMtAt54uQs3kUxC3Sybpa7Y63HR14uGLgI9/QR5ggHvpxwhGGe3wmx5V91YwqQIblN9k5lspAmGw==" + }, + "redux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz", + "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==", + "requires": { + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" + } + }, + "redux-actions": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/redux-actions/-/redux-actions-2.6.5.tgz", + "integrity": "sha512-pFhEcWFTYNk7DhQgxMGnbsB1H2glqhQJRQrtPb96kD3hWiZRzXHwwmFPswg6V2MjraXRXWNmuP9P84tvdLAJmw==", + "requires": { + "invariant": "^2.2.4", + "just-curry-it": "^3.1.0", + "loose-envify": "^1.4.0", + "reduce-reducers": "^0.4.3", + "to-camel-case": "^1.0.0" + } + }, + "redux-saga": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.1.1.tgz", + "integrity": "sha512-guSnGJ/uEF8yL8Mn4aNa7HxRGCpVUALCkec9iTTD0fOhQqkF6bRQkBLeS+7/cAH3nFnr299bi/DOurTi1apcCA==", + "requires": { + "@redux-saga/core": "^1.1.1" + } + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -12001,9 +12072,9 @@ } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" }, "regenerator-transform": { "version": "0.14.1", @@ -12278,6 +12349,11 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "reselect": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", + "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" + }, "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", @@ -13070,9 +13146,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.15.tgz", + "integrity": "sha512-wYF5aX1J0+V51BDT3Om7uXNn0ct2FWiV4bvwiGVefxkm+1S1o5jsecE5lb2U28DDblzxzxeIDbTVpXHI9D/9hA==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -13637,6 +13713,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, "micromatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", @@ -13851,6 +13936,15 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, + "temp": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.0.tgz", + "integrity": "sha512-YfUhPQCJoNQE5N+FJQcdPz63O3x3sdT4Xju69Gj4iZe0lBKOtnAMi0SLj9xKhGkcGhsxThvTJ/usxtFPo438zQ==", + "dev": true, + "requires": { + "rimraf": "~2.6.2" + } + }, "terser": { "version": "4.3.9", "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", @@ -13978,6 +14072,11 @@ "globrex": "^0.1.1" } }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -13996,11 +14095,24 @@ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, + "to-camel-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz", + "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=", + "requires": { + "to-space-case": "^1.0.0" + } + }, "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=" }, + "to-no-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", + "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -14029,6 +14141,14 @@ "repeat-string": "^1.6.1" } }, + "to-space-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", + "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=", + "requires": { + "to-no-case": "^1.0.0" + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -14081,6 +14201,11 @@ "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", "dev": true }, + "ts-essentials": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-2.0.12.tgz", + "integrity": "sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w==" + }, "ts-pnp": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.4.tgz", @@ -14177,6 +14302,27 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==" }, + "typescript-compare": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", + "integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==", + "requires": { + "typescript-logic": "^0.0.0" + } + }, + "typescript-logic": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz", + "integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==" + }, + "typescript-tuple": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz", + "integrity": "sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==", + "requires": { + "typescript-compare": "^0.0.2" + } + }, "uglify-js": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", @@ -14458,6 +14604,15 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -14996,6 +15151,12 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -15326,17 +15487,34 @@ } }, "yup": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.27.0.tgz", - "integrity": "sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==", + "version": "0.26.10", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.26.10.tgz", + "integrity": "sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "7.0.0", "fn-name": "~2.0.1", - "lodash": "^4.17.11", + "lodash": "^4.17.10", "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.6", + "synchronous-promise": "^2.0.5", "toposort": "^2.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", + "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + } } } } diff --git a/package.json b/package.json index 750f84f..13a351b 100644 --- a/package.json +++ b/package.json @@ -3,34 +3,45 @@ "version": "0.1.0", "private": true, "dependencies": { + "@material-ui/core": "^4.5.2", "@types/jest": "24.0.20", "@types/node": "12.11.7", "@types/react": "16.9.11", "@types/react-dom": "16.9.3", - "babel-polyfill": "^6.26.0", - "promise-sequential": "^1.1.1", - "react": "^16.11.0", - "react-dom": "^16.11.0", - "react-router5": "^7.1.0", + "babel-polyfill": "6.26.0", + "final-form": "^4.18.5", + "promise-sequential": "1.1.1", + "react": "16.11.0", + "react-dom": "16.11.0", + "react-final-form": "^6.3.0", + "react-redux": "^7.1.1", + "react-router5": "7.1.0", "react-scripts": "3.2.0", - "router5": "^7.0.2", - "router5-helpers": "^7.0.1", - "router5-plugin-browser": "^7.0.2", - "router5-plugin-logger": "^7.0.2", + "redux": "^4.0.4", + "redux-actions": "^2.6.5", + "redux-saga": "^1.1.1", + "reselect": "^4.0.0", + "router5": "7.0.2", + "router5-helpers": "7.0.1", + "router5-plugin-browser": "7.0.2", + "router5-plugin-logger": "7.0.2", "typescript": "3.6.4" }, "scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test", - "eject": "react-app-rewired eject", "lint-scripts": "eslint . --ext .ts,.js,.tsx", "lint-scripts-fix": "eslint . --ext .ts,.js,.tsx --fix", "lint-styles": "stylelint \"src/**/*.{css,less,styl,scss,sass,sss}\"", "lint-styles-fix": "stylelint \"src/**/*.{css,less,styl,scss,sass,sss}\" --fix", "lint": "npm run lint-scripts && npm run lint-styles", "lint-fix": "npm run lint-scripts-fix && npm run lint-styles-fix", - "update": "npx npm-check -u" + "update": "npx npm-check -u", + "commit": "git add . && npm run lint && git cz && git push", + "stop:win": "taskkill /F /IM node.exe", + "stop:lin": "killall node", + "test:ci": "set CI=true && jest" }, "eslintConfig": { "extends": "react-app" @@ -48,51 +59,37 @@ ] }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^2.5.0", - "@typescript-eslint/parser": "^2.5.0", - "eslint": "^6.6.0", - "eslint-config-airbnb": "^18.0.1", - "eslint-config-prettier": "^6.5.0", - "eslint-import-resolver-alias": "^1.1.2", - "eslint-import-resolver-typescript": "^2.0.0", - "eslint-loader": "^3.0.2", - "eslint-plugin-css-modules": "^2.11.0", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-prettier": "^3.1.1", - "eslint-plugin-react": "^7.16.0", - "eslint-plugin-react-hooks": "^2.2.0", - "husky": "^3.0.9", - "lint-staged": "^8.1.5", - "prettier": "^1.18.2", - "react-app-rewired": "^2.1.4", - "stylelint": "^11.1.1", - "stylelint-config-recommended-scss": "^4.0.0", - "stylelint-config-standard": "^19.0.0", - "stylelint-order": "^3.1.1", - "stylelint-scss": "^3.12.0" + "@typescript-eslint/eslint-plugin": "2.5.0", + "@typescript-eslint/parser": "2.5.0", + "cz-customizable": "6.2.0", + "eslint": "6.6.0", + "eslint-config-airbnb": "18.0.1", + "eslint-config-prettier": "6.5.0", + "eslint-import-resolver-alias": "1.1.2", + "eslint-import-resolver-typescript": "2.0.0", + "eslint-loader": "3.0.2", + "eslint-plugin-css-modules": "2.11.0", + "eslint-plugin-import": "2.18.2", + "eslint-plugin-jsx-a11y": "6.2.3", + "eslint-plugin-prettier": "3.1.1", + "eslint-plugin-react": "7.16.0", + "eslint-plugin-react-hooks": "2.2.0", + "husky": "3.0.9", + "lint-staged": "8.1.5", + "prettier": "1.18.2", + "react-app-rewired": "2.1.4", + "stylelint": "11.1.1", + "stylelint-config-recommended-scss": "4.0.0", + "stylelint-config-standard": "19.0.0", + "stylelint-order": "3.1.1", + "stylelint-scss": "3.12.0" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "linters": { - "*.{ts,tsx,js}": [ - "node_modules/.bin/eslint --ext .ts,.js,.tsx --fix", - "node_modules/.bin/eslint --ext .ts,.js,.tsx --max-warnings=0", - "git add" - ], - "*.scss": [ - "node_modules/.bin/stylelint --fix", - "git add" - ] + "config": { + "commitizen": { + "path": "node_modules/cz-customizable" }, - "ignore": [ - ".eslintrc.js", - ".stylelintrc.js", - "config-overrides.js" - ] + "cz-customizable": { + "config": "config/git/commitizen.js" + } } } diff --git a/src/_components/atoms/index.ts b/src/_components/atoms/index.ts new file mode 100644 index 0000000..b4a8503 --- /dev/null +++ b/src/_components/atoms/index.ts @@ -0,0 +1,2 @@ +export * from './link'; +export * from './input'; diff --git a/src/_components/atoms/input/index.tsx b/src/_components/atoms/input/index.tsx new file mode 100644 index 0000000..b076b25 --- /dev/null +++ b/src/_components/atoms/input/index.tsx @@ -0,0 +1,26 @@ +import * as React from 'react'; +import TextFieldMaterial from '@material-ui/core/TextField'; +import { FieldRenderProps } from 'react-final-form'; + +type TextFieldProps = { + value?: string; + placeholder?: string; + formError?: string; +}; + +type Props = FieldRenderProps; + +export const TextField: React.FC = ({ + input, + placeholder, + meta: { touched, invalid, error, submitError }, + formError, +}) => ( + +); diff --git a/src/_components/link/index.ts b/src/_components/atoms/link/index.ts similarity index 100% rename from src/_components/link/index.ts rename to src/_components/atoms/link/index.ts diff --git a/src/_components/index.js b/src/_components/index.js new file mode 100644 index 0000000..ea59551 --- /dev/null +++ b/src/_components/index.js @@ -0,0 +1,3 @@ +export * from './atoms'; +export * from './molecules'; +export * from './organisms'; diff --git a/src/_components/molecules/forms/index.ts b/src/_components/molecules/forms/index.ts new file mode 100644 index 0000000..39e2f4e --- /dev/null +++ b/src/_components/molecules/forms/index.ts @@ -0,0 +1 @@ +export * from './test-form'; diff --git a/src/_components/molecules/forms/test-form/index.module.css b/src/_components/molecules/forms/test-form/index.module.css new file mode 100644 index 0000000..2444029 --- /dev/null +++ b/src/_components/molecules/forms/test-form/index.module.css @@ -0,0 +1,19 @@ +.testFormWrapper { + width: 300px; + border: 1px solid #000; + border-radius: 15px; +} + +.testFormField { + padding: 20px 10px; +} + +.testFormButton { + display: flex; + justify-content: center; + padding: 20px 10px; +} + +.testFormTitleBlock { + text-align: center; +} diff --git a/src/_components/molecules/forms/test-form/index.tsx b/src/_components/molecules/forms/test-form/index.tsx new file mode 100644 index 0000000..1a86d97 --- /dev/null +++ b/src/_components/molecules/forms/test-form/index.tsx @@ -0,0 +1,115 @@ +import * as React from 'react'; +import { connect } from 'react-redux'; +import { BaseAction } from 'redux-actions'; +import Button from '@material-ui/core/Button'; +import { Form, Field } from 'react-final-form'; +import { TextField } from '@/_components/atoms'; +import { + getTestFormError, + submitFormAction as submitForm, + resetErrorAction as resetError, + REMOVE_ERROR, + SET_ERROR, +} from '@/redux/modules/test-module'; +import { validateFormValues } from '@/services/validations'; +import styles from './index.module.css'; + +type TestFormValues = { + firstName?: string; + lastName?: string; +}; + +type SubmitValues = { + submitFormAction: any; + resetErrorAction: () => BaseAction; + formError?: string; +}; + +const onSubmit = ({ + formError, + submitFormAction, + resetErrorAction, +}: SubmitValues) => (values: TestFormValues) => { + // reset the form error + resetErrorAction(); + + const { isValidFormValues, errors } = validateFormValues(values); + + // check the validation error + if (!isValidFormValues) { + return errors; + } + + // if the validation is ok - check the error from the server + if (formError) { + return { + firstName: formError, + lastName: formError, + }; + } + + // saga to submit goes + submitFormAction({ + failedActionType: SET_ERROR, + resetError: REMOVE_ERROR, + // you can add some flags like the loading type or the success type of an action + formValues: values, + url: '/test', + method: 'POST', + }); +}; + +export const TestWrappedForm = ({ + formError, + submitFormAction, + resetErrorAction, +}: SubmitValues) => { + return ( +
+

+ React Final Form Simple Example +

+
( + +
+ } + /> +
+
+ } + /> +
+
+ +
+
+ )} + /> +
+ ); +}; + +const mapStateToProps = (store: any): { formError?: string } => ({ + formError: getTestFormError(store), +}); + +export const TestForm = connect( + mapStateToProps, + { submitFormAction: submitForm, resetErrorAction: resetError }, +)(TestWrappedForm); diff --git a/src/_components/molecules/index.ts b/src/_components/molecules/index.ts new file mode 100644 index 0000000..4de42d8 --- /dev/null +++ b/src/_components/molecules/index.ts @@ -0,0 +1 @@ +export * from './forms'; diff --git a/src/_components/organisms/index.js b/src/_components/organisms/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/fonts/OpenSans/OpenSans-Bold.ttf b/src/assets/fonts/OpenSans/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9a282b6ffbc7869f576abc9a761c28ea5ada57ed GIT binary patch literal 121768 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

@Ck>@qwAm5EaR(& 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 Ri1R}IL3ap!ef+l9{|`LGp{W1> literal 0 HcmV?d00001 diff --git a/src/assets/fonts/index.css b/src/assets/fonts/index.css new file mode 100644 index 0000000..c8490f3 --- /dev/null +++ b/src/assets/fonts/index.css @@ -0,0 +1,7 @@ +/* @font-face { + font-family: "OpenSans-Bold"; + font-style: normal; + font-weight: 500; + src: url("./OpenSans/OpenSans-Bold.ttf"); + font-display: auto; +} */ diff --git a/src/constants/index.js b/src/constants/index.js new file mode 100644 index 0000000..f0c08c6 --- /dev/null +++ b/src/constants/index.js @@ -0,0 +1,2 @@ +// timeout value to cancel the request +export const TIMEOUT_VALUE = 60000; diff --git a/src/index.tsx b/src/index.tsx index a00b694..b42de02 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,23 +1,24 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { Provider } from 'react-redux'; import { RouterProvider } from 'react-router5'; import { configureRouter } from './modules/router'; +import { createAppStore } from '@/redux/store'; import { RouteNode } from './modules/router/components'; -import * as serviceWorker from './serviceWorker'; import './index.css'; +const ROOT_ELEMENT = document.getElementById('root'); + +const store = createAppStore(); const router = configureRouter(); router.start(() => { ReactDOM.render( - - {({ content }) => content} - , - document.getElementById('root'), + + + {({ content }) => content} + + , + ROOT_ELEMENT, ); }); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/src/layouts/main-layout/index.tsx b/src/layouts/main-layout/index.tsx index 0d31381..e44b341 100644 --- a/src/layouts/main-layout/index.tsx +++ b/src/layouts/main-layout/index.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link } from '@/_components/link'; +import { Link } from '@/_components/atoms/link'; interface IProps extends React.Props { className?: string; diff --git a/src/pages/home/page/index.tsx b/src/pages/home/page/index.tsx index 0c4fc02..9545a3d 100644 --- a/src/pages/home/page/index.tsx +++ b/src/pages/home/page/index.tsx @@ -1,8 +1,16 @@ import * as React from 'react'; import { Route } from 'router5'; +import { TestForm } from '@/_components'; interface IPageProps { route: Route; } -export const Page = ({ route }: IPageProps) =>

Home – {route.name}
; +export const Page = ({ route }: IPageProps) => ( + <> +
Home – {route.name}
+
+ +
+ +); diff --git a/src/redux/modules/test-module/actions.ts b/src/redux/modules/test-module/actions.ts new file mode 100644 index 0000000..7ce2776 --- /dev/null +++ b/src/redux/modules/test-module/actions.ts @@ -0,0 +1,11 @@ +import { createAction, Action, BaseAction } from 'redux-actions'; +import { SET_ERROR, REMOVE_ERROR, SUBMIT_FORM } from './constants'; + +// mutate state +export const setErrorAction: (error?: string) => Action = createAction( + SET_ERROR, +); +export const resetErrorAction: () => BaseAction = createAction(REMOVE_ERROR); + +// subscribe form submit action +export const submitFormAction: () => BaseAction = createAction(SUBMIT_FORM); diff --git a/src/redux/modules/test-module/constants.ts b/src/redux/modules/test-module/constants.ts new file mode 100644 index 0000000..28b2d6f --- /dev/null +++ b/src/redux/modules/test-module/constants.ts @@ -0,0 +1,3 @@ +export const SET_ERROR = 'SET_ERROR'; +export const REMOVE_ERROR = 'REMOVE_ERROR'; +export const SUBMIT_FORM = 'SUBMIT_FORM'; diff --git a/src/redux/modules/test-module/index.ts b/src/redux/modules/test-module/index.ts new file mode 100644 index 0000000..a8e0e3f --- /dev/null +++ b/src/redux/modules/test-module/index.ts @@ -0,0 +1,5 @@ +export * from './actions'; +export * from './constants'; +export * from './selectors'; +export * from './sagas'; +export { default } from './reducer'; diff --git a/src/redux/modules/test-module/reducer.ts b/src/redux/modules/test-module/reducer.ts new file mode 100644 index 0000000..dc874d5 --- /dev/null +++ b/src/redux/modules/test-module/reducer.ts @@ -0,0 +1,26 @@ +import { handleActions } from 'redux-actions'; +import { SET_ERROR, REMOVE_ERROR } from './constants'; +import { TestFormStateType } from './types'; + +const initialState = { + errorTextValue: '', +}; + +const reducer = handleActions( + { + [SET_ERROR]: ( + state: TestFormStateType, + { payload }: { payload: string }, + ) => ({ + ...state, + errorTextValue: payload, + }), + [REMOVE_ERROR]: (state: TestFormStateType) => ({ + ...state, + errorTextValue: '', + }), + }, + initialState, +); + +export default reducer; diff --git a/src/redux/modules/test-module/sagas/index.ts b/src/redux/modules/test-module/sagas/index.ts new file mode 100644 index 0000000..e297712 --- /dev/null +++ b/src/redux/modules/test-module/sagas/index.ts @@ -0,0 +1,2 @@ +export * from './saga-worker'; +export * from './saga-watcher'; diff --git a/src/redux/modules/test-module/sagas/saga-watcher.ts b/src/redux/modules/test-module/sagas/saga-watcher.ts new file mode 100644 index 0000000..1ff5b58 --- /dev/null +++ b/src/redux/modules/test-module/sagas/saga-watcher.ts @@ -0,0 +1,14 @@ +import { take, fork } from 'redux-saga/effects'; +import { submitFormAction } from '../actions'; +import { formWorkerSaga } from './saga-worker'; +import { SubmitFormActionParams } from '../types'; + +export function* formWatcherSaga() { + while (true) { + const { payload }: { payload: SubmitFormActionParams } = yield take( + submitFormAction.toString(), + ); + + yield fork(formWorkerSaga, payload); + } +} diff --git a/src/redux/modules/test-module/sagas/saga-worker.ts b/src/redux/modules/test-module/sagas/saga-worker.ts new file mode 100644 index 0000000..68be856 --- /dev/null +++ b/src/redux/modules/test-module/sagas/saga-worker.ts @@ -0,0 +1,17 @@ +import { call, put } from 'redux-saga/effects'; +import { mockRequest } from '@/services/api/requests'; +import { SubmitFormActionParams } from '../types'; + +export function* formWorkerSaga(payload: SubmitFormActionParams) { + const { failedActionType, formValues, url, method } = payload; + + console.info('Submit was done with formValues', formValues); + const { error } = yield call(mockRequest, { url, method, data: formValues }); + + if (error) { + yield put({ type: failedActionType, payload: error }); + console.info('put an error', error); + } else { + // make some success action + } +} diff --git a/src/redux/modules/test-module/selectors.ts b/src/redux/modules/test-module/selectors.ts new file mode 100644 index 0000000..70b0f35 --- /dev/null +++ b/src/redux/modules/test-module/selectors.ts @@ -0,0 +1,10 @@ +import { createSelector } from 'reselect'; +import { FullStoreType } from './types'; + +const errorTextSelector = (store: FullStoreType) => + store.testFormStorage.errorTextValue; + +export const getTestFormError = createSelector( + [errorTextSelector], + error => error, +); diff --git a/src/redux/modules/test-module/types/index.ts b/src/redux/modules/test-module/types/index.ts new file mode 100644 index 0000000..f8c6974 --- /dev/null +++ b/src/redux/modules/test-module/types/index.ts @@ -0,0 +1,17 @@ +export type TestFormStateType = { + errorTextValue?: string; +}; + +export type FullStoreType = { + testFormStorage: TestFormStateType; +}; + +export type SubmitFormActionParams = { + failedActionType?: string; + resetError?: string; + success?: string; + loading?: string; + formValues: any; + url: string; + method: string; +}; diff --git a/src/redux/store/index.ts b/src/redux/store/index.ts new file mode 100644 index 0000000..dda9229 --- /dev/null +++ b/src/redux/store/index.ts @@ -0,0 +1,20 @@ +import { applyMiddleware, compose, createStore } from 'redux'; +import createSagaMiddleware from 'redux-saga'; +import rootSaga from './root-saga'; +import { rootReducer } from './root-reducer'; + +export const createAppStore = () => { + const sagaMiddleware = createSagaMiddleware(); + + const store = createStore( + rootReducer, + compose( + applyMiddleware(sagaMiddleware), + (window as any).__REDUX_DEVTOOLS_EXTENSION__ && + (window as any).__REDUX_DEVTOOLS_EXTENSION__(), + ), + ); + + sagaMiddleware.run(rootSaga); + return store; +}; diff --git a/src/redux/store/root-reducer.ts b/src/redux/store/root-reducer.ts new file mode 100644 index 0000000..ce57204 --- /dev/null +++ b/src/redux/store/root-reducer.ts @@ -0,0 +1,6 @@ +import { combineReducers } from 'redux'; +import testFormReducer from '../modules/test-module'; + +export const rootReducer = combineReducers({ + testFormStorage: testFormReducer, +}); diff --git a/src/redux/store/root-saga.ts b/src/redux/store/root-saga.ts new file mode 100644 index 0000000..b85b325 --- /dev/null +++ b/src/redux/store/root-saga.ts @@ -0,0 +1,6 @@ +import { all, fork } from 'redux-saga/effects'; +import { formWatcherSaga } from '../modules/test-module'; + +export default function* rootSaga() { + yield all([fork(formWatcherSaga)]); +} diff --git a/src/serviceWorker.ts b/src/serviceWorker.ts deleted file mode 100644 index 15d90cb..0000000 --- a/src/serviceWorker.ts +++ /dev/null @@ -1,143 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -type Config = { - onSuccess?: (registration: ServiceWorkerRegistration) => void; - onUpdate?: (registration: ServiceWorkerRegistration) => void; -}; - -export function register(config?: Config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL( - (process as { env: { [key: string]: string } }).env.PUBLIC_URL, - window.location.href - ); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl: string, config?: Config) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl: string, config?: Config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then(registration => { - registration.unregister(); - }); - } -} diff --git a/src/services/api/constants.ts b/src/services/api/constants.ts new file mode 100644 index 0000000..e790e13 --- /dev/null +++ b/src/services/api/constants.ts @@ -0,0 +1,5 @@ +// places to define urls +// change urls between dev mode and prod mode in ./endpoints + +export const ENDPOINT_AUTH_DEV = 'http://localhost:3000'; +export const ENDPOINT_AUTH_PROD = 'https://www.test.com'; diff --git a/src/services/api/endpoints.ts b/src/services/api/endpoints.ts new file mode 100644 index 0000000..0ab7d8f --- /dev/null +++ b/src/services/api/endpoints.ts @@ -0,0 +1,10 @@ +// place to define dev and prod request urls + +// EXAMPLE!!!! +import { ENDPOINT_AUTH_DEV, ENDPOINT_AUTH_PROD } from './constants'; + +// EXAMPLE!!!! +export const getAuthEndpoint = (): string => + process.env.NODE_ENV !== 'production' + ? ENDPOINT_AUTH_DEV + : ENDPOINT_AUTH_PROD; diff --git a/src/services/api/index.ts b/src/services/api/index.ts new file mode 100644 index 0000000..4c06484 --- /dev/null +++ b/src/services/api/index.ts @@ -0,0 +1,4 @@ +export * from './rest'; +export * from './requests'; +export * from './endpoints'; +export * from './constants'; diff --git a/src/services/api/requests.ts b/src/services/api/requests.ts new file mode 100644 index 0000000..cfc646f --- /dev/null +++ b/src/services/api/requests.ts @@ -0,0 +1,23 @@ +// place to define requests + +// EXAMPLES !!!! +import { postRequest, putRequest, patchRequest, getRequest } from './rest'; +import { getAuthEndpoint } from './endpoints'; + +// EXAMPLES !!!! +export const fetchLoginRequest = ({ username, password }) => + postRequest({ + endpoint: getAuthEndpoint(), + data: { username, password }, + }); + +export const mockRequest = (values: { + url: string; + method: string; + data: any; +}): Promise => + new Promise(resolve => { + setTimeout(() => { + resolve({ error: 'test error' }); + }, 2000); + }); diff --git a/src/services/api/rest.ts b/src/services/api/rest.ts new file mode 100644 index 0000000..41b759e --- /dev/null +++ b/src/services/api/rest.ts @@ -0,0 +1,120 @@ +import { requestRacer } from './utils/request-racer'; +import { + getRequestParams, + putRequestParams, + patchRequestParams, + postRequestParams, +} from './types'; + +export const getRequest = ({ + endpoint, + authorize, +}: getRequestParams): Promise => { + const paramsObject = { + method: 'GET', + headers: { + Accept: 'application/json', // you can set whatever header do you want + 'Content-Type': 'application/json', // you can set whatever header do you want + 'Cache-Control': 'no-cache', // you can set whatever header do you want + Authorization: authorize && `Bearer ${authorize.token}`, // if there is the Bearer strategy + }, + }; + + const request = fetch(endpoint, paramsObject).then(requestData => + requestData.json(), + ); + + return requestRacer({ request }); +}; + +export const putRequest = ({ + endpoint, + data, + authorize, +}: putRequestParams): Promise => { + const paramsObject = { + method: 'PUT', + headers: { + Accept: 'application/json', // you can set whatever header do you want + 'Content-Type': 'application/json', // you can set whatever header do you want + 'Cache-Control': 'no-cache', // you can set whatever header do you want + Authorization: authorize && `Bearer ${authorize.token}`, // if there is the Bearer strategy + }, + body: JSON.stringify(data), + }; + + const request = fetch(endpoint, paramsObject).then(requestData => + requestData.json(), + ); + + return requestRacer({ request }); +}; + +export const postRequest = ({ + endpoint, + data, + authorize, +}: postRequestParams): Promise => { + const paramsObject = { + method: 'POST', + headers: { + Accept: 'application/json', // you can set whatever header do you want + 'Content-Type': 'application/json', // you can set whatever header do you want + 'Cache-Control': 'no-cache', // you can set whatever header do you want + Authorization: authorize && `Bearer ${authorize.token}`, // if there is the Bearer strategy + }, + body: JSON.stringify(data), + }; + + const request = fetch(endpoint, paramsObject).then(requestData => + requestData.json(), + ); + + return requestRacer({ request }); +}; + +export const patchRequest = ({ + endpoint, + data, + authorize, +}: patchRequestParams): Promise => { + const paramsObject = { + method: 'PATCH', + headers: { + Accept: 'application/json', // you can set whatever header do you want + 'Content-Type': 'application/json', // you can set whatever header do you want + 'Cache-Control': 'no-cache', // you can set whatever header do you want + Authorization: authorize && `Bearer ${authorize.token}`, // if there is the Bearer strategy + }, + body: JSON.stringify(data), + }; + + const request = fetch(endpoint, paramsObject).then(requestData => + requestData.json(), + ); // + + return requestRacer({ request }); +}; + +export const deleteRequest = ({ + endpoint, + data, + authorize, +}: patchRequestParams): Promise => { + const paramsObject = { + method: 'PATCH', + headers: { + Accept: 'application/json', // you can set whatever header do you want + 'Content-Type': 'application/json', // you can set whatever header do you want + 'Cache-Control': 'no-cache', // you can set whatever header do you want + Authorization: authorize && `Bearer ${authorize.token}`, // if there is the Bearer strategy + }, + body: JSON.stringify(data), + }; + + const request = fetch(endpoint, paramsObject).then(requestData => + requestData.json(), + ); // + + return requestRacer({ request }); +}; diff --git a/src/services/api/types/index.ts b/src/services/api/types/index.ts new file mode 100644 index 0000000..2840e4f --- /dev/null +++ b/src/services/api/types/index.ts @@ -0,0 +1,28 @@ +export type getRequestParams = { + endpoint: string; + authorize?: { + token: string; + }; +}; + +export type putRequestParams = { + endpoint: string; + data: Record; + authorize?: { + token: string; + }; +}; +export type patchRequestParams = { + endpoint: string; + data: Record; + authorize?: { + token: string; + }; +}; +export type postRequestParams = { + endpoint: string; + data: Record; + authorize?: { + token: string; + }; +}; diff --git a/src/services/api/utils/request-racer.ts b/src/services/api/utils/request-racer.ts new file mode 100644 index 0000000..b11ccde --- /dev/null +++ b/src/services/api/utils/request-racer.ts @@ -0,0 +1,19 @@ +import { TIMEOUT_VALUE } from '@/constants'; + +type requestRacerParams = { + request: Promise; +}; + +// функция для отключения запроса по таймауту +export const requestRacer = async ({ + request, +}: requestRacerParams): Promise> => { + const timeoutException = new Promise(resolve => + setTimeout( + () => resolve({ error: 'request-error', message: '' }), + TIMEOUT_VALUE, + ), + ); + + return Promise.race([request, timeoutException]); +}; diff --git a/src/services/index.ts b/src/services/index.ts new file mode 100644 index 0000000..f9adb21 --- /dev/null +++ b/src/services/index.ts @@ -0,0 +1,3 @@ +export * from './api'; +export * from './tokens'; +export * from './validations'; diff --git a/src/services/tokens/index.js b/src/services/tokens/index.js new file mode 100644 index 0000000..67cef00 --- /dev/null +++ b/src/services/tokens/index.js @@ -0,0 +1,12 @@ +export const saveTokens = ({ + accessToken, + // refreshToken +}) => { + localStorage.setItem('access_token', accessToken); + // localStorage.setItem('refresh_token', refreshToken); +}; + +export const removeTokens = () => { + localStorage.removeItem('access_token'); + // localStorage.removeItem('refresh_token'); +}; diff --git a/src/services/validations/index.ts b/src/services/validations/index.ts new file mode 100644 index 0000000..c5b05d4 --- /dev/null +++ b/src/services/validations/index.ts @@ -0,0 +1,36 @@ +type TestFormValues = { + firstName?: string; + lastName?: string; +}; + +type FormErrors = { + firstName?: string; + lastName?: string; +}; + +type FormErrorsReturn = { + isValidFormValues: boolean; + errors: FormErrors; +}; + +export const validateFormValues = ({ + firstName, + lastName, +}: TestFormValues): FormErrorsReturn => { + const errors: FormErrors = {}; + let isValidFormValues = true; + + if (firstName === 'test') { + errors.firstName = 'test error firstName'; + } + + if (lastName === 'test') { + errors.lastName = 'test error lastName'; + } + + if (Object.keys(errors).length) { + isValidFormValues = false; + } + + return { isValidFormValues, errors }; +}; diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..392559d --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1 @@ +export const mockUtil = () => {};