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 { withTheme } from 'styled-components';
import { Margin } from 'styled-components-spacing';
import Flex, { FlexItem } from 'styled-flex-component';
import { compose, graphql } from 'react-apollo';
@ -42,119 +43,126 @@ const Firewall = ({
enabled = false,
showInactiveRules = null,
showInactive = false,
theme = {},
...props
}) => (
<Step name="firewall" getValue={handleGetValue} {...props}>
<StepHeader icon={<FirewallIcon />}>Firewall rules</StepHeader>
<StepDescription href="https://docs.joyent.com/public-cloud/network/firewall">
Cloud firewall rules secure instances by defining network traffic rules,
controlling incoming and outgoing traffic. Enabling the firewall applies
only rules which match your instance. Although these rules are created in
the firewall console, the addition of tags can alter the firewall rules.
</StepDescription>
<StepPreview>
<Margin top="3">
<Preview {...preview} />
</Margin>
</StepPreview>
<StepOutlet>
{({ next }) => (
<Fragment>
<Margin top="5">
<Flex>
<FlexItem>
<ReduxForm
form={IR_FW_F_ENABLED}
destroyOnUnmount={false}
forceUnregisterOnUnmount={true}
>
{props => (
<Margin right="5">
<ToggleFirewallForm {...props} submitting={loading} />
}) => {
const mobile = theme.screen === 'mobile';
return (
<Step name="firewall" getValue={handleGetValue} {...props}>
<StepHeader icon={<FirewallIcon />}>Firewall rules</StepHeader>
<StepDescription href="https://docs.joyent.com/public-cloud/network/firewall">
Cloud firewall rules secure instances by defining network traffic rules,
controlling incoming and outgoing traffic. Enabling the firewall applies
only rules which match your instance. Although these rules are created
in the firewall console, the addition of tags can alter the firewall
rules.
</StepDescription>
<StepPreview>
<Margin top="3">
<Preview {...preview} />
</Margin>
</StepPreview>
<StepOutlet>
{({ next }) => (
<Fragment>
<Margin top="5">
<Flex column={mobile}>
<FlexItem>
<ReduxForm
form={IR_FW_F_ENABLED}
destroyOnUnmount={false}
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>
)}
</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="2">
<Button
secondary
onClick={showInactiveRules}
disabled={showInactive}
>
View Inactive Rules
</Button>
</Margin>
</Fragment>
</Empty>
</Margin>
) : null}
{!loading && enabled && defaultRules.length ? (
<Margin top="5">
<DefaultRules rules={defaultRules} />
</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">
<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 top="2">
<Button
secondary
onClick={showInactiveRules}
disabled={showInactive}
>
View Inactive Rules
</Button>
</Margin>
</Fragment>
</Empty>
<Button
id="next-button-firewall"
type="button"
component={Link}
to={next}
fluid={mobile}
>
Next
</Button>
</Margin>
) : null}
{!loading && enabled && defaultRules.length ? (
<Margin top="5">
<DefaultRules rules={defaultRules} />
</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>
);
</Fragment>
)}
</StepOutlet>
</Step>
);
};
export default compose(
connect(({ form, values }, ownProps) => ({
@ -206,6 +214,4 @@ export default compose(
showInactiveRules: () =>
dispatch(change(IR_FW_F_INACTIVE, 'inactive', true))
}))
)(Firewall);
export { Preview } from './components';
)(withTheme(({ ...rest }) => <Firewall {...rest} />));

View File

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

View File

