diff --git a/.babelrc b/.babelrc index a1f05c77..ae28164e 100644 --- a/.babelrc +++ b/.babelrc @@ -9,5 +9,12 @@ "ignoreFilenames": ["node_modules"] } ] - ] + ], + "env": { + "production": { + "plugins": [ + "babel-plugin-strip-invariant" + ] + } + } } diff --git a/CHANGELOG.md b/CHANGELOG.md index e2a688fa..ec989e02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,37 @@ +# [0.1.0-beta.4](https://github.com/algolia/ecomm-unified/compare/v0.1.0-beta.3...v0.1.0-beta.4) (2020-07-28) + + +### Bug Fixes + +* make text more helpful ([#132](https://github.com/algolia/ecomm-unified/issues/132)) ([03c5b25](https://github.com/algolia/ecomm-unified/commit/03c5b2528e9c53a4231d51293a64467f428bdbe8)) +* rename property ([9b2b143](https://github.com/algolia/ecomm-unified/commit/9b2b14379c0c2b323e038a1f4c676cfbc44f5f12)) +* **hits:** increase font weight ([3954fef](https://github.com/algolia/ecomm-unified/commit/3954fefac906a0d643a5a06b5fceff9a8f1a361d)) +* **mobile:** adjust mobile filtering design ([#112](https://github.com/algolia/ecomm-unified/issues/112)) ([62f5a62](https://github.com/algolia/ecomm-unified/commit/62f5a62f81771f0f9d0dae426fcbdf44aa0b0693)) +* **mobile:** update filters panel design ([#130](https://github.com/algolia/ecomm-unified/issues/130)) ([f4f40ec](https://github.com/algolia/ecomm-unified/commit/f4f40ec9a14afa4eb27272fd34ced0de737f8d66)) +* **searchBox:** autofocus input when modal opens ([#121](https://github.com/algolia/ecomm-unified/issues/121)) ([09f1856](https://github.com/algolia/ecomm-unified/commit/09f18568f4da081453cf9334990235a82dfb9000)) +* fix grid view for no results page ([#105](https://github.com/algolia/ecomm-unified/issues/105)) ([6797bae](https://github.com/algolia/ecomm-unified/commit/6797bae212616b88374fc3927411f33181545062)) +* fix input completion offset ([#106](https://github.com/algolia/ecomm-unified/issues/106)) ([19e8b98](https://github.com/algolia/ecomm-unified/commit/19e8b98683b334827938e70cb0824a1d5f62fe18)) +* update "currency" casing ([f1038e6](https://github.com/algolia/ecomm-unified/commit/f1038e6760d1acc36f2cf0fd4cbad68570f58f3c)) +* **sortBy:** align arrow ([981a65a](https://github.com/algolia/ecomm-unified/commit/981a65aab820a79ba6b9d4627d8e1f15ea6c096b)) + + +### Features + +* add baseZIndex congifuration ([#107](https://github.com/algolia/ecomm-unified/issues/107)) ([559509e](https://github.com/algolia/ecomm-unified/commit/559509e2c815ba1c6a77bb40bd1bb230c7fb6171)) +* add preconnect link to preview website ([#115](https://github.com/algolia/ecomm-unified/issues/115)) ([78c6dee](https://github.com/algolia/ecomm-unified/commit/78c6dee4d9f06fbbee155ae00993097d559f45b5)) +* allow escape to close filters ([#113](https://github.com/algolia/ecomm-unified/issues/113)) ([4088264](https://github.com/algolia/ecomm-unified/commit/4088264b9c040a674a2ecb80deef675add3e3409)) +* inline documentation within the configuration file ([#139](https://github.com/algolia/ecomm-unified/issues/139)) ([a2a87fe](https://github.com/algolia/ecomm-unified/commit/a2a87fea6aff3ec6a792a8973f570f337aebe754)) +* introduce runtime validation ([#140](https://github.com/algolia/ecomm-unified/issues/140)) ([9b64588](https://github.com/algolia/ecomm-unified/commit/9b64588b15b0311e0ee54ec36ddcb519163467c6)) +* remove webpack-dashboard ([be666e6](https://github.com/algolia/ecomm-unified/commit/be666e6e88b4a7249278a0198809424cdbe64999)) +* replace insights trigger ([16ac898](https://github.com/algolia/ecomm-unified/commit/16ac898e21479146d029c896b4499b765854be39)) +* reuse config index name as default sort option ([#137](https://github.com/algolia/ecomm-unified/issues/137)) ([be54236](https://github.com/algolia/ecomm-unified/commit/be54236539bce3a2c3f3ae8a786b5b5c0d57ca0b)) +* throw when `inputContainer` refers to an ([#138](https://github.com/algolia/ecomm-unified/issues/138)) ([da536fc](https://github.com/algolia/ecomm-unified/commit/da536fc4f4570bad06be0c61de1116b85baea4f9)) +* **mobile:** display current refinements in filters panel ([#123](https://github.com/algolia/ecomm-unified/issues/123)) ([017c572](https://github.com/algolia/ecomm-unified/commit/017c5722e55b258b18cdc79220ec93d5db59a56e)) +* **pagination:** scroll to top on page change ([#111](https://github.com/algolia/ecomm-unified/issues/111)) ([638442c](https://github.com/algolia/ecomm-unified/commit/638442cc47b84615c4a3f9838fe13bc959ebe7d8)) +* **qs:** display bubbles on desktop ([#116](https://github.com/algolia/ecomm-unified/issues/116)) ([7c6a5e7](https://github.com/algolia/ecomm-unified/commit/7c6a5e71b46eebe52c7701fe0b525a93396f4864)) + + + # [0.1.0-beta.3](https://github.com/algolia/ecomm-unified/compare/v0.1.0-beta.0...v0.1.0-beta.3) (2020-05-11) diff --git a/package.json b/package.json index 2e98a0a9..5e429f96 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "unified-instantsearch-ecommerce", - "version": "0.1.0-beta.3", + "version": "0.1.0-beta.4", "license": "Apache-2.0", "private": true, "scripts": { - "start": "webpack-dashboard -- webpack-dev-server --config webpack/dev.babel.js", - "export": "webpack --config webpack/build.babel.js", - "preview": "webpack --config webpack/preview.babel.js", + "start": "NODE_ENV=development webpack-dev-server --config webpack/dev.babel.js", + "export": "NODE_ENV=production webpack --config webpack/build.babel.js", + "preview": "NODE_ENV=production webpack --config webpack/preview.babel.js", "lint": "run-p -c lint:*", "lint:js": "eslint --ext .js .", "lint:css": "stylelint '**/*.(s)css'", @@ -15,6 +15,7 @@ }, "dependencies": { "algoliasearch": "4.1.0", + "invariant": "2.2.4", "node-sass": "4.13.1", "qs": "6.9.3", "react": "16.13.1", @@ -34,6 +35,7 @@ "@babel/runtime": "7.9.6", "babel-eslint": "10.1.0", "babel-loader": "8.1.0", + "babel-plugin-strip-invariant": "1.0.0", "babel-plugin-transform-react-remove-prop-types": "0.4.24", "clean-webpack-plugin": "3.0.0", "copy-webpack-plugin": "5.1.1", @@ -74,7 +76,6 @@ "terser-webpack-plugin": "2.3.6", "webpack": "4.43.0", "webpack-cli": "3.3.11", - "webpack-dashboard": "3.2.0", "webpack-dev-server": "3.10.3", "webpack-merge": "4.2.2" } diff --git a/public/index.ejs b/public/index.ejs index 93be65e3..9792aac8 100644 --- a/public/index.ejs +++ b/public/index.ejs @@ -28,7 +28,7 @@
-

