Merge pull request #32 from sharetribe/update-prettier

Update Prettier
This commit is contained in:
Kimmo Puputti 2017-01-30 11:05:17 +02:00 committed by GitHub
commit 36ee21ea91
67 changed files with 327 additions and 380 deletions

View file

@ -6,7 +6,7 @@
"basic-auth": "^1.1.0",
"classnames": "^2.2.5",
"compression": "^1.6.2",
"express": "^4.14.0",
"express": "^4.14.1",
"helmet": "^3.3.0",
"lodash": "^4.17.4",
"path-to-regexp": "^1.5.3",
@ -19,20 +19,20 @@
"react-router": "4.0.0-alpha.6",
"react-test-renderer": "^15.4.2",
"redux": "^3.6.0",
"redux-form": "^6.4.3",
"redux-form": "^6.5.0",
"sanitize.css": "^4.1.0",
"sharetribe-scripts": "0.8.6",
"source-map-support": "^0.4.10"
"source-map-support": "^0.4.11"
},
"devDependencies": {
"nodemon": "^1.11.0",
"prettier": "^0.0.8"
"prettier": "^0.13.1"
},
"scripts": {
"clean": "rm -rf build/*",
"dev": "sharetribe-scripts start",
"build": "sharetribe-scripts build",
"prettier": "prettier --write --print-width 100 --single-quote --trailing-comma server/*.js src/*.js src/**/*.js src/**/**/*.js",
"format": "prettier --write --print-width 100 --single-quote --trailing-comma 'server/**/*.js' 'src/**/*.js'",
"test": "sharetribe-scripts test --env=jsdom",
"test-ci": "sharetribe-scripts test --env=jsdom --runInBand",
"eject": "sharetribe-scripts eject",

View file

@ -36,19 +36,15 @@ const MatchWithSubRoutes = props => {
<Match
{...rest}
render={matchProps => {
return canShowComponent
? <Component {...matchProps} />
: (
<Redirect
to={
{
pathname: pathByRouteName('LogInPage', routesConfiguration, {}),
state: { from: matchProps.location },
}
}
/>
);
}}
return canShowComponent
? <Component {...matchProps} />
: <Redirect
to={{
pathname: pathByRouteName('LogInPage', routesConfiguration, {}),
state: { from: matchProps.location },
}}
/>;
}}
/>
);
};
@ -62,7 +58,7 @@ MatchWithSubRoutes.propTypes = {
auth: bool,
exactly: bool,
name: string.isRequired,
component: oneOfType([ func, node ]).isRequired,
component: oneOfType([func, node]).isRequired,
};
const Routes = props => {

View file

@ -12,15 +12,15 @@ import localeData from './translations/en.json';
export const ClientApp = props => {
const { store } = props;
addLocaleData([ ...en ]);
addLocaleData([...en]);
return (
<IntlProvider locale="en" messages={localeData}>
<BrowserRouter>
{({ router }) => (
<Provider store={store}>
<Routes router={router} routes={routesConfiguration} />
</Provider>
)}
<Provider store={store}>
<Routes router={router} routes={routesConfiguration} />
</Provider>
)}
</BrowserRouter>
</IntlProvider>
);
@ -32,15 +32,15 @@ ClientApp.propTypes = { store: any.isRequired };
export const ServerApp = props => {
const { url, context, store } = props;
addLocaleData([ ...en ]);
addLocaleData([...en]);
return (
<IntlProvider locale="en" messages={localeData}>
<ServerRouter location={url} context={context}>
{({ router }) => (
<Provider store={store}>
<Routes router={router} routes={routesConfiguration} />
</Provider>
)}
<Provider store={store}>
<Routes router={router} routes={routesConfiguration} />
</Provider>
)}
</ServerRouter>
</IntlProvider>
);

View file

@ -5,14 +5,12 @@ import BookingInfo from './BookingInfo';
describe('BookingInfo', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<BookingInfo
pricePerDay="55\\u20AC"
bookingPeriod="Jan 2nd - Jan 4th"
bookingDuration="3 days"
total="165\u20AC"
/>
),
<BookingInfo
pricePerDay="55\\u20AC"
bookingPeriod="Jan 2nd - Jan 4th"
bookingDuration="3 days"
total="165\u20AC"
/>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -50,8 +50,8 @@ class Discussion extends Component {
autoFocus
type="text"
ref={input => {
this.input = input;
}}
this.input = input;
}}
value={this.state.message}
onChange={this.handleOnChange}
/>

View file