@ -9,14 +9,18 @@ import {
H3,
FormGroup,
FormLabel,
Toggle,
TagList,
TagItem,
P,
Checkbox,
Strong,
Card
Card,
QueryBreakpoints
} from 'joyent-ui-toolkit';
const { SmallOnly, MediumDown, Medium, Large } = QueryBreakpoints;
const Form = styled.form`
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));
return (
<Card disabled={!enabled}>
<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>
<MediumDown>
<Flex column>
<Padding horizontal="3" vertical="2">
<Flex row>
<Margin horizontal="1" inline>
<Strong style={style}>From: </Strong>
<Margin horizontal="1" inline>
{froms}
</Margin>
</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 left="5" right="1" inline>
<Strong style={style}>To: </Strong>
<Margin horizontal="1" inline>
{tos}
</Margin>
</Margin>
<Flex alignCenter>{tos}</Flex>
</Flex>
</Col>
<Col xs="2">
<Flex justifyStart alignCenter contentStretch>
<Margin right="0.5">
<FlexItem>
</Padding>
<Padding
horizontal="3"
vertical="2"
style={{ 'border-top': '1px solid #D8D8D8' }}
>
<SmallOnly>
<Flex column>
<Margin horizontal="1" inline>
<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>
<Margin horizontal="1" inline>
{protocol.name}
</Margin>
</Margin>
<Margin horizontal="1" inline>
<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>
<Margin horizontal="1" inline>
{protocol.targets.join(';')}
</Margin>
</Margin>
<Margin horizontal="1" inline>
<Strong style={style}>Action: </Strong>
</FlexItem>
</Margin>
<Flex alignCenter>
<P style={style}>{capitalizeFirstLetter(action)}</P>
<Margin horizontal="1" inline>
{capitalizeFirstLetter(action)}
</Margin>
</Margin>
</Flex>
</Flex>
</Col>
</Row>
</Padding>
</SmallOnly>
<Medium>
<Flex row>
<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>
);
};

View File

@ -91,7 +91,7 @@ const TextareaKeyValue = ({
<Row>
<Col xs="12">
<FormGroup
id={id ? 'kv-input-key-' + id : null}
id={id ? `kv-input-key-${id}` : null}
name="name"
field={Field}
fluid
@ -119,7 +119,7 @@ const TextareaKeyValue = ({
<Row>
<Col xs="12">
<FormGroup
id={id ? 'kv-input-value-' + id : null}
id={id ? `kv-input-value-${id}` : null}
name="value"
field={Field}
fluid
@ -160,7 +160,7 @@ const InputKeyValue = ({
{onlyValue ? null : (
<FlexItem basis="auto">
<FormGroup
id={id ? 'kv-input-name-' + id : null}
id={id ? `kv-input-name-${id}` : null}
name="name"
field={Field}
fluid
@ -184,7 +184,7 @@ const InputKeyValue = ({
<FlexItem basis="auto">
<Margin top={fluid ? '2' : '0'}>
<FormGroup
id={id ? 'kv-input-value-' + id : null}
id={id ? `kv-input-value-${id}` : null}
name="value"
field={Field}
fluid
@ -335,7 +335,7 @@ export const KeyValue = ({
<Col xs={method === 'add' ? '12' : '7'} mobile={mobile}>
<Margin top={mobile ? '1' : '0'} inline>
<MarginalButton
id={id ? 'kv-cancel-button-' + id : null}
id={id ? `kv-cancel-button-${id}` : null}
type="button"
onClick={onCancel}
disabled={disabled || submitting}
@ -346,7 +346,7 @@ export const KeyValue = ({
</MarginalButton>
</Margin>
<Button
id={id ? 'kv-submit-button-' + id : null}
id={id ? `kv-submit-button-${id}` : null}
type="submit"
disabled={pristine || invalid}
loading={submitting && !removing}
@ -366,7 +366,7 @@ export const KeyValue = ({
right
icon
error
id={id ? 'kv-remove-button-' + id : null}
id={id ? `kv-remove-button-${id}` : null}
>
<Margin right="2">
<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"
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"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
version "5.6.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.1.tgz#c9e50c3e3717cf897f1b071ceadbb543bbc0a8d4"
add-stream@^1.0.0:
version "1.0.0"
@ -2255,12 +2255,12 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
version "1.0.30000846"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000846.tgz#d9c86f914738db4da098eeded997413c44561bd2"
version "1.0.30000847"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000847.tgz#ff4072a5468809fec0ae9ac3b4035ef891e5b144"
caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000792:
version "1.0.30000846"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz#2092911eecad71a89dae1faa62bcc202fde7f959"
version "1.0.30000847"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz#be77f439be29bbc57ae08004b1e470b653b1ec1d"
capture-stack-trace@^1.0.0:
version "1.0.0"
@ -3044,8 +3044,8 @@ create-react-class@^15.5.1:
object-assign "^4.1.1"
cross-fetch@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.0.tgz#2bcbff94ee51319bcee6699c642c5dda2aa8b6c0"
version "2.2.1"
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.1.tgz#96c859104d75defc967fb5db62474e75426b02b0"
dependencies:
node-fetch "2.1.2"
whatwg-fetch "2.0.4"
@ -3511,7 +3511,7 @@ doctrine@1.5.0:
esutils "^2.0.2"
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"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
dependencies:
@ -3732,8 +3732,8 @@ error-ex@^1.3.1:
is-arrayish "^0.2.1"
es-abstract@^1.7.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
version "1.12.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.1"
@ -3750,8 +3750,8 @@ es-to-primitive@^1.1.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:
version "0.10.44"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.44.tgz#7a877e994bb190aebd4718aa2d62784a12e2ca20"
version "0.10.45"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653"
dependencies:
es6-iterator "~2.0.3"
es6-symbol "~3.1.1"
@ -3903,8 +3903,8 @@ eslint-plugin-flowtype@2.39.1:
lodash "^4.15.0"
eslint-plugin-flowtype@^2.46.1:
version "2.48.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.48.0.tgz#e447dc27dcb99d68e2a705fd9c1046c32aae2ca1"
version "2.49.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.49.3.tgz#ccca6ee5ba2027eb3ed36bc2ec8c9a842feee841"
dependencies:
lodash "^4.17.10"
@ -3987,13 +3987,13 @@ eslint-plugin-react@7.4.0:
prop-types "^15.5.10"
eslint-plugin-react@^7.7.0:
version "7.8.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d"
version "7.9.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.9.1.tgz#101aadd15e7c7b431ed025303ac7b421a8e3dc15"
dependencies:
doctrine "^2.0.2"
has "^1.0.1"
doctrine "^2.1.0"
has "^1.0.2"
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:
version "3.7.1"
@ -4703,7 +4703,7 @@ fullstore@^1.0.0:
version "1.1.0"
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"
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"
kind-of "^4.0.0"
has@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
has@^1.0.1, has@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.2.tgz#1a64bfe4b52e67fb87b9822503d97c019fb6ba42"
dependencies:
function-bind "^1.0.2"
function-bind "^1.1.1"
hash-base@^3.0.0:
version "3.0.4"
@ -6055,8 +6055,8 @@ istanbul-lib-source-maps@^1.1.0:
source-map "^0.5.3"
istanbul-lib-source-maps@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7"
version "1.2.5"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
dependencies:
debug "^3.1.0"
istanbul-lib-coverage "^1.2.0"
@ -6342,7 +6342,7 @@ joyent-manifest-editor@^1.4.0:
prop-types "^15.6.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"
resolved "https://registry.yarnpkg.com/joyent-react-scripts/-/joyent-react-scripts-8.2.1.tgz#6ccdf4f8e6af028cc8846e8099a2b7f486699f67"
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"
js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
version "3.11.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
version "3.12.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
@ -6555,8 +6555,8 @@ jss-nested@^6.0.1:
warning "^3.0.0"
jss@^9.8.1:
version "9.8.1"
resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.1.tgz#e2ff250777ad657430e6edc47a63516541b888fa"
version "9.8.2"
resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.2.tgz#09cabdfba831545bf094e399cfa45a1743daf4a6"
dependencies:
is-in-browser "^1.1.3"
symbol-observable "^1.1.0"
@ -7166,7 +7166,11 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
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"
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"
moment@^2.6.0:
version "2.22.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad"
version "2.22.2"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66"
move-concurrently@^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"
prettier@^1.7.4:
version "1.13.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.3.tgz#e74c09a7df6519d472ca6febaa37cf7addb48a20"
version "1.13.4"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.4.tgz#31bbae6990f13b1093187c731766a14036fa72e6"
pretty-bytes@^4.0.2:
version "4.0.2"
@ -8928,14 +8932,14 @@ react-scripts@^1.1.1:
fsevents "^1.1.3"
react-scroll-parallax@^1.3.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/react-scroll-parallax/-/react-scroll-parallax-1.3.4.tgz#dcd8bd4930ed143c2f1f33f083a55d3e4375ad44"
version "1.3.5"
resolved "https://registry.yarnpkg.com/react-scroll-parallax/-/react-scroll-parallax-1.3.5.tgz#14a799f4773922c7feb5e31dc8a2acdb783e49d6"
dependencies:
prop-types "^15.5.10"
react-styleguidist@^7.0.14:
version "7.0.14"
resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-7.0.14.tgz#ac6c6e5e7c80cb0e021aebe86f6609122a776a94"
version "7.0.16"
resolved "https://registry.yarnpkg.com/react-styleguidist/-/react-styleguidist-7.0.16.tgz#9d62aa52c94a65634198ea31ee3b17eac37e1328"
dependencies:
"@vxna/mini-html-webpack-template" "^0.1.7"
acorn "^5.5.3"
@ -9004,7 +9008,7 @@ react-test-renderer@^16.4.0:
prop-types "^15.6.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"
resolved "https://registry.yarnpkg.com/react/-/react-16.4.0.tgz#402c2db83335336fba1962c08b98c6272617d585"
dependencies:
@ -9148,7 +9152,7 @@ redent@^2.0.0:
indent-string "^3.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"
resolved "https://registry.yarnpkg.com/redrun/-/redrun-6.0.4.tgz#b32b0e089fb456529966f9b0134acdf7bad001ae"
dependencies:
@ -9185,16 +9189,7 @@ reduce-reducers@^0.1.0:
version "0.1.5"
resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.1.5.tgz#ff77ca8068ff41007319b8b4b91533c7e0e54576"
redux-actions@^2.2.1:
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:
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:
@ -10075,8 +10070,8 @@ stream-each@^1.1.0:
stream-shift "^1.0.0"
stream-http@^2.7.2:
version "2.8.2"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87"
version "2.8.3"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
dependencies:
builtin-status-codes "^3.0.0"
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"
styled-components-spacing@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/styled-components-spacing/-/styled-components-spacing-3.0.0.tgz#67f9c48d96743e932a36afee1337ba4fb2a6f6ad"
version "3.0.1"
resolved "https://registry.yarnpkg.com/styled-components-spacing/-/styled-components-spacing-3.0.1.tgz#f62e703b329921320e585b5bd1047327292a0c20"
dependencies:
styled-components-breakpoint "^2.0.1"
styled-components@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.3.0.tgz#335b1b2b673b416cd5ec012010e237ed1f877fe9"
version "3.3.2"
resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.3.2.tgz#087b96830ee3d60d9a8b5ef17c132b4f29cc71df"
dependencies:
buffer "^5.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"
source-map "~0.6.1"
uglify-js@3.3.x, uglify-js@^3.0.13:
uglify-js@3.3.x:
version "3.3.28"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.28.tgz#0efb9a13850e11303361c1051f64d2ec68d9be06"
dependencies:
@ -10716,6 +10711,13 @@ uglify-js@^2.6, uglify-js@^2.8.29:
optionalDependencies:
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:
version "1.0.2"
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"
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"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies:
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:
version "0.3.3"
resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"