diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-dev.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-dev.js index 32630641c169..22fb589dbd53 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-dev.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-dev.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); @@ -153,8 +152,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -169,10 +169,7 @@ function mergeConfigs(base, ...overrides) { function sumPairs(pairs) { var total = 0; for (var _iterator = _createForOfIteratorHelperLoose(pairs), _step; !(_step = _iterator()).done;) { - var _ref = _step.value; - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + var [a, b] = _step.value; total += a + b; } return total; @@ -236,14 +233,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -261,12 +252,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-prod.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-prod.js index 510b81b7af52..fd54c3ba76b1 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-prod.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-canary-prod.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); @@ -148,8 +147,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -163,10 +163,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -230,14 +227,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -255,12 +246,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-dev.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-dev.js index 3bfeb2c95ec1..aa268b82ed55 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-dev.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-dev.js @@ -40,7 +40,6 @@ exports.processUser = processUser; exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); @@ -183,8 +182,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -198,10 +198,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -263,14 +260,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -288,12 +279,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-prod.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-prod.js index 9ced08fe256e..f0cc7e30f686 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-prod.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-legacy-prod.js @@ -40,7 +40,6 @@ exports.processUser = processUser; exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); @@ -182,8 +181,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -197,10 +197,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -262,14 +259,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -287,12 +278,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-async.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-async.js index 7e3b8f9dd522..d01422c674de 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-async.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-async.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); var _react = _interopRequireWildcard(require("react")); @@ -136,8 +135,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -152,10 +152,7 @@ function mergeConfigs(base, ...overrides) { function sumPairs(pairs) { var total = 0; for (var _iterator = _createForOfIteratorHelperLoose(pairs), _step; !(_step = _iterator()).done;) { - var _ref = _step.value; - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + var [a, b] = _step.value; total += a + b; } return total; @@ -213,14 +210,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-block-scoping.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-block-scoping.js index 5d27ff0833e0..2d47874d7f31 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-block-scoping.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-block-scoping.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); @@ -153,8 +152,9 @@ function processUser({ age = 18, ...rest }) { - const _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + const { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -169,10 +169,7 @@ function mergeConfigs(base, ...overrides) { function sumPairs(pairs) { let total = 0; for (var _iterator = _createForOfIteratorHelperLoose(pairs), _step; !(_step = _iterator()).done;) { - const _ref = _step.value; - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - const a = _ref2[0]; - const b = _ref2[1]; + const [a, b] = _step.value; total += a + b; } return total; @@ -236,14 +233,8 @@ const LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - const _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - const _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + const [count, setCount] = (0, _react.useState)(initialCount); + const [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { const timer = setInterval(() => { setCount(c => c + 1); @@ -261,12 +252,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } const handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-class-private.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-class-private.js index 19a611a05c87..021319c1c4f6 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-class-private.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev-preserve-class-private.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator")); var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator")); @@ -139,8 +138,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -155,10 +155,7 @@ function mergeConfigs(base, ...overrides) { function sumPairs(pairs) { var total = 0; for (var _iterator = _createForOfIteratorHelperLoose(pairs), _step; !(_step = _iterator()).done;) { - var _ref = _step.value; - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + var [a, b] = _step.value; total += a + b; } return total; @@ -222,14 +219,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -247,12 +238,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev.js index c1c360cb3a47..526fce97e37f 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-dev.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); @@ -153,8 +152,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -169,10 +169,7 @@ function mergeConfigs(base, ...overrides) { function sumPairs(pairs) { var total = 0; for (var _iterator = _createForOfIteratorHelperLoose(pairs), _step; !(_step = _iterator()).done;) { - var _ref = _step.value; - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + var [a, b] = _step.value; total += a + b; } return total; @@ -236,14 +233,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -261,12 +252,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod-no-import-export-transform.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod-no-import-export-transform.js index 1ac6b64b825f..fc69ed6e57f2 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod-no-import-export-transform.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod-no-import-export-transform.js @@ -19,7 +19,6 @@ import _inherits from "@babel/runtime/helpers/inherits"; import _setPrototypeOf from "@babel/runtime/helpers/setPrototypeOf"; -import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase"; import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey"; @@ -121,8 +120,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -136,10 +136,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = _slicedToArray(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -202,14 +199,8 @@ var LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = useState(initialCount), - _useState2 = _slicedToArray(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = useState(Status.Active), - _useState4 = _slicedToArray(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = useState(initialCount); + var [status, setStatus] = useState(Status.Active); useEffect(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -227,12 +218,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = _asyncToGenerator(function* () { + var _ref = _asyncToGenerator(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return _jsxs("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod.js index 45e02c09b8ee..202000100320 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/hermes-stable-prod.js @@ -41,7 +41,6 @@ exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); @@ -148,8 +147,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -163,10 +163,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -230,14 +227,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -255,12 +246,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-babel-runtime.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-babel-runtime.js index 33c53cca2501..ded801696d8f 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-babel-runtime.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-babel-runtime.js @@ -46,12 +46,6 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r function _wrapRegExp() { _wrapRegExp = function (e, r) { return new BabelRegExp(e, void 0, r); }; var e = RegExp.prototype, r = new WeakMap(); function BabelRegExp(e, t, p) { var o = RegExp(e, t); return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype); } function buildGroups(e, t) { var p = r.get(t); return Object.keys(p).reduce(function (r, t) { var o = p[t]; if ("number" == typeof o) r[t] = e[o];else { for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++; r[t] = e[o[i]]; } return r; }, Object.create(null)); } return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) { var t = e.exec.call(this, r); if (t) { t.groups = buildGroups(t, this); var p = t.indices; p && (p.groups = buildGroups(p, this)); } return t; }, BabelRegExp.prototype[Symbol.replace] = function (t, p) { if ("string" == typeof p) { var o = r.get(this); return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)(>|$)/g, function (e, r, t) { if ("" === t) return e; var p = o[r]; return Array.isArray(p) ? "$" + p.join("$") : "number" == typeof p ? "$" + p : ""; })); } if ("function" == typeof p) { var i = this; return e[Symbol.replace].call(this, t, function () { var e = arguments; return "object" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e); }); } return e[Symbol.replace].call(this, t, p); }, _wrapRegExp.apply(this, arguments); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } -function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } -function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } -function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } -function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError("attempted to use private field on non-instance"); return e; } @@ -157,8 +151,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -172,10 +167,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = _slicedToArray(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -239,14 +231,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = _slicedToArray(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = _slicedToArray(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -264,12 +250,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = _asyncToGenerator(function* () { + var _ref = _asyncToGenerator(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-import-export-transform.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-import-export-transform.js index 8f35153a9a77..120b8c8a7e44 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-import-export-transform.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/no-import-export-transform.js @@ -19,7 +19,6 @@ import _inherits from "@babel/runtime/helpers/inherits"; import _setPrototypeOf from "@babel/runtime/helpers/setPrototypeOf"; -import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase"; import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey"; @@ -121,8 +120,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -136,10 +136,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = _slicedToArray(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -202,14 +199,8 @@ var LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = useState(initialCount), - _useState2 = _slicedToArray(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = useState(Status.Active), - _useState4 = _slicedToArray(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = useState(initialCount); + var [status, setStatus] = useState(Status.Active); useEffect(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -227,12 +218,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = _asyncToGenerator(function* () { + var _ref = _asyncToGenerator(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return _jsxs("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/with-babel-runtime-version.js b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/with-babel-runtime-version.js index 90ef1e57176b..42901926d595 100644 --- a/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/with-babel-runtime-version.js +++ b/packages/react-native-babel-preset/src/__tests__/__fixtures__/output/with-babel-runtime-version.js @@ -41,7 +41,6 @@ exports.processUser = processUser; exports.safeJsonParse = safeJsonParse; exports.sumPairs = sumPairs; var _wrapRegExp2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapRegExp")); -var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); @@ -146,8 +145,9 @@ function processUser({ age = 18, ...rest }) { - var _rest$city = rest.city, - city = _rest$city === void 0 ? 'Unknown' : _rest$city; + var { + city = 'Unknown' + } = rest; return `${name} (${age}) from ${city}`; } function mergeConfigs(base, ...overrides) { @@ -161,10 +161,7 @@ function mergeConfigs(base, ...overrides) { } function sumPairs(pairs) { var total = 0; - for (var _ref of pairs) { - var _ref2 = (0, _slicedToArray2.default)(_ref, 2); - var a = _ref2[0]; - var b = _ref2[1]; + for (var [a, b] of pairs) { total += a + b; } return total; @@ -228,14 +225,8 @@ var LegacyComponent = exports.LegacyComponent = React.createClass({ function ModernComponent({ initialCount = 0 }) { - var _useState = (0, _react.useState)(initialCount), - _useState2 = (0, _slicedToArray2.default)(_useState, 2), - count = _useState2[0], - setCount = _useState2[1]; - var _useState3 = (0, _react.useState)(Status.Active), - _useState4 = (0, _slicedToArray2.default)(_useState3, 2), - status = _useState4[0], - setStatus = _useState4[1]; + var [count, setCount] = (0, _react.useState)(initialCount); + var [status, setStatus] = (0, _react.useState)(Status.Active); (0, _react.useEffect)(() => { var timer = setInterval(() => { setCount(c => c + 1); @@ -253,12 +244,12 @@ function ModernComponent({ return _handleAsyncClick.apply(this, arguments); } var handleClick = function () { - var _ref3 = (0, _asyncToGenerator2.default)(function* () { + var _ref = (0, _asyncToGenerator2.default)(function* () { yield handleAsyncClick(); setStatus(Status.Pending); }); return function handleClick() { - return _ref3.apply(this, arguments); + return _ref.apply(this, arguments); }; }(); return (0, _jsxRuntime.jsxs)("div", { diff --git a/packages/react-native-babel-preset/src/__tests__/transform-runtime-caller-test.js b/packages/react-native-babel-preset/src/__tests__/transform-runtime-caller-test.js index cf61511e4898..dcfcf7936b8b 100644 --- a/packages/react-native-babel-preset/src/__tests__/transform-runtime-caller-test.js +++ b/packages/react-native-babel-preset/src/__tests__/transform-runtime-caller-test.js @@ -41,7 +41,10 @@ describe('babel runtime caller options', () => { const code = 'const {a, ...rest} = obj;'; const result = transformWithCaller( code, - {dev: false}, + { + dev: false, + customTransformOptions: {unstable_preserveDestructuring: false}, + }, {babelRuntimeModuleName: '@react-native/babel-runtime'}, ); expect(result).toContain( @@ -54,7 +57,11 @@ describe('babel runtime caller options', () => { const code = 'const {a, ...rest} = obj;'; const result = transformWithCaller( code, - {dev: false, babelRuntimeModuleName: '@from/options'}, + { + dev: false, + babelRuntimeModuleName: '@from/options', + customTransformOptions: {unstable_preserveDestructuring: false}, + }, {babelRuntimeModuleName: '@from/caller'}, ); expect(result).toContain('@from/options/helpers/objectWithoutProperties'); diff --git a/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js b/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js index 55390bcabf23..a763b393b4cd 100644 --- a/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js +++ b/packages/react-native-babel-preset/src/__tests__/transform-snapshot-test.js @@ -442,7 +442,9 @@ describe('react-native-babel-preset transform snapshots', () => { it('handles destructuring with defaults', () => { const code = `const {a, b = 10, ...rest} = obj;`; const result = transformCode(code, {dev: false}); - expect(result).toContain('_objectWithoutProperties'); + expect(result).toContain('b = 10'); + expect(result).toContain('...rest'); + expect(result).not.toContain('_objectWithoutProperties'); }); it('handles JSX transformation', () => { @@ -637,13 +639,16 @@ describe('react-native-babel-preset transform snapshots', () => { expect(result).not.toContain('_slicedToArray'); }); - it('transforms destructuring without unstable_preserveDestructuring', () => { + it('transforms destructuring when unstable_preserveDestructuring is false', () => { const code = ` const {a, b, ...rest} = obj; `; const result = transformCode(code, { dev: false, unstable_transformProfile: 'hermes-stable', + customTransformOptions: { + unstable_preserveDestructuring: false, + }, }); expect(result).toContain('_objectWithoutProperties'); }); diff --git a/packages/react-native-babel-preset/src/configs/main.js b/packages/react-native-babel-preset/src/configs/main.js index 13d1ecc3eef8..59b034573dea 100644 --- a/packages/react-native-babel-preset/src/configs/main.js +++ b/packages/react-native-babel-preset/src/configs/main.js @@ -147,10 +147,28 @@ const getPreset = (src, options, babel) => { options.customTransformOptions?.unstable_preserveBlockScoping, ); - // Preserve destructuring syntax if the experiment is enabled. - const preserveDestructuring = TRUE_VALS.has( - options.customTransformOptions?.unstable_preserveDestructuring, - ); + // `enableBabelRuntime` (a boolean toggle or a string @babel/runtime version to + // pin) and `babelRuntimeModuleName` (the module helpers are imported from) may + // be provided via options or, for programmatic callers such as Metro, via + // Babel caller data. Options take precedence over caller data, consistent with + // the other options resolved here. + const enableBabelRuntime = + options.enableBabelRuntime ?? babel?.caller(getEnableBabelRuntime) ?? true; + + // When @babel/plugin-transform-runtime is disabled, generators and async + // functions are lowered by @babel/plugin-transform-regenerator, which cannot + // handle destructuring patterns inside them (e.g. `const {a} = await x()`). + const usesRegeneratorTransform = + enableRegenerator && enableBabelRuntime === false; + + // Preserve destructuring syntax by default, as Hermes supports it natively. + // It is still transformed when the regenerator transform is in use, because + // that transform requires destructuring to be lowered first. + const preserveDestructuring = + !usesRegeneratorTransform && + TRUE_VALS.has( + options.customTransformOptions?.unstable_preserveDestructuring ?? true, + ); const isNull = src == null; const hasClass = isNull || src.indexOf('class') !== -1; @@ -268,14 +286,6 @@ const getPreset = (src, options, babel) => { ]); } - // `enableBabelRuntime` (a boolean toggle or a string @babel/runtime version to - // pin) and `babelRuntimeModuleName` (the module helpers are imported from) may - // be provided via options or, for programmatic callers such as Metro, via - // Babel caller data. Options take precedence over caller data, consistent with - // the other options resolved here. - const enableBabelRuntime = - options.enableBabelRuntime ?? babel?.caller(getEnableBabelRuntime) ?? true; - if (enableBabelRuntime !== false) { // A string value pins a specific runtime version to optimize output. const isVersion = typeof enableBabelRuntime === 'string';