Add new project data to redux store

This commit is contained in:
JUDIT GRESKOVITS 2017-01-31 15:31:38 +00:00
parent da3d6f0f17
commit ca9ebfe24e
11 changed files with 260 additions and 191 deletions

View File

@ -42,8 +42,8 @@
"react-intl-redux": "^0.3.0",
"react-redux": "^5.0.2",
"react-router": "4.0.0-alpha.6",
"reduce-reducers": "^0.1.2",
"react-select": "^1.0.0-rc.2",
"reduce-reducers": "^0.1.2",
"redux": "^3.6.0",
"redux-actions": "^1.2.0",
"redux-batched-actions": "^0.1.5",

View File

@ -1,5 +1,5 @@
const React = require('react');
const ReactRouter = require('react-router');
const ReduxForm = require('redux-form');
const ReactIntl = require('react-intl');
const Styled = require('styled-components');
@ -10,8 +10,8 @@ const Button = require('@ui/components/button');
const Card = require('@ui/components/payment-card');
const {
Link
} = ReactRouter;
reduxForm
} = ReduxForm;
const {
FormattedMessage
@ -58,7 +58,7 @@ const Buttons = styled.div`
flex-flow: row;
`;
const NewBillingLink = styled(Link)`
const LeftButton = styled(Button)`
margin-right: ${remcalc(6)} !important;
`; // But why oh why do I need to use !important :'(
@ -68,9 +68,16 @@ const NewProjectBilling = (props) => {
type: 'mastercard',
number: 'xxxx-xxxx-xxxx-4901'
}],
org
handleSubmit,
onSubmit,
onNewBilling,
} = props;
console.log('cards = ', cards);
const _onNewBilling = (evt) => {
evt.preventDefault();
onNewBilling();
};
const cardList = cards.map((card, index) => (
<PaymentCardView key={index}>
<PaymentCard size='large' type={card.type} />
@ -92,23 +99,29 @@ const NewProjectBilling = (props) => {
<FormattedMessage id='billing.description' />
</Description>
{ cardList }
<Buttons>
<NewBillingLink to={`/${org.id}/new-project/new-billing`}>
<Button secondary>
<form onSubmit={handleSubmit(onSubmit)}>
<Buttons>
<LeftButton onClick={_onNewBilling} secondary>
<FormattedMessage id='billing.new-billing-label' />
</LeftButton>
<Button primary type='submit'>
<FormattedMessage id='billing.use-existing-label' />
</Button>
</NewBillingLink>
<Button primary>
<FormattedMessage id='billing.use-existing-label' />
</Button>
</Buttons>
</Buttons>
</form>
</Container>
);
};
NewProjectBilling.propTypes = {
cards: React.PropTypes.array,
org: React.PropTypes.object
handleSubmit: React.PropTypes.func.isRequired,
onNewBilling: React.PropTypes.func.isRequired,
onSubmit: React.PropTypes.func.isRequired
};
module.exports = NewProjectBilling;
module.exports = reduxForm({
form: 'create-project',
destroyOnUnmount: false,
forceUnregisterOnUnmount: true
})(NewProjectBilling);

View File

@ -1,20 +1,14 @@
const React = require('react');
const ReactRouter = require('react-router');
const ReduxForm = require('redux-form');
const ReactIntl = require('react-intl');
const Styled = require('styled-components');
const constants = require('@ui/shared/constants');
const fns = require('@ui/shared/functions');
const PropTypes = require('@root/prop-types');
const Input = require('@ui/components/input');
const Button = require('@ui/components/button');
const {
Link
} = ReactRouter;
const {
Field,
reduxForm
@ -69,19 +63,21 @@ const LeftButton = styled(Button)`
const CreateProject = (props) => {
const {
handleSubmit = () => {},
org,
handleSubmit,
onCancel,
onSubmit,
pristine,
submitting
} = props;
const onSubmit = () => {
handleSubmit();
const _onCancel = (evt) => {
evt.preventDefault();
onCancel();
};
return (
<Container>
<form onSubmit={onSubmit}>
<form onSubmit={handleSubmit(onSubmit)}>
<Title>
<FormattedMessage id='new-project.title' />
</Title>
@ -95,19 +91,16 @@ const CreateProject = (props) => {
placeholder='Project name'
/>
<Buttons>
<LeftButton secondary>
<LeftButton onClick={_onCancel} secondary>
<FormattedMessage id='cancel' />
</LeftButton>
{ /* TMP - this will actually need to submit!!! */}
<Link to={`/${org.id}/new-project/billing`}>
<Button
disabled={pristine || submitting}
primary
type='submit'
>
<FormattedMessage id='submit' />
</Button>
</Link>
<Button
disabled={pristine || submitting}
primary
type='submit'
>
<FormattedMessage id='submit' />
</Button>
</Buttons>
</form>
</Container>
@ -116,11 +109,14 @@ const CreateProject = (props) => {
CreateProject.propTypes = {
handleSubmit: React.PropTypes.func.isRequired,
org: PropTypes.org.isRequired,
onCancel: React.PropTypes.func.isRequired,
onSubmit: React.PropTypes.func.isRequired,
pristine: React.PropTypes.bool.isRequired,
submitting: React.PropTypes.bool.isRequired
};
module.exports = reduxForm({
form: 'create-project'
form: 'create-project',
destroyOnUnmount: false,
forceUnregisterOnUnmount: true
})(CreateProject);

View File

@ -72,16 +72,23 @@ const ProjectNameButtons = styled(Button)`
margin-right: ${remcalc(6)} !important;
`; // But why oh why do I need to use !important :'(
const CreateProject = (props) => {
const CreateBilling = (props) => {
const {
handleSubmit = () => {},
handleSubmit,
onBack,
onSubmit,
pristine,
submitting
} = props;
const _onBack = (evt) => {
evt.preventDefault();
onBack(evt);
};
return (
<Container>
<form onSubmit={handleSubmit}>
<form onSubmit={handleSubmit(onSubmit)}>
<Title>
<FormattedMessage id='new-billing.title' />
</Title>
@ -115,7 +122,7 @@ const CreateProject = (props) => {
placeholder=''
/>
<Buttons>
<ProjectNameButtons secondary>
<ProjectNameButtons onClick={_onBack} secondary>
<FormattedMessage id='back' />
</ProjectNameButtons>
<ProjectNameButtons
@ -131,12 +138,17 @@ const CreateProject = (props) => {
);
};
CreateProject.propTypes = {
CreateBilling.propTypes = {
handleSubmit: React.PropTypes.func.isRequired,
onBack: React.PropTypes.func.isRequired,
onSubmit: React.PropTypes.func.isRequired,
pristine: React.PropTypes.bool.isRequired,
submitting: React.PropTypes.bool.isRequired
};
module.exports = reduxForm({
form: 'create-billing'
})(CreateProject);
form: 'create-project',
/*destroyOnUnmount: false,
forceUnregisterOnUnmount: true/*,
validate*/
})(CreateBilling);

View File

@ -15,21 +15,36 @@ const {
} = selectors;
const {
handleNewProjectBilling
handleNewProject
} = actions;
const Billing = (props) => {
const {
cards,
handleNewProjectBilling,
handleNewProject,
router,
org
} = props;
const onSubmit = (values) => {
// TODO will need to save exisiting card to project
console.log('NewBilling values = ', values);
handleNewProject({
values,
org
});
router.transitionTo(`/${org.id}/projects`);
};
const onNewBilling = (evt) =>
router.transitionTo(`/${org.id}/new-project/new-billing`);
return (
<BillingForm
cards={cards}
handleSubmit={handleNewProjectBilling}
onNewBilling={onNewBilling}
onSubmit={onSubmit}
org={org}
/>
);
@ -37,19 +52,21 @@ const Billing = (props) => {
Billing.propTypes = {
cards: React.PropTypes.array, // TODO set up example card in thingie data
handleNewProjectBilling: React.PropTypes.func.isRequired,
org: PropTypes.org.isRequired
handleNewProject: React.PropTypes.func.isRequired,
org: PropTypes.org.isRequired,
router: React.PropTypes.object
};
const mapStateToProps = (state, {
params = {}
}) => ({
// TODO add cards - as above
org: orgByIdSelector(params.org)(state)
org: orgByIdSelector(params.org)(state),
router: state.app.router
});
const mapDispatchToProps = (dispatch) => ({
handleNewProjectBilling: () => dispatch(handleNewProjectBilling())
handleNewProject: (values) => dispatch(handleNewProject(values))
});
module.exports = connect(

View File

@ -15,41 +15,52 @@ const {
} = selectors;
const {
handleNewProjectBilling
handleNewProject
} = actions;
const NewBilling = (props) => {
const {
cards,
handleNewProjectBilling,
handleNewProject,
router,
org
} = props;
const onBack = (evt) =>
router.transitionTo(`/${org.id}/new-project/billing`);
const onSubmit = (values) => {
handleNewProject({
values,
org
});
router.transitionTo(`/${org.id}/projects`);
};
return (
<NewBillingForm
cards={cards}
handleSubmit={handleNewProjectBilling}
org={org}
onBack={onBack}
onSubmit={onSubmit}
/>
);
};
NewBilling.propTypes = {
cards: React.PropTypes.array, // TODO set up example card in thingie data
handleNewProjectBilling: React.PropTypes.func.isRequired,
org: PropTypes.org.isRequired
handleNewProject: React.PropTypes.func.isRequired,
org: PropTypes.org.isRequired,
router: React.PropTypes.object
};
const mapStateToProps = (state, {
params = {}
}) => ({
// TODO add cards - as above
org: orgByIdSelector(params.org)(state)
org: orgByIdSelector(params.org)(state),
router: state.app.router
});
const mapDispatchToProps = (dispatch) => ({
handleNewProjectBilling: () => dispatch(handleNewProjectBilling())
handleNewProject: (values) => dispatch(handleNewProject(values))
});
module.exports = connect(

View File

@ -1,7 +1,6 @@
const React = require('react');
const ReactRedux = require('react-redux');
const selectors = require('@state/selectors');
const actions = require('@state/actions');
const PropTypes = require('@root/prop-types');
const NewProjectForm = require('@components/new-project');
@ -14,37 +13,42 @@ const {
orgByIdSelector
} = selectors;
const {
handleNewProject
} = actions;
const NewProject = (props) => {
const {
handleNewProject,
org
org,
router
} = props;
const onCancel = (values) =>
router.transitionTo(`/${org.id}/projects`);
const onSubmit = (values) =>
router.transitionTo(`/${org.id}/new-project/billing`);
return (
<NewProjectForm handleSubmit={handleNewProject} org={org} />
<NewProjectForm
onCancel={onCancel}
onSubmit={onSubmit}
org={org}
/>
);
};
NewProject.propTypes = {
handleNewProject: React.PropTypes.func.isRequired,
org: PropTypes.org.isRequired
org: PropTypes.org.isRequired,
router: React.PropTypes.object
};
// TODO we'll need to know whether there any cards
// otherwise go to new billing straight away
// otherwise go to new billing straight away
const mapStateToProps = (state, {
params = {}
}) => ({
org: orgByIdSelector(params.org)(state)
org: orgByIdSelector(params.org)(state),
router: state.app.router
});
const mapDispatchToProps = (dispatch) => ({
handleNewProject: () => dispatch(handleNewProject())
});
const mapDispatchToProps = (dispatch) => ({});
module.exports = connect(
mapStateToProps,

View File

@ -27,10 +27,14 @@ const {
Link
} = ReactRouter;
const Projects = ({
org = {},
projects = []
}) => {
const Projects = (props) => {
const {
org = {},
projects = [],
router
} = props;
const empty = projects.length ? null : (
<EmptyProjects />
);
@ -43,12 +47,15 @@ const Projects = ({
</li>
));
const onCreateProject = (evt) =>
router.transitionTo(`/${org.id}/new-project`);
return (
<div>
{empty}
<Row>
<Column xs={12}>
<Button>
<Button onClick={onCreateProject}>
<FormattedMessage id='create-new' />
</Button>
</Column>
@ -64,14 +71,16 @@ const Projects = ({
Projects.propTypes = {
org: PropTypes.org,
projects: React.PropTypes.arrayOf(PropTypes.project)
projects: React.PropTypes.arrayOf(PropTypes.project),
router: React.PropTypes.object
};
const mapStateToProps = (state, {
params = {}
}) => ({
org: orgByIdSelector(params.org)(state),
projects: projectsByOrgIdSelector(params.org)(state)
projects: projectsByOrgIdSelector(params.org)(state),
router: state.app.router
});
module.exports = connect(

View File

@ -44,7 +44,6 @@ module.exports = {
toggleMonitorView: createAction(`${APP}/TOGGLE_MONITOR_VIEW`),
switchMonitorViewPage: createAction(`${APP}/SWITCH_MONITOR_VIEW_PAGE`),
handleNewProject: createAction(`${APP}/CREATE_NEW_PROJECT`),
handleNewProjectBilling: createAction(`${APP}/CREATE_NEW_PROJECT_BILLING`),
...orgMemberActions,
...projectMemberActions,
};

View File

@ -1,6 +1,7 @@
const ReduxActions = require('redux-actions');
const actions = require('@state/actions');
const fns = require('@ui/shared/functions');
const {
handleActions
@ -12,8 +13,13 @@ const {
projectHandlePeopleStatusTooltip,
projectHandleMemberUpdate,
projectRemoveMember,
handleNewProject
} = actions;
const {
rndId
} = fns;
module.exports = handleActions({
[projectHandleInviteToggle.toString()]: (state, action) => {
return {
@ -98,4 +104,22 @@ module.exports = handleActions({
]
};
},
[handleNewProject.toString()]: (state, action) => {
const {
org,
values
} = action.payload;
return {
...state,
data: [
...state.data,
{
name: values['project-name'],
org: org.uuid,
uuid: rndId(),
id: values['project-name'].toLowerCase().split(' ').join('-')
}
]
};
}
}, {});

View File

@ -1,5 +1,7 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@tomgco/joyent-portal-ui@alpha":
version "0.0.1-554"
resolved "https://registry.yarnpkg.com/@tomgco/joyent-portal-ui/-/joyent-portal-ui-0.0.1-554.tgz#de27c9ff4b630e32303d333690144bdc08401f85"
@ -75,6 +77,10 @@ acorn-jsx@^3.0.0, acorn-jsx@^3.0.1:
dependencies:
acorn "^3.0.4"
acorn@>=2.5.2, acorn@^4.0.1, acorn@^4.0.3, acorn@^4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
acorn@^2.1.0, acorn@^2.4.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
@ -83,10 +89,6 @@ acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
acorn@^4.0.1, acorn@^4.0.3, acorn@^4.0.4, acorn@>=2.5.2:
version "4.0.4"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
@ -1756,21 +1758,21 @@ colormin@^1.0.5:
css-color-names "0.0.4"
has "^1.0.1"
colors@^1.1.2, colors@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
colors@0.5.x:
version "0.5.1"
resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774"
colors@^1.1.2, colors@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
combined-stream@^1.0.5, combined-stream@~1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
dependencies:
delayed-stream "~1.0.0"
commander@^2.8.1, commander@^2.9.0, commander@2:
commander@2, commander@^2.8.1, commander@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies:
@ -2088,7 +2090,7 @@ csso@~2.2.1:
clap "^1.0.9"
source-map "^0.5.3"
"cssom@>= 0.3.0 < 0.4.0", cssom@0.3.x:
cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
version "0.3.2"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
@ -2104,12 +2106,6 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
d@^0.1.1, d@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
dependencies:
es5-ext "~0.10.2"
d3-array@1, d3-array@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.0.2.tgz#174237bf356a852fadd6af87743d928631de7655"
@ -2320,6 +2316,12 @@ d3@^4.4.1:
d3-voronoi "1.1.1"
d3-zoom "1.1.1"
d@^0.1.1, d@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
dependencies:
es5-ext "~0.10.2"
damerau-levenshtein@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.3.tgz#ae4f4ce0b62acae10ff63a01bb08f652f5213af2"
@ -2455,7 +2457,7 @@ doctrine@^1.2.2:
esutils "^2.0.2"
isarray "^1.0.0"
dom-serializer@~0.1.0, dom-serializer@0:
dom-serializer@0, dom-serializer@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
dependencies:
@ -2470,7 +2472,7 @@ domain-browser@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
domelementtype@^1.3.0, domelementtype@1:
domelementtype@1, domelementtype@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
@ -2484,7 +2486,7 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
domutils@^1.5.1, domutils@1.5.1:
domutils@1.5.1, domutils@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
dependencies:
@ -2497,16 +2499,16 @@ dot-prop@^3.0.0:
dependencies:
is-obj "^1.0.0"
duplexer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
duplexer2@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
dependencies:
readable-stream "^2.0.2"
duplexer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
eastasianwidth@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.1.1.tgz#44d656de9da415694467335365fb3147b8572b7c"
@ -2666,7 +2668,7 @@ es6-set@~0.1.3:
es6-symbol "3"
event-emitter "~0.3.4"
es6-symbol@~3.1, es6-symbol@~3.1.0, es6-symbol@3:
es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa"
dependencies:
@ -3468,7 +3470,7 @@ hyphenate-style-name@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b"
iconv-lite@^0.4.13, iconv-lite@~0.4.13, iconv-lite@0.4:
iconv-lite@0.4, iconv-lite@^0.4.13, iconv-lite@~0.4.13:
version "0.4.15"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
@ -3532,7 +3534,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:
inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
@ -3581,7 +3583,7 @@ intl-messageformat-parser@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.2.0.tgz#5906b7f953ab7470e0dc8549097b648b991892ff"
intl-messageformat@^1.3.0, intl-messageformat@1.3.0:
intl-messageformat@1.3.0, intl-messageformat@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-1.3.0.tgz#f7d926aded7a3ab19b2dc601efd54e99a4bd4eae"
dependencies:
@ -3854,14 +3856,14 @@ is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
isemail@2.x.x:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6"
@ -4119,7 +4121,7 @@ loader-runner@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.2.0.tgz#824c1b699c4e7a2b6501b85902d5b862bf45b3fa"
loader-utils@^0.2, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@~0.2.2, loader-utils@~0.2.5, loader-utils@0.2.x:
loader-utils@0.2.x, loader-utils@^0.2, loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@~0.2.2, loader-utils@~0.2.5:
version "0.2.16"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
dependencies:
@ -4317,7 +4319,7 @@ lowercase-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
lru-cache@^4.0.1, lru-cache@4.0.x:
lru-cache@4.0.x, lru-cache@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
dependencies:
@ -4434,7 +4436,7 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
"mime-db@>= 1.24.0 < 2", mime-db@~1.26.0, mime-db@1.x.x:
mime-db@1.x.x, "mime-db@>= 1.24.0 < 2", mime-db@~1.26.0:
version "1.26.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
@ -4444,14 +4446,14 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:
dependencies:
mime-db "~1.26.0"
mime@^1.3.4, mime@1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
mime@1.2.x:
version "1.2.11"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"
mime@1.3.4, mime@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
mimos@3.x.x:
version "3.0.3"
resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f"
@ -4475,19 +4477,15 @@ minimatch@^3.0.0, minimatch@^3.0.2:
dependencies:
brace-expansion "^1.0.0"
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@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1:
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
@ -4497,14 +4495,14 @@ moment@^2.10.6, moment@^2.17.1:
version "2.17.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82"
ms@^0.7.1, ms@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
ms@0.7.2, ms@^0.7.1:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
multimatch@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
@ -4979,16 +4977,16 @@ path-parse@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
path-to-regexp@^1.5.3:
version "1.7.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
dependencies:
isarray "0.0.1"
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
path-type@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@ -5444,34 +5442,27 @@ public-encrypt@^4.0.0:
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
q@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
qs@~6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
qs@6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
query-string@^4.1.0:
version "4.3.1"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.1.tgz#54baada6713eafc92be75c47a731f2ebd09cd11d"
dependencies:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
qs@~6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
query-string@4.2.3:
query-string@4.2.3, query-string@^4.1.0:
version "4.2.3"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.2.3.tgz#9f27273d207a25a8ee4c7b8c74dcd45d556db822"
dependencies:
@ -5482,7 +5473,7 @@ querystring-es3@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
querystring@^0.2.0, querystring@0.2.0:
querystring@0.2.0, querystring@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
@ -5974,7 +5965,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.0, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2:
rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.0, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4:
version "2.5.4"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
dependencies:
@ -5998,7 +5989,7 @@ rx-lite@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
sax@^1.1.4, sax@>=0.6.0, sax@~1.2.1:
sax@>=0.6.0, sax@^1.1.4, sax@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
@ -6008,7 +5999,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5":
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
@ -6313,10 +6304,6 @@ strict-uri-encode@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
string_decoder@^0.10.25, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@ -6332,6 +6319,10 @@ string-width@^2.0.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^3.0.0"
string_decoder@^0.10.25, string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
stringifier@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.3.0.tgz#def18342f6933db0f2dbfc9aa02175b448c17959"
@ -6531,10 +6522,6 @@ thenify@^3.2.1:
dependencies:
any-promise "^1.0.0"
through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
through2@^2.0.0, through2@~2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@ -6542,6 +6529,10 @@ through2@^2.0.0, through2@~2.0.0:
readable-stream "^2.1.5"
xtend "~4.0.1"
through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
time-require@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98"
@ -6744,16 +6735,16 @@ url-parse-lax@^1.0.0:
dependencies:
prepend-http "^1.0.1"
url-parse@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a"
url-parse@1.0.x:
version "1.0.5"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
dependencies:
querystringify "0.0.x"
requires-port "1.0.x"
url-parse@1.0.x:
version "1.0.5"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
url-parse@^1.1.1:
version "1.1.7"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a"
dependencies:
querystringify "0.0.x"
requires-port "1.0.x"
@ -6779,7 +6770,7 @@ util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
util@^0.10.3, util@0.10.3:
util@0.10.3, util@^0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies:
@ -6956,7 +6947,7 @@ which-module@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
which@^1.2.4, which@^1.2.9, which@1.2.x:
which@1.2.x, which@^1.2.4, which@^1.2.9:
version "1.2.12"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192"
dependencies:
@ -6978,6 +6969,10 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
@ -6986,10 +6981,6 @@ wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@ -7057,13 +7048,7 @@ xml2js@^0.4:
sax ">=0.6.0"
xmlbuilder "^4.1.0"
xmlbuilder@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
dependencies:
lodash "^4.0.0"
xmlbuilder@~4.1.0:
xmlbuilder@^4.1.0, xmlbuilder@~4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.1.0.tgz#687e84d9c4145af8db438d8bec88805df66249f4"
dependencies:
@ -7117,4 +7102,3 @@ yargs@~3.10.0:
cliui "^2.1.0"
decamelize "^1.0.0"
window-size "0.1.0"