From ce4d2e14368b105dc792aeec33ba9f1932805322 Mon Sep 17 00:00:00 2001 From: Sudhanshu Gautam Date: Mon, 2 Sep 2019 02:30:15 +0530 Subject: [PATCH] Add prettier support Add prettier and bind it with eslint. Also add pre-commit hook to prettify before commit Signed-off-by: Sudhanshu Gautam --- .eslintrc.yml | 3 + .prettierrc | 4 + package.json | 12 +- src/App.js | 29 +- src/components/alert-dialog.js | 42 +- src/components/device-search.js | 30 +- src/components/error-snackbar.js | 17 +- src/components/header.js | 41 +- src/containers/home/home.js | 785 ++++++++++++++------------ src/containers/not-found/not-found.js | 12 +- src/i18n.js | 5 +- src/services/data.js | 48 +- yarn.lock | 216 ++++++- 13 files changed, 776 insertions(+), 468 deletions(-) create mode 100644 .prettierrc diff --git a/.eslintrc.yml b/.eslintrc.yml index 8ea376f..536404d 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -16,10 +16,13 @@ parserOptions: sourceType: module plugins: - react + - prettier settings: react: version: 'detect' rules: + prettier/prettier: + - error indent: - error - 2 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..1502887 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "es5" +} \ No newline at end of file diff --git a/package.json b/package.json index cfda0f5..072eb07 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "eject": "react-scripts eject", "predeploy": "yarn run build", "deploy": "gh-pages -d build", - "lint": "eslint src/ --ext .js --fix" + "lint": "eslint src/ --ext .js --fix", + "pretty": "prettier --single-quote --trailing-comma es5 --write \"src/**/*.js\"" }, "browserslist": { "production": [ @@ -42,8 +43,17 @@ "devDependencies": { "babel-eslint": "^10.0.2", "eslint": "^6.1.0", + "eslint-plugin-prettier": "^3.1.0", "eslint-plugin-react": "^7.14.2", + "husky": "^3.0.5", + "prettier": "1.18.2", + "pretty-quick": "^1.11.1", "prop-types": "latest", "typescript": "^3.5.3" + }, + "husky": { + "hooks": { + "pre-commit": "pretty-quick --staged" + } } } diff --git a/src/App.js b/src/App.js index 7ded185..b4afcfd 100644 --- a/src/App.js +++ b/src/App.js @@ -1,9 +1,9 @@ -import React, {Suspense} from 'react'; -import {BrowserRouter as Router, Route, Switch} from 'react-router-dom'; +import React, { Suspense } from 'react'; +import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import './App.scss'; -import {createMuiTheme} from '@material-ui/core/styles'; -import {ThemeProvider} from '@material-ui/styles'; +import { createMuiTheme } from '@material-ui/core/styles'; +import { ThemeProvider } from '@material-ui/styles'; import Header from './components/header.js'; import Home from './containers/home/home'; import NotFound from './containers/not-found/not-found'; @@ -24,23 +24,28 @@ const theme = createMuiTheme({ function App() { return ( - - }> + }>
-
+
- - + + - If you come across any issue, feel free to report here. + If you come across any issue, feel free to report{' '} + + here + + . - For contributions, go to Github + For contributions, go to{' '} + + Github +
diff --git a/src/components/alert-dialog.js b/src/components/alert-dialog.js index e046287..1af62ae 100644 --- a/src/components/alert-dialog.js +++ b/src/components/alert-dialog.js @@ -9,7 +9,15 @@ import { import React from 'react'; import PropTypes from 'prop-types'; -function AlertDialog({open, cancelHandler, acceptHandler, body, title, cancelComponent, acceptComponent}) { +function AlertDialog({ + open, + cancelHandler, + acceptHandler, + body, + title, + cancelComponent, + acceptComponent, +}) { return ( - {title} + {title} {body} - { - acceptHandler && ( - - ) - } - { - cancelHandler && ( - - ) - } + {acceptHandler && ( + + )} + {cancelHandler && ( + + )} ); diff --git a/src/components/device-search.js b/src/components/device-search.js index e7c5335..052247d 100644 --- a/src/components/device-search.js +++ b/src/components/device-search.js @@ -1,5 +1,5 @@ -import {InputAdornment, makeStyles, TextField} from '@material-ui/core'; -import {fade} from '@material-ui/core/styles'; +import { InputAdornment, makeStyles, TextField } from '@material-ui/core'; +import { fade } from '@material-ui/core/styles'; import SearchIcon from '@material-ui/icons/Search'; import React from 'react'; import PropTypes from 'prop-types'; @@ -29,22 +29,18 @@ function SearchTextField(props) { return ( - {props.labeltext} - - } + label={
{props.labeltext}
} disabled={props.disabled} - InputProps={ - { - classes, - endAdornment: ( - - - - ), - } - } {...props} /> + InputProps={{ + classes, + endAdornment: ( + + + + ), + }} + {...props} + /> ); } diff --git a/src/components/error-snackbar.js b/src/components/error-snackbar.js index 0b2076d..e6f4df1 100644 --- a/src/components/error-snackbar.js +++ b/src/components/error-snackbar.js @@ -23,7 +23,7 @@ const SnackBarStyles = makeStyles(theme => ({ }, })); -function ErrorSnackBar({open, closeHandle, errorMessage}) { +function ErrorSnackBar({ open, closeHandle, errorMessage }) { const classes = SnackBarStyles(); return ( - - {errorMessage || - 'An unexpected error occurred. Please try again'} + + {errorMessage || 'An unexpected error occurred. Please try again'} } action={[ - - + + , ]} /> diff --git a/src/components/header.js b/src/components/header.js index 22ae974..bee30ff 100644 --- a/src/components/header.js +++ b/src/components/header.js @@ -14,12 +14,11 @@ import { Toolbar, Typography, } from '@material-ui/core'; -import {useTranslation} from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import i18next from 'i18next'; export default function Header() { - - const {t, i18n} = useTranslation(); + const { t, i18n } = useTranslation(); const [value, setValue] = React.useState('en'); const [anchorEl, setAnchorEl] = React.useState(null); @@ -41,13 +40,19 @@ export default function Header() { return ( - {t( - 'OpenWrt Firmware Selector Wizard')} -
- - {({TransitionProps}) => ( + {({ TransitionProps }) => ( Change Language -
+
- } - label={t('English')}/> - } - label={t('German')}/> + } + label={t('English')} + /> + } + label={t('German')} + />
diff --git a/src/containers/home/home.js b/src/containers/home/home.js index 805b5d0..1fcc33a 100644 --- a/src/containers/home/home.js +++ b/src/containers/home/home.js @@ -23,14 +23,14 @@ import { Typography, ExpansionPanel, ExpansionPanelSummary, - ExpansionPanelDetails + ExpansionPanelDetails, } from '@material-ui/core'; import CloudDownloadIcon from '@material-ui/icons/CloudDownload'; import WarningIcon from '@material-ui/icons/Warning'; import BuildIcon from '@material-ui/icons/Build'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; import './home.scss'; -import {withTranslation} from 'react-i18next'; +import { withTranslation } from 'react-i18next'; import FuzzySet from 'fuzzyset.js'; import DataService from '../../services/data'; @@ -43,9 +43,9 @@ import PropTypes from 'prop-types'; const buildStatusCheckInterval = 5000; const confirmationPopupOnBuildResquest = false; -function TabContainer({children, dir}) { +function TabContainer({ children, dir }) { return ( - + {children} ); @@ -58,7 +58,8 @@ TabContainer.propTypes = { const sleep = m => new Promise(r => setTimeout(r, m)); const asu = 'https://aparcar.stephen304.com'; -const asu_download = 'https://aparcar.stephen304.com/download/json-demo/openwrt/'; +const asu_download = + 'https://aparcar.stephen304.com/download/json-demo/openwrt/'; class Home extends React.Component { state = { @@ -99,7 +100,9 @@ class Home extends React.Component { const versionsResponse = await this.dataService.getVersions(); let data = versionsResponse.data.versions; for (var i = 0; i < data.length; i++) { - const overviewResponse = await this.dataService.getOverview(data[i].path); + const overviewResponse = await this.dataService.getOverview( + data[i].path + ); data[i].devices = overviewResponse.data.devices; } this.generateFuzzySet(data[0].devices); @@ -124,9 +127,9 @@ class Home extends React.Component { }); }; - generateFuzzySet = (data) => { + generateFuzzySet = data => { let deviceNames = []; - Object.keys(data).forEach((deviceName) => { + Object.keys(data).forEach(deviceName => { deviceNames.push(deviceName); }); this.setState({ @@ -134,7 +137,7 @@ class Home extends React.Component { }); }; - setRelease = (event) => { + setRelease = event => { this.generateFuzzySet(this.state.data[event.target.value].devices); this.setState({ selection: { @@ -146,7 +149,7 @@ class Home extends React.Component { }); }; - selectDevice = async (device_name) => { + selectDevice = async device_name => { const version = this.state.data[this.state.selection.version]; let selection; try { @@ -177,9 +180,13 @@ class Home extends React.Component { console.log(err); return; } - const noPackageFoundError = {error: 'no-packages-found'}; + const noPackageFoundError = { error: 'no-packages-found' }; try { - let devicePackagesResponse = await this.dataService.getDevicePackages(version.name, selection.device.target, selection.device.id); + let devicePackagesResponse = await this.dataService.getDevicePackages( + version.name, + selection.device.target, + selection.device.id + ); if (devicePackagesResponse.data.length === 0) { throw noPackageFoundError; } @@ -200,7 +207,7 @@ class Home extends React.Component { }); }; - search = (event) => { + search = event => { const query = event.target.value; this.setState({ query, @@ -243,26 +250,26 @@ class Home extends React.Component { }, 2000); }; - changeAddPackageInput = (event) => { + changeAddPackageInput = event => { this.setState({ packageName: event.target.value, }); }; - deletePackage = (i) => { + deletePackage = i => { let packages = this.state.packages; packages.splice(i, 1); this.setState({ packages, - configChanged: true + configChanged: true, }); }; - addPackage = (event) => { + addPackage = event => { if ((event.which || event.keyCode) === 13 && !event.shiftKey) { let packages = this.state.packages; const packageArray = this.state.packageName.split(/[,\n]+/); - packageArray.forEach((package_name) => { + packageArray.forEach(package_name => { package_name = package_name.replace(' ', ''); if (package_name !== '' && packages.indexOf(package_name) === -1) { packages.push(package_name); @@ -271,7 +278,7 @@ class Home extends React.Component { this.setState({ packages, packageName: '', - configChanged: true + configChanged: true, }); } }; @@ -284,18 +291,20 @@ class Home extends React.Component { this.confirmingBuild = true; }; - displayBuiltImageData = async (buildStatusResponse) => { + displayBuiltImageData = async buildStatusResponse => { const manifestResponse = await this.dataService.getDeviceManifest( - buildStatusResponse.data.image_folder + '/' + buildStatusResponse.data.image_prefix + '.manifest' + buildStatusResponse.data.image_folder + + '/' + + buildStatusResponse.data.image_prefix + + '.manifest' ); const builtDeviceManifest = manifestResponse.data.split('\n'); let builtImages = []; - buildStatusResponse.data.images.forEach((image) => { + buildStatusResponse.data.images.forEach(image => { builtImages.push({ - url: asu + - buildStatusResponse.data.image_folder + '/' + image.name, + url: asu + buildStatusResponse.data.image_folder + '/' + image.name, type: image.type, }); }); @@ -309,16 +318,21 @@ class Home extends React.Component { } }; - buildImageCheck = async (request_hash) => { + buildImageCheck = async request_hash => { try { if (!this.state.isBuilding) { return; } - const buildStatusResponse = await this.dataService.buildStatusCheck(request_hash); + const buildStatusResponse = await this.dataService.buildStatusCheck( + request_hash + ); if (buildStatusResponse.status === 202) { - if (buildStatusResponse.headers['X-Build-Queue-Position'] !== undefined) { + if ( + buildStatusResponse.headers['X-Build-Queue-Position'] !== undefined + ) { this.setState({ - queuePosition: buildStatusResponse.headers['X-Build-Queue-Position'], + queuePosition: + buildStatusResponse.headers['X-Build-Queue-Position'], }); } await sleep(buildStatusCheckInterval); @@ -346,7 +360,13 @@ class Home extends React.Component { errorDialogMessage: ( <> {e.response.data.error}
- Build logs + + Build logs + ), }); @@ -354,11 +374,7 @@ class Home extends React.Component { this.setState({ isBuilding: false, openErrorDialog: true, - errorDialogMessage: ( - <> - {e.response.data.error} - - ), + errorDialogMessage: <>{e.response.data.error}, }); } else { this.setState({ @@ -375,13 +391,23 @@ class Home extends React.Component { const board = this.state.selection.device.id; const packages = this.state.packages; const target = this.state.selection.device['target']; - const version = this.state.data[this.state.selection.version].name.toLowerCase(); + const version = this.state.data[ + this.state.selection.version + ].name.toLowerCase(); this.setState({ isBuilding: true, builtImages: [], }); - let buildResponse = await this.dataService.buildImage(board, packages, target, version); - if (buildResponse.status === 202 && buildResponse.data['request_hash'] !== undefined) { + let buildResponse = await this.dataService.buildImage( + board, + packages, + target, + version + ); + if ( + buildResponse.status === 202 && + buildResponse.data['request_hash'] !== undefined + ) { const request_hash = buildResponse.data['request_hash']; await sleep(buildStatusCheckInterval); await this.buildImageCheck(request_hash); @@ -398,7 +424,13 @@ class Home extends React.Component { errorDialogMessage: ( <> {e.response.data.error}
- Build logs + + Build logs + ), }); @@ -406,11 +438,7 @@ class Home extends React.Component { this.setState({ isBuilding: false, openErrorDialog: true, - errorDialogMessage: ( - <> - {e.response.data.error} - - ), + errorDialogMessage: <>{e.response.data.error}, }); } else { this.setState({ @@ -426,351 +454,372 @@ class Home extends React.Component { isBuilding: false, configChanged: true, }); - } - + }; + closeErrorDialog = () => { this.setState({ openErrorDialog: false, }); - } + }; render() { - const warning432 = this.state.showDeviceData && this.state.deviceLoaded && - parseInt( - (this.state.selection.device['image_size'] || '').slice(0, -1)) <= 4000 && ( - - - - + const warning432 = this.state.showDeviceData && + this.state.deviceLoaded && + parseInt( + (this.state.selection.device['image_size'] || '').slice(0, -1) + ) <= 4000 && ( + + + + + + + {this.props.t('warning432')} + - - {this.props.t('warning432')} - - - - ); - const notLoaded = ( - - ); + + ); + const notLoaded = ; const onLoad = ( - <> - - {this.props.t('Download OpenWrt firmware for your device!')} - - - {this.props.t( - 'Please use the input below to download firmware for your device!')} - -
- -
- - - {this.props.t('Version')} - - + } + > + {this.state.data.map((version, i) => ( + + {version.name} + + ))} + + + + + {this.state.showSearch && this.state.searchResults.length !== 0 && ( + + + {this.state.searchResults.map(res => { + return ( + this.selectDevice(res)} + > + {res}
} /> + + ); + })} + + + )} + {this.state.searchResults.length === 0 && this.state.showSearch && ( + + + + + + )} + +
+ + {this.state.showDeviceData && !this.state.deviceLoaded && ( + <> +
+ {notLoaded} + + )} + {this.state.showDeviceData && this.state.deviceLoaded && ( + <> + {warning432} +
+ {this.state.showAdvanced && ( + + - { - this.state.data.map((version, i) => ( - - {version.name} - - )) - } - - - - - { - this.state.showSearch && this.state.searchResults.length !== - 0 && ( - - - { - this.state.searchResults.map((res) => { - return ( - this.selectDevice(res)} - > - - {res} - - }/> - - ); - }) - } - - - ) - } - { - (this.state.searchResults.length === 0 && - this.state.showSearch) && ( - - - - - - ) - } - - - - { - this.state.showDeviceData && !this.state.deviceLoaded && ( - <> -
- {notLoaded} - - ) - } - { - this.state.showDeviceData && this.state.deviceLoaded && ( - <> - {warning432} -
- { - this.state.showAdvanced && ( - - - - - - - ) - } - { - this.state.basicInterface === 0 ? ( - - - - {this.props.t('Model')}: {this.state.selection.device['title']}
- {this.props.t('Target')}: {this.state.selection.device['target']}
- {this.props.t('Version')}: {this.state.data[this.state.selection.version].name} ({this.state.data[this.state.selection.version].revision}) -
- - {this.props.t('Downloads')}: - { - this.state.selection.device.images.map((image) => -
- -
- ) - } -   - { - this.state.downloading && ( - - ) - } -
-
-
- ) : ( - - -
- { - this.state.packages.map((package_name, i) => - this.deletePackage( - i)} - label={package_name} - /> - ) - } - Use comma or new line separated array.
Press enter to apply.}> - -
-
-
- { - this.state.configChanged && !this.state.isBuilding && ( - - ) + + +
+
+ )} + {this.state.basicInterface === 0 ? ( + + + + {this.props.t('Model')}:{' '} + {this.state.selection.device['title']}
+ {this.props.t('Target')}:{' '} + {this.state.selection.device['target']}
+ {this.props.t('Version')}:{' '} + {this.state.data[this.state.selection.version].name} ( + {this.state.data[this.state.selection.version].revision}) +
+ + {this.props.t('Downloads')}: + {this.state.selection.device.images.map(image => ( +
+ -   -   - -   - Building image -   - { - this.state.queuePosition !== -1 && ( - (Position in queue: {this.state.queuePosition}) + image.name + .split('-') + .reverse()[0] + .split('.')[0] + } + +
+ ))} +   + {this.state.downloading && } +
+
+
+ ) : ( + + +
+ {this.state.packages.map((package_name, i) => ( + this.deletePackage(i)} + label={package_name} + /> + ))} + + Use comma or new line separated array.
+ Press enter to apply. + + } + > + +
+
+
+ {this.state.configChanged && !this.state.isBuilding && ( + + )} + {this.state.isBuilding && ( + <> + +     + +   Building image   + {this.state.queuePosition !== -1 && ( + + {' '} + (Position in queue: {this.state.queuePosition}){' '} + + )} + ... + + )} + {this.state.builtImages.length > 0 && + !this.state.configChanged && ( + + + {this.props.t('Model')}:{' '} + {this.state.selection.device['title']}
+ {this.props.t('Target')}:{' '} + {this.state.selection.device['target']}
+ {this.props.t('Version')}:{' '} + {this.state.data[this.state.selection.version].name} ( + { + this.state.data[this.state.selection.version] + .revision + } + ) + + } + id="packages-manifest" + > + + Installed Packages ( + {this.state.builtDeviceManifest.length}) + + + +
+ {this.state.builtDeviceManifest.map( + package_name => ( +
{package_name}
) + )} +
+
+
+
+ + {this.props.t('Downloads')}: + {this.state.builtImages.map(image => ( +
+ -
- ) - } -   - { - this.state.downloading && ( - - ) - } -
-
- ) - } -
-
- ) - } - - ) - } - + > + + {image.type} + + + ))} +   + {this.state.downloading && ( + + )} + + + )} + + + )} + + )} + ); return ( - <> - - - {this.props.t('Building image requires computation resources, so we would request you to check if this selection is what you want')} - - } - title={this.props.t( - 'Please confirm that you want to perform this action')} - cancelComponent={this.props.t('Cancel')} - acceptComponent={ - <> - {this.props.t('Build')}   - - } - /> - - - - {this.state.devicesLoaded ? onLoad : notLoaded} - - - + <> + + + {this.props.t( + 'Building image requires computation resources, so we would request you to check if this selection is what you want' + )} + + } + title={this.props.t( + 'Please confirm that you want to perform this action' + )} + cancelComponent={this.props.t('Cancel')} + acceptComponent={ + <> + {this.props.t('Build')}   + + } + /> + + + + {this.state.devicesLoaded ? onLoad : notLoaded} + + + ); } } Home.propTypes = { - t: PropTypes.func + t: PropTypes.func, }; export default withTranslation()(Home); diff --git a/src/containers/not-found/not-found.js b/src/containers/not-found/not-found.js index 523d21e..6540738 100644 --- a/src/containers/not-found/not-found.js +++ b/src/containers/not-found/not-found.js @@ -1,6 +1,6 @@ import React from 'react'; -import {Container, Paper, Typography} from '@material-ui/core'; -import {makeStyles} from '@material-ui/core/styles'; +import { Container, Paper, Typography } from '@material-ui/core'; +import { makeStyles } from '@material-ui/core/styles'; const page404Styles = makeStyles(theme => ({ root: { @@ -11,14 +11,12 @@ const page404Styles = makeStyles(theme => ({ export default function NotFound() { var classes = page404Styles(); return ( - + - 404 Page Not Found - - - Please head to the home. + 404 Page Not Found + Please head to the home. ); diff --git a/src/i18n.js b/src/i18n.js index 01c93bf..4a3454f 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,5 +1,5 @@ import i18n from 'i18next'; -import {initReactI18next} from 'react-i18next'; +import { initReactI18next } from 'react-i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; import translationEN from './locales/en.json'; import translationDE from './locales/de.json'; @@ -13,7 +13,8 @@ const resources = { }, }; -i18n.use(LanguageDetector) +i18n + .use(LanguageDetector) .use(initReactI18next) .init({ resources, diff --git a/src/services/data.js b/src/services/data.js index 0f8e469..4058765 100644 --- a/src/services/data.js +++ b/src/services/data.js @@ -1,32 +1,44 @@ import axios from 'axios'; -const base_downloads = 'https://cors-anywhere.herokuapp.com/https://aparcar.stephen304.com/download/json-demo/openwrt/'; -const base_api = 'https://cors-anywhere.herokuapp.com/https://aparcar.stephen304.com/api/'; +const base_downloads = + 'https://cors-anywhere.herokuapp.com/https://aparcar.stephen304.com/download/json-demo/openwrt/'; +const base_api = + 'https://cors-anywhere.herokuapp.com/https://aparcar.stephen304.com/api/'; class DataService { - getVersions = () => axios.get(base_downloads + 'versions.json'); - - getOverview = (path) => axios.get(base_downloads + path + '/overview.json'); - getDeviceData = (device_path) => axios.get(base_downloads + device_path); + getOverview = path => axios.get(base_downloads + path + '/overview.json'); - getDevicePackages = (version, target, profile) => axios.get(base_api + 'packages_image?distro=openwrt&version=' + version.toLowerCase() + '&target=' + target + '&profile=' + profile.toLowerCase()); + getDeviceData = device_path => axios.get(base_downloads + device_path); - buildImage = (board, packages, target, version) => axios.post(base_api + 'build-request', { - profile: board, - board, - defaults: '', - distro: 'openwrt', - packages, - target, - version, - }); + getDevicePackages = (version, target, profile) => + axios.get( + base_api + + 'packages_image?distro=openwrt&version=' + + version.toLowerCase() + + '&target=' + + target + + '&profile=' + + profile.toLowerCase() + ); - buildStatusCheck = (request_hash) => axios.get(base_api + 'build-request/' + request_hash); + buildImage = (board, packages, target, version) => + axios.post(base_api + 'build-request', { + profile: board, + board, + defaults: '', + distro: 'openwrt', + packages, + target, + version, + }); - getFiles = (files_url) => axios.get('https://chef.libremesh.org' + files_url).then(res => res.data); + buildStatusCheck = request_hash => + axios.get(base_api + 'build-request/' + request_hash); + getFiles = files_url => + axios.get('https://chef.libremesh.org' + files_url).then(res => res.data); } export default DataService; diff --git a/yarn.lock b/yarn.lock index 9ec86ae..33f7b6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1375,6 +1375,11 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/prop-types@*": version "15.7.1" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" @@ -1777,6 +1782,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" + integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== + array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -1820,7 +1830,7 @@ array-reduce@~0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= @@ -2528,7 +2538,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2974,6 +2984,15 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3770,6 +3789,13 @@ eslint-plugin-jsx-a11y@6.2.1: has "^1.0.3" jsx-ast-utils "^2.0.1" +eslint-plugin-prettier@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#8695188f95daa93b0dc54b249347ca3b79c4686d" + integrity sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-plugin-react-hooks@^1.5.0: version "1.6.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.1.tgz#3c66a5515ea3e0a221ffc5d4e75c971c217b1a4c" @@ -4011,6 +4037,19 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -4148,6 +4187,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^2.0.2: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -4308,6 +4352,14 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -4540,6 +4592,16 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= +get-stdin@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -4999,6 +5061,23 @@ humanize-url@^1.0.0: normalize-url "^1.0.0" strip-url-auth "^1.0.0" +husky@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.5.tgz#d7db27c346645a8dc52df02aa534a377ad7925e0" + integrity sha512-cKd09Jy9cDyNIvAdN2QQAP/oA21sle4FWXjIMDttailpLAYZuBE7WaPmhrkj+afS8Sj9isghAtFvWSQ0JiwOHg== + dependencies: + chalk "^2.4.2" + cosmiconfig "^5.2.1" + execa "^1.0.0" + get-stdin "^7.0.0" + is-ci "^2.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + read-pkg "^5.1.1" + run-node "^1.0.0" + slash "^3.0.0" + hyphenate-style-name@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" @@ -5059,7 +5138,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: +ignore@^3.3.5, ignore@^3.3.7: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== @@ -6346,6 +6425,11 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -6415,6 +6499,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -6817,6 +6908,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mri@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -6845,6 +6941,16 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== + dependencies: + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -7042,7 +7148,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7263,6 +7369,11 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opencollective-postinstall@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + opn@5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" @@ -7387,6 +7498,13 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -7401,6 +7519,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" @@ -7476,6 +7601,16 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -7518,6 +7653,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -7644,6 +7784,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pkg-up@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" @@ -7651,6 +7798,13 @@ pkg-up@2.0.0: dependencies: find-up "^2.1.0" +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -8343,6 +8497,18 @@ prepend-http@^1.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" + integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== + pretty-bytes@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.2.0.tgz#96c92c6e95a0b35059253fb33c03e260d40f5a1f" @@ -8366,6 +8532,18 @@ pretty-format@^24.8.0: ansi-styles "^3.2.0" react-is "^16.8.4" +pretty-quick@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-1.11.1.tgz#462ffa2b93d24c05b7a0c3a001e08601a0c55ee4" + integrity sha512-kSXCkcETfak7EQXz6WOkCeCqpbC4GIzrN/vaneTGMP/fAtD8NerA9bPhCUqHAks1geo7biZNl5uEMPceeneLuA== + dependencies: + chalk "^2.3.0" + execa "^0.8.0" + find-up "^2.1.0" + ignore "^3.3.7" + mri "^1.1.0" + multimatch "^3.0.0" + private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -8806,6 +8984,16 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -9136,6 +9324,11 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" +run-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -9258,6 +9451,11 @@ selfsigned@^1.9.1: dependencies: node-forge "0.7.5" +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.5.1, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" @@ -9441,6 +9639,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -10190,6 +10393,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"