feat(instances): CI - firewall responsive designs

This commit is contained in:
Fábio Moreira 2018-06-01 16:00:37 +01:00 committed by Sérgio Ramos
parent deb1a8436f
commit fc81d666d0
5 changed files with 324 additions and 235 deletions

View File

@ -1,4 +1,5 @@
import React, { Fragment } from 'react'; import React, { Fragment } from 'react';
import { withTheme } from 'styled-components';
import { Margin } from 'styled-components-spacing'; import { Margin } from 'styled-components-spacing';
import Flex, { FlexItem } from 'styled-flex-component'; import Flex, { FlexItem } from 'styled-flex-component';
import { compose, graphql } from 'react-apollo'; import { compose, graphql } from 'react-apollo';
@ -42,119 +43,126 @@ const Firewall = ({
enabled = false, enabled = false,
showInactiveRules = null, showInactiveRules = null,
showInactive = false, showInactive = false,
theme = {},
...props ...props
}) => ( }) => {
<Step name="firewall" getValue={handleGetValue} {...props}> const mobile = theme.screen === 'mobile';
<StepHeader icon={<FirewallIcon />}>Firewall rules</StepHeader>
<StepDescription href="https://docs.joyent.com/public-cloud/network/firewall"> return (
Cloud firewall rules secure instances by defining network traffic rules, <Step name="firewall" getValue={handleGetValue} {...props}>
controlling incoming and outgoing traffic. Enabling the firewall applies <StepHeader icon={<FirewallIcon />}>Firewall rules</StepHeader>
only rules which match your instance. Although these rules are created in <StepDescription href="https://docs.joyent.com/public-cloud/network/firewall">
the firewall console, the addition of tags can alter the firewall rules. Cloud firewall rules secure instances by defining network traffic rules,
</StepDescription> controlling incoming and outgoing traffic. Enabling the firewall applies
<StepPreview> only rules which match your instance. Although these rules are created
<Margin top="3"> in the firewall console, the addition of tags can alter the firewall
<Preview {...preview} /> rules.
</Margin> </StepDescription>
</StepPreview> <StepPreview>
<StepOutlet> <Margin top="3">
{({ next }) => ( <Preview {...preview} />
<Fragment> </Margin>
<Margin top="5"> </StepPreview>
<Flex> <StepOutlet>
<FlexItem> {({ next }) => (
<ReduxForm <Fragment>
form={IR_FW_F_ENABLED} <Margin top="5">
destroyOnUnmount={false} <Flex column={mobile}>
forceUnregisterOnUnmount={true} <FlexItem>
> <ReduxForm
{props => ( form={IR_FW_F_ENABLED}
<Margin right="5"> destroyOnUnmount={false}
<ToggleFirewallForm {...props} submitting={loading} /> forceUnregisterOnUnmount={true}
>
{props => (
<Margin right="5" bottom={mobile ? '2' : '0'}>
<ToggleFirewallForm {...props} submitting={loading} />
</Margin>
)}
</ReduxForm>
</FlexItem>
<FlexItem>
<ReduxForm
form={IR_FW_F_INACTIVE}
destroyOnUnmount={false}
forceUnregisterOnUnmount={true}
>
{props =>
enabled && !loading ? (
<ToggleInactiveForm {...props} />
) : null
}
</ReduxForm>
</FlexItem>
</Flex>
</Margin>
{enabled && !loading && !defaultRules.length && !tagRules.length ? (
<Margin top="5">
<Empty borderTop>
<Fragment>
<H3>No Firewall rules found</H3>
<Margin top="1">
<P>
Try viewing inactive rules instead to see firewalls that
can potentially affect your instance
</P>
</Margin> </Margin>
)} <Margin top="2">
</ReduxForm> <Button
</FlexItem> secondary
<FlexItem> onClick={showInactiveRules}
<ReduxForm disabled={showInactive}
form={IR_FW_F_INACTIVE} >
destroyOnUnmount={false} View Inactive Rules
forceUnregisterOnUnmount={true} </Button>
> </Margin>
{props => </Fragment>
enabled && !loading ? ( </Empty>
<ToggleInactiveForm {...props} /> </Margin>
) : null ) : null}
} {!loading && enabled && defaultRules.length ? (
</ReduxForm> <Margin top="5">
</FlexItem> <DefaultRules rules={defaultRules} />
</Flex> </Margin>
</Margin> ) : null}
{enabled && !loading && !defaultRules.length && !tagRules.length ? ( {!loading && enabled && tagRules.length ? (
<Margin top="5">
<TagRules rules={tagRules} />
</Margin>
) : null}
{!loading && enabled && (tagRules.length || defaultRules.length) ? (
<Margin top="5">
<P>
*Other firewall rules may apply as defined by wildcard(s),
IP(s), subnet(s), tag(s) or VM(s). Please see{' '}
<a
href="https://apidocs.joyent.com/cloudapi/#firewall-rule-syntax"
target="_blank"
rel="noopener noreferrer"
>
firewall rule list
</a>{' '}
for more details.
</P>
</Margin>
) : null}
<Margin top="5"> <Margin top="5">
<Empty borderTop> <Button
<Fragment> id="next-button-firewall"
<H3>No Firewall rules found</H3> type="button"
<Margin top="1"> component={Link}
<P> to={next}
Try viewing inactive rules instead to see firewalls that fluid={mobile}
can potentially affect your instance >
</P> Next
</Margin> </Button>
<Margin top="2">
<Button
secondary
onClick={showInactiveRules}
disabled={showInactive}
>
View Inactive Rules
</Button>
</Margin>
</Fragment>
</Empty>
</Margin> </Margin>
) : null} </Fragment>
{!loading && enabled && defaultRules.length ? ( )}
<Margin top="5"> </StepOutlet>
<DefaultRules rules={defaultRules} /> </Step>
</Margin> );
) : null} };
{!loading && enabled && tagRules.length ? (
<Margin top="5">
<TagRules rules={tagRules} />
</Margin>
) : null}
{!loading && enabled && (tagRules.length || defaultRules.length) ? (
<Margin top="5">
<P>
*Other firewall rules may apply as defined by wildcard(s),
IP(s), subnet(s), tag(s) or VM(s). Please see{' '}
<a
href="https://apidocs.joyent.com/cloudapi/#firewall-rule-syntax"
target="_blank"
rel="noopener noreferrer"
>
firewall rule list
</a>{' '}
for more details.
</P>
</Margin>
) : null}
<Margin top="5">
<Button
id="next-button-firewall"
type="button"
component={Link}
to={next}
>
Next
</Button>
</Margin>
</Fragment>
)}
</StepOutlet>
</Step>
);
export default compose( export default compose(
connect(({ form, values }, ownProps) => ({ connect(({ form, values }, ownProps) => ({
@ -206,6 +214,4 @@ export default compose(
showInactiveRules: () => showInactiveRules: () =>
dispatch(change(IR_FW_F_INACTIVE, 'inactive', true)) dispatch(change(IR_FW_F_INACTIVE, 'inactive', true))
})) }))
)(Firewall); )(withTheme(({ ...rest }) => <Firewall {...rest} />));
export { Preview } from './components';

View File

@ -2,7 +2,6 @@ import React, { Fragment } from 'react';
import { Margin } from 'styled-components-spacing'; import { Margin } from 'styled-components-spacing';
import Flex, { FlexItem } from 'styled-flex-component'; import Flex, { FlexItem } from 'styled-flex-component';
import { withTheme } from 'styled-components'; import { withTheme } from 'styled-components';
import { compose } from 'react-apollo'; import { compose } from 'react-apollo';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import ReduxForm from 'declarative-redux-form'; import ReduxForm from 'declarative-redux-form';

View File

@ -9,14 +9,18 @@ import {
H3, H3,
FormGroup, FormGroup,
FormLabel, FormLabel,
Toggle,
TagList, TagList,
TagItem, TagItem,
P, P,
Checkbox, Checkbox,
Strong, Strong,
Card Card,
QueryBreakpoints
} from 'joyent-ui-toolkit'; } from 'joyent-ui-toolkit';
const { SmallOnly, MediumDown, Medium, Large } = QueryBreakpoints;
const Form = styled.form` const Form = styled.form`
margin-bottom: 0 !important; margin-bottom: 0 !important;
`; `;
@ -71,66 +75,138 @@ const Rule = ({ enabled, rule_obj }) => {
const tos = rule_obj.to.map((p, index) => parsePartial(p, index, style)); const tos = rule_obj.to.map((p, index) => parsePartial(p, index, style));
return ( return (
<Card disabled={!enabled}> <Card disabled={!enabled}>
<Padding left="3" right="3" top="2" bottom="2"> <MediumDown>
<Row> <Flex column>
<Col xs="3"> <Padding horizontal="3" vertical="2">
<Flex justifyStart alignCenter contentStretch> <Flex row>
<Margin right="0.5"> <Margin horizontal="1" inline>
<FlexItem> <Strong style={style}>From: </Strong>
<Strong style={style}>From: </Strong> <Margin horizontal="1" inline>
</FlexItem> {froms}
</Margin>
</Margin> </Margin>
<Flex alignCenter>{froms}</Flex> <Margin left="5" right="1" inline>
</Flex> <Strong style={style}>To: </Strong>
</Col> <Margin horizontal="1" inline>
<Col xs="3"> {tos}
<Flex justifyStart alignCenter contentStretch> </Margin>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>To: </Strong>
</FlexItem>
</Margin> </Margin>
<Flex alignCenter>{tos}</Flex>
</Flex> </Flex>
</Col> </Padding>
<Col xs="2"> <Padding
<Flex justifyStart alignCenter contentStretch> horizontal="3"
<Margin right="0.5"> vertical="2"
<FlexItem> style={{ 'border-top': '1px solid #D8D8D8' }}
>
<SmallOnly>
<Flex column>
<Margin horizontal="1" inline>
<Strong style={style}>Protocol: </Strong> <Strong style={style}>Protocol: </Strong>
</FlexItem> <Margin horizontal="1" inline>
</Margin> {protocol.name}
<Flex alignCenter> </Margin>
<P style={style}>{protocol.name}</P> </Margin>
</Flex> <Margin horizontal="1" inline>
</Flex>
</Col>
<Col xs="2">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>Ports: </Strong> <Strong style={style}>Ports: </Strong>
</FlexItem> <Margin horizontal="1" inline>
</Margin> {protocol.targets.join(';')}
<Flex alignCenter> </Margin>
<P style={style}>{protocol.targets.join(';')}</P> </Margin>
</Flex> <Margin horizontal="1" inline>
</Flex>
</Col>
<Col xs="2">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>Action: </Strong> <Strong style={style}>Action: </Strong>
</FlexItem> <Margin horizontal="1" inline>
</Margin> {capitalizeFirstLetter(action)}
<Flex alignCenter> </Margin>
<P style={style}>{capitalizeFirstLetter(action)}</P> </Margin>
</Flex> </Flex>
</Flex> </SmallOnly>
</Col> <Medium>
</Row> <Flex row>
</Padding> <Margin left="1" right="4" inline>
<Strong style={style}>Protocol: </Strong>
<Margin horizontal="1" inline>
{protocol.name}
</Margin>
</Margin>
<Margin horizontal="4" inline>
<Strong style={style}>Ports: </Strong>
<Margin horizontal="1" inline>
{protocol.targets.join(';')}
</Margin>
</Margin>
<Margin left="4" right="1" inline>
<Strong style={style}>Action: </Strong>
<Margin horizontal="1" inline>
{capitalizeFirstLetter(action)}
</Margin>
</Margin>
</Flex>
</Medium>
</Padding>
</Flex>
</MediumDown>
<Large>
<Padding left="3" right="3" top="2" bottom="2">
<Row>
<Col xs="3">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>From: </Strong>
</FlexItem>
</Margin>
<Flex alignCenter>{froms}</Flex>
</Flex>
</Col>
<Col xs="3">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>To: </Strong>
</FlexItem>
</Margin>
<Flex alignCenter>{tos}</Flex>
</Flex>
</Col>
<Col xs="2">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>Protocol: </Strong>
</FlexItem>
</Margin>
<Flex alignCenter>
<P style={style}>{protocol.name}</P>
</Flex>
</Flex>
</Col>
<Col xs="2">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>Ports: </Strong>
</FlexItem>
</Margin>
<Flex alignCenter>
<P style={style}>{protocol.targets.join(';')}</P>
</Flex>
</Flex>
</Col>
<Col xs="2">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
<Strong style={style}>Action: </Strong>
</FlexItem>
</Margin>
<Flex alignCenter>
<P style={style}>{capitalizeFirstLetter(action)}</P>
</Flex>
</Flex>
</Col>
</Row>
</Padding>
</Large>
</Card> </Card>
); );
}; };

