chore(v2): cleanup & update deps (#1505)

* chore(v2): rename useBaseUrl -> withBaseUrl & update deps

* nits
This commit is contained in:
Endi 2019-05-22 19:20:53 +07:00 committed by GitHub
parent 3fc3644875
commit aa157969cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 159 additions and 206 deletions

View file

@ -21,7 +21,7 @@
"tsc": "lerna run tsc --no-private" "tsc": "lerna run tsc --no-private"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.4.4", "@babel/core": "^7.4.5",
"@babel/preset-typescript": "^7.3.3", "@babel/preset-typescript": "^7.3.3",
"@types/chalk": "^2.2.0", "@types/chalk": "^2.2.0",
"@types/escape-string-regexp": "^1.0.0", "@types/escape-string-regexp": "^1.0.0",

View file

@ -10,13 +10,13 @@ import classnames from 'classnames';
import Link from '@docusaurus/Link'; import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import withBaseUrl from '@docusaurus/withBaseUrl';
function Footer() { function Footer() {
const context = useDocusaurusContext(); const context = useDocusaurusContext();
const {siteConfig = {}} = context; const {siteConfig = {}} = context;
const { const {
baseUrl,
themeConfig: {footer}, themeConfig: {footer},
} = siteConfig; } = siteConfig;
@ -55,7 +55,7 @@ function Footer() {
href: item.href, href: item.href,
} }
: { : {
to: `${baseUrl}${item.to}`, to: withBaseUrl(item.to),
})}> })}>
{item.label} {item.label}
</Link> </Link>

View file

@ -6,23 +6,24 @@
*/ */
import React from 'react'; import React from 'react';
import Head from '@docusaurus/Head'; // eslint-disable-line import Head from '@docusaurus/Head';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; // eslint-disable-line import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Navbar from '@theme/Navbar'; // eslint-disable-line import withBaseUrl from '@docusaurus/withBaseUrl';
import Footer from '@theme/Footer'; // eslint-disable-line import Navbar from '@theme/Navbar';
import Footer from '@theme/Footer';
import './styles.css'; import './styles.css';
function Layout(props) { function Layout(props) {
const context = useDocusaurusContext(); const context = useDocusaurusContext();
const {siteConfig = {}} = context; const {siteConfig = {}} = context;
const {baseUrl, favicon, tagline, title: defaultTitle} = siteConfig; const {favicon, tagline, title: defaultTitle} = siteConfig;
const {children, title, noFooter, description} = props; const {children, title, noFooter, description} = props;
return ( return (
<React.Fragment> <React.Fragment>
<Head defaultTitle={`${defaultTitle} · ${tagline}`}> <Head defaultTitle={`${defaultTitle} · ${tagline}`}>
{title && <title>{`${title} · ${tagline}`}</title>} {title && <title>{`${title} · ${tagline}`}</title>}
{favicon && <link rel="shortcut icon" href={baseUrl + favicon} />} {favicon && <link rel="shortcut icon" href={withBaseUrl(favicon)} />}
{description && <meta name="description" content={description} />} {description && <meta name="description" content={description} />}
{description && ( {description && (
<meta property="og:description" content={description} /> <meta property="og:description" content={description} />

View file

@ -9,26 +9,26 @@ import React from 'react';
import Link from '@docusaurus/Link'; import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import withBaseUrl from '@docusaurus/withBaseUrl';
import SearchBar from '@theme/SearchBar'; import SearchBar from '@theme/SearchBar';
function NavLink(props) { function NavLink(props) {
const {baseUrl, ...originalProps} = props;
return ( return (
<Link <Link
className="navbar__link" className="navbar__link"
{...originalProps} {...props}
{...(originalProps.href {...(props.href
? { ? {
target: '_blank', target: '_blank',
rel: 'noopener noreferrer', rel: 'noopener noreferrer',
href: originalProps.href, href: props.href,
} }
: { : {
activeClassName: 'navbar__link--active', activeClassName: 'navbar__link--active',
to: `${baseUrl}${originalProps.to}`, to: withBaseUrl(props.to),
})}> })}>
{originalProps.label} {props.label}
</Link> </Link>
); );
} }
@ -42,15 +42,6 @@ function Navbar() {
} = siteConfig; } = siteConfig;
const {title, logo, links} = navbar; const {title, logo, links} = navbar;
const getUrl = url => {
const externalRegex = /^(https?:|\/\/)/;
const internalRegex = /^\/(?!\/)/;
if (externalRegex.test(url) || internalRegex.test(url)) {
return url;
}
return baseUrl + url;
};
return ( return (
<nav className="navbar navbar--light navbar--fixed-top"> <nav className="navbar navbar--light navbar--fixed-top">
<div className="navbar__inner"> <div className="navbar__inner">
@ -59,7 +50,7 @@ function Navbar() {
{logo != null && ( {logo != null && (
<img <img
className="navbar__logo" className="navbar__logo"
src={getUrl(logo.src)} src={withBaseUrl(logo.src)}
alt={logo.alt} alt={logo.alt}
/> />
)} )}
@ -69,7 +60,7 @@ function Navbar() {
.filter(linkItem => linkItem.position !== 'right') .filter(linkItem => linkItem.position !== 'right')
.map((linkItem, i) => ( .map((linkItem, i) => (
<div className="navbar__item" key={i}> <div className="navbar__item" key={i}>
<NavLink baseUrl={baseUrl} {...linkItem} /> <NavLink {...linkItem} />
</div> </div>
))} ))}
</div> </div>
@ -78,7 +69,7 @@ function Navbar() {
.filter(linkItem => linkItem.position === 'right') .filter(linkItem => linkItem.position === 'right')
.map((linkItem, i) => ( .map((linkItem, i) => (
<div className="navbar__item" key={i}> <div className="navbar__item" key={i}>
<NavLink baseUrl={baseUrl} {...linkItem} /> <NavLink {...linkItem} />
</div> </div>
))} ))}
{algolia && ( {algolia && (

View file

@ -29,9 +29,9 @@
"url": "https://github.com/facebook/Docusaurus/issues" "url": "https://github.com/facebook/Docusaurus/issues"
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.4.0", "@babel/core": "^7.4.5",
"@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.4.2", "@babel/preset-env": "^7.4.5",
"@babel/preset-react": "^7.0.0", "@babel/preset-react": "^7.0.0",
"@docusaurus/utils": "^2.0.0-alpha.16", "@docusaurus/utils": "^2.0.0-alpha.16",
"babel-loader": "^8.0.0", "babel-loader": "^8.0.0",
@ -43,7 +43,7 @@
"clean-webpack-plugin": "^2.0.1", "clean-webpack-plugin": "^2.0.1",
"commander": "^2.16.0", "commander": "^2.16.0",
"copy-webpack-plugin": "^5.0.3", "copy-webpack-plugin": "^5.0.3",
"css-loader": "^1.0.0", "css-loader": "^2.1.1",
"ejs": "^2.6.1", "ejs": "^2.6.1",
"envinfo": "^7.2.0", "envinfo": "^7.2.0",
"express": "^4.16.4", "express": "^4.16.4",

View file

@ -1,52 +0,0 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import useBaseUrl from '../useBaseUrl';
import useDocusaurusContext from '../useDocusaurusContext';
jest.mock('../useDocusaurusContext', () => jest.fn(), {virtual: true});
const mockedContext = <jest.Mock>useDocusaurusContext;
describe('useBaseURL', () => {
test('empty base URL', () => {
mockedContext.mockImplementation(() => ({
siteConfig: {
baseUrl: '/',
},
}));
expect(useBaseUrl('hello')).toEqual('/hello');
expect(useBaseUrl('/hello')).toEqual('/hello');
expect(useBaseUrl('hello/')).toEqual('/hello/');
expect(useBaseUrl('/hello/')).toEqual('/hello/');
expect(useBaseUrl('hello/byebye')).toEqual('/hello/byebye');
expect(useBaseUrl('/hello/byebye')).toEqual('/hello/byebye');
expect(useBaseUrl('hello/byebye/')).toEqual('/hello/byebye/');
expect(useBaseUrl('/hello/byebye/')).toEqual('/hello/byebye/');
expect(useBaseUrl('https://github.com')).toEqual('https://github.com');
expect(useBaseUrl('//reactjs.org')).toEqual('//reactjs.org');
});
test('non-empty base URL', () => {
mockedContext.mockImplementation(() => ({
siteConfig: {
baseUrl: '/docusaurus/',
},
}));
expect(useBaseUrl('hello')).toEqual('/docusaurus/hello');
expect(useBaseUrl('/hello')).toEqual('/docusaurus/hello');
expect(useBaseUrl('hello/')).toEqual('/docusaurus/hello/');
expect(useBaseUrl('/hello/')).toEqual('/docusaurus/hello/');
expect(useBaseUrl('hello/byebye')).toEqual('/docusaurus/hello/byebye');
expect(useBaseUrl('/hello/byebye')).toEqual('/docusaurus/hello/byebye');
expect(useBaseUrl('hello/byebye/')).toEqual('/docusaurus/hello/byebye/');
expect(useBaseUrl('/hello/byebye/')).toEqual('/docusaurus/hello/byebye/');
expect(useBaseUrl('https://github.com')).toEqual('https://github.com');
expect(useBaseUrl('//reactjs.org')).toEqual('//reactjs.org');
});
});

View file

@ -0,0 +1,52 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import withBaseUrl from '../withBaseUrl';
import useDocusaurusContext from '../useDocusaurusContext';
jest.mock('../useDocusaurusContext', () => jest.fn(), {virtual: true});
const mockedContext = <jest.Mock>useDocusaurusContext;
describe('withBaseUrl', () => {
test('empty base URL', () => {
mockedContext.mockImplementation(() => ({
siteConfig: {
baseUrl: '/',
},
}));
expect(withBaseUrl('hello')).toEqual('/hello');
expect(withBaseUrl('/hello')).toEqual('/hello');
expect(withBaseUrl('hello/')).toEqual('/hello/');
expect(withBaseUrl('/hello/')).toEqual('/hello/');
expect(withBaseUrl('hello/byebye')).toEqual('/hello/byebye');
expect(withBaseUrl('/hello/byebye')).toEqual('/hello/byebye');
expect(withBaseUrl('hello/byebye/')).toEqual('/hello/byebye/');
expect(withBaseUrl('/hello/byebye/')).toEqual('/hello/byebye/');
expect(withBaseUrl('https://github.com')).toEqual('https://github.com');
expect(withBaseUrl('//reactjs.org')).toEqual('//reactjs.org');
});
test('non-empty base URL', () => {
mockedContext.mockImplementation(() => ({
siteConfig: {
baseUrl: '/docusaurus/',
},
}));
expect(withBaseUrl('hello')).toEqual('/docusaurus/hello');
expect(withBaseUrl('/hello')).toEqual('/docusaurus/hello');
expect(withBaseUrl('hello/')).toEqual('/docusaurus/hello/');
expect(withBaseUrl('/hello/')).toEqual('/docusaurus/hello/');
expect(withBaseUrl('hello/byebye')).toEqual('/docusaurus/hello/byebye');
expect(withBaseUrl('/hello/byebye')).toEqual('/docusaurus/hello/byebye');
expect(withBaseUrl('hello/byebye/')).toEqual('/docusaurus/hello/byebye/');
expect(withBaseUrl('/hello/byebye/')).toEqual('/docusaurus/hello/byebye/');
expect(withBaseUrl('https://github.com')).toEqual('https://github.com');
expect(withBaseUrl('//reactjs.org')).toEqual('//reactjs.org');
});
});

View file

@ -7,14 +7,7 @@
import useDocusaurusContext from './useDocusaurusContext'; import useDocusaurusContext from './useDocusaurusContext';
export function withBaseUrl(baseUrl: string, url: string): string { function withBaseUrl(url: string): string {
if (url.startsWith('/')) {
return baseUrl + url.slice(1);
}
return baseUrl + url;
}
function useBaseUrl(url: string): string {
const {siteConfig} = useDocusaurusContext(); const {siteConfig} = useDocusaurusContext();
const {baseUrl = '/'} = siteConfig || {}; const {baseUrl = '/'} = siteConfig || {};
@ -22,7 +15,10 @@ function useBaseUrl(url: string): string {
if (externalRegex.test(url)) { if (externalRegex.test(url)) {
return url; return url;
} }
return withBaseUrl(baseUrl, url); if (url.startsWith('/')) {
return baseUrl + url.slice(1);
}
return baseUrl + url;
} }
export default useBaseUrl; export default withBaseUrl;

View file

@ -8,17 +8,18 @@
import React from 'react'; import React from 'react';
import Head from '@docusaurus/Head'; import Head from '@docusaurus/Head';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import withBaseUrl from '@docusaurus/withBaseUrl';
function Layout(props) { function Layout(props) {
const context = useDocusaurusContext(); const context = useDocusaurusContext();
const {siteConfig = {}} = context; const {siteConfig = {}} = context;
const {baseUrl, favicon, tagline, title: defaultTitle} = siteConfig; const {favicon, tagline, title: defaultTitle} = siteConfig;
const {children, title, description} = props; const {children, title, description} = props;
return ( return (
<React.Fragment> <React.Fragment>
<Head defaultTitle={`${defaultTitle} · ${tagline}`}> <Head defaultTitle={`${defaultTitle} · ${tagline}`}>
{title && <title>{`${title} · ${tagline}`}</title>} {title && <title>{`${title} · ${tagline}`}</title>}
{favicon && <link rel="shortcut icon" href={baseUrl + favicon} />} {favicon && <link rel="shortcut icon" href={withBaseUrl(favicon)} />}
{description && <meta name="description" content={description} />} {description && <meta name="description" content={description} />}
{description && ( {description && (
<meta property="og:description" content={description} /> <meta property="og:description" content={description} />

View file

@ -118,9 +118,8 @@ export function createBaseConfig(
test: CSS_REGEX, test: CSS_REGEX,
exclude: CSS_MODULE_REGEX, exclude: CSS_MODULE_REGEX,
use: getStyleLoaders(isServer, { use: getStyleLoaders(isServer, {
importLoaders: 1, importLoaders: 0,
sourceMap: !isProd, sourceMap: !isProd,
minimize: true,
}), }),
}, },
// Adds support for CSS Modules (https://github.com/css-modules/css-modules) // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
@ -129,10 +128,10 @@ export function createBaseConfig(
test: CSS_MODULE_REGEX, test: CSS_MODULE_REGEX,
use: getStyleLoaders(isServer, { use: getStyleLoaders(isServer, {
modules: true, modules: true,
importLoaders: 1, importLoaders: 0,
localIdentName: `[local]_[hash:base64:8]`, localIdentName: `[local]_[hash:base64:8]`,
sourceMap: !isProd, sourceMap: !isProd,
minimize: true, exportOnlyLocals: isServer,
}), }),
}, },
], ],

View file

@ -22,7 +22,7 @@ export function getStyleLoaders(
return [ return [
cssOptions.modules cssOptions.modules
? { ? {
loader: require.resolve('css-loader/locals'), loader: require.resolve('css-loader'),
options: cssOptions, options: cssOptions,
} }
: require.resolve('null-loader'), : require.resolve('null-loader'),

View file

@ -8,7 +8,7 @@
import React from 'react'; import React from 'react';
import Link from '@docusaurus/Link'; import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl'; import withBaseUrl from '@docusaurus/withBaseUrl';
import Layout from '@theme/Layout'; import Layout from '@theme/Layout';
@ -72,7 +72,7 @@ function Home() {
<img <img
alt="Docusaurus with Keytar" alt="Docusaurus with Keytar"
className={styles['index-hero-logo']} className={styles['index-hero-logo']}
src={useBaseUrl('img/docusaurus_keytar.svg')} src={withBaseUrl('img/docusaurus_keytar.svg')}
/> />
{siteConfig.title} makes it easy to maintain{' '} {siteConfig.title} makes it easy to maintain{' '}
<span className={styles['index-hero-project-keywords']}> <span className={styles['index-hero-project-keywords']}>
@ -83,7 +83,7 @@ function Home() {
<div className={styles['index-ctas']}> <div className={styles['index-ctas']}>
<Link <Link
className={styles['index-ctas-get-started-button']} className={styles['index-ctas-get-started-button']}
to={useBaseUrl('docs/introduction')}> to={withBaseUrl('docs/introduction')}>
Get Started Get Started
</Link> </Link>
<span className={styles['index-ctas-github-button']}> <span className={styles['index-ctas-github-button']}>
@ -106,7 +106,7 @@ function Home() {
Docusaurus 2 Docusaurus 2
</a> </a>
, contribute to its roadmap by suggesting features or giving{' '} , contribute to its roadmap by suggesting features or giving{' '}
<Link to={useBaseUrl('/feedback')}>feedback here</Link>! <Link to={withBaseUrl('/feedback')}>feedback here</Link>!
</div> </div>
</div> </div>
<div className={styles.section}> <div className={styles.section}>
@ -116,7 +116,7 @@ function Home() {
<img <img
className={styles.featureImage} className={styles.featureImage}
alt={'Powered by Markdown'} alt={'Powered by Markdown'}
src={useBaseUrl('img/undraw_typewriter.svg')} src={withBaseUrl('img/undraw_typewriter.svg')}
/> />
<h3>Powered by Markdown</h3> <h3>Powered by Markdown</h3>
<p className="padding-horiz--md"> <p className="padding-horiz--md">
@ -129,7 +129,7 @@ function Home() {
<img <img
alt={'Built Using React'} alt={'Built Using React'}
className={styles.featureImage} className={styles.featureImage}
src={useBaseUrl('img/undraw_react.svg')} src={withBaseUrl('img/undraw_react.svg')}
/> />
<h3>Built Using React</h3> <h3>Built Using React</h3>
<p className="padding-horiz--md"> <p className="padding-horiz--md">
@ -142,7 +142,7 @@ function Home() {
<img <img
alt={'Ready for Translations'} alt={'Ready for Translations'}
className={styles.featureImage} className={styles.featureImage}
src={useBaseUrl('img/undraw_around_the_world.svg')} src={withBaseUrl('img/undraw_around_the_world.svg')}
/> />
<h3>Ready for Translations</h3> <h3>Ready for Translations</h3>
<p className="padding-horiz--md"> <p className="padding-horiz--md">
@ -158,7 +158,7 @@ function Home() {
<img <img
alt={'Document Versioning'} alt={'Document Versioning'}
className={styles.featureImage} className={styles.featureImage}
src={useBaseUrl('img/undraw_version_control.svg')} src={withBaseUrl('img/undraw_version_control.svg')}
/> />
<h3>Document Versioning</h3> <h3>Document Versioning</h3>
<p className="padding-horiz--md"> <p className="padding-horiz--md">
@ -171,7 +171,7 @@ function Home() {
<img <img
alt={'Document Search'} alt={'Document Search'}
className={styles.featureImage} className={styles.featureImage}
src={useBaseUrl('img/undraw_algolia.svg')} src={withBaseUrl('img/undraw_algolia.svg')}
/> />
<h3>Document Search</h3> <h3>Document Search</h3>
<p className="padding-horiz--md"> <p className="padding-horiz--md">
@ -196,7 +196,7 @@ function Home() {
<img <img
alt={quote.name} alt={quote.name}
className="avatar__photo avatar__photo--xl" className="avatar__photo avatar__photo--xl"
src={useBaseUrl(quote.thumbnail)} src={withBaseUrl(quote.thumbnail)}
/> />
<div className="avatar__intro"> <div className="avatar__intro">
<h4 className="avatar__name">{quote.name}</h4> <h4 className="avatar__name">{quote.name}</h4>

159
yarn.lock
View file

@ -16,7 +16,7 @@
dependencies: dependencies:
"@babel/highlight" "7.0.0-beta.44" "@babel/highlight" "7.0.0-beta.44"
"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.2.2", "@babel/core@^7.4.0", "@babel/core@^7.4.4": "@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.2.2", "@babel/core@^7.4.5":
version "7.4.5" version "7.4.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==
@ -678,7 +678,7 @@
core-js "^2.6.5" core-js "^2.6.5"
regenerator-runtime "^0.13.2" regenerator-runtime "^0.13.2"
"@babel/preset-env@^7.0.0", "@babel/preset-env@^7.4.2": "@babel/preset-env@^7.0.0", "@babel/preset-env@^7.4.5":
version "7.4.5" version "7.4.5"
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58"
integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==
@ -2867,7 +2867,7 @@ axobject-query@^2.0.2:
dependencies: dependencies:
ast-types-flow "0.0.7" ast-types-flow "0.0.7"
babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: babel-code-frame@6.26.0, babel-code-frame@^6.22.0:
version "6.26.0" version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
@ -3511,7 +3511,7 @@ camelcase@^4.1.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
camelcase@^5.0.0: camelcase@^5.0.0, camelcase@^5.2.0:
version "5.3.1" version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
@ -4396,23 +4396,22 @@ css-color-names@0.0.4:
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
css-loader@^1.0.0: css-loader@^2.1.1:
version "1.0.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea"
integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==
dependencies: dependencies:
babel-code-frame "^6.26.0" camelcase "^5.2.0"
css-selector-tokenizer "^0.7.0" icss-utils "^4.1.0"
icss-utils "^2.1.0" loader-utils "^1.2.3"
loader-utils "^1.0.2" normalize-path "^3.0.0"
lodash "^4.17.11" postcss "^7.0.14"
postcss "^6.0.23" postcss-modules-extract-imports "^2.0.0"
postcss-modules-extract-imports "^1.2.0" postcss-modules-local-by-default "^2.0.6"
postcss-modules-local-by-default "^1.2.0" postcss-modules-scope "^2.1.0"
postcss-modules-scope "^1.1.0" postcss-modules-values "^2.0.0"
postcss-modules-values "^1.3.0"
postcss-value-parser "^3.3.0" postcss-value-parser "^3.3.0"
source-list-map "^2.0.0" schema-utils "^1.0.0"
css-select-base-adapter@^0.1.1: css-select-base-adapter@^0.1.1:
version "0.1.1" version "0.1.1"
@ -4439,15 +4438,6 @@ css-select@^2.0.0:
domutils "^1.7.0" domutils "^1.7.0"
nth-check "^1.0.2" nth-check "^1.0.2"
css-selector-tokenizer@^0.7.0:
version "0.7.1"
resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
dependencies:
cssesc "^0.1.0"
fastparse "^1.1.1"
regexpu-core "^1.0.0"
css-tree@1.0.0-alpha.28: css-tree@1.0.0-alpha.28:
version "1.0.0-alpha.28" version "1.0.0-alpha.28"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
@ -4484,10 +4474,10 @@ css@2.2.4:
source-map-resolve "^0.5.2" source-map-resolve "^0.5.2"
urix "^0.1.0" urix "^0.1.0"
cssesc@^0.1.0: cssesc@^3.0.0:
version "0.1.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssnano@^3.10.0: cssnano@^3.10.0:
version "3.10.0" version "3.10.0"
@ -5888,11 +5878,6 @@ fast-levenshtein@~2.0.4:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
fastparse@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
faye-websocket@^0.10.0, faye-websocket@~0.10.0: faye-websocket@^0.10.0, faye-websocket@~0.10.0:
version "0.10.0" version "0.10.0"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
@ -7182,12 +7167,12 @@ icss-replace-symbols@^1.1.0:
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
icss-utils@^2.1.0: icss-utils@^4.1.0:
version "2.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.0.tgz#339dbbffb9f8729a243b701e1c29d4cc58c52f0e"
integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= integrity sha512-3DEun4VOeMvSczifM3F2cKQrDQ5Pj6WKhkOq6HD4QTnDUAq8MQRxy5TX6Sy1iY6WPBe4gQ3p5vTECjbIkglkkQ==
dependencies: dependencies:
postcss "^6.0.1" postcss "^7.0.14"
ieee754@^1.1.4: ieee754@^1.1.4:
version "1.1.13" version "1.1.13"
@ -10886,36 +10871,37 @@ postcss-minify-selectors@^2.0.4:
postcss "^5.0.14" postcss "^5.0.14"
postcss-selector-parser "^2.0.0" postcss-selector-parser "^2.0.0"
postcss-modules-extract-imports@^1.2.0: postcss-modules-extract-imports@^2.0.0:
version "1.2.1" version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
dependencies: dependencies:
postcss "^6.0.1" postcss "^7.0.5"
postcss-modules-local-by-default@^1.2.0: postcss-modules-local-by-default@^2.0.6:
version "1.2.0" version "2.0.6"
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63"
integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==
dependencies: dependencies:
css-selector-tokenizer "^0.7.0" postcss "^7.0.6"
postcss "^6.0.1" postcss-selector-parser "^6.0.0"
postcss-value-parser "^3.3.1"
postcss-modules-scope@^1.1.0: postcss-modules-scope@^2.1.0:
version "1.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb"
integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==
dependencies: dependencies:
css-selector-tokenizer "^0.7.0" postcss "^7.0.6"
postcss "^6.0.1" postcss-selector-parser "^6.0.0"
postcss-modules-values@^1.3.0: postcss-modules-values@^2.0.0:
version "1.3.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64"
integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==
dependencies: dependencies:
icss-replace-symbols "^1.1.0" icss-replace-symbols "^1.1.0"
postcss "^6.0.1" postcss "^7.0.6"
postcss-normalize-charset@^1.1.0: postcss-normalize-charset@^1.1.0:
version "1.1.1" version "1.1.1"
@ -10975,6 +10961,15 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
indexes-of "^1.0.1" indexes-of "^1.0.1"
uniq "^1.0.1" uniq "^1.0.1"
postcss-selector-parser@^6.0.0:
version "6.0.2"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
dependencies:
cssesc "^3.0.0"
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss-svgo@^2.1.1: postcss-svgo@^2.1.1:
version "2.1.6" version "2.1.6"
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
@ -11018,16 +11013,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
source-map "^0.5.6" source-map "^0.5.6"
supports-color "^3.2.3" supports-color "^3.2.3"
postcss@^6.0.1, postcss@^6.0.23: postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6:
version "6.0.23"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
dependencies:
chalk "^2.4.1"
source-map "^0.6.1"
supports-color "^5.4.0"
postcss@^7.0.1, postcss@^7.0.14:
version "7.0.16" version "7.0.16"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2"
integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==
@ -11822,7 +11808,7 @@ regenerate-unicode-properties@^8.0.2:
dependencies: dependencies:
regenerate "^1.4.0" regenerate "^1.4.0"
regenerate@^1.2.1, regenerate@^1.4.0: regenerate@^1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
@ -11857,15 +11843,6 @@ regexpp@^1.0.1:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
dependencies:
regenerate "^1.2.1"
regjsgen "^0.2.0"
regjsparser "^0.1.4"
regexpu-core@^4.5.4: regexpu-core@^4.5.4:
version "4.5.4" version "4.5.4"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
@ -11878,23 +11855,11 @@ regexpu-core@^4.5.4:
unicode-match-property-ecmascript "^1.0.4" unicode-match-property-ecmascript "^1.0.4"
unicode-match-property-value-ecmascript "^1.1.0" unicode-match-property-value-ecmascript "^1.1.0"
regjsgen@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
regjsgen@^0.5.0: regjsgen@^0.5.0:
version "0.5.0" version "0.5.0"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==
regjsparser@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
dependencies:
jsesc "~0.5.0"
regjsparser@^0.6.0: regjsparser@^0.6.0:
version "0.6.0" version "0.6.0"
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
@ -13162,7 +13127,7 @@ supports-color@^3.2.3:
dependencies: dependencies:
has-flag "^1.0.0" has-flag "^1.0.0"
supports-color@^5.3.0, supports-color@^5.4.0: supports-color@^5.3.0:
version "5.5.0" version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==