From 6978c93ae04b123946dc8e984485f6d955575c32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 25 Aug 2022 17:33:09 +0200 Subject: [PATCH] Remove one promise tick in yield* (tc39/ecma262#2819) --- .../babel-helpers/src/helpers-generated.ts | 10 ++- packages/babel-helpers/src/helpers.ts | 12 ++-- .../src/helpers/AsyncGenerator.js | 30 +++++++-- .../src/helpers/OverloadYield.js | 11 ++++ .../src/helpers/asyncGeneratorDelegate.js | 10 ++- .../src/helpers/awaitAsyncGenerator.js | 4 +- .../yield-star/ecma262-pr-2819/exec.js | 25 ++++++++ .../usage-shippedProposals/output.js | 14 ++--- packages/babel-runtime-corejs2/package.json | 63 +++++++++++-------- packages/babel-runtime-corejs3/package.json | 63 +++++++++++-------- packages/babel-runtime/package.json | 63 +++++++++++-------- 11 files changed, 196 insertions(+), 109 deletions(-) create mode 100644 packages/babel-helpers/src/helpers/OverloadYield.js create mode 100644 packages/babel-plugin-proposal-async-generator-functions/test/fixtures/yield-star/ecma262-pr-2819/exec.js diff --git a/packages/babel-helpers/src/helpers-generated.ts b/packages/babel-helpers/src/helpers-generated.ts index d3e9a966de30..60969d0a4685 100644 --- a/packages/babel-helpers/src/helpers-generated.ts +++ b/packages/babel-helpers/src/helpers-generated.ts @@ -15,7 +15,11 @@ function helper(minVersion: string, source: string) { export default Object.freeze({ AsyncGenerator: helper( "7.0.0-beta.0", - 'import AwaitValue from"AwaitValue";export default function AsyncGenerator(gen){var front,back;function resume(key,arg){try{var result=gen[key](arg),value=result.value,wrappedAwait=value instanceof AwaitValue;Promise.resolve(wrappedAwait?value.wrapped:value).then((function(arg){wrappedAwait?resume("return"===key?"return":"next",arg):settle(result.done?"return":"normal",arg)}),(function(err){resume("throw",err)}))}catch(err){settle("throw",err)}}function settle(type,value){switch(type){case"return":front.resolve({value:value,done:!0});break;case"throw":front.reject(value);break;default:front.resolve({value:value,done:!1})}(front=front.next)?resume(front.key,front.arg):back=null}this._invoke=function(key,arg){return new Promise((function(resolve,reject){var request={key:key,arg:arg,resolve:resolve,reject:reject,next:null};back?back=back.next=request:(front=back=request,resume(key,arg))}))},"function"!=typeof gen.return&&(this.return=void 0)}AsyncGenerator.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},AsyncGenerator.prototype.next=function(arg){return this._invoke("next",arg)},AsyncGenerator.prototype.throw=function(arg){return this._invoke("throw",arg)},AsyncGenerator.prototype.return=function(arg){return this._invoke("return",arg)};', + 'import OverloadYield from"OverloadYield";export default function AsyncGenerator(gen){var front,back;function resume(key,arg){try{var result=gen[key](arg),value=result.value,overloaded=value instanceof OverloadYield;Promise.resolve(overloaded?value.v:value).then((function(arg){if(overloaded){var nextKey="return"===key?"return":"next";if(!value.k||arg.done)return resume(nextKey,arg);arg=gen[nextKey](arg).value}settle(result.done?"return":"normal",arg)}),(function(err){resume("throw",err)}))}catch(err){settle("throw",err)}}function settle(type,value){switch(type){case"return":front.resolve({value:value,done:!0});break;case"throw":front.reject(value);break;default:front.resolve({value:value,done:!1})}(front=front.next)?resume(front.key,front.arg):back=null}this._invoke=function(key,arg){return new Promise((function(resolve,reject){var request={key:key,arg:arg,resolve:resolve,reject:reject,next:null};back?back=back.next=request:(front=back=request,resume(key,arg))}))},"function"!=typeof gen.return&&(this.return=void 0)}AsyncGenerator.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},AsyncGenerator.prototype.next=function(arg){return this._invoke("next",arg)},AsyncGenerator.prototype.throw=function(arg){return this._invoke("throw",arg)},AsyncGenerator.prototype.return=function(arg){return this._invoke("return",arg)};', + ), + OverloadYield: helper( + "7.18.14", + "export default function _OverloadYield(value,kind){this.v=value,this.k=kind}", ), applyDecs: helper( "7.17.8", @@ -23,7 +27,7 @@ export default Object.freeze({ ), asyncGeneratorDelegate: helper( "7.0.0-beta.0", - 'export default function _asyncGeneratorDelegate(inner,awaitWrap){var iter={},waiting=!1;function pump(key,value){return waiting=!0,value=new Promise((function(resolve){resolve(inner[key](value))})),{done:!1,value:awaitWrap(value)}}return iter["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},iter.next=function(value){return waiting?(waiting=!1,value):pump("next",value)},"function"==typeof inner.throw&&(iter.throw=function(value){if(waiting)throw waiting=!1,value;return pump("throw",value)}),"function"==typeof inner.return&&(iter.return=function(value){return waiting?(waiting=!1,value):pump("return",value)}),iter}', + 'import OverloadYield from"OverloadYield";export default function _asyncGeneratorDelegate(inner){var iter={},waiting=!1;function pump(key,value){return waiting=!0,value=new Promise((function(resolve){resolve(inner[key](value))})),{done:!1,value:new OverloadYield(value,1)}}return iter["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},iter.next=function(value){return waiting?(waiting=!1,value):pump("next",value)},"function"==typeof inner.throw&&(iter.throw=function(value){if(waiting)throw waiting=!1,value;return pump("throw",value)}),"function"==typeof inner.return&&(iter.return=function(value){return waiting?(waiting=!1,value):pump("return",value)}),iter}', ), asyncIterator: helper( "7.15.9", @@ -31,7 +35,7 @@ export default Object.freeze({ ), awaitAsyncGenerator: helper( "7.0.0-beta.0", - 'import AwaitValue from"AwaitValue";export default function _awaitAsyncGenerator(value){return new AwaitValue(value)}', + 'import OverloadYield from"OverloadYield";export default function _awaitAsyncGenerator(value){return new OverloadYield(value,0)}', ), jsx: helper( "7.0.0-beta.0", diff --git a/packages/babel-helpers/src/helpers.ts b/packages/babel-helpers/src/helpers.ts index f029644bab99..5fb945d2c8c2 100644 --- a/packages/babel-helpers/src/helpers.ts +++ b/packages/babel-helpers/src/helpers.ts @@ -16,11 +16,13 @@ const helper = (minVersion: string) => (tpl: TemplateStringsArray) => ({ ast: () => template.program.ast(tpl), }); -helpers.AwaitValue = helper("7.0.0-beta.0")` - export default function _AwaitValue(value) { - this.wrapped = value; - } -`; +if (!process.env.BABEL_8_BREAKING) { + helpers.AwaitValue = helper("7.0.0-beta.0")` + export default function _AwaitValue(value) { + this.wrapped = value; + } + `; +} helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")` import AsyncGenerator from "AsyncGenerator"; diff --git a/packages/babel-helpers/src/helpers/AsyncGenerator.js b/packages/babel-helpers/src/helpers/AsyncGenerator.js index 303fd421c4bb..da2a242337f3 100644 --- a/packages/babel-helpers/src/helpers/AsyncGenerator.js +++ b/packages/babel-helpers/src/helpers/AsyncGenerator.js @@ -1,6 +1,6 @@ /* @minVersion 7.0.0-beta.0 */ -import AwaitValue from "AwaitValue"; +import OverloadYield from "OverloadYield"; export default function AsyncGenerator(gen) { var front, back; @@ -28,13 +28,31 @@ export default function AsyncGenerator(gen) { try { var result = gen[key](arg); var value = result.value; - var wrappedAwait = value instanceof AwaitValue; + var overloaded = value instanceof OverloadYield; - Promise.resolve(wrappedAwait ? value.wrapped : value).then( + Promise.resolve(overloaded ? value.v : value).then( function (arg) { - if (wrappedAwait) { - resume(key === "return" ? "return" : "next", arg); - return; + if (overloaded) { + // Overloaded yield requires calling into the generator twice: + // - first we get the iterator result wrapped in a promise + // (the gen[key](arg) call above) + // - then we await it (the Promise.resolve call above) + // - then we give the result back to the iterator, so that it can: + // * if it was an await, use its result + // * if it was a yield*, possibly return the `done: true` signal + // so that yield* knows that the iterator is finished. + // This needs to happen in the second call, because in the + // first one `done: true` was hidden in the promise and thus + // not visible to the (sync) yield*. + // The other part of this implementation is in asyncGeneratorDelegate. + var nextKey = key === "return" ? "return" : "next"; + if (!value.k || arg.done) { + // await or end of yield* + return resume(nextKey, arg); + } else { + // yield*, not done + arg = gen[nextKey](arg).value; + } } settle(result.done ? "return" : "normal", arg); diff --git a/packages/babel-helpers/src/helpers/OverloadYield.js b/packages/babel-helpers/src/helpers/OverloadYield.js new file mode 100644 index 000000000000..142b360a9ee6 --- /dev/null +++ b/packages/babel-helpers/src/helpers/OverloadYield.js @@ -0,0 +1,11 @@ +/* @minVersion 7.18.14 */ + +/* + * 'kind' is an enum: + * 0 => This yield was an await expression + * 1 => This yield comes from yield* + */ +export default function _OverloadYield(value, kind) { + this.v = value; + this.k = kind; +} diff --git a/packages/babel-helpers/src/helpers/asyncGeneratorDelegate.js b/packages/babel-helpers/src/helpers/asyncGeneratorDelegate.js index a20165f0e625..1de733646368 100644 --- a/packages/babel-helpers/src/helpers/asyncGeneratorDelegate.js +++ b/packages/babel-helpers/src/helpers/asyncGeneratorDelegate.js @@ -1,7 +1,10 @@ /* @minVersion 7.0.0-beta.0 */ -export default function _asyncGeneratorDelegate(inner, awaitWrap) { +import OverloadYield from "OverloadYield"; + +export default function _asyncGeneratorDelegate(inner) { var iter = {}, + // See the comment in AsyncGenerator to understand what this is. waiting = false; function pump(key, value) { @@ -9,7 +12,10 @@ export default function _asyncGeneratorDelegate(inner, awaitWrap) { value = new Promise(function (resolve) { resolve(inner[key](value)); }); - return { done: false, value: awaitWrap(value) }; + return { + done: false, + value: new OverloadYield(value, /* kind: delegate */ 1), + }; } iter[(typeof Symbol !== "undefined" && Symbol.iterator) || "@@iterator"] = diff --git a/packages/babel-helpers/src/helpers/awaitAsyncGenerator.js b/packages/babel-helpers/src/helpers/awaitAsyncGenerator.js index 8ed150400406..02ed1d6171a8 100644 --- a/packages/babel-helpers/src/helpers/awaitAsyncGenerator.js +++ b/packages/babel-helpers/src/helpers/awaitAsyncGenerator.js @@ -1,7 +1,7 @@ /* @minVersion 7.0.0-beta.0 */ -import AwaitValue from "AwaitValue"; +import OverloadYield from "OverloadYield"; export default function _awaitAsyncGenerator(value) { - return new AwaitValue(value); + return new OverloadYield(value, /* kind: await */ 0); } diff --git a/packages/babel-plugin-proposal-async-generator-functions/test/fixtures/yield-star/ecma262-pr-2819/exec.js b/packages/babel-plugin-proposal-async-generator-functions/test/fixtures/yield-star/ecma262-pr-2819/exec.js new file mode 100644 index 000000000000..b631d4bf41d7 --- /dev/null +++ b/packages/babel-plugin-proposal-async-generator-functions/test/fixtures/yield-star/ecma262-pr-2819/exec.js @@ -0,0 +1,25 @@ +// https://github.com/tc39/ecma262/pull/2819 + +let done = false; +let inner = { + [Symbol.asyncIterator]: () => ({ + next() { + if (done) { + return Promise.resolve({ done: true }); + } + done = true; + return Promise.resolve({ done: false, value: Promise.resolve(0) }); + }, + }), +}; + +async function* outer() { + yield* inner; +} + +return (async function () { + for await (let x of outer()) { + expect(x).toBeInstanceOf(Promise); + expect(await x).toBe(0); + } +})(); diff --git a/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js b/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js index 70b73614282c..25d38f568f95 100644 --- a/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js +++ b/packages/babel-preset-env/test/fixtures/corejs2-babel-7/usage-shippedProposals/output.js @@ -54,21 +54,15 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } -function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } +function _awaitAsyncGenerator(value) { return new _OverloadYield(value, 0); } function _wrapAsyncGenerator(fn) { return function () { return new _AsyncGenerator(fn.apply(this, arguments)); }; } -function _AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; var wrappedAwait = value instanceof _AwaitValue; Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) { if (wrappedAwait) { resume(key === "return" ? "return" : "next", arg); return; } settle(result.done ? "return" : "normal", arg); }, function (err) { resume("throw", err); }); } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen["return"] !== "function") { this["return"] = undefined; } } +function _AsyncGenerator(gen) { var front, back; function resume(key, arg) { try { var result = gen[key](arg), value = result.value, overloaded = value instanceof _OverloadYield; Promise.resolve(overloaded ? value.v : value).then(function (arg) { if (overloaded) { var nextKey = "return" === key ? "return" : "next"; if (!value.k || arg.done) return resume(nextKey, arg); arg = gen[nextKey](arg).value; } settle(result.done ? "return" : "normal", arg); }, function (err) { resume("throw", err); }); } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: !0 }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: !1 }); } (front = front.next) ? resume(front.key, front.arg) : back = null; } this._invoke = function (key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; back ? back = back.next = request : (front = back = request, resume(key, arg)); }); }, "function" != typeof gen["return"] && (this["return"] = void 0); } -_AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; }; +_AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; }, _AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }, _AsyncGenerator.prototype["throw"] = function (arg) { return this._invoke("throw", arg); }, _AsyncGenerator.prototype["return"] = function (arg) { return this._invoke("return", arg); }; -_AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; - -_AsyncGenerator.prototype["throw"] = function (arg) { return this._invoke("throw", arg); }; - -_AsyncGenerator.prototype["return"] = function (arg) { return this._invoke("return", arg); }; - -function _AwaitValue(value) { this.wrapped = value; } +function _OverloadYield(value, kind) { this.v = value, this.k = kind; } var _x$y$a$b = { x: 1, diff --git a/packages/babel-runtime-corejs2/package.json b/packages/babel-runtime-corejs2/package.json index 33fa3fb70952..902930119879 100644 --- a/packages/babel-runtime-corejs2/package.json +++ b/packages/babel-runtime-corejs2/package.json @@ -18,6 +18,24 @@ "regenerator-runtime": "^0.13.4" }, "exports": { + "./helpers/AsyncGenerator": [ + { + "node": "./helpers/AsyncGenerator.js", + "import": "./helpers/esm/AsyncGenerator.js", + "default": "./helpers/AsyncGenerator.js" + }, + "./helpers/AsyncGenerator.js" + ], + "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", + "./helpers/OverloadYield": [ + { + "node": "./helpers/OverloadYield.js", + "import": "./helpers/esm/OverloadYield.js", + "default": "./helpers/OverloadYield.js" + }, + "./helpers/OverloadYield.js" + ], + "./helpers/esm/OverloadYield": "./helpers/esm/OverloadYield.js", "./helpers/applyDecs": [ { "node": "./helpers/applyDecs.js", @@ -27,6 +45,15 @@ "./helpers/applyDecs.js" ], "./helpers/esm/applyDecs": "./helpers/esm/applyDecs.js", + "./helpers/asyncGeneratorDelegate": [ + { + "node": "./helpers/asyncGeneratorDelegate.js", + "import": "./helpers/esm/asyncGeneratorDelegate.js", + "default": "./helpers/asyncGeneratorDelegate.js" + }, + "./helpers/asyncGeneratorDelegate.js" + ], + "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", "./helpers/asyncIterator": [ { "node": "./helpers/asyncIterator.js", @@ -36,6 +63,15 @@ "./helpers/asyncIterator.js" ], "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js", + "./helpers/awaitAsyncGenerator": [ + { + "node": "./helpers/awaitAsyncGenerator.js", + "import": "./helpers/esm/awaitAsyncGenerator.js", + "default": "./helpers/awaitAsyncGenerator.js" + }, + "./helpers/awaitAsyncGenerator.js" + ], + "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", "./helpers/jsx": [ { "node": "./helpers/jsx.js", @@ -90,15 +126,6 @@ "./helpers/AwaitValue.js" ], "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js", - "./helpers/AsyncGenerator": [ - { - "node": "./helpers/AsyncGenerator.js", - "import": "./helpers/esm/AsyncGenerator.js", - "default": "./helpers/AsyncGenerator.js" - }, - "./helpers/AsyncGenerator.js" - ], - "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", "./helpers/wrapAsyncGenerator": [ { "node": "./helpers/wrapAsyncGenerator.js", @@ -108,24 +135,6 @@ "./helpers/wrapAsyncGenerator.js" ], "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js", - "./helpers/awaitAsyncGenerator": [ - { - "node": "./helpers/awaitAsyncGenerator.js", - "import": "./helpers/esm/awaitAsyncGenerator.js", - "default": "./helpers/awaitAsyncGenerator.js" - }, - "./helpers/awaitAsyncGenerator.js" - ], - "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", - "./helpers/asyncGeneratorDelegate": [ - { - "node": "./helpers/asyncGeneratorDelegate.js", - "import": "./helpers/esm/asyncGeneratorDelegate.js", - "default": "./helpers/asyncGeneratorDelegate.js" - }, - "./helpers/asyncGeneratorDelegate.js" - ], - "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", "./helpers/asyncToGenerator": [ { "node": "./helpers/asyncToGenerator.js", diff --git a/packages/babel-runtime-corejs3/package.json b/packages/babel-runtime-corejs3/package.json index d09fad753c0a..9b09284d7b29 100644 --- a/packages/babel-runtime-corejs3/package.json +++ b/packages/babel-runtime-corejs3/package.json @@ -17,6 +17,24 @@ "regenerator-runtime": "^0.13.4" }, "exports": { + "./helpers/AsyncGenerator": [ + { + "node": "./helpers/AsyncGenerator.js", + "import": "./helpers/esm/AsyncGenerator.js", + "default": "./helpers/AsyncGenerator.js" + }, + "./helpers/AsyncGenerator.js" + ], + "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", + "./helpers/OverloadYield": [ + { + "node": "./helpers/OverloadYield.js", + "import": "./helpers/esm/OverloadYield.js", + "default": "./helpers/OverloadYield.js" + }, + "./helpers/OverloadYield.js" + ], + "./helpers/esm/OverloadYield": "./helpers/esm/OverloadYield.js", "./helpers/applyDecs": [ { "node": "./helpers/applyDecs.js", @@ -26,6 +44,15 @@ "./helpers/applyDecs.js" ], "./helpers/esm/applyDecs": "./helpers/esm/applyDecs.js", + "./helpers/asyncGeneratorDelegate": [ + { + "node": "./helpers/asyncGeneratorDelegate.js", + "import": "./helpers/esm/asyncGeneratorDelegate.js", + "default": "./helpers/asyncGeneratorDelegate.js" + }, + "./helpers/asyncGeneratorDelegate.js" + ], + "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", "./helpers/asyncIterator": [ { "node": "./helpers/asyncIterator.js", @@ -35,6 +62,15 @@ "./helpers/asyncIterator.js" ], "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js", + "./helpers/awaitAsyncGenerator": [ + { + "node": "./helpers/awaitAsyncGenerator.js", + "import": "./helpers/esm/awaitAsyncGenerator.js", + "default": "./helpers/awaitAsyncGenerator.js" + }, + "./helpers/awaitAsyncGenerator.js" + ], + "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", "./helpers/jsx": [ { "node": "./helpers/jsx.js", @@ -89,15 +125,6 @@ "./helpers/AwaitValue.js" ], "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js", - "./helpers/AsyncGenerator": [ - { - "node": "./helpers/AsyncGenerator.js", - "import": "./helpers/esm/AsyncGenerator.js", - "default": "./helpers/AsyncGenerator.js" - }, - "./helpers/AsyncGenerator.js" - ], - "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", "./helpers/wrapAsyncGenerator": [ { "node": "./helpers/wrapAsyncGenerator.js", @@ -107,24 +134,6 @@ "./helpers/wrapAsyncGenerator.js" ], "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js", - "./helpers/awaitAsyncGenerator": [ - { - "node": "./helpers/awaitAsyncGenerator.js", - "import": "./helpers/esm/awaitAsyncGenerator.js", - "default": "./helpers/awaitAsyncGenerator.js" - }, - "./helpers/awaitAsyncGenerator.js" - ], - "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", - "./helpers/asyncGeneratorDelegate": [ - { - "node": "./helpers/asyncGeneratorDelegate.js", - "import": "./helpers/esm/asyncGeneratorDelegate.js", - "default": "./helpers/asyncGeneratorDelegate.js" - }, - "./helpers/asyncGeneratorDelegate.js" - ], - "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", "./helpers/asyncToGenerator": [ { "node": "./helpers/asyncToGenerator.js", diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index 4615d956ecd2..9538956624e4 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -17,6 +17,24 @@ "regenerator-runtime": "^0.13.4" }, "exports": { + "./helpers/AsyncGenerator": [ + { + "node": "./helpers/AsyncGenerator.js", + "import": "./helpers/esm/AsyncGenerator.js", + "default": "./helpers/AsyncGenerator.js" + }, + "./helpers/AsyncGenerator.js" + ], + "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", + "./helpers/OverloadYield": [ + { + "node": "./helpers/OverloadYield.js", + "import": "./helpers/esm/OverloadYield.js", + "default": "./helpers/OverloadYield.js" + }, + "./helpers/OverloadYield.js" + ], + "./helpers/esm/OverloadYield": "./helpers/esm/OverloadYield.js", "./helpers/applyDecs": [ { "node": "./helpers/applyDecs.js", @@ -26,6 +44,15 @@ "./helpers/applyDecs.js" ], "./helpers/esm/applyDecs": "./helpers/esm/applyDecs.js", + "./helpers/asyncGeneratorDelegate": [ + { + "node": "./helpers/asyncGeneratorDelegate.js", + "import": "./helpers/esm/asyncGeneratorDelegate.js", + "default": "./helpers/asyncGeneratorDelegate.js" + }, + "./helpers/asyncGeneratorDelegate.js" + ], + "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", "./helpers/asyncIterator": [ { "node": "./helpers/asyncIterator.js", @@ -35,6 +62,15 @@ "./helpers/asyncIterator.js" ], "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js", + "./helpers/awaitAsyncGenerator": [ + { + "node": "./helpers/awaitAsyncGenerator.js", + "import": "./helpers/esm/awaitAsyncGenerator.js", + "default": "./helpers/awaitAsyncGenerator.js" + }, + "./helpers/awaitAsyncGenerator.js" + ], + "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", "./helpers/jsx": [ { "node": "./helpers/jsx.js", @@ -89,15 +125,6 @@ "./helpers/AwaitValue.js" ], "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js", - "./helpers/AsyncGenerator": [ - { - "node": "./helpers/AsyncGenerator.js", - "import": "./helpers/esm/AsyncGenerator.js", - "default": "./helpers/AsyncGenerator.js" - }, - "./helpers/AsyncGenerator.js" - ], - "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js", "./helpers/wrapAsyncGenerator": [ { "node": "./helpers/wrapAsyncGenerator.js", @@ -107,24 +134,6 @@ "./helpers/wrapAsyncGenerator.js" ], "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js", - "./helpers/awaitAsyncGenerator": [ - { - "node": "./helpers/awaitAsyncGenerator.js", - "import": "./helpers/esm/awaitAsyncGenerator.js", - "default": "./helpers/awaitAsyncGenerator.js" - }, - "./helpers/awaitAsyncGenerator.js" - ], - "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js", - "./helpers/asyncGeneratorDelegate": [ - { - "node": "./helpers/asyncGeneratorDelegate.js", - "import": "./helpers/esm/asyncGeneratorDelegate.js", - "default": "./helpers/asyncGeneratorDelegate.js" - }, - "./helpers/asyncGeneratorDelegate.js" - ], - "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js", "./helpers/asyncToGenerator": [ { "node": "./helpers/asyncToGenerator.js",