@ -8,13 +8,11 @@ import FilterPanel from './FilterPanel';
describe('FilterPanel', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<FilterPanel />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<FilterPanel />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -6,13 +6,11 @@ import HeroSection from './HeroSection';
describe('HeroSection', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<HeroSection params={{ displayName: 'most-awesome-shop' }}>
test
</HeroSection>
</TestProvider>
),
<TestProvider>
<HeroSection params={{ displayName: 'most-awesome-shop' }}>
test
</HeroSection>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -29,7 +29,7 @@ const ListingCard = props => {
{location}
</div>
<div className={css.reviews}>
(<span>{review.rating}</span><span>/5</span>){' '}
(<span>{review.rating}</span><span>/5</span>){' '}
<span>{review.count}</span>
</div>
</div>
@ -41,7 +41,7 @@ const ListingCard = props => {
<div className={css.authorDetails}>
<span className={css.authorName}>{author.name}</span>
<div className={css.authorReview}>
review: <span>{author.review.rating}</span><span>/5</span>
review: <span>{author.review.rating}</span><span>/5</span>
</div>
</div>
</div>

View file

@ -21,13 +21,11 @@ describe('ListingCard', () => {
},
};
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<ListingCard {...listing} />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<ListingCard {...listing} />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -18,7 +18,7 @@ const ListingCardSmall = props => {
{title}
</NamedLink>
<div className={css.reviews}>
(<span>{review.rating}</span><span>/5</span>){' '}
(<span>{review.rating}</span><span>/5</span>){' '}
<span>{review.count}</span>
</div>
<div className={css.price}>

View file

@ -21,13 +21,11 @@ describe('ListingCardSmall', () => {
},
};
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<ListingCardSmall {...listing} />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<ListingCardSmall {...listing} />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -8,13 +8,11 @@ import MapPanel from './MapPanel';
describe('MapPanel', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<MapPanel />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<MapPanel />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -3,7 +3,7 @@ import css from './Menu.css';
const Menu = () => (
<div className={css.container}>
New York, Jan 2nd Jan 4th <span className={css.openIndicator}></span>
New York, Jan 2nd Jan 4th <span className={css.openIndicator}></span>
</div>
);

View file

@ -12,17 +12,15 @@ describe('NamedLink', () => {
{ pattern: '/somepage/:id', name: 'SomePage', component: () => <div>blaa</div> },
];
const component = renderer.create(
(
<BrowserRouter>
<RoutesProvider routes={routesConf}>
<NamedLink name="SomePage" params={{ id }}>to SomePage</NamedLink>
</RoutesProvider>
</BrowserRouter>
),
<BrowserRouter>
<RoutesProvider routes={routesConf}>
<NamedLink name="SomePage" params={{ id }}>to SomePage</NamedLink>
</RoutesProvider>
</BrowserRouter>,
);
const json = component.toJSON();
expect(json.type).toEqual('a');
expect(json.props.href).toEqual(`/somepage/${id}`);
expect(json.children).toEqual([ 'to SomePage' ]);
expect(json.children).toEqual(['to SomePage']);
});
});

View file

@ -44,7 +44,7 @@ OrderDetailsPanel.defaultProps = { className: null };
OrderDetailsPanel.propTypes = {
className: string,
orderId: oneOfType([ string, number ]).isRequired,
orderId: oneOfType([string, number]).isRequired,
title: string.isRequired,
imageUrl: string.isRequired,
info: object.isRequired,

View file

@ -25,13 +25,11 @@ describe('OrderDetailsPanel', () => {
confirmationCode: 'some-test-confirmation-code',
};
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<OrderDetailsPanel {...props} />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<OrderDetailsPanel {...props} />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
describe('OrderDiscussionPanel', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<OrderDiscussionPanel />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<OrderDiscussionPanel />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -4,7 +4,7 @@ import renderer from 'react-test-renderer';
describe('RoutesProvider', () => {
it('should contain routes from context', () => {
const routesConf = [ { name: 'SomePage' } ];
const routesConf = [{ name: 'SomePage' }];
const Child = (props, context) => {
return <div>{context.routes[0].name}</div>;
};

View file

@ -8,13 +8,11 @@ import SearchResultsPanel from './SearchResultsPanel';
describe('SearchResultsPanel', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<SearchResultsPanel />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<SearchResultsPanel />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -45,12 +45,12 @@ class AuthenticationPage extends Component {
? <LoginForm onSubmit={this.handleLogIn} />
: <SignUpForm onSubmit={this.handleSignUp} />;
const fromLoginMsg = from && from.pathname ? (
<p>
const fromLoginMsg = from && from.pathname
? <p>
You must log in to view the page at
<code>{from.pathname}</code>
</p>
) : null;
: null;
return (
<PageLayout title={`Authentication page: ${this.props.tab} tab`}>
@ -69,7 +69,7 @@ const { any, oneOf, shape } = PropTypes;
AuthenticationPage.propTypes = {
location: shape({ state: shape({ from: any }) }),
tab: oneOf([ 'login', 'signup' ]),
tab: oneOf(['login', 'signup']),
};
export default AuthenticationPage;

View file

@ -6,11 +6,9 @@ import AuthenticationPage from './AuthenticationPage';
describe('AuthenticationPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<AuthenticationPage location={{ state: { from: '/protected' } }} />
</TestProvider>
),
<TestProvider>
<AuthenticationPage location={{ state: { from: '/protected' } }} />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -19,4 +19,4 @@ const ChangeAccountPasswordForm = props => {
ChangeAccountPasswordForm.propTypes = { ...formPropTypes };
export default reduxForm({ form: 'changeAccountPassword' })(ChangeAccountPasswordForm)
export default reduxForm({ form: 'changeAccountPassword' })(ChangeAccountPasswordForm);

View file

@ -6,11 +6,9 @@ import ChangeAccountPasswordForm from './ChangeAccountPasswordForm';
describe('ChangeAccountPasswordForm', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<ChangeAccountPasswordForm />
</TestProvider>
),
<TestProvider>
<ChangeAccountPasswordForm />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -16,4 +16,4 @@ const ChangePasswordForm = props => {
ChangePasswordForm.propTypes = { ...formPropTypes };
export default reduxForm({ form: 'changePassword' })(ChangePasswordForm)
export default reduxForm({ form: 'changePassword' })(ChangePasswordForm);

View file

@ -6,11 +6,9 @@ import ChangePasswordForm from './ChangePasswordForm';
describe('ChangePasswordForm', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<ChangePasswordForm />
</TestProvider>
),
<TestProvider>
<ChangePasswordForm />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
describe('CheckoutPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<CheckoutPage params={{ listingId: 'some-listing-id' }} />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<CheckoutPage params={{ listingId: 'some-listing-id' }} />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PageLayout } from '../../components';
export default () => <PageLayout title="Contact details" />
export default () => <PageLayout title="Contact details" />;

View file

@ -6,11 +6,9 @@ import ContactDetailsPage from './ContactDetailsPage';
describe('ContactDetailsPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<ContactDetailsPage params={{ displayName: 'my-shop' }} />
</TestProvider>
),
<TestProvider>
<ContactDetailsPage params={{ displayName: 'my-shop' }} />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -6,11 +6,9 @@ import EditProfilePage from './EditProfilePage';
describe('EditProfilePage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<EditProfilePage params={{ displayName: 'my-shop' }} />
</TestProvider>
),
<TestProvider>
<EditProfilePage params={{ displayName: 'my-shop' }} />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -29,4 +29,4 @@ const HeroSearchForm = props => {
HeroSearchForm.propTypes = { ...formPropTypes, intl: intlShape.isRequired };
export default reduxForm({ form: 'herosearchform' })(injectIntl(HeroSearchForm))
export default reduxForm({ form: 'herosearchform' })(injectIntl(HeroSearchForm));

View file

@ -10,11 +10,9 @@ describe('HeroSearchForm', () => {
it('matches snapshot', () => {
const store = configureStore();
const component = renderer.create(
(
<TestProvider>
<HeroSearchForm />
</TestProvider>
),
<TestProvider>
<HeroSearchForm />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -28,6 +28,6 @@ InboxPage.defaultProps = { filter: 'conversation' };
const { oneOf } = PropTypes;
InboxPage.propTypes = { filter: oneOf([ 'orders', 'sales', 'inbox' ]) };
InboxPage.propTypes = { filter: oneOf(['orders', 'sales', 'inbox']) };
export default InboxPage;

View file

@ -6,11 +6,9 @@ import InboxPage from './InboxPage';
describe('InboxPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<InboxPage filter="inbox" />
</TestProvider>
),
<TestProvider>
<InboxPage filter="inbox" />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -13,13 +13,11 @@ export const LandingPageComponent = props => {
const handleSubmit = createSubmitHandler(props.onLocationChanged);
const componentOrRedirect = props.LocationFilter && props.LocationFilter.length > 0
? <NamedRedirect name="SearchPage" query={{ location: props.LocationFilter }} />
: (
<PageLayout title="Landing page">
: <PageLayout title="Landing page">
<HeroSection>
<HeroSearchForm className={css.form} onSubmit={handleSubmit} />
</HeroSection>
</PageLayout>
);
</PageLayout>;
return componentOrRedirect;
};
@ -43,4 +41,4 @@ const mapDispatchToProps = function mapDispatchToProps(dispatch) {
return { onLocationChanged: v => dispatch(changeLocationFilter(v)) };
};
export default connect(mapStateToProps, mapDispatchToProps)(LandingPageComponent)
export default connect(mapStateToProps, mapDispatchToProps)(LandingPageComponent);

View file

@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
describe('LandingPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<LandingPageComponent onLocationChanged={v => v} />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<LandingPageComponent onLocationChanged={v => v} />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -13,7 +13,8 @@ const info = {
{ id: 4, title: 'img4', imageUrl: 'http://placehold.it/750x470' },
{ id: 5, title: 'img5', imageUrl: 'http://placehold.it/750x470' },
],
description: `
description: (
`
<p>
Organic Music Production in a Sustainable, Ethical and Professional Studio.
</p>
@ -24,17 +25,20 @@ const info = {
Banyan Studios is a comfortable, conscious, inspiring and creative retreat for musicians trying to convey their message through state of the art Audio & Video.
</p>
<a href="https://vimeo.com/168106603" alt="video">https://vimeo.com/168106603</a>
`,
`
),
reviews: [
{
id: 1,
reviewer: { avatar: 'http://placehold.it/44x44', name: 'Vesa L.', date: 'January 2017' },
rating: 4,
review: `
review: (
`
Great studio in the New York for music professionals. Everything you need
can be found from here and John was helpful with the right settings -
we even got some tips for our songs! :)
`,
`
),
},
],
};
@ -46,12 +50,12 @@ const ListingPage = () => (
<img className={css.mainImage} alt={info.images[0].title} src={info.images[0].imageUrl} />
<div className={css.thumbnailContainer}>
{info.images.slice(1).map(image => (
<div key={image.id} className={css.squareWrapper}>
<div className={css.aspectWrapper}>
<img className={css.thumbnail} alt={image.title} src={image.imageUrl} />
</div>
<div key={image.id} className={css.squareWrapper}>
<div className={css.aspectWrapper}>
<img className={css.thumbnail} alt={image.title} src={image.imageUrl} />
</div>
))}
</div>
))}
</div>
</div>
{/* eslint-disable react/no-danger */}
@ -71,34 +75,34 @@ const ListingPage = () => (
<h2>Studio reviews (1)</h2>
<div className={css.reviews}>
{info.reviews.map(review => (
<div key={review.id} className={css.review}>
<p>{review.review}</p>
<div key={review.id} className={css.review}>
<p>{review.review}</p>
<div className={css.reviewDetails}>
<div className={css.avatarWrapper}>
<img
className={css.avatar}
src={review.reviewer.avatar}
alt={review.reviewer.name}
/>
</div>
<div className={css.reviewDetails}>
<div className={css.avatarWrapper}>
<img
className={css.avatar}
src={review.reviewer.avatar}
alt={review.reviewer.name}
/>
</div>
<div className={css.reviewDetails}>
<span className={css.authorName}>{review.reviewer.name}</span><span
className={css.date}
>
{review.reviewer.date}
</span>
</div>
<div className={css.rating}>
review: <span>{review.rating}</span><span>/5</span>
</div>
<span className={css.authorName}>{review.reviewer.name}</span><span
className={css.date}
>
{review.reviewer.date}
</span>
</div>
<div className={css.rating}>
review: <span>{review.rating}</span><span>/5</span>
</div>
</div>
))}
</div>
))}
</div>
</div>
<div className={css.map}>Map</div>
<NamedLink className={css.buttonLink} name="OrderDetailsPage" params={{ id: 12345 }}>
{`Book ${info.title}`}
{`Book ${info.title}`}
</NamedLink>
</PageLayout>
);

View file

@ -8,13 +8,11 @@ import ListingPage from './ListingPage';
describe('ListingPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<ListingPage params={{ slug: 'banyan-studios', id: 1234 }} />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<ListingPage params={{ slug: 'banyan-studios', id: 1234 }} />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -17,4 +17,4 @@ const LoginForm = props => {
LoginForm.propTypes = { ...formPropTypes };
export default reduxForm({ form: 'login' })(LoginForm)
export default reduxForm({ form: 'login' })(LoginForm);

View file

@ -6,11 +6,9 @@ import LoginForm from './LoginForm';
describe('LoginForm', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<LoginForm />
</TestProvider>
),
<TestProvider>
<LoginForm />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -8,4 +8,4 @@ export default () => (
<li><Link to="/l/1234">Listing 1234</Link></li>
</ul>
</PageLayout>
)
);

View file

@ -6,11 +6,9 @@ import ManageListingsPage from './ManageListingsPage';
describe('ManageListingsPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<ManageListingsPage />
</TestProvider>
),
<TestProvider>
<ManageListingsPage />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -6,4 +6,4 @@ export default () => (
<PageLayout title="Page not found">
<Link to="/">Index page</Link>
</PageLayout>
)
);

View file

@ -6,11 +6,9 @@ import NotFoundPage from './NotFoundPage';
describe('NotFoundPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<NotFoundPage />
</TestProvider>
),
<TestProvider>
<NotFoundPage />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -58,8 +58,8 @@ const OrderPage = props => {
const { string, shape, oneOfType, number, oneOf } = PropTypes;
OrderPage.propTypes = {
params: shape({ id: oneOfType([ number, string ]).isRequired }).isRequired,
tab: oneOf([ 'details', 'discussion' ]).isRequired,
params: shape({ id: oneOfType([number, string]).isRequired }).isRequired,
tab: oneOf(['details', 'discussion']).isRequired,
};
export default OrderPage;

View file

@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
describe('OrderPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<OrderPage params={{ id: 1234 }} tab="details" />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<OrderPage params={{ id: 1234 }} tab="details" />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -6,11 +6,9 @@ import PasswordChangePage from './PasswordChangePage';
describe('PasswordChangePage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<PasswordChangePage />
</TestProvider>
),
<TestProvider>
<PasswordChangePage />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -15,4 +15,4 @@ const PasswordForgottenForm = props => {
PasswordForgottenForm.propTypes = { ...formPropTypes };
export default reduxForm({ form: 'passwordForgotten' })(PasswordForgottenForm)
export default reduxForm({ form: 'passwordForgotten' })(PasswordForgottenForm);

View file

@ -8,11 +8,9 @@ describe('PasswordForgottenForm', () => {
it('matches snapshot', () => {
const store = configureStore();
const component = renderer.create(
(
<Provider store={store}>
<PasswordForgottenForm />
</Provider>
),
<Provider store={store}>
<PasswordForgottenForm />
</Provider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -6,11 +6,9 @@ import PasswordForgottenPage from './PasswordForgottenPage';
describe('PasswordForgottenPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<PasswordForgottenPage />
</TestProvider>
),
<TestProvider>
<PasswordForgottenPage />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PageLayout } from '../../components';
export default () => <PageLayout title="Payout preferences" />
export default () => <PageLayout title="Payout preferences" />;

View file

@ -6,11 +6,9 @@ import PayoutPreferencesPage from './PayoutPreferencesPage';
describe('PayoutPreferencesPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<PayoutPreferencesPage />
</TestProvider>
),
<TestProvider>
<PayoutPreferencesPage />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -6,11 +6,9 @@ import ProfilePage from './ProfilePage';
describe('ProfilePage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<ProfilePage params={{ displayName: 'most-awesome-shop' }} />
</TestProvider>
),
<TestProvider>
<ProfilePage params={{ displayName: 'most-awesome-shop' }} />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -13,7 +13,7 @@ const SalesConversationPage = props => {
<Link to={`/sale/${params.id}/details`}>Details tab</Link>
<p>Mobile layout needs different views for discussion and details.</p>
<p>
Discussion view is the default if route doesn't specify mobile tab (e.g. <i>
Discussion view is the default if route doesn't specify mobile tab (e.g. <i>
/order/1234
</i>)
</p>

View file

@ -6,11 +6,9 @@ import SalesConversationPage from './SalesConversationPage';
describe('SalesConversationPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<SalesConversationPage params={{ id: 12345 }} />
</TestProvider>
),
<TestProvider>
<SalesConversationPage params={{ id: 12345 }} />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -14,7 +14,7 @@ export default function reducer(state = {}, action = {}) {
switch (type) {
case ADD_FILTER: {
const stateFilters = state.filters || [];
return { ...state, ...{ filters: unionWith(stateFilters, [ payload ], isEqual) } };
return { ...state, ...{ filters: unionWith(stateFilters, [payload], isEqual) } };
}
default:
return state;

View file

@ -109,4 +109,4 @@ const mapDispatchToProps = function mapDispatchToProps(dispatch) {
};
};
export default connect(mapStateToProps, mapDispatchToProps)(SearchPageComponent)
export default connect(mapStateToProps, mapDispatchToProps)(SearchPageComponent);

View file

@ -9,13 +9,11 @@ import routesConfiguration from '../../routesConfiguration';
describe('SearchPageComponent', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<SearchPageComponent />
</RoutesProvider>
</TestProvider>
),
<TestProvider>
<RoutesProvider routes={routesConfiguration}>
<SearchPageComponent />
</RoutesProvider>
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();
@ -40,18 +38,18 @@ describe('SearchPageDucs', () => {
const addFilter1 = addFilter('location', 'helsinki');
const addFilter2 = addFilter('gears', 3);
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 ] });
const reducedWithInitialContent = reducer({ filters: [addFilter1.payload] }, addFilter2);
expect(reduced).toEqual({ filters: [addFilter1.payload] });
expect(reducedWithInitialContent).toEqual({
filters: [addFilter1.payload, addFilter2.payload],
});
});
it('should handle duplicates ADD_FILTER', () => {
const filter = { location: 'helsinki' };
const addFilter = { type: ADD_FILTER, payload: filter };
const reducedWithInitialContent = reducer({ filters: [ filter ] }, addFilter);
expect(reducedWithInitialContent).toEqual({ filters: [ filter ] });
const reducedWithInitialContent = reducer({ filters: [filter] }, addFilter);
expect(reducedWithInitialContent).toEqual({ filters: [filter] });
});
});
});

View file

@ -11,4 +11,4 @@ export default () => (
<PageLayout title="Security">
<ChangeAccountPasswordForm onSubmit={changePassword} />
</PageLayout>
)
);

View file

@ -6,11 +6,9 @@ import SecurityPage from './SecurityPage';
describe('SecurityPage', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<SecurityPage />
</TestProvider>
),
<TestProvider>
<SecurityPage />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -21,4 +21,4 @@ const SignUpForm = props => {
SignUpForm.propTypes = { ...formPropTypes };
export default reduxForm({ form: 'signup' })(SignUpForm)
export default reduxForm({ form: 'signup' })(SignUpForm);

View file

@ -6,11 +6,9 @@ import SignUpForm from './SignUpForm';
describe('SignUpForm', () => {
it('matches snapshot', () => {
const component = renderer.create(
(
<TestProvider>
<SignUpForm />
</TestProvider>
),
<TestProvider>
<SignUpForm />
</TestProvider>,
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();

View file

@ -38,7 +38,7 @@ Example.defaultProps = { description: null, props: {} };
Example.propTypes = {
componentName: string.isRequired,
exampleName: string.isRequired,
component: oneOfType([ func, node ]).isRequired,
component: oneOfType([func, node]).isRequired,
description: string,
props: object,
};
@ -48,11 +48,9 @@ const Examples = props => {
const toExamples = (exmpls, name) => (
<li key={name}>
<ul>
{
map(exmpls, (exmpl, exampleName) => (
<Example key={exampleName} componentName={name} exampleName={exampleName} {...exmpl} />
))
}
{map(exmpls, (exmpl, exampleName) => (
<Example key={exampleName} componentName={name} exampleName={exampleName} {...exmpl} />
))}
</ul>
</li>
);

View file

@ -26,15 +26,13 @@ export default (state = initialState, action) => {
return state;
case REMOVE_FLASH_NOTIFICATION:
return state.map(
findIndex(state, msg => msg.id === payload.id),
msg => msg.set('isRead', true),
);
return state.map(findIndex(state, msg => msg.id === payload.id), msg =>
msg.set('isRead', true));
default:
return state;
}
}
};
// Action Creators
let nextMessageId = 1;

View file

@ -35,15 +35,15 @@ describe('FlashNotification', () => {
const addFlashNote1 = addFlashNotification('error', 'Run the tests');
const addFlashNote2 = addFlashNotification('error', 'Run the tests again');
const reduced = reducer([], addFlashNote1);
const reducedWithInitialContent = reducer([ addFlashNote1.payload ], addFlashNote2);
expect(reduced).toEqual([ addFlashNote1.payload ]);
expect(reducedWithInitialContent).toEqual([ addFlashNote1.payload, addFlashNote2.payload ]);
const reducedWithInitialContent = reducer([addFlashNote1.payload], addFlashNote2);
expect(reduced).toEqual([addFlashNote1.payload]);
expect(reducedWithInitialContent).toEqual([addFlashNote1.payload, addFlashNote2.payload]);
});
it('should handle duplicates ADD_FILTER', () => {
const addFlashNote = addFlashNotification('error', 'Run the tests');
const reducedWithInitialContent = reducer([ addFlashNote.payload ], addFlashNote);
expect(reducedWithInitialContent).toEqual([ addFlashNote.payload ]);
const reducedWithInitialContent = reducer([addFlashNote.payload], addFlashNote);
expect(reducedWithInitialContent).toEqual([addFlashNote.payload]);
});
});
});

View file

@ -244,7 +244,7 @@ const routesConfiguration = [
];
const flattenRoutes = routesArray =>
routesArray.reduce((a, b) => a.concat(b.routes ? [ b ].concat(flattenRoutes(b.routes)) : b), []);
routesArray.reduce((a, b) => a.concat(b.routes ? [b].concat(flattenRoutes(b.routes)) : b), []);
const findRouteByName = (nameToFind, routes) => {
const flattenedRoutes = flattenRoutes(routes);

View file

@ -7,7 +7,8 @@ import createReducer from './reducers';
* (like redux-saga or redux-thunk middleware)
*/
export default function configureStore(initialState) {
const useReduxDevTools = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' &&
const useReduxDevTools = process.env.NODE_ENV !== 'production' &&
typeof window !== 'undefined' &&
window.__REDUX_DEVTOOLS_EXTENSION__;
if (useReduxDevTools) {

148
yarn.lock
View file

@ -136,10 +136,6 @@ array-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
array-findindex-polyfill@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/array-findindex-polyfill/-/array-findindex-polyfill-0.1.0.tgz#c362665bec7645f22d7a3c3aac9793f71c3622ef"
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
@ -195,9 +191,9 @@ ast-types@0.8.18:
version "0.8.18"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.8.18.tgz#c8b98574898e8914e9d8de74b947564a9fe929af"
"ast-types@git+https://github.com/jlongster/ast-types.git":
version "0.9.3"
resolved "git+https://github.com/jlongster/ast-types.git#4b373d7e710105b07b22a12389ef2d8e1bcf2412"
ast-types@0.9.4:
version "0.9.4"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.4.tgz#410d1f81890aeb8e0a38621558ba5869ae53c91b"
async-each@^1.0.0:
version "1.0.1"
@ -244,7 +240,7 @@ 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.22.0:
babel-code-frame@6.22.0, 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:
@ -960,7 +956,7 @@ babel-types@^6.15.0, babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19
lodash "^4.2.0"
to-fast-properties "^1.0.1"
babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:
babylon@6.15.0, babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:
version "6.15.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
@ -1419,9 +1415,9 @@ contains-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
content-disposition@0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b"
content-disposition@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
content-security-policy-builder@1.1.0:
version "1.1.0"
@ -2104,7 +2100,7 @@ estraverse@~4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2"
esutils@^2.0.0, esutils@^2.0.2:
esutils@2.0.2, esutils@^2.0.0, esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@ -2171,13 +2167,13 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
express@^4.13.3, express@^4.14.0:
version "4.14.0"
resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66"
express@^4.13.3, express@^4.14.1:
version "4.14.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.14.1.tgz#646c237f766f148c2120aff073817b9e4d7e0d33"
dependencies:
accepts "~1.3.3"
array-flatten "1.1.1"
content-disposition "0.5.1"
content-disposition "0.5.2"
content-type "~1.0.2"
cookie "0.3.1"
cookie-signature "1.0.6"
@ -2186,19 +2182,19 @@ express@^4.13.3, express@^4.14.0:
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.7.0"
finalhandler "0.5.0"
finalhandler "0.5.1"
fresh "0.3.0"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "~2.3.0"
parseurl "~1.3.1"
path-to-regexp "0.1.7"
proxy-addr "~1.1.2"
proxy-addr "~1.1.3"
qs "6.2.0"
range-parser "~1.2.0"
send "0.14.1"
serve-static "~1.11.1"
type-is "~1.6.13"
send "0.14.2"
serve-static "~1.11.2"
type-is "~1.6.14"
utils-merge "1.0.0"
vary "~1.1.0"
@ -2317,6 +2313,16 @@ finalhandler@0.5.0:
statuses "~1.3.0"
unpipe "~1.0.0"
finalhandler@0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.1.tgz#2c400d8d4530935bc232549c5fa385ec07de6fcd"
dependencies:
debug "~2.2.0"
escape-html "~1.0.3"
on-finished "~2.3.0"
statuses "~1.3.1"
unpipe "~1.0.0"
find-cache-dir@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
@ -2345,9 +2351,9 @@ flatten@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
flow-parser@^0.37.0:
version "0.37.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.37.0.tgz#1065c612a30f037ac3ee60053f6e797a6d9be8d6"
flow-parser@0.38.0:
version "0.38.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.38.0.tgz#a631c46170c5b42400d905a75cfc83ce8db29424"
dependencies:
ast-types "0.8.18"
colors ">=0.6.2"
@ -2465,7 +2471,7 @@ get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
get-stdin@^5.0.1:
get-stdin@5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
@ -2488,7 +2494,7 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
@ -2716,7 +2722,7 @@ htmlparser2@~3.3.0:
domutils "1.1"
readable-stream "1.0"
http-errors@~1.5.0:
http-errors@~1.5.0, http-errors@~1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750"
dependencies:
@ -3327,6 +3333,15 @@ jest-util@^18.1.0:
jest-mock "^18.0.0"
mkdirp "^0.5.1"
jest-validate@18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-18.2.0.tgz#01f93ac78f23901cf9889808e2bbb931ffc58d86"
dependencies:
chalk "^1.1.1"
jest-matcher-utils "^18.1.0"
leven "^2.0.0"
pretty-format "^18.1.0"
jest@18.0.0:
version "18.0.0"
resolved "https://registry.yarnpkg.com/jest/-/jest-18.0.0.tgz#ef12f70befe0fcb30f1c61c0ae58748706267d4b"
@ -3394,10 +3409,6 @@ jsesc@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
jsesc@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.4.0.tgz#8568d223ff69c0b5e081b4f8edf5a23d978c9867"
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
@ -3489,6 +3500,10 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
leven@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-2.0.0.tgz#74c45744439550da185801912829f61d22071bc1"
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@ -3813,7 +3828,7 @@ minimist@0.0.8, minimist@~0.0.1:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
minimist@>=0.2.0, minimist@^1.1.1, minimist@^1.2.0:
minimist@1.2.0, minimist@>=0.2.0, minimist@^1.1.1, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
@ -3827,6 +3842,10 @@ ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
ms@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
mute-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
@ -4769,18 +4788,19 @@ preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
prettier@^0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-0.0.8.tgz#4b5f97d68ff2a7aaf1a062d2c3f0c0adad3a247e"
prettier@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-0.13.1.tgz#2c96cbdc15d098709f874e59efef48cb0c47c615"
dependencies:
ast-types "git+https://github.com/jlongster/ast-types.git"
babylon "^6.15.0"
esutils "^2.0.2"
flow-parser "^0.37.0"
get-stdin "^5.0.1"
jsesc "^2.4.0"
minimist "^1.2.0"
private "^0.1.6"
ast-types "0.9.4"
babel-code-frame "6.22.0"
babylon "6.15.0"
esutils "2.0.2"
flow-parser "0.38.0"
get-stdin "5.0.1"
glob "7.1.1"
jest-validate "18.2.0"
minimist "1.2.0"
pretty-error@^2.0.2:
version "2.0.2"
@ -4823,7 +4843,7 @@ promise@7.1.1, promise@^7.1.1:
dependencies:
asap "~2.0.3"
proxy-addr@~1.1.2:
proxy-addr@~1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074"
dependencies:
@ -5097,11 +5117,10 @@ reduce-function-call@^1.0.1:
dependencies:
balanced-match "^0.4.2"
redux-form@^6.4.3:
version "6.4.3"
resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-6.4.3.tgz#bd83a77770d9805f7b595a4ff18f00fe4267d3c8"
redux-form@^6.5.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/redux-form/-/redux-form-6.5.0.tgz#8c75ea77018afbabaa02f1389cf6b0e10787c5b8"
dependencies:
array-findindex-polyfill "^0.1.0"
deep-equal "^1.0.1"
es6-error "^4.0.0"
hoist-non-react-statics "^1.2.0"
@ -5109,7 +5128,6 @@ redux-form@^6.4.3:
is-promise "^2.1.0"
lodash "^4.17.3"
lodash-es "^4.17.3"
shallowequal "^0.2.2"
redux@^3.6.0:
version "3.6.0"
@ -5351,9 +5369,9 @@ semver-diff@^2.0.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
send@0.14.1:
version "0.14.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a"
send@0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef"
dependencies:
debug "~2.2.0"
depd "~1.1.0"
@ -5362,12 +5380,12 @@ send@0.14.1:
escape-html "~1.0.3"
etag "~1.7.0"
fresh "0.3.0"
http-errors "~1.5.0"
http-errors "~1.5.1"
mime "1.3.4"
ms "0.7.1"
ms "0.7.2"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.3.0"
statuses "~1.3.1"
serve-index@^1.7.2:
version "1.8.0"
@ -5381,14 +5399,14 @@ serve-index@^1.7.2:
mime-types "~2.1.11"
parseurl "~1.3.1"
serve-static@~1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805"
serve-static@~1.11.2:
version "1.11.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7"
dependencies:
encodeurl "~1.0.1"
escape-html "~1.0.3"
parseurl "~1.3.1"
send "0.14.1"
send "0.14.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@ -5531,9 +5549,9 @@ source-list-map@^0.1.4, source-list-map@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
source-map-support@^0.4.10, source-map-support@^0.4.2:
version "0.4.10"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.10.tgz#d7b19038040a14c0837a18e630a196453952b378"
source-map-support@^0.4.11, source-map-support@^0.4.2:
version "0.4.11"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322"
dependencies:
source-map "^0.5.3"
@ -5592,7 +5610,7 @@ sshpk@^1.7.0:
jsbn "~0.1.0"
tweetnacl "~0.14.0"
"statuses@>= 1.3.1 < 2", statuses@~1.3.0:
"statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
@ -5850,7 +5868,7 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
type-is@~1.6.13:
type-is@~1.6.14:
version "1.6.14"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2"
dependencies: