diff --git a/package.json b/package.json index 60ebefcc..b62c6f25 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "helmet": "^3.3.0", "lodash": "^4.17.4", "qs": "^6.3.0", + "path-to-regexp": "^1.5.3", "react": "^15.4.2", "react-dom": "^15.4.2", "react-helmet": "^4.0.0", diff --git a/src/Routes.js b/src/Routes.js index c5be2328..17e2b086 100644 --- a/src/Routes.js +++ b/src/Routes.js @@ -1,31 +1,8 @@ import React, { PropTypes } from 'react'; import { Match, Miss, Redirect } from 'react-router'; -import { - AuthenticationPage, - CheckoutPage, - ConversationPage, - ContactDetailsPage, - EditProfilePage, - InboxPage, - LandingPage, - ListingPage, - ManageListingsPage, - NotFoundPage, - NotificationSettingsPage, - OrderPage, - PasswordChangePage, - PasswordForgottenPage, - PaymentMethodsPage, - PayoutPreferencesPage, - ProfilePage, - SalesConversationPage, - SearchPage, - SecurityPage, -} from './containers'; - -// This is only used for testing that redirects work correct in the -// client and when rendering in the server. -const RedirectLandingPage = () => ; +import { RouterProvider, RoutesProvider } from './components'; +import { NotFoundPage } from './containers'; +import routesConfiguration, { flattenRoutes, pathByRouteName } from './routesConfiguration'; // Fake authentication module // An example from react-router v4 repository @@ -43,152 +20,63 @@ export const fakeAuth = { }, }; -/* eslint-disable react/prop-types, arrow-body-style */ -// User must be authenticated before he can see certain pages -export const MatchWhenAuthorized = ({ component: Component, ...rest }) => ( - { - return fakeAuth.isAuthenticated - ? - : ; - }} - /> -); -/* eslint-enable react/prop-types, arrow-body-style */ +// wrap `Match` and use this everywhere instead, then when +// sub routes are added to any route it'll work +// This will also check if route needs authentication. +/* eslint-disable arrow-body-style */ +const MatchWithSubRoutes = props => { + const { auth, component: Component, ...rest } = props; + const canShowComponent = !auth || (auth && fakeAuth.isAuthenticated); + return ( + { + return canShowComponent + ? + : ( + + ); + }} + /> + ); +}; +/* eslint-enable arrow-body-style */ -class Routes extends React.Component { - getChildContext() { - return { router: this.props.router }; - } +MatchWithSubRoutes.defaultProps = { auth: false, exactly: false }; - render() { - return ( -
- +const { any, array, bool, func, node, oneOfType, string } = PropTypes; - {/* Search view */} - +MatchWithSubRoutes.propTypes = { + pattern: string.isRequired, + auth: bool, + exactly: bool, + name: string.isRequired, + component: oneOfType([ func, node ]).isRequired, +}; - {/* Listing view */} - - +const Routes = props => { + const flattenedRoutes = flattenRoutes(props.routes); + const matches = flattenedRoutes.map(route => ); - {/* profile / storefront view */} - - - + return ( + + +
+ {matches} + +
+
+
+ ); +}; - {/* checkout */} - - - {/* Login and signup */} - } - /> - } - /> - - {/* Password forgotten */} - - - {/* Change password */} - - - {/* Inbox and filtered views */} - } - /> - } - /> - } - /> - - {/* Order/Conversation and mobile views */} - - } - /> - } - /> - } - /> - } - /> - } - /> - } - /> - - {/* Manage listings */} - - - {/* Account settings */} - } - /> - - - - - - -
- ); - } -} - -const { any } = PropTypes; - -Routes.propTypes = { router: any.isRequired }; -Routes.childContextTypes = { router: React.PropTypes.object }; +Routes.propTypes = { router: any.isRequired, routes: array.isRequired }; export default Routes; diff --git a/src/app.js b/src/app.js index 4c82629b..ff1438c1 100644 --- a/src/app.js +++ b/src/app.js @@ -5,6 +5,7 @@ import { BrowserRouter, ServerRouter } from 'react-router'; import { Provider } from 'react-redux'; import configureStore from './store'; import Routes from './Routes'; +import routesConfiguration from './routesConfiguration'; export const ClientApp = props => { const { store } = props; @@ -12,7 +13,7 @@ export const ClientApp = props => { {({ router }) => ( - + )} @@ -29,7 +30,7 @@ export const ServerApp = props => { {({ router }) => ( - + )} diff --git a/src/app.test.js b/src/app.test.js index b5707d7a..0a4da80d 100644 --- a/src/app.test.js +++ b/src/app.test.js @@ -25,7 +25,7 @@ describe('Application', () => { const urlTitles = { '/': 'Landing page', '/s': 'Search page', - '/l/1234': 'Listing page with listing id: #1234', + '/l/listing-title-slug/1234': 'Listing page with listing id: #1234', '/u/1234': 'Profile page with display name: 1234', '/checkout/1234': 'Checkout page: 1234', '/login': 'Authentication page: login tab', @@ -41,10 +41,8 @@ describe('Application', () => { }); const urlRedirects = { - '/inbox': '/login', '/orders': '/login', '/sales': '/login', - '/conversation/1234': '/login', '/order/1234': '/login', '/order/1234/discussion': '/login', '/order/1234/details': '/login', @@ -54,8 +52,6 @@ describe('Application', () => { '/listings': '/login', '/account': '/login', '/account/contact-details': '/login', - '/account/notifications': '/login', - '/account/payment-methods': '/login', '/account/payout-preferences': '/login', '/account/security': '/login', }; diff --git a/src/components/NamedLink/NamedLink.js b/src/components/NamedLink/NamedLink.js new file mode 100644 index 00000000..2faaafe1 --- /dev/null +++ b/src/components/NamedLink/NamedLink.js @@ -0,0 +1,20 @@ +import React, { PropTypes } from 'react'; +import { Link } from 'react-router'; +import { pathByRouteName } from '../../routesConfiguration'; + +const NamedLink = (props, context) => { + const { name, params, ...rest } = props; + const path = pathByRouteName(name, context.routes, params); + + return ; +}; + +const { array, object, string } = PropTypes; + +NamedLink.contextTypes = { routes: array }; + +NamedLink.defaultProps = { params: {} }; + +NamedLink.propTypes = { name: string.isRequired, params: object }; + +export default NamedLink; diff --git a/src/components/NamedLink/NamedLink.test.js b/src/components/NamedLink/NamedLink.test.js new file mode 100644 index 00000000..d51fdc34 --- /dev/null +++ b/src/components/NamedLink/NamedLink.test.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { BrowserRouter } from 'react-router'; +import { RoutesProvider } from '../index'; +import Routes from '../../Routes'; +import NamedLink from './NamedLink'; +import renderer from 'react-test-renderer'; + +describe('NamedLink', () => { + it('should contain correct link', () => { + const id = 12; + const routesConf = [ + { pattern: '/somepage/:id', name: 'SomePage', component: () =>
blaa
}, + ]; + const component = renderer.create( + ( + + + to SomePage + + + ), + ); + const json = component.toJSON(); + expect(json.type).toEqual('a'); + expect(json.props.href).toEqual(`/somepage/${id}`); + expect(json.children).toEqual([ 'to SomePage' ]); + }); +}); diff --git a/src/components/RouterProvider/RouterProvider.js b/src/components/RouterProvider/RouterProvider.js new file mode 100644 index 00000000..01b35c8a --- /dev/null +++ b/src/components/RouterProvider/RouterProvider.js @@ -0,0 +1,21 @@ +import React, { Component, PropTypes } from 'react'; + +class RouterProvider extends Component { + getChildContext() { + return { router: this.props.router }; + } + + render() { + return React.Children.only(this.props.children); + } +} + +const { any, node, object } = PropTypes; + +RouterProvider.childContextTypes = { router: object }; + +RouterProvider.defaultProps = { children: {} }; + +RouterProvider.propTypes = { router: any.isRequired, children: node }; + +export default RouterProvider; diff --git a/src/components/RouterProvider/RouterProvider.test.js b/src/components/RouterProvider/RouterProvider.test.js new file mode 100644 index 00000000..49703700 --- /dev/null +++ b/src/components/RouterProvider/RouterProvider.test.js @@ -0,0 +1,18 @@ +import React from 'react'; +import RouterProvider from './RouterProvider'; +import renderer from 'react-test-renderer'; + +describe('RouterProvider', () => { + it('should contain routes from context', () => { + const router = { name: 'router in context' }; + const Child = (props, context) => { + return
{context.router.name}
; + }; + Child.contextTypes = { router: React.PropTypes.object }; + + const rendered = renderer + .create() + .toJSON(); + expect(rendered.children).toContain('router in context'); + }); +}); diff --git a/src/components/RoutesProvider/RoutesProvider.js b/src/components/RoutesProvider/RoutesProvider.js new file mode 100644 index 00000000..55a1a98f --- /dev/null +++ b/src/components/RoutesProvider/RoutesProvider.js @@ -0,0 +1,21 @@ +import React, { Component, PropTypes } from 'react'; + +class RoutesProvider extends Component { + getChildContext() { + return { routes: this.props.routes }; + } + + render() { + return React.Children.only(this.props.children); + } +} + +const { array, node } = PropTypes; + +RoutesProvider.childContextTypes = { routes: array }; + +RoutesProvider.defaultProps = { children: {} }; + +RoutesProvider.propTypes = { routes: array.isRequired, children: node }; + +export default RoutesProvider; diff --git a/src/components/RoutesProvider/RoutesProvider.test.js b/src/components/RoutesProvider/RoutesProvider.test.js new file mode 100644 index 00000000..889b78c6 --- /dev/null +++ b/src/components/RoutesProvider/RoutesProvider.test.js @@ -0,0 +1,18 @@ +import React from 'react'; +import RoutesProvider from './RoutesProvider'; +import renderer from 'react-test-renderer'; + +describe('RoutesProvider', () => { + it('should contain routes from context', () => { + const routesConf = [ { name: 'SomePage' } ]; + const Child = (props, context) => { + return
{context.routes[0].name}
; + }; + Child.contextTypes = { routes: React.PropTypes.array }; + + const rendered = renderer + .create() + .toJSON(); + expect(rendered.children).toContain('SomePage'); + }); +}); diff --git a/src/components/index.js b/src/components/index.js index 3c747810..01b7ea37 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -1,4 +1,7 @@ /* eslint-disable import/prefer-default-export */ +import NamedLink from './NamedLink/NamedLink'; import PageLayout from './PageLayout/PageLayout'; +import RouterProvider from './RouterProvider/RouterProvider'; +import RoutesProvider from './RoutesProvider/RoutesProvider'; -export { PageLayout }; +export { NamedLink, PageLayout, RouterProvider, RoutesProvider }; diff --git a/src/containers/AuthenticationPage/__snapshots__/AuthenticationPage.test.js.snap b/src/containers/AuthenticationPage/__snapshots__/AuthenticationPage.test.js.snap index f5aaf159..1e36f485 100644 --- a/src/containers/AuthenticationPage/__snapshots__/AuthenticationPage.test.js.snap +++ b/src/containers/AuthenticationPage/__snapshots__/AuthenticationPage.test.js.snap @@ -19,7 +19,7 @@ exports[`AuthenticationPage matches snapshot 1`] = ` Listing page @@ -101,20 +101,6 @@ exports[`AuthenticationPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`CheckoutPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`ContactDetailsPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - { - const { params } = props; - return ( - -

Conversation id: {params.id}

-
- ); -}; - -const { shape, string } = PropTypes; - -ConversationPage.propTypes = { params: shape({ id: string.isRequired }).isRequired }; - -export default ConversationPage; diff --git a/src/containers/ConversationPage/ConversationPage.test.js b/src/containers/ConversationPage/ConversationPage.test.js deleted file mode 100644 index 3d9af4af..00000000 --- a/src/containers/ConversationPage/ConversationPage.test.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { BrowserRouter } from 'react-router'; -import renderer from 'react-test-renderer'; -import ConversationPage from './ConversationPage'; - -describe('ConversationPage', () => { - it('matches snapshot', () => { - const component = renderer.create( - ( - - - - ), - ); - const tree = component.toJSON(); - expect(tree).toMatchSnapshot(); - }); -}); diff --git a/src/containers/ConversationPage/__snapshots__/ConversationPage.test.js.snap b/src/containers/ConversationPage/__snapshots__/ConversationPage.test.js.snap deleted file mode 100644 index 993fb1a2..00000000 --- a/src/containers/ConversationPage/__snapshots__/ConversationPage.test.js.snap +++ /dev/null @@ -1,145 +0,0 @@ -exports[`ConversationPage matches snapshot 1`] = ` -
-`; diff --git a/src/containers/EditProfilePage/__snapshots__/EditProfilePage.test.js.snap b/src/containers/EditProfilePage/__snapshots__/EditProfilePage.test.js.snap index c6ed5569..74c5ba49 100644 --- a/src/containers/EditProfilePage/__snapshots__/EditProfilePage.test.js.snap +++ b/src/containers/EditProfilePage/__snapshots__/EditProfilePage.test.js.snap @@ -19,7 +19,7 @@ exports[`EditProfilePage matches snapshot 1`] = ` Listing page @@ -101,20 +101,6 @@ exports[`EditProfilePage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`InboxPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`LandingPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - { - // Listing id should be located either in the end of slug - // - https://example.com/l/listing-title-as-slug-12345 - // - https://example.com/l/12345 - const slugAndId = params.slug.split('-'); - const id = slugAndId[slugAndId.length - 1]; - - // TODO: Fetch data from SDK if no data is passed through props - return ( - -

Slug: {params.slug}

- -
- ); -}; +const ListingPage = ({ params }) => ( + +

Slug: {params.slug}

+ +
+); const { shape, string } = PropTypes; diff --git a/src/containers/ListingPage/ListingPage.test.js b/src/containers/ListingPage/ListingPage.test.js index 7b427688..ba291720 100644 --- a/src/containers/ListingPage/ListingPage.test.js +++ b/src/containers/ListingPage/ListingPage.test.js @@ -8,7 +8,7 @@ describe('ListingPage', () => { const component = renderer.create( ( - + ), ); diff --git a/src/containers/ListingPage/__snapshots__/ListingPage.test.js.snap b/src/containers/ListingPage/__snapshots__/ListingPage.test.js.snap index 1cb197ab..958ec5c4 100644 --- a/src/containers/ListingPage/__snapshots__/ListingPage.test.js.snap +++ b/src/containers/ListingPage/__snapshots__/ListingPage.test.js.snap @@ -19,7 +19,7 @@ exports[`ListingPage matches snapshot 1`] = `
Listing page @@ -101,20 +101,6 @@ exports[`ListingPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`ManageListingsPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`NotFoundPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - diff --git a/src/containers/NotificationSettingsPage/NotificationSettingsPage.test.js b/src/containers/NotificationSettingsPage/NotificationSettingsPage.test.js deleted file mode 100644 index 2266fec6..00000000 --- a/src/containers/NotificationSettingsPage/NotificationSettingsPage.test.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { BrowserRouter } from 'react-router'; -import renderer from 'react-test-renderer'; -import NotificationSettingsPage from './NotificationSettingsPage'; - -describe('NotificationSettingsPage', () => { - it('matches snapshot', () => { - const component = renderer.create( - ( - - - - ), - ); - const tree = component.toJSON(); - expect(tree).toMatchSnapshot(); - }); -}); diff --git a/src/containers/NotificationSettingsPage/__snapshots__/NotificationSettingsPage.test.js.snap b/src/containers/NotificationSettingsPage/__snapshots__/NotificationSettingsPage.test.js.snap deleted file mode 100644 index 2c9aa203..00000000 --- a/src/containers/NotificationSettingsPage/__snapshots__/NotificationSettingsPage.test.js.snap +++ /dev/null @@ -1,141 +0,0 @@ -exports[`NotificationSettingsPage matches snapshot 1`] = ` - -`; diff --git a/src/containers/OrderPage/__snapshots__/OrderPage.test.js.snap b/src/containers/OrderPage/__snapshots__/OrderPage.test.js.snap index 624f4918..5cdc17f3 100644 --- a/src/containers/OrderPage/__snapshots__/OrderPage.test.js.snap +++ b/src/containers/OrderPage/__snapshots__/OrderPage.test.js.snap @@ -19,7 +19,7 @@ exports[`OrderPage matches snapshot 1`] = ` Listing page @@ -101,20 +101,6 @@ exports[`OrderPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`PasswordChangePage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`PasswordForgottenPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - diff --git a/src/containers/PaymentMethodsPage/PaymentMethodsPage.test.js b/src/containers/PaymentMethodsPage/PaymentMethodsPage.test.js deleted file mode 100644 index 49a21213..00000000 --- a/src/containers/PaymentMethodsPage/PaymentMethodsPage.test.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { BrowserRouter } from 'react-router'; -import renderer from 'react-test-renderer'; -import PaymentMethodsPage from './PaymentMethodsPage'; - -describe('PaymentMethodsPage', () => { - it('matches snapshot', () => { - const component = renderer.create( - ( - - - - ), - ); - const tree = component.toJSON(); - expect(tree).toMatchSnapshot(); - }); -}); diff --git a/src/containers/PaymentMethodsPage/__snapshots__/PaymentMethodsPage.test.js.snap b/src/containers/PaymentMethodsPage/__snapshots__/PaymentMethodsPage.test.js.snap deleted file mode 100644 index 71d5ee6e..00000000 --- a/src/containers/PaymentMethodsPage/__snapshots__/PaymentMethodsPage.test.js.snap +++ /dev/null @@ -1,141 +0,0 @@ -exports[`PaymentMethodsPage matches snapshot 1`] = ` - -`; diff --git a/src/containers/PayoutPreferencesPage/__snapshots__/PayoutPreferencesPage.test.js.snap b/src/containers/PayoutPreferencesPage/__snapshots__/PayoutPreferencesPage.test.js.snap index 3ce5d713..1591f550 100644 --- a/src/containers/PayoutPreferencesPage/__snapshots__/PayoutPreferencesPage.test.js.snap +++ b/src/containers/PayoutPreferencesPage/__snapshots__/PayoutPreferencesPage.test.js.snap @@ -19,7 +19,7 @@ exports[`PayoutPreferencesPage matches snapshot 1`] = ` Listing page @@ -101,20 +101,6 @@ exports[`PayoutPreferencesPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`ProfilePage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Listing page @@ -101,20 +101,6 @@ exports[`SalesConversationPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - ( - Nice studio in Helsinki + + Nice studio in Helsinki + +
+ LandingPage
); diff --git a/src/containers/SearchPage/SearchPage.test.js b/src/containers/SearchPage/SearchPage.test.js index 9926ee98..62b3e1da 100644 --- a/src/containers/SearchPage/SearchPage.test.js +++ b/src/containers/SearchPage/SearchPage.test.js @@ -3,13 +3,17 @@ import { BrowserRouter } from 'react-router'; import renderer from 'react-test-renderer'; import { SearchPageComponent } from './SearchPage'; import reducer, { ADD_FILTER, addFilter } from './SearchPage.ducks'; +import { RoutesProvider } from '../../components'; +import routesConfiguration from '../../routesConfiguration'; describe('SearchPageComponent', () => { it('matches snapshot', () => { const component = renderer.create( ( - + + + ), ); @@ -38,7 +42,9 @@ describe('SearchPageDucs', () => { const reduced = reducer([], addFilter1); const reducedWithInitialContent = reducer({ filters: [ addFilter1.payload ] }, addFilter2); expect(reduced).toEqual({ filters: [ addFilter1.payload ] }); - expect(reducedWithInitialContent).toEqual({ filters: [ addFilter1.payload, addFilter2.payload ] }); + expect( + reducedWithInitialContent, + ).toEqual({ filters: [ addFilter1.payload, addFilter2.payload ] }); }); it('should handle duplicates ADD_FILTER', () => { diff --git a/src/containers/SearchPage/__snapshots__/SearchPage.test.js.snap b/src/containers/SearchPage/__snapshots__/SearchPage.test.js.snap index 3009aeb6..18b21df7 100644 --- a/src/containers/SearchPage/__snapshots__/SearchPage.test.js.snap +++ b/src/containers/SearchPage/__snapshots__/SearchPage.test.js.snap @@ -19,7 +19,7 @@ exports[`SearchPageComponent matches snapshot 1`] = `
Listing page @@ -101,20 +101,6 @@ exports[`SearchPageComponent matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - Nice studio in Helsinki +
+ + LandingPage + `; diff --git a/src/containers/SecurityPage/__snapshots__/SecurityPage.test.js.snap b/src/containers/SecurityPage/__snapshots__/SecurityPage.test.js.snap index 8fff65ea..8e968132 100644 --- a/src/containers/SecurityPage/__snapshots__/SecurityPage.test.js.snap +++ b/src/containers/SecurityPage/__snapshots__/SecurityPage.test.js.snap @@ -19,7 +19,7 @@ exports[`SecurityPage matches snapshot 1`] = ` Listing page @@ -101,20 +101,6 @@ exports[`SecurityPage matches snapshot 1`] = ` style={Object {}}> Contact details - - Notification settings - - - Payment methods - {
Home Search - Listing page + Listing page Profile Edit profile Checkout @@ -36,8 +36,6 @@ const Topbar = (props, context) => { Manage listings Account settings Contact details - Notification settings - Payment methods Payout preferences Security diff --git a/src/containers/index.js b/src/containers/index.js index 9a9b7201..77df1a0a 100644 --- a/src/containers/index.js +++ b/src/containers/index.js @@ -1,17 +1,14 @@ import AuthenticationPage from './AuthenticationPage/AuthenticationPage'; import CheckoutPage from './CheckoutPage/CheckoutPage'; -import ConversationPage from './ConversationPage/ConversationPage'; import ContactDetailsPage from './ContactDetailsPage/ContactDetailsPage'; import EditProfilePage from './EditProfilePage/EditProfilePage'; import InboxPage from './InboxPage/InboxPage'; import LandingPage from './LandingPage/LandingPage'; import ListingPage from './ListingPage/ListingPage'; import ManageListingsPage from './ManageListingsPage/ManageListingsPage'; -import NotificationSettingsPage from './NotificationSettingsPage/NotificationSettingsPage'; import OrderPage from './OrderPage/OrderPage'; import PasswordChangePage from './PasswordChangePage/PasswordChangePage'; import PasswordForgottenPage from './PasswordForgottenPage/PasswordForgottenPage'; -import PaymentMethodsPage from './PaymentMethodsPage/PaymentMethodsPage'; import PayoutPreferencesPage from './PayoutPreferencesPage/PayoutPreferencesPage'; import ProfilePage from './ProfilePage/ProfilePage'; import SalesConversationPage from './SalesConversationPage/SalesConversationPage'; @@ -23,7 +20,6 @@ import Topbar from './Topbar/Topbar'; export { AuthenticationPage, CheckoutPage, - ConversationPage, ContactDetailsPage, EditProfilePage, InboxPage, @@ -31,11 +27,9 @@ export { ListingPage, ManageListingsPage, NotFoundPage, - NotificationSettingsPage, OrderPage, PasswordChangePage, PasswordForgottenPage, - PaymentMethodsPage, PayoutPreferencesPage, ProfilePage, SalesConversationPage, diff --git a/src/index.js b/src/index.js index 90e229be..30f46bd5 100644 --- a/src/index.js +++ b/src/index.js @@ -20,7 +20,8 @@ import './index.css'; // If we're in a browser already, render the client application. if (typeof window !== 'undefined') { - const preloadedState = window.__PRELOADED_STATE__ || {}; // eslint-disable-line no-underscore-dangle + // eslint-disable-next-line no-underscore-dangle + const preloadedState = window.__PRELOADED_STATE__ || {}; const store = configureStore(preloadedState); ReactDOM.render(, document.getElementById('root')); diff --git a/src/routesConfiguration.js b/src/routesConfiguration.js new file mode 100644 index 00000000..21e6057b --- /dev/null +++ b/src/routesConfiguration.js @@ -0,0 +1,230 @@ +import React from 'react'; +import { find } from 'lodash'; +import { Redirect } from 'react-router'; +import pathToRegexp from 'path-to-regexp'; +import { + AuthenticationPage, + CheckoutPage, + ContactDetailsPage, + EditProfilePage, + InboxPage, + LandingPage, + ListingPage, + ManageListingsPage, + OrderPage, + PasswordChangePage, + PasswordForgottenPage, + PayoutPreferencesPage, + ProfilePage, + SalesConversationPage, + SearchPage, + SecurityPage, +} from './containers'; + +// This is only used for testing that redirects work correct in the +// client and when rendering in the server. +const RedirectLandingPage = () => ; + +const routesConfiguration = [ + { pattern: '/', exactly: true, name: 'LandingPage', component: LandingPage }, + { pattern: '/s', exactly: true, name: 'SearchPage', component: SearchPage }, + { + pattern: '/l', + exactly: true, + name: 'ListingBasePage', + component: RedirectLandingPage, + routes: [ + { pattern: '/l/:slug/:id', exactly: true, name: 'ListingPage', component: ListingPage }, + ], + }, + { + pattern: '/u', + exactly: true, + name: 'ProfileBasePage', + component: RedirectLandingPage, + routes: [ + { + pattern: '/u/:displayName', + exactly: true, + name: 'ProfilePage', + component: ProfilePage, + routes: [ + { + pattern: '/u/:displayName/edit', + auth: true, + exactly: true, + name: 'EditProfilePage', + component: EditProfilePage, + }, + ], + }, + ], + }, + { + pattern: '/checkout', + exactly: true, + name: 'CheckoutBasePage', + component: RedirectLandingPage, + routes: [ + { + pattern: '/checkout/:listingId', + exactly: true, + name: 'CheckoutPage', + component: CheckoutPage, + }, + ], + }, + { + pattern: '/login', + exactly: true, + name: 'LogInPage', + component: props => , + }, + { + pattern: '/signup', + exactly: true, + name: 'SignUpPage', + component: props => , + }, + { pattern: '/password', exactly: true, name: 'PasswordPage', component: PasswordForgottenPage }, + { + pattern: '/password/forgotten', + exactly: true, + name: 'PasswordForgottenPage', + component: PasswordForgottenPage, + }, + { + pattern: '/password/change', + exactly: true, + name: 'PasswordChangePage', + component: PasswordChangePage, + }, + { + pattern: '/orders', + auth: true, + exactly: true, + name: 'OrdersPage', + component: props => , + }, + { + pattern: '/sales', + auth: true, + exactly: true, + name: 'SalesPage', + component: props => , + }, + { + pattern: '/order/:id', + auth: true, + exactly: true, + name: 'OrderPage', + component: props => , + routes: [ + { + pattern: '/order/:id/details', + auth: true, + exactly: true, + name: 'OrderDetailsPage', + component: props => , + }, + { + pattern: '/order/:id/discussion', + auth: true, + exactly: true, + name: 'OrderDiscussionPage', + component: props => , + }, + ], + }, + { + pattern: '/sale/:id', + auth: true, + exactly: true, + name: 'SalePage', + component: props => , + routes: [ + { + pattern: '/sale/:id/details', + auth: true, + exactly: true, + name: 'SaleDetailsPage', + component: props => , + }, + { + pattern: '/sale/:id/discussion', + auth: true, + exactly: true, + name: 'SaleDiscussionPage', + component: props => , + }, + ], + }, + { + pattern: '/listings', + auth: true, + exactly: true, + name: 'ManageListingsPage', + component: ManageListingsPage, + }, + { + pattern: '/account', + auth: true, + exactly: true, + name: 'AccountPage', + component: () => , + routes: [ + { + pattern: '/account/contact-details', + auth: true, + exactly: true, + name: 'ContactDetailsPage', + component: ContactDetailsPage, + }, + { + pattern: '/account/payout-preferences', + auth: true, + exactly: true, + name: 'PayoutPreferencesPage', + component: PayoutPreferencesPage, + }, + { + pattern: '/account/security', + auth: true, + exactly: true, + name: 'SecurityPage', + component: SecurityPage, + }, + ], + }, +]; + +const flattenRoutes = routesArray => + routesArray.reduce((a, b) => a.concat(b.routes ? [ b ].concat(flattenRoutes(b.routes)) : b), []); + +const findRouteByName = (nameToFind, routes) => { + const flattenedRoutes = flattenRoutes(routes); + return find(flattenedRoutes, route => route.name === nameToFind); +}; + +/** + * E.g. ```const toListingPath = toPathByRouteName('ListingPage', routes);``` + * Then we can generate listing paths with given params (```toListingPath({ id: uuidX })```) + */ +const toPathByRouteName = (nameToFind, routes) => { + const route = findRouteByName(nameToFind, routes); + if (!route) { + throw new Error(`Path "${nameToFind}" was not found.`); + } + return pathToRegexp.compile(route.pattern); +}; + +/** + * Shorthand for single path call. (```pathByRouteName('ListingPage', routes, { id: uuidX });```) + */ +const pathByRouteName = (nameToFind, routes, params = {}) => + toPathByRouteName(nameToFind, routes)(params); + +// Exported helpers +export { findRouteByName, flattenRoutes, toPathByRouteName, pathByRouteName }; + +export default routesConfiguration; diff --git a/yarn.lock b/yarn.lock index 02c6ac0b..c4ce50c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -99,9 +99,11 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" -append-transform@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.3.0.tgz#d6933ce4a85f09445d9ccc4cc119051b7381a813" +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" aproba@^1.0.3: version "1.0.4" @@ -238,13 +240,13 @@ aws4@^1.2.1: version "1.5.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" -babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: chalk "^1.1.0" esutils "^2.0.2" - js-tokens "^2.0.0" + js-tokens "^3.0.0" babel-core@6.17.0, babel-core@^6.0.0: version "6.17.0" @@ -272,19 +274,19 @@ babel-core@6.17.0, babel-core@^6.0.0: slash "^1.0.0" source-map "^0.5.0" -babel-core@^6.18.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724" +babel-core@^6.22.0: + version "6.22.1" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648" dependencies: - babel-code-frame "^6.20.0" - babel-generator "^6.21.0" - babel-helpers "^6.16.0" - babel-messages "^6.8.0" - babel-register "^6.18.0" - babel-runtime "^6.20.0" - babel-template "^6.16.0" - babel-traverse "^6.21.0" - babel-types "^6.21.0" + babel-code-frame "^6.22.0" + babel-generator "^6.22.0" + babel-helpers "^6.22.0" + babel-messages "^6.22.0" + babel-register "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.1" + babel-types "^6.22.0" babylon "^6.11.0" convert-source-map "^1.1.0" debug "^2.1.1" @@ -306,127 +308,127 @@ babel-eslint@7.1.1: babylon "^6.13.0" lodash.pickby "^4.6.0" -babel-generator@^6.17.0, babel-generator@^6.18.0, babel-generator@^6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.21.0.tgz#605f1269c489a1c75deeca7ea16d43d4656c8494" +babel-generator@^6.17.0, babel-generator@^6.18.0, babel-generator@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.22.0.tgz#d642bf4961911a8adc7c692b0c9297f325cda805" dependencies: - babel-messages "^6.8.0" - babel-runtime "^6.20.0" - babel-types "^6.21.0" + babel-messages "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.2.0" source-map "^0.5.0" -babel-helper-builder-binary-assignment-operator-visitor@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.18.0.tgz#8ae814989f7a53682152e3401a04fabd0bb333a6" +babel-helper-builder-binary-assignment-operator-visitor@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz#29df56be144d81bdeac08262bfa41d2c5e91cdcd" dependencies: - babel-helper-explode-assignable-expression "^6.18.0" - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-helper-explode-assignable-expression "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" babel-helper-builder-react-jsx@^6.8.0: - version "6.21.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.21.1.tgz#c4a24208655be9dc1cccf14d366da176f20645e4" + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.22.0.tgz#aafb31913e47761fd4d0b6987756a144a65fca0d" dependencies: - babel-runtime "^6.9.0" - babel-types "^6.21.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" esutils "^2.0.0" lodash "^4.2.0" -babel-helper-call-delegate@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" +babel-helper-call-delegate@^6.18.0, babel-helper-call-delegate@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef" dependencies: - babel-helper-hoist-variables "^6.18.0" - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-helper-hoist-variables "^6.22.0" + babel-runtime "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" +babel-helper-define-map@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.22.0.tgz#9544e9502b2d6dfe7d00ff60e82bd5a7a89e95b7" dependencies: - babel-helper-function-name "^6.18.0" - babel-runtime "^6.9.0" - babel-types "^6.18.0" + babel-helper-function-name "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" lodash "^4.2.0" -babel-helper-explode-assignable-expression@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.18.0.tgz#14b8e8c2d03ad735d4b20f1840b24cd1f65239fe" +babel-helper-explode-assignable-expression@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz#c97bf76eed3e0bae4048121f2b9dae1a4e7d0478" dependencies: - babel-runtime "^6.0.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" +babel-helper-function-name@^6.22.0, babel-helper-function-name@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc" dependencies: - babel-helper-get-function-arity "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-helper-get-function-arity "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-helper-get-function-arity@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.18.0.tgz#a5b19695fd3f9cdfc328398b47dafcd7094f9f24" +babel-helper-get-function-arity@^6.18.0, babel-helper-get-function-arity@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-helper-hoist-variables@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.18.0.tgz#a835b5ab8b46d6de9babefae4d98ea41e866b82a" +babel-helper-hoist-variables@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-helper-optimise-call-expression@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" +babel-helper-optimise-call-expression@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.22.0.tgz#f8d5d4b40a6e2605a6a7f9d537b581bea3756d15" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-helper-regex@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" +babel-helper-regex@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d" dependencies: - babel-runtime "^6.9.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" lodash "^4.2.0" -babel-helper-remap-async-to-generator@^6.16.0: - version "6.20.3" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.20.3.tgz#9dd3b396f13e35ef63e538098500adc24c63c4e7" +babel-helper-remap-async-to-generator@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz#2186ae73278ed03b8b15ced089609da981053383" dependencies: - babel-helper-function-name "^6.18.0" - babel-runtime "^6.20.0" - babel-template "^6.16.0" - babel-traverse "^6.20.0" - babel-types "^6.20.0" + babel-helper-function-name "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" +babel-helper-replace-supers@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.22.0.tgz#1fcee2270657548908c34db16bcc345f9850cf42" dependencies: - babel-helper-optimise-call-expression "^6.18.0" - babel-messages "^6.8.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-helper-optimise-call-expression "^6.22.0" + babel-messages "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-helpers@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" +babel-helpers@^6.16.0, babel-helpers@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.22.0.tgz#d275f55f2252b8101bff07bc0c556deda657392c" dependencies: - babel-runtime "^6.0.0" - babel-template "^6.16.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" babel-jest@18.0.0, babel-jest@^18.0.0: version "18.0.0" @@ -445,17 +447,17 @@ babel-loader@6.2.7: mkdirp "^0.5.1" object-assign "^4.0.1" -babel-messages@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" +babel-messages@^6.22.0, babel-messages@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-check-es2015-constants@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" +babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" babel-plugin-istanbul@^3.0.0: version "3.1.2" @@ -494,17 +496,17 @@ babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" -babel-plugin-syntax-trailing-function-commas@^6.13.0, babel-plugin-syntax-trailing-function-commas@^6.8.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.20.0.tgz#442835e19179f45b87e92d477d70b9f1f18b5c4f" +babel-plugin-syntax-trailing-function-commas@^6.13.0, babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" -babel-plugin-transform-async-to-generator@^6.16.0, babel-plugin-transform-async-to-generator@^6.8.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz#194b6938ec195ad36efc4c33a971acf00d8cd35e" dependencies: - babel-helper-remap-async-to-generator "^6.16.0" + babel-helper-remap-async-to-generator "^6.22.0" babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" babel-plugin-transform-class-properties@6.16.0: version "6.16.0" @@ -514,124 +516,123 @@ babel-plugin-transform-class-properties@6.16.0: babel-plugin-syntax-class-properties "^6.8.0" babel-runtime "^6.9.1" -babel-plugin-transform-es2015-arrow-functions@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" +babel-plugin-transform-es2015-arrow-functions@^6.22.0, babel-plugin-transform-es2015-arrow-functions@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0, babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.18.0, babel-plugin-transform-es2015-block-scoping@^6.6.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.21.0.tgz#e840687f922e70fb2c42bb13501838c174a115ed" +babel-plugin-transform-es2015-block-scoping@^6.22.0, babel-plugin-transform-es2015-block-scoping@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.22.0.tgz#00d6e3a0bebdcfe7536b9d653b44a9141e63e47e" dependencies: - babel-runtime "^6.20.0" - babel-template "^6.15.0" - babel-traverse "^6.21.0" - babel-types "^6.21.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.18.0, babel-plugin-transform-es2015-classes@^6.6.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" +babel-plugin-transform-es2015-classes@^6.22.0, babel-plugin-transform-es2015-classes@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.22.0.tgz#54d44998fd823d9dca15292324161c331c1b6f14" dependencies: - babel-helper-define-map "^6.18.0" - babel-helper-function-name "^6.18.0" - babel-helper-optimise-call-expression "^6.18.0" - babel-helper-replace-supers "^6.18.0" - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-template "^6.14.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" + babel-helper-define-map "^6.22.0" + babel-helper-function-name "^6.22.0" + babel-helper-optimise-call-expression "^6.22.0" + babel-helper-replace-supers "^6.22.0" + babel-messages "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-computed-properties@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7" dependencies: - babel-helper-define-map "^6.8.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" -babel-plugin-transform-es2015-destructuring@^6.18.0, babel-plugin-transform-es2015-destructuring@^6.6.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.19.0.tgz#ff1d911c4b3f4cab621bd66702a869acd1900533" +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.22.0.tgz#8e0af2f885a0b2cf999d47c4c1dd23ce88cfa4c6" dependencies: - babel-runtime "^6.9.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.8.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-for-of@^6.18.0, babel-plugin-transform-es2015-for-of@^6.6.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.22.0.tgz#180467ad63aeea592a1caeee4bf1c8b3e2616265" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.3.13, babel-plugin-transform-es2015-function-name@^6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104" dependencies: - babel-helper-function-name "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.9.0" + babel-helper-function-name "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-literals@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" +babel-plugin-transform-es2015-literals@^6.22.0, babel-plugin-transform-es2015-literals@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.18.0, babel-plugin-transform-es2015-modules-amd@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz#bf69cd34889a41c33d90dfb740e0091ccff52f21" dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" + babel-plugin-transform-es2015-modules-commonjs "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" -babel-plugin-transform-es2015-modules-commonjs@^6.18.0, babel-plugin-transform-es2015-modules-commonjs@^6.6.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" +babel-plugin-transform-es2015-modules-commonjs@^6.22.0, babel-plugin-transform-es2015-modules-commonjs@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.22.0.tgz#6ca04e22b8e214fb50169730657e7a07dc941145" dependencies: - babel-plugin-transform-strict-mode "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.16.0" - babel-types "^6.18.0" + babel-plugin-transform-strict-mode "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-modules-systemjs@^6.12.0, babel-plugin-transform-es2015-modules-systemjs@^6.18.0: - version "6.19.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.19.0.tgz#50438136eba74527efa00a5b0fefaf1dc4071da6" +babel-plugin-transform-es2015-modules-systemjs@^6.12.0, babel-plugin-transform-es2015-modules-systemjs@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.22.0.tgz#810cd0cd025a08383b84236b92c6e31f88e644ad" dependencies: - babel-helper-hoist-variables "^6.18.0" - babel-runtime "^6.11.6" - babel-template "^6.14.0" + babel-helper-hoist-variables "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" -babel-plugin-transform-es2015-modules-umd@^6.12.0, babel-plugin-transform-es2015-modules-umd@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" +babel-plugin-transform-es2015-modules-umd@^6.12.0, babel-plugin-transform-es2015-modules-umd@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.22.0.tgz#60d0ba3bd23258719c64391d9bf492d648dc0fae" dependencies: - babel-plugin-transform-es2015-modules-amd "^6.18.0" - babel-runtime "^6.0.0" - babel-template "^6.8.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" -babel-plugin-transform-es2015-object-super@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc" dependencies: - babel-helper-replace-supers "^6.8.0" - babel-runtime "^6.0.0" + babel-helper-replace-supers "^6.22.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@6.18.0, babel-plugin-transform-es2015-parameters@^6.18.0, babel-plugin-transform-es2015-parameters@^6.6.0: +babel-plugin-transform-es2015-parameters@6.18.0, babel-plugin-transform-es2015-parameters@^6.6.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.18.0.tgz#9b2cfe238c549f1635ba27fc1daa858be70608b1" dependencies: @@ -642,61 +643,72 @@ babel-plugin-transform-es2015-parameters@6.18.0, babel-plugin-transform-es2015-p babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-plugin-transform-es2015-shorthand-properties@^6.18.0, babel-plugin-transform-es2015-shorthand-properties@^6.3.13: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" +babel-plugin-transform-es2015-parameters@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.22.0.tgz#57076069232019094f27da8c68bb7162fe208dbb" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-helper-call-delegate "^6.22.0" + babel-helper-get-function-arity "^6.22.0" + babel-runtime "^6.22.0" + babel-template "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-spread@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" +babel-plugin-transform-es2015-spread@^6.22.0, babel-plugin-transform-es2015-spread@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" dependencies: - babel-helper-regex "^6.8.0" - babel-runtime "^6.0.0" - babel-types "^6.8.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-template-literals@^6.6.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593" dependencies: - babel-runtime "^6.0.0" + babel-helper-regex "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.18.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" +babel-plugin-transform-es2015-template-literals@^6.22.0, babel-plugin-transform-es2015-template-literals@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.3.13: - version "6.11.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.6.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.22.0.tgz#87faf2336d3b6a97f68c4d906b0cd0edeae676e1" dependencies: - babel-helper-regex "^6.8.0" - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.3.13: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20" + dependencies: + babel-helper-regex "^6.22.0" + babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.3.13, babel-plugin-transform-exponentiation-operator@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.8.0.tgz#db25742e9339eade676ca9acec46f955599a68a4" +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz#d57c8335281918e54ef053118ce6eb108468084d" dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.8.0" + babel-helper-builder-binary-assignment-operator-visitor "^6.22.0" babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" babel-plugin-transform-flow-strip-types@^6.3.13: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.21.0.tgz#2eea3f8b5bb234339b47283feac155cfb237b948" + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" dependencies: babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" babel-plugin-transform-object-rest-spread@6.19.0: version "6.19.0" @@ -712,10 +724,10 @@ babel-plugin-transform-react-constant-elements@6.9.1: babel-runtime "^6.9.1" babel-plugin-transform-react-display-name@^6.3.13: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.8.0.tgz#f7a084977383d728bdbdc2835bba0159577f660e" + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.22.0.tgz#077197520fa8562b8d3da4c3c4b0b1bdd7853f26" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" babel-plugin-transform-react-jsx-self@6.11.0, babel-plugin-transform-react-jsx-self@^6.11.0: version "6.11.0" @@ -739,7 +751,7 @@ babel-plugin-transform-react-jsx@6.8.0, babel-plugin-transform-react-jsx@^6.3.13 babel-plugin-syntax-jsx "^6.8.0" babel-runtime "^6.0.0" -babel-plugin-transform-regenerator@6.16.1, babel-plugin-transform-regenerator@^6.16.0, babel-plugin-transform-regenerator@^6.6.0: +babel-plugin-transform-regenerator@6.16.1, babel-plugin-transform-regenerator@^6.6.0: version "6.16.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59" dependencies: @@ -747,18 +759,24 @@ babel-plugin-transform-regenerator@6.16.1, babel-plugin-transform-regenerator@^6 babel-types "^6.16.0" private "~0.1.5" +babel-plugin-transform-regenerator@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6" + dependencies: + regenerator-transform "0.9.8" + babel-plugin-transform-runtime@6.15.0: version "6.15.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" dependencies: babel-runtime "^6.9.0" -babel-plugin-transform-strict-mode@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" +babel-plugin-transform-strict-mode@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c" dependencies: - babel-runtime "^6.0.0" - babel-types "^6.18.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" babel-preset-env@0.0.8: version "0.0.8" @@ -794,46 +812,46 @@ babel-preset-env@0.0.8: browserslist "^1.4.0" babel-preset-es2015@^6.16.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835" dependencies: - babel-plugin-check-es2015-constants "^6.3.13" - babel-plugin-transform-es2015-arrow-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" - babel-plugin-transform-es2015-block-scoping "^6.18.0" - babel-plugin-transform-es2015-classes "^6.18.0" - babel-plugin-transform-es2015-computed-properties "^6.3.13" - babel-plugin-transform-es2015-destructuring "^6.18.0" - babel-plugin-transform-es2015-duplicate-keys "^6.6.0" - babel-plugin-transform-es2015-for-of "^6.18.0" - babel-plugin-transform-es2015-function-name "^6.9.0" - babel-plugin-transform-es2015-literals "^6.3.13" - babel-plugin-transform-es2015-modules-amd "^6.18.0" - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-plugin-transform-es2015-modules-systemjs "^6.18.0" - babel-plugin-transform-es2015-modules-umd "^6.18.0" - babel-plugin-transform-es2015-object-super "^6.3.13" - babel-plugin-transform-es2015-parameters "^6.18.0" - babel-plugin-transform-es2015-shorthand-properties "^6.18.0" - babel-plugin-transform-es2015-spread "^6.3.13" - babel-plugin-transform-es2015-sticky-regex "^6.3.13" - babel-plugin-transform-es2015-template-literals "^6.6.0" - babel-plugin-transform-es2015-typeof-symbol "^6.18.0" - babel-plugin-transform-es2015-unicode-regex "^6.3.13" - babel-plugin-transform-regenerator "^6.16.0" + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.22.0" + babel-plugin-transform-es2015-classes "^6.22.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.22.0" + babel-plugin-transform-es2015-modules-systemjs "^6.22.0" + babel-plugin-transform-es2015-modules-umd "^6.22.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.22.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" babel-preset-es2016@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.16.0.tgz#c7daf5feedeee99c867813bdf0d573d94ca12812" + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.22.0.tgz#b061aaa3983d40c9fbacfa3743b5df37f336156c" dependencies: - babel-plugin-transform-exponentiation-operator "^6.3.13" + babel-plugin-transform-exponentiation-operator "^6.22.0" babel-preset-es2017@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.16.0.tgz#536c6287778a758948ddd092b466b6ef50b786fa" + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.22.0.tgz#de2f9da5a30c50d293fb54a0ba15d6ddc573f0f2" dependencies: - babel-plugin-syntax-trailing-function-commas "^6.8.0" - babel-plugin-transform-async-to-generator "^6.16.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" babel-preset-jest@^18.0.0: version "18.0.0" @@ -879,61 +897,61 @@ babel-preset-react@6.16.0: babel-plugin-transform-react-jsx-self "^6.11.0" babel-plugin-transform-react-jsx-source "^6.3.13" -babel-register@^6.16.0, babel-register@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" +babel-register@^6.16.0, babel-register@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.22.0.tgz#a61dd83975f9ca4a9e7d6eff3059494cd5ea4c63" dependencies: - babel-core "^6.18.0" - babel-runtime "^6.11.6" + babel-core "^6.22.0" + babel-runtime "^6.22.0" core-js "^2.4.0" home-or-tmp "^2.0.0" lodash "^4.2.0" mkdirp "^0.5.1" source-map-support "^0.4.2" -babel-runtime@6.11.6, babel-runtime@^6.9.1: +babel-runtime@6.11.6, babel-runtime@^6.0.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: version "6.11.6" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.11.6.tgz#6db707fef2d49c49bfa3cb64efdb436b518b8222" dependencies: core-js "^2.4.0" regenerator-runtime "^0.9.5" -babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.20.0, babel-runtime@^6.9.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f" +babel-runtime@^6.18.0, babel-runtime@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" -babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.8.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" +babel-template@^6.16.0, babel-template@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.22.0.tgz#403d110905a4626b317a2a1fcb8f3b73204b2edb" dependencies: - babel-runtime "^6.9.0" - babel-traverse "^6.16.0" - babel-types "^6.16.0" + babel-runtime "^6.22.0" + babel-traverse "^6.22.0" + babel-types "^6.22.0" babylon "^6.11.0" lodash "^4.2.0" -babel-traverse@^6.15.0, babel-traverse@^6.16.0, babel-traverse@^6.18.0, babel-traverse@^6.20.0, babel-traverse@^6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.21.0.tgz#69c6365804f1a4f69eb1213f85b00a818b8c21ad" +babel-traverse@^6.15.0, babel-traverse@^6.16.0, babel-traverse@^6.18.0, babel-traverse@^6.22.0, babel-traverse@^6.22.1: + version "6.22.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.22.1.tgz#3b95cd6b7427d6f1f757704908f2fc9748a5f59f" dependencies: - babel-code-frame "^6.20.0" - babel-messages "^6.8.0" - babel-runtime "^6.20.0" - babel-types "^6.21.0" - babylon "^6.11.0" + babel-code-frame "^6.22.0" + babel-messages "^6.22.0" + babel-runtime "^6.22.0" + babel-types "^6.22.0" + babylon "^6.15.0" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.20.0, babel-types@^6.21.0, babel-types@^6.8.0, babel-types@^6.9.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2" +babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.22.0.tgz#2a447e8d0ea25d2512409e4175479fd78cc8b1db" dependencies: - babel-runtime "^6.20.0" + babel-runtime "^6.22.0" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" @@ -1119,8 +1137,8 @@ caniuse-api@^1.3.2, caniuse-api@^1.5.2: shelljs "^0.7.0" caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000554, caniuse-db@^1.0.30000604: - version "1.0.30000611" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000611.tgz#1075d14d9b3cc153caf5e9e35f45565b03304c37" + version "1.0.30000613" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000613.tgz#639133b7a5380c1416f9701d23d54d093dd68299" cardinal@^1.0.0: version "1.0.0" @@ -1184,8 +1202,8 @@ clap@^1.0.9: chalk "^1.1.3" clean-css@3.4.x: - version "3.4.23" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.23.tgz#604fbbca24c12feb59b02f00b84f1fb7ded6d001" + version "3.4.24" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.24.tgz#89f5a5e9da37ae02394fe049a41388abbe72c3b5" dependencies: commander "2.8.x" source-map "0.4.x" @@ -1252,8 +1270,8 @@ color-convert@^0.5.3: resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" color-convert@^1.3.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.8.2.tgz#be868184d7c8631766d54e7078e2672d7c7e3339" + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: color-name "^1.1.1" @@ -1639,6 +1657,12 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -3028,13 +3052,13 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.1.0-alpha.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.0.tgz#fb3f62edd5bfc6ae09da09453ded6e10ae7e483b" + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73" dependencies: async "^2.1.4" fileset "^2.0.2" istanbul-lib-coverage "^1.0.0" - istanbul-lib-hook "^1.0.0-alpha.4" + istanbul-lib-hook "^1.0.0" istanbul-lib-instrument "^1.3.0" istanbul-lib-report "^1.0.0-alpha.3" istanbul-lib-source-maps "^1.1.0" @@ -3044,14 +3068,14 @@ istanbul-api@^1.1.0-alpha.1: once "^1.4.0" istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.0.tgz#c3f9b6d226da12424064cce87fce0fb57fdfa7a2" + version "1.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212" -istanbul-lib-hook@^1.0.0-alpha.4: - version "1.0.0-alpha.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0-alpha.4.tgz#8c5bb9f6fbd8526e0ae6cf639af28266906b938f" +istanbul-lib-hook@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5" dependencies: - append-transform "^0.3.0" + append-transform "^0.4.0" istanbul-lib-instrument@^1.1.1, istanbul-lib-instrument@^1.3.0, istanbul-lib-instrument@^1.4.2: version "1.4.2" @@ -3283,10 +3307,6 @@ js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" -js-tokens@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" - js-tokens@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.0.tgz#a2f2a969caae142fb3cd56228358c89366957bd1" @@ -3459,10 +3479,6 @@ loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0. json5 "^0.5.0" object-assign "^4.0.1" -lodash, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.16.2, lodash@^4.16.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - lodash-es@^4.2.0, lodash-es@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" @@ -3612,6 +3628,10 @@ lodash.uniq@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.16.2, lodash@^4.16.4, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3964,7 +3984,7 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.1.0, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" @@ -3972,6 +3992,10 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -3993,15 +4017,15 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@~1.3.0, once@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" +once@^1.3.0, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" +once@~1.3.0, once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" dependencies: wrappy "1" @@ -4689,13 +4713,13 @@ postcss-zindex@^2.0.1: uniqs "^2.0.0" postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.19, postcss@^5.0.2, postcss@^5.0.21, postcss@^5.0.3, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.1.1, postcss@^5.2.0, postcss@^5.2.4: - version "5.2.10" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.10.tgz#b58b64e04f66f838b7bc7cb41f7dac168568a945" + version "5.2.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.11.tgz#ff29bcd6d2efb98bfe08a022055ec599bbe7b761" dependencies: chalk "^1.1.3" js-base64 "^2.1.9" source-map "^0.5.6" - supports-color "^3.1.2" + supports-color "^3.2.3" prelude-ls@~1.1.2: version "1.1.2" @@ -5053,6 +5077,14 @@ regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" +regenerator-transform@0.9.8: + version "0.9.8" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -5519,8 +5551,8 @@ stream-combiner@~0.0.4: duplexer "~0.1.1" stream-http@^2.3.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.1.tgz#7d20fcdfebc16b16e4174e31dd94cd9c70f10e89" + version "2.6.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -5607,7 +5639,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2: +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: