Skip to content

Commit a92bea8

Browse files
robhoganmeta-codesync[bot]
authored andcommitted
Babel preset: Add unstable_preserveAsync to experiment with disabling async transforms for SH (#56254)
Summary: Pull Request resolved: #56254 Disable `babel/plugin-transform-async-to-generator` and `babel/plugin-transform-async-generator-functions` when `customTransformOptions.unstable_preserveAsync` is truthy. This allows us to experiment with native async/await support in Static Hermes. Changelog: [Internal] Reviewed By: vzaidman Differential Revision: D93013928 fbshipit-source-id: 3a4bc5bad1a9ff5e7292961111524fef56cbcde7
1 parent 91e3f77 commit a92bea8

4 files changed

Lines changed: 589 additions & 1 deletion

File tree

Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
/**
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*
7+
* @generated
8+
* @noformat
9+
* @noflow
10+
* @nolint
11+
*
12+
* This is a snapshot of the transform output for testing purposes.
13+
* To update, run: js1 test transform-snapshot-test.js -u
14+
*
15+
* Transform configuration:
16+
* - Hermes stable transform profile in development mode with unstable_preserveAsync enabled
17+
* - Options: {"dev":true,"unstable_transformProfile":"hermes-stable","customTransformOptions":{"unstable_preserveAsync":true}}
18+
*/
19+
20+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
21+
Object.defineProperty(exports, "__esModule", {
22+
value: true
23+
});
24+
exports.LegacyComponent = exports.Dog = exports.Counter = exports.Animal = void 0;
25+
exports.ModernComponent = ModernComponent;
26+
exports.MyClass = void 0;
27+
exports.asyncNumberGenerator = asyncNumberGenerator;
28+
Object.defineProperty(exports, "default", {
29+
enumerable: true,
30+
get: function () {
31+
return _dataUtils.fetchData;
32+
}
33+
});
34+
exports.getNestedValue = getNestedValue;
35+
exports.loadModule = loadModule;
36+
exports.matchEmoji = matchEmoji;
37+
exports.mergeConfigs = mergeConfigs;
38+
exports.parseDate = parseDate;
39+
exports.processUser = processUser;
40+
exports.safeJsonParse = safeJsonParse;
41+
exports.sumPairs = sumPairs;
42+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
43+
var _setPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/setPrototypeOf"));
44+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
45+
var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase"));
46+
var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey"));
47+
var _react = _interopRequireWildcard(require("react"));
48+
var React = _react;
49+
var _jsxRuntime = require("react/jsx-runtime");
50+
var _dataUtils = require("./data-utils");
51+
var _jsxFileName = "/absolute/path/to/input.js";
52+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
53+
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)), (0, _setPrototypeOf2.default)(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 (0, _inherits2.default)(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); }
54+
function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
55+
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; } }
56+
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; }
57+
var _count = (0, _classPrivateFieldLooseKey2.default)("count");
58+
var _instances = (0, _classPrivateFieldLooseKey2.default)("instances");
59+
var _increment = (0, _classPrivateFieldLooseKey2.default)("increment");
60+
class Counter {
61+
constructor() {
62+
Object.defineProperty(this, _increment, {
63+
value: _increment2
64+
});
65+
Object.defineProperty(this, _count, {
66+
writable: true,
67+
value: 0
68+
});
69+
(0, _classPrivateFieldLooseBase2.default)(Counter, _instances)[_instances]++;
70+
}
71+
get value() {
72+
return (0, _classPrivateFieldLooseBase2.default)(this, _count)[_count];
73+
}
74+
increment() {
75+
(0, _classPrivateFieldLooseBase2.default)(this, _increment)[_increment]();
76+
}
77+
static get instanceCount() {
78+
return (0, _classPrivateFieldLooseBase2.default)(Counter, _instances)[_instances];
79+
}
80+
}
81+
exports.Counter = Counter;
82+
function _increment2() {
83+
(0, _classPrivateFieldLooseBase2.default)(this, _count)[_count]++;
84+
}
85+
Object.defineProperty(Counter, _instances, {
86+
writable: true,
87+
value: 0
88+
});
89+
async function* asyncNumberGenerator(max) {
90+
for (var i = 0; i < max; i++) {
91+
await new Promise(resolve => setTimeout(resolve, 100));
92+
yield i;
93+
}
94+
}
95+
async function fetchData(url) {
96+
var response = await fetch(url);
97+
var data = await response.json();
98+
return {
99+
data
100+
};
101+
}
102+
function getNestedValue(obj) {
103+
var _obj$a$b$c, _obj$a;
104+
return (_obj$a$b$c = obj == null || (_obj$a = obj.a) == null || (_obj$a = _obj$a.b) == null ? void 0 : _obj$a.c) != null ? _obj$a$b$c : 42;
105+
}
106+
class Animal {
107+
#age;
108+
constructor(name, age) {
109+
this.name = name;
110+
this.#age = age;
111+
}
112+
speak() {
113+
return `${this.name} makes a sound`;
114+
}
115+
get age() {
116+
return this.#age;
117+
}
118+
}
119+
exports.Animal = Animal;
120+
class Dog extends Animal {
121+
constructor(name, age, breed) {
122+
super(name, age);
123+
this.breed = breed;
124+
}
125+
speak() {
126+
return `${this.name} barks!`;
127+
}
128+
async fetchTreats() {
129+
await new Promise(resolve => setTimeout(resolve, 100));
130+
return ['bone', 'biscuit', 'toy'];
131+
}
132+
}
133+
exports.Dog = Dog;
134+
function processUser({
135+
name,
136+
age = 18,
137+
...rest
138+
}) {
139+
var _rest$city = rest.city,
140+
city = _rest$city === void 0 ? 'Unknown' : _rest$city;
141+
return `${name} (${age}) from ${city}`;
142+
}
143+
function mergeConfigs(base, ...overrides) {
144+
return {
145+
...base,
146+
...overrides.reduce((acc, o) => ({
147+
...acc,
148+
...o
149+
}), {})
150+
};
151+
}
152+
function sumPairs(pairs) {
153+
var total = 0;
154+
for (var _iterator = _createForOfIteratorHelperLoose(pairs), _step; !(_step = _iterator()).done;) {
155+
var _ref = _step.value;
156+
var _ref2 = (0, _slicedToArray2.default)(_ref, 2);
157+
var a = _ref2[0];
158+
var b = _ref2[1];
159+
total += a + b;
160+
}
161+
return total;
162+
}
163+
function parseDate(dateString) {
164+
var regex = _wrapRegExp(/(\d{4})-(\d{2})-(\d{2})/, {
165+
year: 1,
166+
month: 2,
167+
day: 3
168+
});
169+
var match = dateString.match(regex);
170+
if (match != null && match.groups) {
171+
return {
172+
year: match.groups.year,
173+
month: match.groups.month,
174+
day: match.groups.day
175+
};
176+
}
177+
return null;
178+
}
179+
function safeJsonParse(input) {
180+
try {
181+
return JSON.parse(input);
182+
} catch (_unused) {
183+
return null;
184+
}
185+
}
186+
function matchEmoji(text) {
187+
var match = text.match(/(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEDC-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9\uDEF0-\uDEF8])/);
188+
return match == null ? void 0 : match[0];
189+
}
190+
var MyClass = class {
191+
constructor(value) {
192+
this.value = value;
193+
}
194+
};
195+
exports.MyClass = MyClass;
196+
async function loadModule() {
197+
var module = await import('./some-module');
198+
return module.default;
199+
}
200+
var LegacyComponent = exports.LegacyComponent = React.createClass({
201+
displayName: 'LegacyComponent',
202+
getInitialState() {
203+
return {
204+
count: 0
205+
};
206+
},
207+
render() {
208+
return (0, _jsxRuntime.jsx)("div", {
209+
children: this.state.count
210+
});
211+
}
212+
});
213+
function ModernComponent({
214+
initialCount = 0
215+
}) {
216+
var _useState = (0, _react.useState)(initialCount),
217+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
218+
count = _useState2[0],
219+
setCount = _useState2[1];
220+
var _useState3 = (0, _react.useState)(Status.Active),
221+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
222+
status = _useState4[0],
223+
setStatus = _useState4[1];
224+
(0, _react.useEffect)(() => {
225+
var timer = setInterval(() => {
226+
setCount(c => c + 1);
227+
}, 1000);
228+
return () => clearInterval(timer);
229+
}, []);
230+
async function handleAsyncClick() {
231+
var data = await fetchData('/api/data');
232+
console.log(data);
233+
}
234+
var handleClick = async () => {
235+
await handleAsyncClick();
236+
setStatus(Status.Pending);
237+
};
238+
return (0, _jsxRuntime.jsxs)("div", {
239+
children: [(0, _jsxRuntime.jsx)("span", {
240+
"data-testid": "count",
241+
children: count
242+
}), (0, _jsxRuntime.jsx)("span", {
243+
"data-testid": "status",
244+
children: String(status)
245+
}), (0, _jsxRuntime.jsx)("button", {
246+
onClick: handleClick,
247+
children: "Increment"
248+
}), (0, _jsxRuntime.jsx)(LegacyComponent, {})]
249+
});
250+
}

0 commit comments

Comments
 (0)