From b57ae0019d8746e7acb37d22d1b0ee30ecb0b1b2 Mon Sep 17 00:00:00 2001 From: DMoon Date: Fri, 2 Jun 2023 15:11:55 +0800 Subject: [PATCH 1/7] chore: upgrade react to v17 and fix tests --- configs/jestSetup.js | 2 +- package.json | 8 +- .../src/mixins/__tests__/closable.test.js | 4 +- packages/core/src/mixins/closable.js | 204 +++---- yarn.lock | 509 ++++++++++++++++-- 5 files changed, 573 insertions(+), 154 deletions(-) diff --git a/configs/jestSetup.js b/configs/jestSetup.js index 91148bf5..1db4195a 100644 --- a/configs/jestSetup.js +++ b/configs/jestSetup.js @@ -1,5 +1,5 @@ /* eslint-disable import/no-extraneous-dependencies */ import Enzyme from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; +import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; Enzyme.configure({ adapter: new Adapter() }); diff --git a/package.json b/package.json index 2c32b9f7..ada486ae 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.4.4", "@babel/runtime-corejs3": "^7.4.4", + "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", "autoprefixer": "^9.6.1", "babel-core": "7.0.0-bridge.0", "babel-eslint": "^10.0.1", @@ -50,7 +51,6 @@ "coveralls": "^3.0.0", "css-loader": "^0.28.8", "enzyme": "^3.7.0", - "enzyme-adapter-react-16": "^1.6.0", "eslint": "7.8", "eslint-config-airbnb": "18.2", "eslint-config-ichef": "8.0", @@ -69,9 +69,9 @@ "node-sass": "^4.12.0", "postcss-loader": "^3.0.0", "prop-types": "^15.6.2", - "react": "^16.6.3", - "react-dom": "^16.6.3", - "react-test-renderer": "^16.6.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-test-renderer": "^17.0.2", "sass-loader": "^6.0.2", "style-loader": "^0.19.1", "stylelint": "^10.1.0", diff --git a/packages/core/src/mixins/__tests__/closable.test.js b/packages/core/src/mixins/__tests__/closable.test.js index 72ccc613..00b25924 100644 --- a/packages/core/src/mixins/__tests__/closable.test.js +++ b/packages/core/src/mixins/__tests__/closable.test.js @@ -125,7 +125,7 @@ describe.each` const handleClose = jest.fn(); const closableOptions = { onClickInside, onClickOutside }; - mount( + const wrapper = mount( , { attachTo: rootNode }, ); @@ -139,6 +139,8 @@ describe.each` keyEvent = new KeyboardEvent('keyup', { keyCode: keycode('Escape') }); document.dispatchEvent(keyEvent); expect(handleClose).toHaveBeenCalledTimes(shouldBeCalled ? 1 : 0); + + wrapper.unmount(); }); }); diff --git a/packages/core/src/mixins/closable.js b/packages/core/src/mixins/closable.js index 549cb3cb..d6fddf84 100644 --- a/packages/core/src/mixins/closable.js +++ b/packages/core/src/mixins/closable.js @@ -37,108 +37,108 @@ const closable = ({ }; class Closable extends PureComponent { - static displayName = `closable(${componentName})`; - - static propTypes = { - onClose: PropTypes.func, - closable: PropTypes.shape({ - onEscape: PropTypes.bool, - onClickOutside: PropTypes.bool, - onClickInside: PropTypes.bool, - stopEventPropagation: PropTypes.bool, - skip: PropTypes.bool, - }), - }; - - static defaultProps = { - onClose: () => {}, - closable: mixinConfigs, - }; - - componentDidMount() { - if (!this.props.closable.skip) { - document.addEventListener('keyup', this.handleDocumentKeyup); - } - } - - componentWillUnmount() { - if (!this.props.closable.skip) { - document.removeEventListener('keyup', this.handleDocumentKeyup); - } - } - - getOptions() { - const { closable: runtimeOptions } = this.props; - - /** @type {typeof mixinDefaults} */ - const actualOptions = { - ...mixinConfigs, - ...runtimeOptions, - }; - - return actualOptions; - } - - /** - * @param {KeyboardEvent} event - */ - handleDocumentKeyup = (event) => { - const options = this.getOptions(); - - if (options.onEscape && event.keyCode === keycode(ESCAPE)) { - this.props.onClose(event); - } - } - - /** - * @param {React.MouseEvent} event - */ - handleOuterLayerClick = (event) => { - const options = this.getOptions(); - - if (options.stopEventPropagation) { - event.stopPropagation(); - } - - if (options.onClickOutside) { - this.props.onClose(event); - } - } - - /** - * @param {React.MouseEvent} event - */ - handleInsideClick = (event) => { - const options = this.getOptions(); - - if (options.onClickInside) { - this.props.onClose(event); - } - } - - render() { - const { - onClose, - closable: runtimeOptions, - ...otherProps - } = this.props; - - return ( - <> - {!runtimeOptions.skip && ( -
- )} - - - ); - } + static displayName = `closable(${componentName})`; + + static propTypes = { + onClose: PropTypes.func, + closable: PropTypes.shape({ + onEscape: PropTypes.bool, + onClickOutside: PropTypes.bool, + onClickInside: PropTypes.bool, + stopEventPropagation: PropTypes.bool, + skip: PropTypes.bool, + }), + }; + + static defaultProps = { + onClose: () => {}, + closable: mixinConfigs, + }; + + componentDidMount() { + if (!this.props.closable.skip) { + document.addEventListener('keyup', this.handleDocumentKeyup); + } + } + + componentWillUnmount() { + if (!this.props.closable.skip) { + document.removeEventListener('keyup', this.handleDocumentKeyup); + } + } + + getOptions() { + const { closable: runtimeOptions } = this.props; + + /** @type {typeof mixinDefaults} */ + const actualOptions = { + ...mixinConfigs, + ...runtimeOptions, + }; + + return actualOptions; + } + + /** + * @param {KeyboardEvent} event + */ + handleDocumentKeyup = (event) => { + const options = this.getOptions(); + + if (options.onEscape && event.keyCode === keycode(ESCAPE)) { + this.props.onClose(event); + } + } + + /** + * @param {React.MouseEvent} event + */ + handleOuterLayerClick = (event) => { + const options = this.getOptions(); + + if (options.stopEventPropagation) { + event.stopPropagation(); + } + + if (options.onClickOutside) { + this.props.onClose(event); + } + } + + /** + * @param {React.MouseEvent} event + */ + handleInsideClick = (event) => { + const options = this.getOptions(); + + if (options.onClickInside) { + this.props.onClose(event); + } + } + + render() { + const { + onClose, + closable: runtimeOptions, + ...otherProps + } = this.props; + + return ( + <> + {!runtimeOptions.skip && ( +
+ )} + + + ); + } } return Closable; diff --git a/yarn.lock b/yarn.lock index 6b38f90d..e3a003b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2952,6 +2952,28 @@ "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" +"@wojtekmaj/enzyme-adapter-react-17@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.8.0.tgz#138f404f82f502d152242c049e87d9621dcda4bd" + integrity sha512-zeUGfQRziXW7R7skzNuJyi01ZwuKCH8WiBNnTgUJwdS/CURrJwAhWsfW7nG7E30ak8Pu3ZwD9PlK9skBfAoOBw== + dependencies: + "@wojtekmaj/enzyme-adapter-utils" "^0.2.0" + enzyme-shallow-equal "^1.0.0" + has "^1.0.0" + prop-types "^15.7.0" + react-is "^17.0.0" + react-test-renderer "^17.0.0" + +"@wojtekmaj/enzyme-adapter-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.2.0.tgz#dc2a8c14f92e502da28ea6b3fad96a082076d028" + integrity sha512-ZvZm9kZxZEKAbw+M1/Q3iDuqQndVoN8uLnxZ8bzxm7KgGTBejrGRoJAp8f1EN8eoO3iAjBNEQnTDW/H4Ekb0FQ== + dependencies: + function.prototype.name "^1.1.0" + has "^1.0.0" + object.fromentries "^2.0.0" + prop-types "^15.7.0" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -3376,6 +3398,14 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" @@ -3634,6 +3664,11 @@ autoprefixer@^9.5.1, autoprefixer@^9.6.1, autoprefixer@^9.7.2: postcss "^7.0.23" postcss-value-parser "^4.0.2" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -4534,6 +4569,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -6014,6 +6057,14 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -6508,27 +6559,13 @@ env-paths@^1.0.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA= -enzyme-adapter-react-16@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.6.0.tgz#3fca28d3c32f3ff427495380fe2dd51494689073" - integrity sha512-ay9eGFpChyUDnjTFMMJHzrb681LF3hPWJLEA7RoLFG9jSWAdAm2V50pGmFV9dYGJgh5HfdiqM+MNvle41Yf/PA== - dependencies: - enzyme-adapter-utils "^1.8.0" - function.prototype.name "^1.1.0" - object.assign "^4.1.0" - object.values "^1.0.4" - prop-types "^15.6.2" - react-is "^16.5.2" - react-test-renderer "^16.0.0-0" - -enzyme-adapter-utils@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.8.1.tgz#a927d840ce2c14b42892a533aec836809d4e022b" - integrity sha512-s3QB3xQAowaDS2sHhmEqrT13GJC4+n5bG015ZkLv60n9k5vhxxHTQRIneZmQ4hmdCZEBrvUJ89PG6fRI5OEeuQ== +enzyme-shallow-equal@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz#5528a897a6ad2bdc417c7221a7db682cd01711ba" + integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== dependencies: - function.prototype.name "^1.1.0" - object.assign "^4.1.0" - prop-types "^15.6.2" + has "^1.0.3" + object-is "^1.1.5" enzyme@^3.7.0: version "3.7.0" @@ -6608,6 +6645,46 @@ es-abstract@^1.17.5: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -6626,6 +6703,15 @@ es-get-iterator@^1.0.1: is-string "^1.0.4" isarray "^2.0.5" +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -7624,6 +7710,13 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -7792,11 +7885,26 @@ function.prototype.name@^1.1.0: function-bind "^1.1.1" is-callable "^1.1.3" +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + fuse.js@^3.4.6: version "3.4.6" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.4.6.tgz#545c3411fed88bf2e27c457cab6e73e7af697a45" @@ -7843,6 +7951,16 @@ get-document@1.0.0: resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b" integrity sha1-SCG85m8cJMsDMWAr5strEsTwHEs= +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -7891,6 +8009,14 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -8096,6 +8222,13 @@ globalthis@^1.0.0: dependencies: define-properties "^1.1.3" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -8151,6 +8284,13 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -8216,6 +8356,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -8236,11 +8381,35 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -8277,7 +8446,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -8819,6 +8988,15 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -8903,11 +9081,27 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -8920,6 +9114,14 @@ is-boolean-object@^1.0.0: resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M= +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -8940,6 +9142,11 @@ is-callable@^1.2.0: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.1.tgz#4d1e21a4f437509d25ce55f8184350771421c96d" integrity sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg== +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-ci@^1.0.10: version "1.1.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" @@ -9120,11 +9327,23 @@ is-map@^2.0.0: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + is-number-object@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" integrity sha1-8mWrian0RQNO9q/xWo8AsA9VF5k= +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -9207,6 +9426,14 @@ is-regex@^1.1.0: dependencies: has-symbols "^1.0.1" +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-regexp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" @@ -9222,6 +9449,13 @@ is-set@^2.0.0: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-ssh@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" @@ -9244,6 +9478,13 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" @@ -9277,6 +9518,17 @@ is-text-path@^2.0.0: dependencies: text-extensions "^2.0.0" +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -9287,6 +9539,13 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-whitespace-character@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac" @@ -11636,6 +11895,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + object-inspect@^1.6.0, object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" @@ -11646,6 +11910,14 @@ object-is@^1.0.1: resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -11668,6 +11940,16 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.entries@^1.0.4, object.entries@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" @@ -11687,6 +11969,15 @@ object.entries@^1.1.2: es-abstract "^1.17.5" has "^1.0.3" +object.fromentries@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + "object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" @@ -12169,12 +12460,7 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.5, path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-parse@^1.0.7: +path-parse@^1.0.5, path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -12924,7 +13210,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.0, prop-types@^15.7.2: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -13345,7 +13631,7 @@ react-docgen@^5.0.0: node-dir "^0.1.10" strip-indent "^3.0.0" -react-dom@^16.6.0, react-dom@^16.6.1, react-dom@^16.6.3, react-dom@^16.8.3: +react-dom@^16.6.0, react-dom@^16.6.1, react-dom@^16.8.3: version "16.12.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== @@ -13355,6 +13641,15 @@ react-dom@^16.6.0, react-dom@^16.6.1, react-dom@^16.6.3, react-dom@^16.8.3: prop-types "^15.6.2" scheduler "^0.18.0" +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + react-draggable@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.1.0.tgz#e1c5b774001e32f0bff397254e1e9d5448ac92a4" @@ -13421,16 +13716,26 @@ react-inspector@^4.0.0: prop-types "^15.6.1" storybook-chromatic "^2.2.2" +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0": + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^16.5.2, react-is@^16.6.1, react-is@^16.7.0, react-is@^16.8.3, react-is@^16.9.0: +react-is@^16.6.1, react-is@^16.7.0, react-is@^16.8.3: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== +react-is@^17.0.0, react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -13456,6 +13761,14 @@ react-popper@^1.3.4: typed-styles "^0.0.7" warning "^4.0.2" +react-shallow-renderer@^16.13.1: + version "16.15.0" + resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + react-sizeme@^2.6.7: version "2.6.10" resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.10.tgz#9993dcb5e67fab94a8e5d078a0d3820609010f17" @@ -13477,15 +13790,15 @@ react-syntax-highlighter@^11.0.2: prismjs "^1.8.4" refractor "^2.4.1" -react-test-renderer@^16.0.0-0, react-test-renderer@^16.6.3: - version "16.9.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.9.0.tgz#7ed657a374af47af88f66f33a3ef99c9610c8ae9" - integrity sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ== +react-test-renderer@^17.0.0, react-test-renderer@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c" + integrity sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ== dependencies: object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.9.0" - scheduler "^0.15.0" + react-is "^17.0.2" + react-shallow-renderer "^16.13.1" + scheduler "^0.20.2" react-textarea-autosize@^7.1.0: version "7.1.0" @@ -13495,7 +13808,7 @@ react-textarea-autosize@^7.1.0: "@babel/runtime" "^7.1.2" prop-types "^15.6.0" -react@^16.6.1, react@^16.6.3, react@^16.8.3: +react@^16.6.1, react@^16.8.3: version "16.12.0" resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== @@ -13504,6 +13817,14 @@ react@^16.6.1, react@^16.6.3, react@^16.8.3: object-assign "^4.1.1" prop-types "^15.6.2" +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -13841,6 +14162,15 @@ regexp.prototype.flags@^1.3.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +regexp.prototype.flags@^1.4.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -14292,6 +14622,15 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -14367,14 +14706,6 @@ sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e" - integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler@^0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" @@ -14383,6 +14714,14 @@ scheduler@^0.18.0: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" @@ -14614,6 +14953,15 @@ side-channel@^1.0.2: es-abstract "^1.17.0-next.1" object-inspect "^1.7.0" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -15109,6 +15457,15 @@ string.prototype.trim@^1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" @@ -15117,6 +15474,15 @@ string.prototype.trimend@^1.0.1: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -15141,6 +15507,15 @@ string.prototype.trimstart@^1.0.1: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -15942,6 +16317,15 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typed-styles@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" @@ -16004,6 +16388,16 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + underscore@~1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" @@ -16702,6 +17096,17 @@ whet.extend@~0.9.9: resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -16712,6 +17117,18 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 09901217f0b209a5105b7221b16f78a22a6630cf Mon Sep 17 00:00:00 2001 From: DMoon Date: Fri, 2 Jun 2023 15:26:10 +0800 Subject: [PATCH 2/7] refactor: rename legacy lifecycle with UNSAFE prefix and fix lint error --- packages/core/src/EditableBasicRow.js | 4 +-- packages/core/src/EditableTextLabel.js | 24 ++++++++-------- packages/core/src/StatusIcon.js | 16 +++++------ packages/form/src/SelectList.js | 38 ++++++++++++------------- packages/form/src/SelectRow.js | 38 ++++++++++++------------- packages/form/src/SwitchRow.js | 10 +++---- packages/imageeditor/src/ImageEditor.js | 22 +++++++------- 7 files changed, 76 insertions(+), 76 deletions(-) diff --git a/packages/core/src/EditableBasicRow.js b/packages/core/src/EditableBasicRow.js index 238cb126..939dd42a 100644 --- a/packages/core/src/EditableBasicRow.js +++ b/packages/core/src/EditableBasicRow.js @@ -93,8 +93,8 @@ class EditableBasicRow extends PureComponent { focused: false, }; - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { if (nextProps.value !== this.props.value) { this.setState({ currentValue: nextProps.value }); } diff --git a/packages/core/src/EditableTextLabel.js b/packages/core/src/EditableTextLabel.js index c31e53c9..9a79dac5 100644 --- a/packages/core/src/EditableTextLabel.js +++ b/packages/core/src/EditableTextLabel.js @@ -63,18 +63,6 @@ class EditableTextLabel extends PureComponent { dblTouchTimeout: null, }; - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { - /** - * If the edit-state of is *controlled* by `inEdit` prop. - * If the prop is `undefined`, this component became *uncontrolled* - * and should run itself. - */ - if (this.getEditabilityControlled(nextProps)) { - this.setState({ inEdit: nextProps.inEdit }); - } - } - getEditabilityControlled(fromProps = this.props) { return fromProps.inEdit !== undefined; } @@ -86,6 +74,18 @@ class EditableTextLabel extends PureComponent { }); } + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { + /** + * If the edit-state of is *controlled* by `inEdit` prop. + * If the prop is `undefined`, this component became *uncontrolled* + * and should run itself. + */ + if (this.getEditabilityControlled(nextProps)) { + this.setState({ inEdit: nextProps.inEdit }); + } + } + leaveEditModeIfNotControlled() { if (!this.getEditabilityControlled(this.props)) { this.setState({ inEdit: false }); diff --git a/packages/core/src/StatusIcon.js b/packages/core/src/StatusIcon.js index fa8c15f1..f43806bc 100644 --- a/packages/core/src/StatusIcon.js +++ b/packages/core/src/StatusIcon.js @@ -48,13 +48,17 @@ class StatusIcon extends PureComponent { hideIcon: false, }; - // eslint-disable-next-line react/no-deprecated - componentWillMount() { + componentWillUnmount() { + clearTimeout(this.hideIconTimeout); + } + + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillMount() { this.autoToggleStatusIcon(); } - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { if (nextProps.status !== this.props.status) { this.autoToggleStatusIcon(nextProps.status); } @@ -65,10 +69,6 @@ class StatusIcon extends PureComponent { } } - componentWillUnmount() { - clearTimeout(this.hideIconTimeout); - } - /** * Auto hides status icon after being SUCCESS for 2 secs, * or shows icon when component leaves SUCCESS state. diff --git a/packages/form/src/SelectList.js b/packages/form/src/SelectList.js index c675c6df..d301f2df 100644 --- a/packages/form/src/SelectList.js +++ b/packages/form/src/SelectList.js @@ -72,25 +72,6 @@ class SelectList extends PureComponent { ), }; - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { - warning( - this.getIsControlled(this.props) === this.getIsControlled(nextProps), - ' should not switch from controlled to uncontrolled (or vice versa).' - ); - - if (this.getIsControlled(nextProps)) { - this.setState({ - checkedState: getInitialCheckedState(nextProps.value, nextProps.multiple), - }); - } else if (this.props.multiple !== nextProps.multiple) { - warning(false, ': you should not change `multiple` prop while it is uncontrolled. Its value will be reset now.'); - this.setState({ - checkedState: getInitialCheckedState([]), - }); - } - } - getInitialValue() { const { value, defaultValue, multiple } = this.props; @@ -129,6 +110,25 @@ class SelectList extends PureComponent { .map(option => option.value); } + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { + warning( + this.getIsControlled(this.props) === this.getIsControlled(nextProps), + ' should not switch from controlled to uncontrolled (or vice versa).' + ); + + if (this.getIsControlled(nextProps)) { + this.setState({ + checkedState: getInitialCheckedState(nextProps.value, nextProps.multiple), + }); + } else if (this.props.multiple !== nextProps.multiple) { + warning(false, ': you should not change `multiple` prop while it is uncontrolled. Its value will be reset now.'); + this.setState({ + checkedState: getInitialCheckedState([]), + }); + } + } + handleChange(nextCheckedState) { const { onChange, multiple } = this.props; const nextValues = this.getValues(nextCheckedState); diff --git a/packages/form/src/SelectRow.js b/packages/form/src/SelectRow.js index f97b1701..1c5dd4f3 100644 --- a/packages/form/src/SelectRow.js +++ b/packages/form/src/SelectRow.js @@ -100,25 +100,6 @@ class SelectRow extends PureComponent { cachedValue: this.getInitialValue(), }; - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { - this.setState({ - valueLabelMap: getValueToLabelAvatarMap(nextProps.children), - }); - - warning( - this.getIsControlled(this.props) === this.getIsControlled(nextProps), - ' should not switch from controlled to uncontrolled (or vice versa).' - ); - - if (this.getIsControlled(nextProps)) { - this.setState({ cachedValue: nextProps.value }); - } else if (this.props.multiple !== nextProps.multiple) { - warning(false, ': you should not change `multiple` prop while it is uncontrolled. Its value will be reset now.'); - this.setState({ cachedValue: (nextProps.multiple) ? [] : null }); - } - } - getInitialValue() { const { value, defaultValue, multiple } = this.props; @@ -143,6 +124,25 @@ class SelectRow extends PureComponent { return (multiple) ? cachedValue : [cachedValue].filter(val => val !== undefined); } + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { + this.setState({ + valueLabelMap: getValueToLabelAvatarMap(nextProps.children), + }); + + warning( + this.getIsControlled(this.props) === this.getIsControlled(nextProps), + ' should not switch from controlled to uncontrolled (or vice versa).' + ); + + if (this.getIsControlled(nextProps)) { + this.setState({ cachedValue: nextProps.value }); + } else if (this.props.multiple !== nextProps.multiple) { + warning(false, ': you should not change `multiple` prop while it is uncontrolled. Its value will be reset now.'); + this.setState({ cachedValue: (nextProps.multiple) ? [] : null }); + } + } + handleButtonClick = () => { this.setState({ isPopoverOpen: true }); } diff --git a/packages/form/src/SwitchRow.js b/packages/form/src/SwitchRow.js index e60f6bd4..727f0c4b 100644 --- a/packages/form/src/SwitchRow.js +++ b/packages/form/src/SwitchRow.js @@ -46,11 +46,6 @@ class SwitchRow extends PureComponent { checked: this.props.defaultChecked || this.props.checked, }; - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { - this.setState({ checked: nextProps.checked }); - } - getIsControlled() { const isControlled = this.props.checked !== undefined && this.props.checked !== null; @@ -64,6 +59,11 @@ class SwitchRow extends PureComponent { return this.state.checked ? asideOn : asideOff; } + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { + this.setState({ checked: nextProps.checked }); + } + handleSwitchButtonChange = (event) => { if (!this.getIsControlled()) { this.setState({ checked: event.target.checked }); diff --git a/packages/imageeditor/src/ImageEditor.js b/packages/imageeditor/src/ImageEditor.js index a8e12d6f..2b5345e4 100644 --- a/packages/imageeditor/src/ImageEditor.js +++ b/packages/imageeditor/src/ImageEditor.js @@ -102,17 +102,6 @@ class ImageEditor extends PureComponent { editorRef = React.createRef(); - // eslint-disable-next-line react/no-deprecated - componentWillReceiveProps(nextProps) { - // Consider current `scale`, `position` and `initCropRect` outdated when image changes - if (nextProps.image !== this.props.image) { - this.setState({ - scale: DEFAULT_SCALE, - position: DEFAULT_POSITION, - }); - } - } - getImageCanvas = ({ originalSize = false } = {}) => { if (originalSize) { return this.editorRef.current.getImage(); @@ -128,6 +117,17 @@ class ImageEditor extends PureComponent { return this.editorRef.current.getCroppingRect(); } + // eslint-disable-next-line react/no-deprecated, camelcase + UNSAFE_componentWillReceiveProps(nextProps) { + // Consider current `scale`, `position` and `initCropRect` outdated when image changes + if (nextProps.image !== this.props.image) { + this.setState({ + scale: DEFAULT_SCALE, + position: DEFAULT_POSITION, + }); + } + } + handleSliderChange = (event) => { const newScale = Number(event.target.value); From f3458619199b35b0649eb4960c269b57ae9bbba5 Mon Sep 17 00:00:00 2001 From: DMoon Date: Fri, 2 Jun 2023 15:28:32 +0800 Subject: [PATCH 3/7] chore: fix comments indentation --- packages/core/src/EditableTextLabel.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/core/src/EditableTextLabel.js b/packages/core/src/EditableTextLabel.js index 9a79dac5..43d09c10 100644 --- a/packages/core/src/EditableTextLabel.js +++ b/packages/core/src/EditableTextLabel.js @@ -77,10 +77,10 @@ class EditableTextLabel extends PureComponent { // eslint-disable-next-line react/no-deprecated, camelcase UNSAFE_componentWillReceiveProps(nextProps) { /** - * If the edit-state of is *controlled* by `inEdit` prop. - * If the prop is `undefined`, this component became *uncontrolled* - * and should run itself. - */ + * If the edit-state of is *controlled* by `inEdit` prop. + * If the prop is `undefined`, this component became *uncontrolled* + * and should run itself. + */ if (this.getEditabilityControlled(nextProps)) { this.setState({ inEdit: nextProps.inEdit }); } @@ -94,9 +94,9 @@ class EditableTextLabel extends PureComponent { handleDoubleClick = (event) => { /** - * If `inEdit` isn't controlled, this component by default - * goes into edit mode on double click/touch. - */ + * If `inEdit` isn't controlled, this component by default + * goes into edit mode on double click/touch. + */ if (!this.getEditabilityControlled()) { this.setState({ inEdit: true }); } From ae627a95da23194c300fa4972d39236bb4cf2e0b Mon Sep 17 00:00:00 2001 From: DMoon Date: Tue, 13 Jun 2023 10:46:44 +0800 Subject: [PATCH 4/7] chore: upgrade react and react-dom of packages to v17 --- packages/core/package.json | 6 +++--- packages/form/package.json | 4 ++-- packages/imageeditor/package.json | 4 ++-- yarn.lock | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index c8b18374..286b9689 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -33,8 +33,8 @@ "peerDependencies": { "@babel/runtime-corejs3": "^7.4.4", "prop-types": "^15.5.8", - "react": "^16.6.0", - "react-dom": "^16.6.0" + "react": "^17.0.2", + "react-dom": "^17.0.2" }, "dependencies": { "classnames": "^2.2.5", @@ -49,7 +49,7 @@ "devDependencies": { "@babel/cli": "^7.4.4", "enzyme": "^3.7.0", - "react-is": "^16.6.1", + "react-is": "^17.0.2", "webpack": "^3.10.0", "webpack-merge": "^4.1.2" } diff --git a/packages/form/package.json b/packages/form/package.json index f964c160..f791f2b0 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -32,7 +32,7 @@ "peerDependencies": { "@babel/runtime-corejs3": "^7.4.4", "prop-types": "^15.5.8", - "react": "^16.6.0" + "react": "^17.0.2" }, "dependencies": { "@ichef/gypcrete": "^5.2.0", @@ -45,7 +45,7 @@ "devDependencies": { "@babel/cli": "^7.4.4", "enzyme": "^3.7.0", - "react-dom": "^16.6.0", + "react-dom": "^17.0.2", "webpack": "^3.10.0" } } diff --git a/packages/imageeditor/package.json b/packages/imageeditor/package.json index 6b3ebfa1..a5c30f01 100644 --- a/packages/imageeditor/package.json +++ b/packages/imageeditor/package.json @@ -32,7 +32,7 @@ "peerDependencies": { "@babel/runtime-corejs3": "^7.4.4", "prop-types": "^15.5.8", - "react": "^16.6.0" + "react": "^17.0.2" }, "dependencies": { "@ichef/gypcrete": "^5.2.0", @@ -43,7 +43,7 @@ "devDependencies": { "@babel/cli": "^7.4.4", "enzyme": "^3.7.0", - "react-dom": "^16.6.0", + "react-dom": "^17.0.2", "webpack": "^3.10.0" } } diff --git a/yarn.lock b/yarn.lock index e3a003b6..98350bf2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13631,7 +13631,7 @@ react-docgen@^5.0.0: node-dir "^0.1.10" strip-indent "^3.0.0" -react-dom@^16.6.0, react-dom@^16.6.1, react-dom@^16.8.3: +react-dom@^16.6.1, react-dom@^16.8.3: version "16.12.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== @@ -13726,7 +13726,7 @@ react-is@^16.13.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^16.6.1, react-is@^16.7.0, react-is@^16.8.3: +react-is@^16.7.0, react-is@^16.8.3: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== From 58ac7b762606bc72ff71a2cf03394a11821e35fe Mon Sep 17 00:00:00 2001 From: DMoon Date: Tue, 13 Jun 2023 11:53:43 +0800 Subject: [PATCH 5/7] feat: upgrade react-textarea-autosize --- packages/core/package.json | 2 +- packages/form/package.json | 2 +- yarn.lock | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 286b9689..05f692b2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -43,7 +43,7 @@ "keycode": "^2.1.9", "lodash.omit": "^4.5.0", "memoize-one": "^4.0.3", - "react-textarea-autosize": "^7.1.0", + "react-textarea-autosize": "^8.4.1", "warning": "^4.0.3" }, "devDependencies": { diff --git a/packages/form/package.json b/packages/form/package.json index f791f2b0..9ff38dd5 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -39,7 +39,7 @@ "classnames": "^2.2.5", "immutable": "^3.8.2", "keycode": "^2.1.9", - "react-textarea-autosize": "^7.1.0", + "react-textarea-autosize": "^8.4.1", "warning": "^4.0.3" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 98350bf2..3577f58f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -928,6 +928,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.20.13": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" + integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/standalone@^7.4.5": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.7.7.tgz#4ab48826641e696bcd3902236b4f7bbb4b611630" @@ -13808,6 +13815,15 @@ react-textarea-autosize@^7.1.0: "@babel/runtime" "^7.1.2" prop-types "^15.6.0" +react-textarea-autosize@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.4.1.tgz#bcfc5462727014b808b14ee916c01e275e8a8335" + integrity sha512-aD2C+qK6QypknC+lCMzteOdIjoMbNlgSFmJjCV+DrfTPwp59i/it9mMNf2HDzvRjQgKAyBDPyLJhcrzElf2U4Q== + dependencies: + "@babel/runtime" "^7.20.13" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + react@^16.6.1, react@^16.8.3: version "16.12.0" resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" @@ -14117,6 +14133,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" @@ -16690,6 +16711,23 @@ use-callback-ref@^1.2.1: resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.1.tgz#898759ccb9e14be6c7a860abafa3ffbd826c89bb" integrity sha512-C3nvxh0ZpaOxs9RCnWwAJ+7bJPwQI8LHF71LzbQ3BvzH5XkdtlkMadqElGevg5bYBDFip4sAnD4m06zAKebg1w== +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + use-sidecar@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.2.tgz#e72f582a75842f7de4ef8becd6235a4720ad8af6" From 39b825ccf92f6ad3073841285931b516fffa3dc8 Mon Sep 17 00:00:00 2001 From: DMoon Date: Tue, 13 Jun 2023 11:56:20 +0800 Subject: [PATCH 6/7] feat: replace create-react-context with the native React Context API --- packages/core/package.json | 1 - packages/core/src/contexts/listSpacing.js | 5 ++--- yarn.lock | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 05f692b2..228b977a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,7 +38,6 @@ }, "dependencies": { "classnames": "^2.2.5", - "create-react-context": "^0.2.3", "document-offset": "^1.0.4", "keycode": "^2.1.9", "lodash.omit": "^4.5.0", diff --git a/packages/core/src/contexts/listSpacing.js b/packages/core/src/contexts/listSpacing.js index 723780be..dc7fe8eb 100644 --- a/packages/core/src/contexts/listSpacing.js +++ b/packages/core/src/contexts/listSpacing.js @@ -1,6 +1,5 @@ -// #FIXME: use React navive context API when upgraded to v16+ -import createReactContext from 'create-react-context'; +import React from 'react'; -const ListSpacingContext = createReactContext(true); +const ListSpacingContext = React.createContext(true); export default ListSpacingContext; diff --git a/yarn.lock b/yarn.lock index 3577f58f..8fe7f2a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5656,7 +5656,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@^0.2.1, create-react-context@^0.2.3: +create-react-context@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== From dbdcc260ccfffd788af3ec7cb8b355f05c4b98bf Mon Sep 17 00:00:00 2001 From: DMoon Date: Mon, 26 Jun 2023 18:28:30 +0800 Subject: [PATCH 7/7] chore: Update the Release part of `README.md` --- README.md | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 58593cca..3dfb9753 100644 --- a/README.md +++ b/README.md @@ -66,28 +66,17 @@ Gypcrete does not publish develop builds to the `dist` branch anymore. It now pu * When pushed to `develop` branch --> publish a canary build * When pushed to `master` branch --> publish a relase build -### Releasing - -We're relying on Lerna for versioning and publishing. When you create a Release on Github, it will trigger task on Travis CI to publish with Lerna. It also converts the lightweight tag created by Github Release to an annotated tag for Lerna to calculate versions. - -When releasing a new version for Gypcrete, follow the steps: - -1. Create a release branch `release/x.y.z` -2. *(Optional)* Release beta builds with `yarn release:pre` locally to specify version. -3. Bump version for `package.json` and `CHANGELOG`. -4. Bump children packages version with script: - ```sh - yarn bumpversion - ``` - This will run `lerna version`, which updates all `package.json` files in `packages/`. - -5. Commit above changes, then create a pull request for this release branch. -6. *[Important]* Create a new Release on Github in format of `v3.4.5` once it's merged into `master`. - Please be sure to prefix the tag name with `v` as Lerna uses them to calculate changes. - -7. Backport changes from `master` back to `develop` by creating a `backport/x.y.y` branch and create a pull request for that. - -At the time Github Release is created, it should trigger `yarn release` on Travis CI and publishes packages to npm. +## Release + +1. 從 develop 開出新的 release branch,release branch 的格式必須符合 `release/x.y.z`,例如 `release/1.2.3`。`x.y.z` 的部分為欲發佈的版號,必須符合 semantic versioning。 +2. 以這支新的 release branch 開出新的 PR,base branch 設為 `master`。 +3. 當 PR 被 merge 時,會觸發 github action 的 [Release workflow](https://github.com/iCHEF/fe-modules/blob/master/.github/workflows/release.yml),此 workflow 會在 master branch 做下列動作: + - 更新 package.json 的 version 並 commit + - 執行 `yarn changelog` 更新 CHANGELOG.md + - 打 git tag 並將 tag push 上 github + - 發佈新版本到 npm + - 開出 backport 到 develop branch 的 PR +4. merge backport PR。至此完成 release 流程。 ## LICENSE This project is licensed under the terms of the [Apache License 2.0](https://github.com/ichef/gypcrete/blob/master/LICENSE)