diff --git a/package.json b/package.json index 7b108230b2e0a3..d4dc65963aa98b 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "dtslint": "^0.4.0", "emotion-theming": "^10.0.5", "enzyme": "^3.5.0", - "enzyme-adapter-react-16": "^1.3.0", + "enzyme-adapter-react-16": "~1.10.0", "eslint": "^5.9.0", "eslint-config-airbnb": "^17.0.0", "eslint-config-prettier": "^4.0.0", @@ -160,10 +160,10 @@ "prop-types": "^15.7.2", "puppeteer": "^1.5.0", "raw-loader": "^1.0.0", - "react": "^16.8.0", + "react": "^16.8.5", "react-autosuggest": "^9.3.2", "react-docgen": "^4.0.1", - "react-dom": "^16.8.0", + "react-dom": "^16.8.5", "react-draggable": "^3.0.5", "react-final-form": "^4.0.2", "react-frame-component": "^4.0.2", @@ -174,7 +174,7 @@ "react-router-dom": "^4.2.2", "react-select": "^2.0.0", "react-swipeable-views": "^0.13.0", - "react-test-renderer": "^16.1.1", + "react-test-renderer": "^16.8.5", "react-text-mask": "^5.0.2", "react-virtualized": "^9.21.0", "recast": "^0.17.0", diff --git a/packages/material-ui-styles/src/styled/styled.test.js b/packages/material-ui-styles/src/styled/styled.test.js index 76cbc645221cc7..59f1e862ff5d4a 100644 --- a/packages/material-ui-styles/src/styled/styled.test.js +++ b/packages/material-ui-styles/src/styled/styled.test.js @@ -14,7 +14,6 @@ describe('styled', () => { before(() => { mount = createMount(); - global.disableShallowSupport = true; StyledButton = styled('button')({ background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)', borderRadius: 3, @@ -28,7 +27,6 @@ describe('styled', () => { after(() => { mount.cleanUp(); - global.disableShallowSupport = false; }); it('should work as expected', () => { diff --git a/packages/material-ui-styles/src/withStyles/withStyles.js b/packages/material-ui-styles/src/withStyles/withStyles.js index 1229f3cf182e79..3cf3cbe9bb2d84 100644 --- a/packages/material-ui-styles/src/withStyles/withStyles.js +++ b/packages/material-ui-styles/src/withStyles/withStyles.js @@ -2,12 +2,10 @@ import React from 'react'; import PropTypes from 'prop-types'; import warning from 'warning'; import hoistNonReactStatics from 'hoist-non-react-statics'; -import { chainPropTypes, getDisplayName, ponyfillGlobal } from '@material-ui/utils'; +import { chainPropTypes, getDisplayName } from '@material-ui/utils'; import makeStyles from '../makeStyles'; import getThemeProps from '../getThemeProps'; import useTheme from '../useTheme'; -import mergeClasses from '../mergeClasses'; -import getStylesCreator from '../getStylesCreator'; // Link a style sheet with a component. // It does not modify the component passed to it; @@ -46,7 +44,7 @@ const withStyles = (stylesOrCreator, options = {}) => Component => { ...stylesOptions, }); - let WithStyles = React.forwardRef(function WithStyles(props, ref) { + const WithStyles = React.forwardRef(function WithStyles(props, ref) { const { classes: classesProp, innerRef, ...other } = props; const classes = useStyles(props); @@ -72,39 +70,6 @@ const withStyles = (stylesOrCreator, options = {}) => Component => { return ; }); - if (process.env.NODE_ENV === 'test' && !ponyfillGlobal.disableShallowSupport) { - // Generate a fake classes object. - const stylesCreator = getStylesCreator(stylesOrCreator); - const styles = stylesCreator.create(defaultTheme, name); - const classes = Object.keys(styles).reduce((acc, key) => { - acc[key] = `${name}-${key}`; - return acc; - }, {}); - - class WithStylesTest extends React.Component { - render() { - // eslint-disable-next-line react/prop-types - const { classes: newClasses, innerRef, ...other } = this.props; - const more = other; - - if (withTheme && !more.theme) { - more.theme = defaultTheme; - } - - return ( - - ); - } - } - WithStylesTest.Original = WithStyles; - WithStyles = WithStylesTest; - WithStyles.classes = classes; - } - WithStyles.propTypes = { /** * Override or extend the styles applied to the component. @@ -137,6 +102,7 @@ const withStyles = (stylesOrCreator, options = {}) => Component => { // Exposed for test purposes. WithStyles.Naked = Component; WithStyles.options = options; + WithStyles.useStyles = useStyles; } return WithStyles; diff --git a/packages/material-ui-styles/src/withStyles/withStyles.test.js b/packages/material-ui-styles/src/withStyles/withStyles.test.js index 367111ba151b0c..c488100f0ce866 100644 --- a/packages/material-ui-styles/src/withStyles/withStyles.test.js +++ b/packages/material-ui-styles/src/withStyles/withStyles.test.js @@ -17,12 +17,10 @@ describe('withStyles', () => { before(() => { mount = createMount(); - global.disableShallowSupport = true; }); after(() => { mount.cleanUp(); - global.disableShallowSupport = false; }); it('hoist statics', () => { diff --git a/packages/material-ui-styles/src/withTheme/withTheme.js b/packages/material-ui-styles/src/withTheme/withTheme.js index f177ab036a1357..055627215fff6a 100644 --- a/packages/material-ui-styles/src/withTheme/withTheme.js +++ b/packages/material-ui-styles/src/withTheme/withTheme.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import hoistNonReactStatics from 'hoist-non-react-statics'; -import { chainPropTypes, getDisplayName, ponyfillGlobal } from '@material-ui/utils'; +import { chainPropTypes, getDisplayName } from '@material-ui/utils'; import useTheme from '../useTheme'; export function withThemeCreator(options = {}) { @@ -17,23 +17,12 @@ export function withThemeCreator(options = {}) { ); } - let WithTheme = React.forwardRef(function WithTheme(props, ref) { + const WithTheme = React.forwardRef(function WithTheme(props, ref) { const { innerRef, ...other } = props; const theme = useTheme() || defaultTheme; return ; }); - if (process.env.NODE_ENV === 'test' && !ponyfillGlobal.disableShallowSupport) { - class WithThemeTest extends React.Component { - render() { - // eslint-disable-next-line react/prop-types - const { innerRef, ...other } = this.props; - return ; - } - } - WithTheme = WithThemeTest; - } - WithTheme.propTypes = { /** * @deprecated diff --git a/packages/material-ui-styles/src/withTheme/withTheme.test.js b/packages/material-ui-styles/src/withTheme/withTheme.test.js index eb37872439eae3..007e1cdc07e7d7 100644 --- a/packages/material-ui-styles/src/withTheme/withTheme.test.js +++ b/packages/material-ui-styles/src/withTheme/withTheme.test.js @@ -13,12 +13,10 @@ describe('withTheme', () => { before(() => { mount = createMount(); - global.disableShallowSupport = true; }); after(() => { mount.cleanUp(); - global.disableShallowSupport = false; }); it('should inject the theme', () => { diff --git a/packages/material-ui/src/ButtonBase/ButtonBase.test.js b/packages/material-ui/src/ButtonBase/ButtonBase.test.js index 4435d16522f3b8..f7dde6307fbb04 100644 --- a/packages/material-ui/src/ButtonBase/ButtonBase.test.js +++ b/packages/material-ui/src/ButtonBase/ButtonBase.test.js @@ -264,7 +264,7 @@ describe('', () => { wrapper.simulate('blur', {}); assert.strictEqual(instanceWrapper.instance().ripple.stop.callCount, 1); - assert.strictEqual(instanceWrapper.state().focusVisible, false); + assert.strictEqual(wrapper.find('button').hasClass(classes.focusVisible), false); }); }); @@ -334,7 +334,11 @@ describe('', () => { let clock; function getState() { - return wrapper.find('ButtonBase').state(); + /** + * wrapper.find('ButtonBase').state() + * throws '::state() can only be called on class components' + */ + return instance.state; } beforeEach(() => { @@ -404,7 +408,7 @@ describe('', () => { wrapper.setProps({ disabled: true, }); - assert.strictEqual(instanceWrapper.state().focusVisible, false); + assert.strictEqual(instanceWrapper.instance().state.focusVisible, false); }); it('should not apply disabled on a span', () => { @@ -693,13 +697,13 @@ describe('', () => { }); it('should not rerender the TouchRipple', () => { - const wrapper = mount(foo); + const wrapper = mount(foo); wrapper.setProps({ children: 'bar', }); assert.strictEqual( rerender.updates.filter(update => update.displayName !== 'NoSsr').length, - 2, + 1, ); }); }); diff --git a/packages/material-ui/src/FormControl/FormControl.test.js b/packages/material-ui/src/FormControl/FormControl.test.js index 56e60ce8ea30d4..37b9a56821d3f4 100644 --- a/packages/material-ui/src/FormControl/FormControl.test.js +++ b/packages/material-ui/src/FormControl/FormControl.test.js @@ -15,7 +15,7 @@ describe('', () => { } function getState(wrapper) { - return wrapper.find('FormControl').state(); + return wrapper.find('FormControl').instance().state; } before(() => { diff --git a/packages/material-ui/src/InputBase/InputBase.test.js b/packages/material-ui/src/InputBase/InputBase.test.js index 6153cdc9e42231..15952cad2a13eb 100644 --- a/packages/material-ui/src/InputBase/InputBase.test.js +++ b/packages/material-ui/src/InputBase/InputBase.test.js @@ -84,7 +84,7 @@ describe('', () => { wrapper.setProps({ disabled: true, }); - assert.strictEqual(wrapper.find('InputBase').state().focused, false); + assert.strictEqual(wrapper.find('InputBase').instance().state.focused, false); assert.strictEqual(handleBlur.callCount, 1); }); diff --git a/packages/material-ui/src/Popover/Popover.test.js b/packages/material-ui/src/Popover/Popover.test.js index 998d52525b2e2e..a92fb64f741bb3 100644 --- a/packages/material-ui/src/Popover/Popover.test.js +++ b/packages/material-ui/src/Popover/Popover.test.js @@ -335,7 +335,7 @@ describe('', () => { return new Promise(resolve => { const component = ( - ', () => { }} >
- + ); wrapper = mount(component); wrapper.setProps({ open: true }); @@ -482,7 +482,7 @@ describe('', () => { openPopover = anchorOrigin => new Promise(resolve => { wrapper = mount( - ', () => { }} >
- , + , ); wrapper.setProps({ open: true }); }); diff --git a/packages/material-ui/src/TextField/TextField.test.js b/packages/material-ui/src/TextField/TextField.test.js index a8b348dc043efb..7ee41b29e5fcde 100644 --- a/packages/material-ui/src/TextField/TextField.test.js +++ b/packages/material-ui/src/TextField/TextField.test.js @@ -99,12 +99,10 @@ describe('', () => { describe('with an outline', () => { it('should set outline props', () => { - wrapper = mount(); + wrapper = mount(); + assert.strictEqual(wrapper.props().variant, 'outlined'); - assert.strictEqual( - wrapper.find(OutlinedInput).props().labelWidth, - wrapper.instance().inputLabelNode ? wrapper.instance().inputLabelNode.offsetWidth : 0, - ); + assert.strictEqual(typeof wrapper.find(OutlinedInput).props().labelWidth, 'number'); }); it('should set shrink prop on outline from label', () => { diff --git a/packages/material-ui/src/Tooltip/Tooltip.test.js b/packages/material-ui/src/Tooltip/Tooltip.test.js index cf58490a6df80b..32f9fb0aedf3e2 100644 --- a/packages/material-ui/src/Tooltip/Tooltip.test.js +++ b/packages/material-ui/src/Tooltip/Tooltip.test.js @@ -92,11 +92,11 @@ describe('', () => { const wrapper = shallow(); wrapper.instance().childrenRef = document.createElement('div'); const children = wrapper.childAt(0).childAt(0); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); children.simulate('mouseOver', { type: 'mouseover' }); - assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(wrapper.instance().state.open, true); children.simulate('mouseLeave', { type: 'mouseleave' }); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); }); it('should be controllable', () => { @@ -124,16 +124,16 @@ describe('', () => { childrenRef.tabIndex = 0; wrapper.instance().childrenRef = childrenRef; const children = wrapper.childAt(0).childAt(0); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); children.simulate('mouseOver', { type: 'mouseover' }); childrenRef.focus(); children.simulate('focus', { type: 'focus', persist }); clock.tick(0); - assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(wrapper.instance().state.open, true); children.simulate('mouseLeave', { type: 'mouseleave' }); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); children.simulate('blur', { type: 'blur' }); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); }); describe('touch screen', () => { @@ -147,7 +147,7 @@ describe('', () => { children.simulate('touchEnd', { type: 'touchend', persist }); childrenRef.focus(); children.simulate('focus', { type: 'focus', persist }); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); }); it('should open on long press', () => { @@ -160,11 +160,11 @@ describe('', () => { childrenRef.focus(); children.simulate('focus', { type: 'focus', persist }); clock.tick(1e3); - assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(wrapper.instance().state.open, true); children.simulate('touchEnd', { type: 'touchend', persist }); children.simulate('blur', { type: 'blur' }); clock.tick(1500); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); }); }); @@ -203,9 +203,9 @@ describe('', () => { childrenRef.tabIndex = 0; childrenRef.focus(); assert.strictEqual(document.activeElement, childrenRef); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); clock.tick(111); - assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(wrapper.instance().state.open, true); }); it('should take the leaveDelay into account', () => { @@ -215,11 +215,11 @@ describe('', () => { childrenRef.focus(); assert.strictEqual(document.activeElement, childrenRef); clock.tick(0); - assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(wrapper.instance().state.open, true); childrenRef.blur(); - assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(wrapper.instance().state.open, true); clock.tick(111); - assert.strictEqual(wrapper.state().open, false); + assert.strictEqual(wrapper.instance().state.open, false); }); }); @@ -299,13 +299,13 @@ describe('', () => { const children = wrapper.childAt(0).childAt(0); children.simulate('mouseOver', { type: 'mouseOver' }); clock.tick(0); - assert.strictEqual(tooltipNaked.state().open, true); + assert.strictEqual(tooltipNaked.instance().state.open, true); const popper = wrapper.find(Popper); children.simulate('mouseLeave', { type: 'mouseleave' }); - assert.strictEqual(tooltipNaked.state().open, true); + assert.strictEqual(tooltipNaked.instance().state.open, true); popper.simulate('mouseOver', { type: 'mouseover' }); clock.tick(111); - assert.strictEqual(tooltipNaked.state().open, true); + assert.strictEqual(tooltipNaked.instance().state.open, true); }); }); diff --git a/packages/material-ui/src/test-utils/getClasses.js b/packages/material-ui/src/test-utils/getClasses.js index 0c21f64f5f6e75..6bc07098aaf080 100644 --- a/packages/material-ui/src/test-utils/getClasses.js +++ b/packages/material-ui/src/test-utils/getClasses.js @@ -1,4 +1,18 @@ +import React from 'react'; +import createShallow from './createShallow'; + +const shallow = createShallow(); + // Helper function to extract the classes from a styleSheet. export default function getClasses(element) { - return element.type.classes; + const { useStyles } = element.type; + + let classes; + function Listener() { + classes = useStyles(element.props); + return null; + } + shallow(); + + return classes; } diff --git a/packages/material-ui/src/test-utils/testRef.js b/packages/material-ui/src/test-utils/testRef.js index 1722258276d66e..7e7a728d045a05 100644 --- a/packages/material-ui/src/test-utils/testRef.js +++ b/packages/material-ui/src/test-utils/testRef.js @@ -16,6 +16,6 @@ function assertDOMNode(node) { */ export default function testRef(element, mount, onRef = assertDOMNode) { const ref = React.createRef(); - mount({React.cloneElement(element, { innerRef: ref })}); + mount({React.cloneElement(element, { ref })}); onRef(ref.current); } diff --git a/yarn.lock b/yarn.lock index 898547c37a7afb..a595a206ba0acf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5305,13 +5305,12 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== -enzyme-adapter-react-16@^1.3.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.9.1.tgz#6d49a3a31c3a0fccf527610f31b837e0f307128a" - integrity sha512-Egzogv1y77DUxdnq/CyHxLHaNxmSSKDDSDNNB/EiAXCZVFXdFibaNy2uUuRQ1n24T2m6KH/1Rw16XDRq+1yVEg== +enzyme-adapter-react-16@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.10.0.tgz#12e5b6f4be84f9a2ef374acc2555f829f351fc6e" + integrity sha512-0QqwEZcBv1xEEla+a3H7FMci+y4ybLia9cZzsdIrId7qcig4MK0kqqf6iiCILH1lsKS6c6AVqL3wGPhCevv5aQ== dependencies: enzyme-adapter-utils "^1.10.0" - function.prototype.name "^1.1.0" object.assign "^4.1.0" object.values "^1.1.0" prop-types "^15.6.2" @@ -10968,15 +10967,15 @@ react-docgen@^4.0.1: node-dir "^0.1.10" recast "^0.17.3" -react-dom@^16.8.0: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.4.tgz#1061a8e01a2b3b0c8160037441c3bf00a0e3bc48" - integrity sha512-Ob2wK7XG2tUDt7ps7LtLzGYYB6DXMCLj0G5fO6WeEICtT4/HdpOi7W/xLzZnR6RCG1tYza60nMdqtxzA8FaPJQ== +react-dom@^16.8.5: + version "16.8.5" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.5.tgz#b3e37d152b49e07faaa8de41fdf562be3463335e" + integrity sha512-VIEIvZLpFafsfu4kgmftP5L8j7P1f0YThfVTrANMhZUFMDOsA6e0kfR6wxw/8xxKs4NB59TZYbxNdPCDW34x4w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.4" + scheduler "^0.13.5" react-draggable@^3.0.5: version "3.2.1" @@ -11033,10 +11032,10 @@ react-is@16.6.3: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz#d2d7462fcfcbe6ec0da56ad69047e47e56e7eac0" integrity sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA== -react-is@^16.5.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1, react-is@^16.8.2, react-is@^16.8.4: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2" - integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA== +react-is@^16.5.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1, react-is@^16.8.2, react-is@^16.8.5: + version "16.8.5" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.5.tgz#c54ac229dd66b5afe0de5acbe47647c3da692ff8" + integrity sha512-sudt2uq5P/2TznPV4Wtdi+Lnq3yaYW8LfvPKLM9BKD8jJNBkxMVyB0C9/GmVhLw7Jbdmndk/73n7XQGeN9A3QQ== react-jss@^10.0.0-alpha.12: version "10.0.0-alpha.12" @@ -11169,15 +11168,15 @@ react-swipeable-views@^0.13.0: react-swipeable-views-utils "^0.13.1" warning "^4.0.1" -react-test-renderer@^16.0.0-0, react-test-renderer@^16.1.1: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.4.tgz#abee4c2c3bf967a8892a7b37f77370c5570d5329" - integrity sha512-jQ9Tf/ilIGSr55Cz23AZ/7H3ABEdo9oy2zF9nDHZyhLHDSLKuoILxw2ifpBfuuwQvj4LCoqdru9iZf7gwFH28A== +react-test-renderer@^16.0.0-0, react-test-renderer@^16.8.5: + version "16.8.5" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.5.tgz#4cba7a8aad73f7e8a0bc4379a0fe21632886a563" + integrity sha512-/pFpHYQH4f35OqOae/DgOCXJDxBqD3K3akVfDhLgR0qYHoHjnICI/XS9QDwIhbrOFHWL7okVW9kKMaHuKvt2ng== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" - react-is "^16.8.4" - scheduler "^0.13.4" + react-is "^16.8.5" + scheduler "^0.13.5" react-text-mask@^5.0.2, react-text-mask@^5.4.3: version "5.4.3" @@ -11215,15 +11214,15 @@ react-virtualized@^9.21.0: prop-types "^15.6.0" react-lifecycles-compat "^3.0.4" -react@^16.8.0: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.4.tgz#fdf7bd9ae53f03a9c4cd1a371432c206be1c4768" - integrity sha512-0GQ6gFXfUH7aZcjGVymlPOASTuSjlQL4ZtVC5YKH+3JL6bBLCVO21DknzmaPlI90LN253ojj02nsapy+j7wIjg== +react@^16.8.5: + version "16.8.5" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.5.tgz#49be3b655489d74504ad994016407e8a0445de66" + integrity sha512-daCb9TD6FZGvJ3sg8da1tRAtIuw29PbKZW++NN4wqkbEvxL+bZpaaYb4xuftW/SpXmgacf1skXl/ddX6CdOlDw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.4" + scheduler "^0.13.5" read-cmd-shim@^1.0.1: version "1.0.1" @@ -11950,10 +11949,10 @@ saxes@^3.1.4: dependencies: xmlchars "^1.3.1" -scheduler@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.4.tgz#8fef05e7a3580c76c0364d2df5e550e4c9140298" - integrity sha512-cvSOlRPxOHs5dAhP9yiS/6IDmVAVxmk33f0CtTJRkmUWcb1Us+t7b1wqdzoC0REw2muC9V5f1L/w5R5uKGaepA== +scheduler@^0.13.5: + version "0.13.5" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.5.tgz#b7226625167041298af3b98088a9dbbf6d7733a8" + integrity sha512-K98vjkQX9OIt/riLhp6F+XtDPtMQhqNcf045vsh+pcuvHq+PHy1xCrH3pq1P40m6yR46lpVvVhKdEOtnimuUJw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1"