View File

@ -91,7 +91,7 @@ const TextareaKeyValue = ({
<Row> <Row>
<Col xs="12"> <Col xs="12">
<FormGroup <FormGroup
id={id ? 'kv-input-key-' + id : null} id={id ? `kv-input-key-${id}` : null}
name="name" name="name"
field={Field} field={Field}
fluid fluid
@ -119,7 +119,7 @@ const TextareaKeyValue = ({
<Row> <Row>
<Col xs="12"> <Col xs="12">
<FormGroup <FormGroup
id={id ? 'kv-input-value-' + id : null} id={id ? `kv-input-value-${id}` : null}
name="value" name="value"
field={Field} field={Field}
fluid fluid
@ -160,7 +160,7 @@ const InputKeyValue = ({
{onlyValue ? null : ( {onlyValue ? null : (
<FlexItem basis="auto"> <FlexItem basis="auto">
<FormGroup <FormGroup
id={id ? 'kv-input-name-' + id : null} id={id ? `kv-input-name-${id}` : null}
name="name" name="name"
field={Field} field={Field}
fluid fluid
@ -184,7 +184,7 @@ const InputKeyValue = ({
<FlexItem basis="auto"> <FlexItem basis="auto">
<Margin top={fluid ? '2' : '0'}> <Margin top={fluid ? '2' : '0'}>
<FormGroup <FormGroup
id={id ? 'kv-input-value-' + id : null} id={id ? `kv-input-value-${id}` : null}
name="value" name="value"
field={Field} field={Field}
fluid fluid
@ -335,7 +335,7 @@ export const KeyValue = ({
<Col xs={method === 'add' ? '12' : '7'} mobile={mobile}> <Col xs={method === 'add' ? '12' : '7'} mobile={mobile}>
<Margin top={mobile ? '1' : '0'} inline> <Margin top={mobile ? '1' : '0'} inline>
<MarginalButton <MarginalButton
id={id ? 'kv-cancel-button-' + id : null} id={id ? `kv-cancel-button-${id}` : null}
type="button" type="button"
onClick={onCancel} onClick={onCancel}
disabled={disabled || submitting} disabled={disabled || submitting}
@ -346,7 +346,7 @@ export const KeyValue = ({
</MarginalButton> </MarginalButton>
</Margin> </Margin>
<Button <Button
id={id ? 'kv-submit-button-' + id : null} id={id ? `kv-submit-button-${id}` : null}
type="submit" type="submit"
disabled={pristine || invalid} disabled={pristine || invalid}
loading={submitting && !removing} loading={submitting && !removing}
@ -366,7 +366,7 @@ export const KeyValue = ({
right right
icon icon
error error
id={id ? 'kv-remove-button-' + id : null} id={id ? `kv-remove-button-${id}` : null}
> >
<Margin right="2"> <Margin right="2">
<DeleteIcon <DeleteIcon

130
yarn.lock
View File

@ -318,8 +318,8 @@ acorn@^4.0.3, acorn@^4.0.4:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
acorn@^5.0.0, acorn@^5.0.3, acorn@^5.1.1, acorn@^5.4.1, acorn@^5.5.0, acorn@^5.5.3: acorn@^5.0.0, acorn@^5.0.3, acorn@^5.1.1, acorn@^5.4.1, acorn@^5.5.0, acorn@^5.5.3:
version "5.5.3" version "5.6.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.1.tgz#c9e50c3e3717cf897f1b071ceadbb543bbc0a8d4"
add-stream@^1.0.0: add-stream@^1.0.0:
version "1.0.0" version "1.0.0"
@ -2255,12 +2255,12 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
version "1.0.30000846" version "1.0.30000847"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000846.tgz#d9c86f914738db4da098eeded997413c44561bd2" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000847.tgz#ff4072a5468809fec0ae9ac3b4035ef891e5b144"
caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000792: caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000792:
version "1.0.30000846" version "1.0.30000847"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz#2092911eecad71a89dae1faa62bcc202fde7f959" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz#be77f439be29bbc57ae08004b1e470b653b1ec1d"
capture-stack-trace@^1.0.0: capture-stack-trace@^1.0.0:
version "1.0.0" version "1.0.0"
@ -3044,8 +3044,8 @@ create-react-class@^15.5.1:
object-assign "^4.1.1" object-assign "^4.1.1"
cross-fetch@^2.2.0: cross-fetch@^2.2.0:
version "2.2.0" version "2.2.1"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.0.tgz#2bcbff94ee51319bcee6699c642c5dda2aa8b6c0" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.1.tgz#96c859104d75defc967fb5db62474e75426b02b0"
dependencies: dependencies:
node-fetch "2.1.2" node-fetch "2.1.2"
whatwg-fetch "2.0.4" whatwg-fetch "2.0.4"
@ -3511,7 +3511,7 @@ doctrine@1.5.0:
esutils "^2.0.2" esutils "^2.0.2"
isarray "^1.0.0" isarray "^1.0.0"
doctrine@^2.0.0, doctrine@^2.0.2, doctrine@^2.1.0: doctrine@^2.0.0, doctrine@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
dependencies: dependencies:
@ -3732,8 +3732,8 @@ error-ex@^1.3.1:
is-arrayish "^0.2.1" is-arrayish "^0.2.1"
es-abstract@^1.7.0: es-abstract@^1.7.0:
version "1.11.0" version "1.12.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
dependencies: dependencies:
es-to-primitive "^1.1.1" es-to-primitive "^1.1.1"
function-bind "^1.1.1" function-bind "^1.1.1"
@ -3750,8 +3750,8 @@ es-to-primitive@^1.1.1:
is-symbol "^1.0.1" is-symbol "^1.0.1"
es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.44" version "0.10.45"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.44.tgz#7a877e994bb190aebd4718aa2d62784a12e2ca20" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653"
dependencies: dependencies:
es6-iterator "~2.0.3" es6-iterator "~2.0.3"
es6-symbol "~3.1.1" es6-symbol "~3.1.1"
@ -3903,8 +3903,8 @@ eslint-plugin-flowtype@2.39.1:
lodash "^4.15.0" lodash "^4.15.0"
eslint-plugin-flowtype@^2.46.1: eslint-plugin-flowtype@^2.46.1:
version "2.48.0" version "2.49.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.48.0.tgz#e447dc27dcb99d68e2a705fd9c1046c32aae2ca1" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.49.3.tgz#ccca6ee5ba2027eb3ed36bc2ec8c9a842feee841"
dependencies: dependencies:
lodash "^4.17.10" lodash "^4.17.10"
@ -3987,13 +3987,13 @@ eslint-plugin-react@7.4.0:
prop-types "^15.5.10" prop-types "^15.5.10"
eslint-plugin-react@^7.7.0: eslint-plugin-react@^7.7.0:
version "7.8.2" version "7.9.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.9.1.tgz#101aadd15e7c7b431ed025303ac7b421a8e3dc15"
dependencies: dependencies:
doctrine "^2.0.2" doctrine "^2.1.0"
has "^1.0.1" has "^1.0.2"
jsx-ast-utils "^2.0.1" jsx-ast-utils "^2.0.1"
prop-types "^15.6.0" prop-types "^15.6.1"
eslint-scope@^3.7.1, eslint-scope@~3.7.1: eslint-scope@^3.7.1, eslint-scope@~3.7.1:
version "3.7.1" version "3.7.1"
@ -4703,7 +4703,7 @@ fullstore@^1.0.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/fullstore/-/fullstore-1.1.0.tgz#a7a8b00ca07d86faca05fb825c45e5d1c3bba97e" resolved "https://registry.yarnpkg.com/fullstore/-/fullstore-1.1.0.tgz#a7a8b00ca07d86faca05fb825c45e5d1c3bba97e"
function-bind@^1.0.2, function-bind@^1.1.1: function-bind@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@ -5181,11 +5181,11 @@ has-values@^1.0.0:
is-number "^3.0.0" is-number "^3.0.0"
kind-of "^4.0.0" kind-of "^4.0.0"
has@^1.0.1: has@^1.0.1, has@^1.0.2:
version "1.0.1" version "1.0.2"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" resolved "https://registry.yarnpkg.com/has/-/has-1.0.2.tgz#1a64bfe4b52e67fb87b9822503d97c019fb6ba42"
dependencies: dependencies:
function-bind "^1.0.2" function-bind "^1.1.1"
hash-base@^3.0.0: hash-base@^3.0.0:
version "3.0.4" version "3.0.4"
@ -6055,8 +6055,8 @@ istanbul-lib-source-maps@^1.1.0:
source-map "^0.5.3" source-map "^0.5.3"
istanbul-lib-source-maps@^1.2.4: istanbul-lib-source-maps@^1.2.4:
version "1.2.4" version "1.2.5"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
dependencies: dependencies:
debug "^3.1.0" debug "^3.1.0"
istanbul-lib-coverage "^1.2.0" istanbul-lib-coverage "^1.2.0"
@ -6342,7 +6342,7 @@ joyent-manifest-editor@^1.4.0:
prop-types "^15.6.0" prop-types "^15.6.0"
react-codemirror "^1.0.0" react-codemirror "^1.0.0"
joyent-react-scripts@^8.2.1: joyent-react-scripts@^8.2.0, joyent-react-scripts@^8.2.1:
version "8.2.1" version "8.2.1"
resolved "https://registry.yarnpkg.com/joyent-react-scripts/-/joyent-react-scripts-8.2.1.tgz#6ccdf4f8e6af028cc8846e8099a2b7f486699f67" resolved "https://registry.yarnpkg.com/joyent-react-scripts/-/joyent-react-scripts-8.2.1.tgz#6ccdf4f8e6af028cc8846e8099a2b7f486699f67"
dependencies: dependencies:
@ -6382,8 +6382,8 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
version "3.11.0" version "3.12.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
dependencies: dependencies:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^4.0.0" esprima "^4.0.0"
@ -6555,8 +6555,8 @@ jss-nested@^6.0.1:
warning "^3.0.0" warning "^3.0.0"
jss@^9.8.1: jss@^9.8.1:
version "9.8.1" version "9.8.2"
resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.1.tgz#e2ff250777ad657430e6edc47a63516541b888fa" resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.2.tgz#09cabdfba831545bf094e399cfa45a1743daf4a6"
dependencies: dependencies:
is-in-browser "^1.1.3" is-in-browser "^1.1.3"
symbol-observable "^1.1.0" symbol-observable "^1.1.0"
@ -7166,7 +7166,11 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0" bn.js "^4.0.0"
brorand "^1.0.1" brorand "^1.0.1"
mime-db@1.x.x, "mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: mime-db@1.x.x, "mime-db@>= 1.33.0 < 2":
version "1.34.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.34.0.tgz#452d0ecff5c30346a6dc1e64b1eaee0d3719ff9a"
mime-db@~1.33.0:
version "1.33.0" version "1.33.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
@ -7294,8 +7298,8 @@ modify-values@^1.0.0:
resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
moment@^2.6.0: moment@^2.6.0:
version "2.22.1" version "2.22.2"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
move-concurrently@^1.0.1: move-concurrently@^1.0.1:
version "1.0.1" version "1.0.1"
@ -8415,8 +8419,8 @@ prettier@1.11.0:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.0.tgz#c024f70cab158c993f50fc0c25ffe738cb8b0f85" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.0.tgz#c024f70cab158c993f50fc0c25ffe738cb8b0f85"
prettier@^1.7.4: prettier@^1.7.4:
version "1.13.3" version "1.13.4"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.3.tgz#e74c09a7df6519d472ca6febaa37cf7addb48a20" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.4.tgz#31bbae6990f13b1093187c731766a14036fa72e6"
pretty-bytes@^4.0.2: pretty-bytes@^4.0.2:
version "4.0.2" version "4.0.2"
@ -8928,14 +8932,14 @@ react-scripts@^1.1.1:
fsevents "^1.1.3" fsevents "^1.1.3"
react-scroll-parallax@^1.3.4: react-scroll-parallax@^1.3.4:
version "1.3.4" version "1.3.5"
resolved "https://registry.yarnpkg.com/react-scroll-parallax/-/react-scroll-parallax-1.3.4.tgz#dcd8bd4930ed143c2f1f33f083a55d3e4375ad44" resolved "https://registry.yarnpkg.com/react-scroll-parallax/-/react-scroll-parallax-1.3.5.tgz#14a799f4773922c7feb5e31dc8a2acdb783e49d6"
dependencies: dependencies:
prop-types "^15.5.10" prop-types "^15.5.10"
react-styleguidist@^7.0.14: react-styleguidist@^7.0.14:
version "7.0.14" version "7.0.16"
resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-7.0.14.tgz#ac6c6e5e7c80cb0e021aebe86f6609122a776a94" resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-7.0.16.tgz#9d62aa52c94a65634198ea31ee3b17eac37e1328"
dependencies: dependencies:
"@vxna/mini-html-webpack-template" "^0.1.7" "@vxna/mini-html-webpack-template" "^0.1.7"
acorn "^5.5.3" acorn "^5.5.3"
@ -9004,7 +9008,7 @@ react-test-renderer@^16.4.0:
prop-types "^15.6.0" prop-types "^15.6.0"
react-is "^16.4.0" react-is "^16.4.0"
react@16.4.0, react@^0.14.0, react@^16.4.0, react@~15.4.1: react@16.4.0, react@^0.14.0, react@^16.3.1, react@^16.4.0, react@~15.4.1:
version "16.4.0" version "16.4.0"
resolved "https://registry.yarnpkg.com/react/-/react-16.4.0.tgz#402c2db83335336fba1962c08b98c6272617d585" resolved "https://registry.yarnpkg.com/react/-/react-16.4.0.tgz#402c2db83335336fba1962c08b98c6272617d585"
dependencies: dependencies:
@ -9148,7 +9152,7 @@ redent@^2.0.0:
indent-string "^3.0.0" indent-string "^3.0.0"
strip-indent "^2.0.0" strip-indent "^2.0.0"
redrun@^6.0.1, redrun@^6.0.4: redrun@^6.0.1, redrun@^6.0.2, redrun@^6.0.4:
version "6.0.4" version "6.0.4"
resolved "https://registry.yarnpkg.com/redrun/-/redrun-6.0.4.tgz#b32b0e089fb456529966f9b0134acdf7bad001ae" resolved "https://registry.yarnpkg.com/redrun/-/redrun-6.0.4.tgz#b32b0e089fb456529966f9b0134acdf7bad001ae"
dependencies: dependencies:
@ -9185,16 +9189,7 @@ reduce-reducers@^0.1.0:
version "0.1.5" version "0.1.5"
resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.1.5.tgz#ff77ca8068ff41007319b8b4b91533c7e0e54576" resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.1.5.tgz#ff77ca8068ff41007319b8b4b91533c7e0e54576"
redux-actions@^2.2.1: redux-actions@^2.2.1, redux-actions@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-2.4.0.tgz#620df42d264af88366b4e919c46ae68da7c9ce7c"
dependencies:
invariant "^2.2.1"
lodash "^4.13.1"
lodash-es "^4.17.4"
reduce-reducers "^0.1.0"
redux-actions@^2.4.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-2.4.0.tgz#620df42d264af88366b4e919c46ae68da7c9ce7c" resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-2.4.0.tgz#620df42d264af88366b4e919c46ae68da7c9ce7c"
dependencies: dependencies:
@ -10075,8 +10070,8 @@ stream-each@^1.1.0:
stream-shift "^1.0.0" stream-shift "^1.0.0"
stream-http@^2.7.2: stream-http@^2.7.2:
version "2.8.2" version "2.8.3"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
dependencies: dependencies:
builtin-status-codes "^3.0.0" builtin-status-codes "^3.0.0"
inherits "^2.0.1" inherits "^2.0.1"
@ -10220,14 +10215,14 @@ styled-components-breakpoint@^2.0.1:
resolved "https://registry.yarnpkg.com/styled-components-breakpoint/-/styled-components-breakpoint-2.0.2.tgz#c55dbab794e9ff3a4f813349e2b35727a9364b09" resolved "https://registry.yarnpkg.com/styled-components-breakpoint/-/styled-components-breakpoint-2.0.2.tgz#c55dbab794e9ff3a4f813349e2b35727a9364b09"
styled-components-spacing@^3.0.0: styled-components-spacing@^3.0.0:
version "3.0.0" version "3.0.1"
resolved "https://registry.yarnpkg.com/styled-components-spacing/-/styled-components-spacing-3.0.0.tgz#67f9c48d96743e932a36afee1337ba4fb2a6f6ad" resolved "https://registry.yarnpkg.com/styled-components-spacing/-/styled-components-spacing-3.0.1.tgz#f62e703b329921320e585b5bd1047327292a0c20"
dependencies: dependencies:
styled-components-breakpoint "^2.0.1" styled-components-breakpoint "^2.0.1"
styled-components@^3.3.0: styled-components@^3.3.0:
version "3.3.0" version "3.3.2"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.3.0.tgz#335b1b2b673b416cd5ec012010e237ed1f877fe9" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.3.2.tgz#087b96830ee3d60d9a8b5ef17c132b4f29cc71df"
dependencies: dependencies:
buffer "^5.0.3" buffer "^5.0.3"
css-to-react-native "^2.0.3" css-to-react-native "^2.0.3"
@ -10700,7 +10695,7 @@ uglify-es@^3.3.4, uglify-es@^3.3.9:
commander "~2.13.0" commander "~2.13.0"
source-map "~0.6.1" source-map "~0.6.1"
uglify-js@3.3.x, uglify-js@^3.0.13: uglify-js@3.3.x:
version "3.3.28" version "3.3.28"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.28.tgz#0efb9a13850e11303361c1051f64d2ec68d9be06" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.28.tgz#0efb9a13850e11303361c1051f64d2ec68d9be06"
dependencies: dependencies:
@ -10716,6 +10711,13 @@ uglify-js@^2.6, uglify-js@^2.8.29:
optionalDependencies: optionalDependencies:
uglify-to-browserify "~1.0.0" uglify-to-browserify "~1.0.0"
uglify-js@^3.0.13:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.0.tgz#796762282b5b5f0eafe7d5c8c708d1d7bd5ba11d"
dependencies:
commander "~2.15.0"
source-map "~0.6.1"
uglify-to-browserify@~1.0.0: uglify-to-browserify@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
@ -10953,12 +10955,18 @@ util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 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:
version "0.10.3" version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies: dependencies:
inherits "2.0.1" inherits "2.0.1"
util@^0.10.3:
version "0.10.4"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
dependencies:
inherits "2.0.3"
utila@~0.3: utila@~0.3:
version "0.3.3" version "0.3.3"
resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"