Click on the search box to start searching.

+

Click on the search box in the top-right corner to start searching.

diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..8b16be2c --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "extends": [ + "config:js-app", + "algolia" + ] +} \ No newline at end of file diff --git a/src/App.scss b/src/App.scss index ef22c78c..287591e8 100644 --- a/src/App.scss +++ b/src/App.scss @@ -242,7 +242,7 @@ .uni-Refinements-scrollable { @media (--algolia-theme-breakpoint-md-max) { flex-grow: 1; - padding: 1rem 1.5rem; + padding: 1rem; } } @@ -256,6 +256,19 @@ margin-bottom: 1rem; } +.uni-Refinements-closeButton { + background: none; + border: 0; + color: inherit; + cursor: pointer; + margin-right: -0.5rem; + padding: 0.5rem; + svg { + height: auto; + width: 20px; + } +} + .uni-Refinements-button { background-color: #dddcdc; border: 0; @@ -263,6 +276,7 @@ color: var(--algolia-theme-color-secondary); cursor: pointer; display: flex; + flex: 1; flex-shrink: 0; font-size: 0.75rem; font-weight: bold; @@ -274,21 +288,19 @@ .uni-Refinements-resultButton { background-color: var(--algolia-theme-color-primary); color: #fff; - margin-left: 1rem; + margin-left: 0.5rem; } .uni-Refinements-footer { background-color: #fff; border-top: 1px solid #ebecf3; + box-shadow: 0 0 4px rgba(150, 150, 150, 0.24); display: flex; flex-grow: 0; flex-shrink: 0; - padding: 1rem 1.5rem; + padding: 0.5rem; width: 100%; z-index: 2; - .uni-Refinements-button { - flex-grow: 1; - } } /* Containers */ diff --git a/src/components/CurrentRefinements.js b/src/components/CurrentRefinements.js index 49d40515..eb99fe59 100644 --- a/src/components/CurrentRefinements.js +++ b/src/components/CurrentRefinements.js @@ -73,9 +73,7 @@ function getRefinement(refinement, config) { } default: { - throw new Error( - `The refinement type "${refinementConfig.type}" is not supported.` - ); + return null; } } } diff --git a/src/components/Panel.scss b/src/components/Panel.scss index 20362242..6980c5af 100644 --- a/src/components/Panel.scss +++ b/src/components/Panel.scss @@ -22,7 +22,8 @@ .ais-Panel-body { padding-top: 1rem; @media (--algolia-theme-breakpoint-md-max) { - padding: 1rem 0; + padding-bottom: 1rem; + padding-top: 0; } } diff --git a/src/components/Refinements.js b/src/components/Refinements.js index 9a56d0d5..ac6cbdb5 100644 --- a/src/components/Refinements.js +++ b/src/components/Refinements.js @@ -56,7 +56,7 @@ function RefinementWidget({ type, ...props }) { ); default: - throw new Error(`The refinement type "${type}" is not supported.`); + return null; } } diff --git a/src/components/ResetButton.js b/src/components/ResetButton.js index 8c157b37..e6096adc 100644 --- a/src/components/ResetButton.js +++ b/src/components/ResetButton.js @@ -13,7 +13,7 @@ export const ResetButton = connectCurrentRefinements(function ResetButton( }} disabled={props.items.length === 0} > - Reset filters + Clear all ); }); diff --git a/src/components/Search.js b/src/components/Search.js index 7daa1267..231a6d00 100644 --- a/src/components/Search.js +++ b/src/components/Search.js @@ -22,6 +22,14 @@ export function Search(props) { const filtersAnchor = React.useRef(); + const defaultSort = [ + { + label: 'Featured', + value: config.index.indexName, + }, + ]; + const sorts = defaultSort.concat(config.sorts); + React.useEffect(() => { if (filtersAnchor.current && props.isFiltering) { filtersAnchor.current.scrollTop = 0; @@ -74,9 +82,10 @@ export function Search(props) { onClick={() => { props.setIsFiltering(false); }} - className="uni-Refinements-button" + className="uni-Refinements-closeButton" + title="Close filters" > - Close + {isMobile && } @@ -105,12 +114,12 @@ export function Search(props) {
- {config.sorts?.length > 0 && ( + {sorts.length > 1 && (
Sort by
)} diff --git a/src/config/Hit.js b/src/config/Hit.js index 8dec6028..564ce915 100644 --- a/src/config/Hit.js +++ b/src/config/Hit.js @@ -41,18 +41,18 @@ export function Hit({ hit, insights, view }) {
@@ -60,7 +60,7 @@ export function Hit({ hit, insights, view }) { ); } -function LikeIcon(props) { +function CartIcon(props) { return ( - + + + ); } diff --git a/src/config/index.js b/src/config/index.js index 5cb93c19..191a2ce9 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -1,106 +1,3 @@ -import React from 'react'; - -import { Hit } from './Hit'; - -const config = { - inputContainer: '#search-button', - inputContent: 'Search for products', - keyboardShortcuts: ['/'], - appId: 'latency', - searchApiKey: '6be0576ff61c053d5f9a3225e2a90f76', - index: { - indexName: 'instant_search', - searchParameters: { - analytics: true, - clickAnalytics: true, - hitsPerPage: 18, - attributesToSnippet: ['description:25'], - }, - }, - suggestionsIndex: { - indexName: 'instant_search_demo_query_suggestions', - searchParameters: { - hitsPerPage: 6, - }, - }, - hitComponent: Hit, - googleAnalytics: false, - sorts: [ - { - label: 'Featured', - value: 'instant_search', - }, - { - label: 'Price ascending', - value: 'instant_search_price_asc', - }, - { - label: 'Price descending', - value: 'instant_search_price_desc', - }, - ], - refinements: [ - { - type: 'hierarchical', - header: 'Categories', - label: 'Category', - options: { - attributes: [ - 'hierarchicalCategories.lvl0', - 'hierarchicalCategories.lvl1', - ], - limit: 6, - searchable: true, - showMore: true, - }, - }, - { - type: 'list', - header: 'Brands', - label: 'Brand', - options: { - attribute: 'brand', - searchable: true, - showMore: true, - limit: 6, - showMoreLimit: 20, - translations: { - showMore: (expanded) => - expanded ? '- View fewer brands' : '+ View more brands', - }, - }, - }, - { - type: 'slider', - header: 'Price', - label: 'Price', - options: { - attribute: 'price', - transformValue: (value) => ( - <> - $ - {value} - - ), - }, - }, - ], - styles: { - colors: { - primary: '#d02139', - secondary: '#21243d', - }, - text: { - fontFamily: `-apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, -ubuntu, cantarell, 'Open Sans', 'Helvetica Neue', sans-serif`, - }, - breakpoints: { - sm: 640, - md: 768, - lg: 1024, - }, - baseZIndex: 100, - }, -}; +import * as config from './settings'; export default config; diff --git a/src/config/rules.js b/src/config/rules.js new file mode 100644 index 00000000..d44cbb44 --- /dev/null +++ b/src/config/rules.js @@ -0,0 +1,53 @@ +import { getDomElement } from '../utils'; + +const rules = { + inputContainer: { + validate(input) { + const inputContainer = getDomElement(input); + const isElement = inputContainer instanceof HTMLElement; + const isInputElement = inputContainer instanceof HTMLInputElement; + + const response = { + valid: isElement && !isInputElement, + context: { + isElement, + isInputElement, + }, + }; + + return response; + }, + errorMessage(context) { + if (!context?.isElement) { + return 'The `inputContainer` option must refer to a valid HTML element.'; + } + if (context?.isInputElement) { + return 'The `inputContainer` option must refer to a container (e.g.,
), not an .'; + } + + return ''; + }, + }, + refinements: { + validate(input) { + const acceptedTypes = ['hierarchical', 'category', 'list', 'slider']; + const unknownType = input.find( + ({ type }) => !acceptedTypes.includes(type) + ); + + const response = { + valid: !unknownType, + context: { + unknownType, + }, + }; + + return response; + }, + errorMessage(context) { + return `The refinement type "${context?.unknownType?.type}" is not supported.`; + }, + }, +}; + +export default rules; diff --git a/src/config/settings.js b/src/config/settings.js new file mode 100644 index 00000000..9b320a07 --- /dev/null +++ b/src/config/settings.js @@ -0,0 +1,201 @@ +/* +| ----------------------------------------------------------------------------- +| Unified InstantSearch E-commerce by Algolia http://alg.li/unified +| ----------------------------------------------------------------------------- +| +| Welcome to the Unified InstantSearch E-commerce configuration file. +| This is where you can customize Unified InstantSearch E-commerce specifically +| for your project. +| +| Unless mandatory, if you don't use a setting, feel free to comment it out. +| +| View the full documentation at http://alg.li/unified/doc +| +*/ + +import React from 'react'; +import { Hit } from './Hit'; + +/* +|------------------------------------------------------------------------------- +| Base configuration http://alg.li/unified/base-config +|------------------------------------------------------------------------------- +| +| Here is where you define your base configuration. +| +| This is the starting point of your project. These options are necessary to +| integrate Unified InstantSearch E-commerce in your website, and wire it with +| your Algolia index. +| +*/ + +export const inputContainer = '#search-button'; +export const inputContent = 'Search for products'; +export const keyboardShortcuts = ['/']; +export const appId = 'latency'; +export const searchApiKey = '6be0576ff61c053d5f9a3225e2a90f76'; +export const hitComponent = Hit; +export const index = { + indexName: 'instant_search', + searchParameters: { + analytics: true, + clickAnalytics: true, + hitsPerPage: 18, + attributesToSnippet: ['description:25'], + }, +}; + +/* +|------------------------------------------------------------------------------- +| Insights, Analytics and Personalization http://alg.li/unified/insights +|------------------------------------------------------------------------------- +| +| Here is where you define your Analytics and Personalization settings. +| +| We provide you with ways to measure how your search is doing, and make search +| results more relevant for individual users by personalizing their experience +| based on a unique profile built over time. +| +*/ + +export const googleAnalytics = false; +export const setUserToken = (setToken) => { + setToken(/* The current user's `userToken` */); +}; + +/* +|------------------------------------------------------------------------------- +| Sort-by http://alg.li/unified/sort-by +|------------------------------------------------------------------------------- +| +| Here is where you define your different sort-by options. +| +| Algolia sorts search results by relevance, using its ranking formula. +| Yet, you can provide several sorting options based on a specific attribute +| (e.g., descending price) using replica indices. +| +*/ + +export const sorts = [ + { + label: 'Price ascending', + value: 'instant_search_price_asc', + }, + { + label: 'Price descending', + value: 'instant_search_price_desc', + }, +]; + +/* +|------------------------------------------------------------------------------- +| Refinements http://alg.li/unified/refinements +|------------------------------------------------------------------------------- +| +| Here is where you define your different refinement options. +| +| We provide you with different types of refinement options to let users narrow +| down their searches based on a specific attribute. +| +| Some refinement types require you to follow a specific record schema. +| +*/ + +export const refinements = [ + { + type: 'hierarchical', + header: 'Categories', + label: 'Category', + options: { + attributes: [ + 'hierarchicalCategories.lvl0', + 'hierarchicalCategories.lvl1', + ], + limit: 6, + searchable: true, + showMore: true, + }, + }, + { + type: 'list', + header: 'Brands', + label: 'Brand', + options: { + attribute: 'brand', + searchable: true, + showMore: true, + limit: 6, + showMoreLimit: 20, + translations: { + showMore: (expanded) => + expanded ? '- View fewer brands' : '+ View more brands', + }, + }, + }, + { + type: 'slider', + header: 'Price', + label: 'Price', + options: { + attribute: 'price', + transformValue: (value) => ( + <> + $ + {value} + + ), + }, + }, +]; + +/* +|------------------------------------------------------------------------------- +| Query Suggestions http://alg.li/unified/query-suggestions +|------------------------------------------------------------------------------- +| +| Here is where you define your Query Suggestions settings. +| +| Query Suggestions let you display a list of relevant queries that your users +| can select from as they type. +| +| This requires a Query Suggestion index that we populate over time with data +| from what your users are searching for. If your index isn't ready yet, feel +| free to comment out this section and re-enable it later. +| +*/ + +export const suggestionsIndex = { + indexName: 'instant_search_demo_query_suggestions', + searchParameters: { + hitsPerPage: 6, + }, +}; + +/* +|------------------------------------------------------------------------------- +| Styles http://alg.li/unified/styles +|------------------------------------------------------------------------------- +| +| Here is where you define the styling for your search experience. +| +| If you edit these values while in development mode, you must restart the +| server to see your changes. +| +*/ + +export const styles = { + colors: { + primary: '#d02139', + secondary: '#21243d', + }, + text: { + fontFamily: `-apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, +ubuntu, cantarell, 'Open Sans', 'Helvetica Neue', sans-serif`, + }, + breakpoints: { + sm: 640, + md: 768, + lg: 1024, + }, + baseZIndex: 100, +}; diff --git a/src/index.js b/src/index.js index fa32525e..d22281c8 100644 --- a/src/index.js +++ b/src/index.js @@ -7,8 +7,11 @@ import './theme.scss'; import './App.scss'; import config from './config'; +import rules from './config/rules'; import { App } from './App'; -import { getDomElement } from './utils'; +import { getDomElement, validateConfig } from './utils'; + +validateConfig(config, rules); ReactDOM.render( diff --git a/src/utils/index.js b/src/utils/index.js index d0119ef0..507c7c18 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,3 +1,5 @@ +import invariant from 'invariant'; + export function parseAttribute({ highlightPreTag, highlightPostTag, @@ -55,3 +57,16 @@ export function getDomElement(value) { return isSelectorString ? document.querySelector(value) : value; } + +export function validateConfig(config, rules) { + Object.keys(config).forEach((optionName) => { + const input = config[optionName]; + const rule = rules[optionName]; + + if (rule) { + const { valid, context } = rule.validate(input); + + invariant(valid, rule.errorMessage({ ...context, input })); + } + }); +} diff --git a/src/version.js b/src/version.js index ad1fdb71..381b6499 100644 --- a/src/version.js +++ b/src/version.js @@ -1 +1 @@ -export const version = '0.1.0-beta.3'; +export const version = '0.1.0-beta.4'; diff --git a/webpack/base.babel.js b/webpack/base.babel.js index aeb33a7c..f62c0c97 100644 --- a/webpack/base.babel.js +++ b/webpack/base.babel.js @@ -4,6 +4,7 @@ import { CleanWebpackPlugin } from 'clean-webpack-plugin'; import config from './config'; export default { + mode: process.env.NODE_ENV, entry: './src/index.js', output: { filename: `${config.filename}.js`, diff --git a/webpack/build.babel.js b/webpack/build.babel.js index 8dc2ccbf..c93984ff 100644 --- a/webpack/build.babel.js +++ b/webpack/build.babel.js @@ -11,7 +11,6 @@ import scss from './loaders/scss'; import config from './config'; export default merge(base, { - mode: 'production', output: { path: path.resolve('./export'), }, diff --git a/webpack/dev.babel.js b/webpack/dev.babel.js index eb2328c0..3bed963e 100644 --- a/webpack/dev.babel.js +++ b/webpack/dev.babel.js @@ -1,12 +1,10 @@ import merge from 'webpack-merge'; -import DashboardPlugin from 'webpack-dashboard/plugin'; import base from './base.babel'; import scss from './loaders/scss'; import files from './plugins/files'; export default merge(base, { - mode: 'development', devtool: 'inline-source-map', devServer: { contentBase: './public', @@ -15,7 +13,7 @@ export default merge(base, { host: '0.0.0.0', disableHostCheck: true, }, - plugins: [...files, new DashboardPlugin()], + plugins: [...files], module: merge.smart( { rules: [ diff --git a/webpack/preview.babel.js b/webpack/preview.babel.js index 2250624e..4b97a17d 100644 --- a/webpack/preview.babel.js +++ b/webpack/preview.babel.js @@ -5,6 +5,7 @@ import build from './build.babel'; import files from './plugins/files'; export default merge(build, { + mode: 'production', output: { path: path.resolve('./preview'), }, diff --git a/yarn.lock b/yarn.lock index d8a87f86..3b5d17a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1068,18 +1068,6 @@ version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" -"@most/multicast@^1.2.5": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@most/multicast/-/multicast-1.3.0.tgz#e01574840df634478ac3fabd164c6e830fb3b966" - integrity sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw== - dependencies: - "@most/prelude" "^1.4.0" - -"@most/prelude@^1.4.0": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@most/prelude/-/prelude-1.7.3.tgz#51db3f3ba3ed65431b6eea89ecb0a31826af640c" - integrity sha512-qWWEnA22UP1lzFfKx75XMut6DUUXGRKe7qv2k+Bgs7ju8lwb5RjsZYyQZ+VcsYvHcIavHKzseLlBMLOe2CvUZw== - "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -1561,11 +1549,6 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -1683,7 +1666,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -1797,11 +1780,6 @@ array.prototype.flat@^1.2.1: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1928,15 +1906,15 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" +babel-plugin-strip-invariant@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-strip-invariant/-/babel-plugin-strip-invariant-1.0.0.tgz#09d1046a0bf818f558535a4d7a87cbc4a6136d11" + integrity sha512-ZQcVDBlxcpKiayFfGq+YQs4JdR6E8k78JCFXaMpu33DL5pddrpAsYxv1Qm5Is1daT5OUdoNr7yuuTaRcSFn7GQ== + babel-plugin-transform-react-remove-prop-types@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" @@ -1946,20 +1924,10 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" -base64id@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1987,13 +1955,6 @@ before-after-hook@^2.1.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2002,11 +1963,6 @@ binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -2271,11 +2227,6 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -2567,15 +2518,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -2657,7 +2599,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.15.1, commander@^2.20.0, commander@~2.20.3: +commander@^2.20.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2679,25 +2621,10 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -2930,11 +2857,6 @@ cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" @@ -3321,7 +3243,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@=3.1.0, debug@~3.1.0: +debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -3334,7 +3256,7 @@ debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" dependencies: @@ -3694,46 +3616,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.1.tgz#922ddb47eecdcb541136a93aeead24718fd05461" - integrity sha512-RJNmA+A9Js+8Aoq815xpGAsgWH1VoSYM//2VgIiu9lNOaHFfLpTjH4tOzktBpjIs5lvOfiNY1dwf+NuU6D38Mw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~4.1.0" - engine.io-parser "~2.2.0" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~6.1.0" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" - integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.1.tgz#a61cbc13fa0cb27d9453fd079a29ee980564b069" - integrity sha512-8MfIfF1/IIfxuc2gv5K+XlFZczw/BpTvqBdl0E2fBLkYQp4miv4LuDTVtYt4yMyaIFLEr4vtaSgV4mjvll8Crw== - dependencies: - accepts "~1.3.4" - base64id "2.0.0" - cookie "0.3.1" - debug "~4.1.0" - engine.io-parser "~2.2.0" - ws "^7.1.2" - enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" @@ -4250,11 +4132,6 @@ filelist@^1.0.1: dependencies: minimatch "^3.0.4" -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -4397,11 +4274,6 @@ forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" -fp-ts@^2.0.2, fp-ts@^2.3.1: - version "2.5.4" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.5.4.tgz#f184079aaa78403ea66458517be7787e0d593429" - integrity sha512-cZlLeEneRYypc2dOzB9h8+bd9mQhJVyt2g0Dny2gKR7uWNgA4EmLSJyguLYsTU44nJSSG9EjurUalEc0wQqeKw== - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -4742,7 +4614,7 @@ handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" -handlebars@^4.1.2, handlebars@^4.4.0: +handlebars@^4.4.0: version "4.7.6" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== @@ -4776,18 +4648,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -5169,11 +5029,6 @@ indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -5222,19 +5077,6 @@ inquirer@7.1.0, inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" -inspectpack@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/inspectpack/-/inspectpack-4.4.0.tgz#47c3a94b80ba8a4b72034b784f018ff58952eb03" - integrity sha512-V9vjuP5OqAk3jnCZ0M9TIhZlRNdd9v1fggwAHHOTYvxqFRkAtEbjj1dII6kpj6tN8+yHKBL5u9gf9Lp7GGOLHw== - dependencies: - chalk "^3.0.0" - fp-ts "^2.3.1" - io-ts "^2.0.3" - io-ts-reporters "^1.0.0" - pify "^4.0.1" - semver-compare "^1.0.0" - yargs "^15.1.0" - internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -5257,9 +5099,10 @@ interpret@1.2.0, interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invariant@^2.2.2, invariant@^2.2.4: +invariant@2.2.4, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" @@ -5271,19 +5114,6 @@ invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" -io-ts-reporters@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/io-ts-reporters/-/io-ts-reporters-1.0.0.tgz#c5901d49d454956698bbca48b328698f8ca1c9c7" - integrity sha512-jjMvTnFYYxX3ue3cajmqCAf7sM4+lFvaaUuAL+otJv2DE+WDxYvQeCcUYveoq37rVSftJHZBEOrnvz3x0VdRXA== - dependencies: - fp-ts "^2.0.2" - io-ts "^2.0.0" - -io-ts@^2.0.0, io-ts@^2.0.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.2.tgz#82b9ef96d95a3fb27a1abf5f29f59b07cc9b8cca" - integrity sha512-cXXIL4CR5/sWfKw/Ssc/cbZJGG13J4pJv9/RN6SlWJyh+foAPEUE0I9sWTX1kG24dvhiCM9fpO4F+2AsP+WzaQ== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -5632,11 +5462,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6459,15 +6284,6 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -most@^1.7.3: - version "1.8.1" - resolved "https://registry.yarnpkg.com/most/-/most-1.8.1.tgz#0c752d26017ddcd50429651665dc229dbef439da" - integrity sha512-sN3lHtEvVNq5ay/pT93fKQ2XVW2uwbUypSWGt/DYCxGKuyvxaNd8mProK0M4k6irqeh1WD3pWrg4RdrCPohqDQ== - dependencies: - "@most/multicast" "^1.2.5" - "@most/prelude" "^1.4.0" - symbol-observable "^1.0.2" - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6558,11 +6374,6 @@ neo-async@^2.6.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -neo-blessed@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/neo-blessed/-/neo-blessed-0.2.0.tgz#30f9495fdd104494402b62c6273a9c9b82de4f2b" - integrity sha512-C2kC4K+G2QnNQFXUIxTQvqmrdSIzGTX1ZRKeDW6ChmvPRw8rTkTEJzbEQHiHy06d36PCl/yMOCjquCRV8SpSQw== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -6803,11 +6614,6 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -7164,20 +6970,6 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -8934,11 +8726,6 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" @@ -9205,61 +8992,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== - -socket.io-client@2.3.0, socket.io-client@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" - integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~4.1.0" - engine.io-client "~3.4.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.3.0" - to-array "0.1.4" - -socket.io-parser@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" - integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io-parser@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.0.tgz#370bb4a151df2f77ce3345ff55a7072cc6e9565a" - integrity sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ== - dependencies: - component-emitter "1.2.1" - debug "~4.1.0" - isarray "2.0.1" - -socket.io@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" - integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== - dependencies: - debug "~4.1.0" - engine.io "~3.4.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.3.0" - socket.io-parser "~3.4.0" - sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -9889,11 +9621,6 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - table@^5.2.3, table@^5.4.6: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -10073,11 +9800,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -10575,21 +10297,6 @@ webpack-cli@3.3.11: v8-compile-cache "2.0.3" yargs "13.2.4" -webpack-dashboard@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpack-dashboard/-/webpack-dashboard-3.2.0.tgz#b8fc6215c76ffad66774375448f162892dc81bad" - integrity sha512-nRAJmmaWWHDqPiNmeQxBtkk/o6n1inp3qftUBIjbmm2d4w1rah7zpxmkv4qw4sGJbnzYGxMK/hmhBIELsh/Jog== - dependencies: - commander "^2.15.1" - cross-spawn "^6.0.5" - filesize "^3.6.1" - handlebars "^4.1.2" - inspectpack "^4.2.1" - most "^1.7.3" - neo-blessed "^0.2.0" - socket.io "^2.1.1" - socket.io-client "^2.1.1" - webpack-dev-middleware@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" @@ -10769,15 +10476,6 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -10806,23 +10504,6 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.1.2: - version "7.2.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d" - integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA== - -ws@~6.1.0: - version "6.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" - integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== - dependencies: - async-limiter "~1.0.0" - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= - xregexp@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" @@ -10939,23 +10620,6 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@^15.1.0: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" @@ -10973,8 +10637,3 @@ yargs@^7.0.0: which-module "^1.0.0" y18n "^3.2.1" yargs-parser "^5.0.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=