diff --git a/package.json b/package.json index d2544a6674..728455ac4b 100644 --- a/package.json +++ b/package.json @@ -175,7 +175,7 @@ "deepmerge": "^2.1.1", "draft-js": "^0.10.1", "enzyme": "3.8.0", - "enzyme-adapter-react-16": "^1.10.0", + "enzyme-adapter-react-16": "^1.12.1", "enzyme-to-json": "^3.3.4", "eslint": "^4.19.1", "eslint-config-airbnb": "^17.1.0", @@ -221,10 +221,10 @@ "properties-parser": "^0.3.1", "query-string": "5.1.1", "raf": "^3.4.0", - "react": "^16.7.0", + "react": "^16.8.0", "react-animate-height": "^2.0.4", "react-beautiful-dnd": "^9.0.2", - "react-dom": "^16.7.0", + "react-dom": "^16.8.0", "react-draggable": "^3.0.4", "react-immutable-proptypes": "^2.1.0", "react-intl": "^2.3.0", @@ -270,10 +270,10 @@ "mousetrap": "^1.6.1", "pikaday": "^1.6.1", "query-string": "5.1.1", - "react": "^16.7.0", + "react": "^16.8.0", "react-animate-height": "^2.0.4", "react-beautiful-dnd": "^9.0.2", - "react-dom": "^16.7.0", + "react-dom": "^16.8.0", "react-draggable": "^3.0.4", "react-immutable-proptypes": "^2.1.0", "react-intl": "^2.3.0", diff --git a/src/components/avatar/Avatar.js b/src/components/avatar/Avatar.js index 06182c8283..b9a7b897b0 100644 --- a/src/components/avatar/Avatar.js +++ b/src/components/avatar/Avatar.js @@ -1,5 +1,5 @@ // @flow -import * as React from 'react'; +import React, { useState, useEffect } from 'react'; import classNames from 'classnames'; import AvatarImage from './AvatarImage'; import AvatarInitials from './AvatarInitials'; @@ -30,50 +30,36 @@ type Props = { size?: $Keys, }; -type State = { - /** boolean to determine if image did not load correctly */ - hasImageErrored: boolean, -}; - -class Avatar extends React.PureComponent { - state = { - hasImageErrored: false, - }; - - componentWillReceiveProps(nextProps: Props) { - if (this.state.hasImageErrored && this.props.avatarUrl !== nextProps.avatarUrl) { - this.setState({ - hasImageErrored: false, - }); - } - } +function Avatar({ avatarUrl, className, name, id, size = '' }: Props) { + const [hasImageErrored, setHasImageErrored] = useState(false); + const classes = classNames(['avatar', className, { [`avatar--${size}`]: SIZES[size] }]); - onImageError = () => { - this.setState({ - hasImageErrored: true, - }); - }; + // Reset hasImageErrored state when avatarUrl changes + useEffect(() => { + setHasImageErrored(false); + }, [avatarUrl]); - render() { - const { avatarUrl, className, name, id, size = '' }: Props = this.props; - const { hasImageErrored }: State = this.state; - const classes = classNames(['avatar', className, { [`avatar--${size}`]: SIZES[size] }]); - - let avatar; - if (avatarUrl && !hasImageErrored) { - avatar = ; - } else if (name) { - avatar = ; - } else { - avatar = ; - } - - return ( - - {avatar} - + let avatar; + if (avatarUrl && !hasImageErrored) { + avatar = ( + { + setHasImageErrored(true); + }} + url={avatarUrl} + /> ); + } else if (name) { + avatar = ; + } else { + avatar = ; } + + return ( + + {avatar} + + ); } export default Avatar; diff --git a/src/components/avatar/__tests__/Avatar-test.js b/src/components/avatar/__tests__/Avatar-test.js index 85fead181a..a3c9d5e4ec 100644 --- a/src/components/avatar/__tests__/Avatar-test.js +++ b/src/components/avatar/__tests__/Avatar-test.js @@ -1,7 +1,14 @@ import React from 'react'; +import { act } from 'react-dom/test-utils'; import Avatar from '../Avatar'; +function MockAvatarImage() { + return
; +} + +jest.mock('../AvatarImage', () => MockAvatarImage); + const testDataURI = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; describe('components/avatar/Avatar', () => { @@ -22,7 +29,7 @@ describe('components/avatar/Avatar', () => { test('should render an AvatarImage when avatarUrl is passed in', () => { const wrapper = shallow(); - const avatarImage = wrapper.find('AvatarImage'); + const avatarImage = wrapper.find(MockAvatarImage); expect(avatarImage.length).toEqual(1); expect(avatarImage.prop('url')).toEqual(testDataURI); }); @@ -51,10 +58,9 @@ describe('components/avatar/Avatar', () => { test('should fall back to AvatarInitials when there is an error in AvatarImage', () => { const wrapper = shallow(); + const avatarImage = wrapper.find(MockAvatarImage); + avatarImage.prop('onError')(); - wrapper.instance().onImageError(); - expect(wrapper.state('hasImageErrored')).toEqual(true); - wrapper.update(); const avatarInitials = wrapper.find('AvatarInitials'); expect(avatarInitials.length).toEqual(1); }); @@ -66,18 +72,27 @@ describe('components/avatar/Avatar', () => { avatarUrl: 'http://foo.bar/baz123_invalid', }; - const wrapper = shallow(); - - wrapper.instance().onImageError(); - expect(wrapper.state('hasImageErrored')).toEqual(true); + let wrapper; + act(() => { + wrapper = mount(); + }); + expect(wrapper.find(MockAvatarImage).length).toEqual(1); - wrapper.setProps({ - ...props, - avatarUrl: 'http://foo.bar/baz123_invalid_new', + act(() => { + const avatarImage = wrapper.find(MockAvatarImage); + avatarImage.prop('onError')(); }); wrapper.update(); - - expect(wrapper.state('hasImageErrored')).toEqual(false); - expect(wrapper.find('AvatarImage').length).toEqual(1); + expect(wrapper.find(MockAvatarImage).length).toEqual(0); + expect(wrapper.find('AvatarInitials').length).toEqual(1); + + act(() => { + wrapper.setProps({ + ...props, + avatarUrl: 'http://foo.bar/baz123_invalid_new', + }); + }); + wrapper.update(); + expect(wrapper.find(MockAvatarImage).length).toEqual(1); }); }); diff --git a/src/elements/content-sidebar/__tests__/ContentSidebar-test.js b/src/elements/content-sidebar/__tests__/ContentSidebar-test.js index 2758440bed..f253b005cd 100644 --- a/src/elements/content-sidebar/__tests__/ContentSidebar-test.js +++ b/src/elements/content-sidebar/__tests__/ContentSidebar-test.js @@ -164,10 +164,6 @@ describe('elements/content-sidebar/ContentSidebar', () => { }); test('should set the state with the file and view and then call fetchMetadata', () => { - wrapper = getWrapper(); - instance = wrapper.instance(); - instance.setState = setState; - instance.fetchMetadata = jest.fn(); instance.fetchFileSuccessCallback(file); diff --git a/src/elements/content-sidebar/activity-feed/task-new/AssigneeStatus.js b/src/elements/content-sidebar/activity-feed/task-new/AssigneeStatus.js index 3e4e1c2bac..54acf6cb80 100644 --- a/src/elements/content-sidebar/activity-feed/task-new/AssigneeStatus.js +++ b/src/elements/content-sidebar/activity-feed/task-new/AssigneeStatus.js @@ -30,7 +30,7 @@ const StatusIcon = ({ status, ...rest }: { status: TaskCollabStatus }) => { }; const AssignmentStatus = React.memo(({ user, status, getAvatarUrl, className, ...rest }: Props) => ( -
+
{ /> } > - + ); }); @@ -90,7 +85,6 @@ class Assignees extends React.Component { className="bcs-task-assignment-list-item-avatar" user={target} getAvatarUrl={getAvatarUrl} - data-testid="task-assignment-status" /> =0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -8127,16 +8138,16 @@ html-tags@^2.0.0: integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= htmlparser2@^3.9.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" - integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== dependencies: - domelementtype "^1.3.0" + domelementtype "^1.3.1" domhandler "^2.3.0" domutils "^1.5.1" entities "^1.1.1" inherits "^2.0.1" - readable-stream "^3.0.6" + readable-stream "^3.1.1" htmlparser2@^3.9.2: version "3.9.2" @@ -9084,7 +9095,7 @@ is-redirect@^1.0.0: resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-regex@^1.0.3, is-regex@^1.0.4: +is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= @@ -10647,14 +10658,14 @@ longest@^1.0.1: resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.0: +loose-envify@^1.0.0, loose-envify@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg= dependencies: js-tokens "^3.0.0" -loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -12127,9 +12138,9 @@ object-is@^1.0.1: integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= object-keys@^1.0.11, object-keys@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" @@ -12148,7 +12159,7 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.0.4: +object.entries@^1.0.4, object.entries@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== @@ -13530,6 +13541,15 @@ promzard@^0.3.0: dependencies: read "1" +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== + dependencies: + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" + prop-types@^15.5.10, prop-types@^15.5.8: version "15.5.10" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" @@ -13564,6 +13584,15 @@ prop-types@^15.6.2: loose-envify "^1.3.1" object-assign "^4.1.1" +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + properties-parser@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/properties-parser/-/properties-parser-0.3.1.tgz#1316e9539ffbfd93845e369b211022abd478771a" @@ -13937,15 +13966,15 @@ react-docgen@3.0.0-rc.2: node-dir "^0.1.10" recast "^0.16.0" -react-dom@^16.7.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8" - integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg== +react-dom@^16.8.0: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.12.0" + scheduler "^0.13.6" react-draggable@^3.0.4: version "3.1.1" @@ -13999,11 +14028,16 @@ react-intl@^2.3.0: intl-relativeformat "^2.0.0" invariant "^2.1.1" -react-is@^16.6.0, react-is@^16.7.0: +react-is@^16.6.0: version "16.7.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa" integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g== +react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + react-is@^16.8.4: version "16.8.4" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2" @@ -14153,14 +14187,14 @@ react-styleguidist@^8.0.6: webpack-merge "^4.1.4" react-test-renderer@^16.0.0-0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.7.0.tgz#1ca96c2b450ab47c36ba92cd8c03fcefc52ea01c" - integrity sha512-tFbhSjknSQ6+ttzmuGdv+SjQfmvGcq3PFKyPItohwhhOBmRoTf1We3Mlt3rJtIn85mjPXOkKV+TaKK4irvk9Yg== + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1" + integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" - react-is "^16.7.0" - scheduler "^0.12.0" + react-is "^16.8.6" + scheduler "^0.13.6" react-tether@1.0.1: version "1.0.1" @@ -14189,15 +14223,15 @@ react-virtualized@^9.20.1: prop-types "^15.6.0" react-lifecycles-compat "^3.0.4" -react@^16.7.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381" - integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A== +react@^16.8.0: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.12.0" + scheduler "^0.13.6" read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: version "1.0.1" @@ -14357,10 +14391,10 @@ readable-stream@^2.0.2, readable-stream@^2.3.6, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6: - version "3.1.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" - integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" + integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -14501,6 +14535,11 @@ redux@^4.0.0: loose-envify "^1.4.0" symbol-observable "^1.2.0" +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + regenerate-unicode-properties@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" @@ -15176,10 +15215,10 @@ sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.12.0.tgz#8ab17699939c0aedc5a196a657743c496538647b" - integrity sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw== +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -15279,7 +15318,7 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@5.6.0, "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@5.6.0, "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.5.1: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -15294,10 +15333,10 @@ semver@^5.0.1, semver@^5.3.0, semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= -semver@^5.4.1: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== +semver@^5.4.1, semver@^5.6.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== send@0.16.2: version "0.16.2"