diff options
Diffstat (limited to 'node_modules/@babel/plugin-transform-async-generator-functions/lib')
4 files changed, 164 insertions, 0 deletions
diff --git a/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js b/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js new file mode 100644 index 00000000..b42744ab --- /dev/null +++ b/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js @@ -0,0 +1,77 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +var _core = require("@babel/core"); +const buildForAwait = (0, _core.template)(` + async function wrapper() { + var ITERATOR_ABRUPT_COMPLETION = false; + var ITERATOR_HAD_ERROR_KEY = false; + var ITERATOR_ERROR_KEY; + try { + for ( + var ITERATOR_KEY = GET_ITERATOR(OBJECT), STEP_KEY; + ITERATOR_ABRUPT_COMPLETION = !(STEP_KEY = await ITERATOR_KEY.next()).done; + ITERATOR_ABRUPT_COMPLETION = false + ) { + } + } catch (err) { + ITERATOR_HAD_ERROR_KEY = true; + ITERATOR_ERROR_KEY = err; + } finally { + try { + if (ITERATOR_ABRUPT_COMPLETION && ITERATOR_KEY.return != null) { + await ITERATOR_KEY.return(); + } + } finally { + if (ITERATOR_HAD_ERROR_KEY) { + throw ITERATOR_ERROR_KEY; + } + } + } + } +`); +function _default(path, { + getAsyncIterator +}) { + const { + node, + scope, + parent + } = path; + const stepKey = scope.generateUidIdentifier("step"); + const stepValue = _core.types.memberExpression(stepKey, _core.types.identifier("value")); + const left = node.left; + let declar; + if (_core.types.isIdentifier(left) || _core.types.isPattern(left) || _core.types.isMemberExpression(left)) { + declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, stepValue)); + } else if (_core.types.isVariableDeclaration(left)) { + declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, stepValue)]); + } + let template = buildForAwait({ + ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"), + ITERATOR_ABRUPT_COMPLETION: scope.generateUidIdentifier("iteratorAbruptCompletion"), + ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"), + ITERATOR_KEY: scope.generateUidIdentifier("iterator"), + GET_ITERATOR: getAsyncIterator, + OBJECT: node.right, + STEP_KEY: _core.types.cloneNode(stepKey) + }); + template = template.body.body; + const isLabeledParent = _core.types.isLabeledStatement(parent); + const tryBody = template[3].block.body; + const loop = tryBody[0]; + if (isLabeledParent) { + tryBody[0] = _core.types.labeledStatement(parent.label, loop); + } + return { + replaceParent: isLabeledParent, + node: template, + declar, + loop + }; +} + +//# sourceMappingURL=for-await.js.map diff --git a/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js.map b/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js.map new file mode 100644 index 00000000..f5bcac11 --- /dev/null +++ b/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_core","require","buildForAwait","template","_default","path","getAsyncIterator","node","scope","parent","stepKey","generateUidIdentifier","stepValue","t","memberExpression","identifier","left","declar","isIdentifier","isPattern","isMemberExpression","expressionStatement","assignmentExpression","isVariableDeclaration","variableDeclaration","kind","variableDeclarator","declarations","id","ITERATOR_HAD_ERROR_KEY","ITERATOR_ABRUPT_COMPLETION","ITERATOR_ERROR_KEY","ITERATOR_KEY","GET_ITERATOR","OBJECT","right","STEP_KEY","cloneNode","body","isLabeledParent","isLabeledStatement","tryBody","block","loop","labeledStatement","label","replaceParent"],"sources":["../src/for-await.ts"],"sourcesContent":["import { types as t, template } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\n\nconst buildForAwait = template(`\n async function wrapper() {\n var ITERATOR_ABRUPT_COMPLETION = false;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY;\n try {\n for (\n var ITERATOR_KEY = GET_ITERATOR(OBJECT), STEP_KEY;\n ITERATOR_ABRUPT_COMPLETION = !(STEP_KEY = await ITERATOR_KEY.next()).done;\n ITERATOR_ABRUPT_COMPLETION = false\n ) {\n }\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (ITERATOR_ABRUPT_COMPLETION && ITERATOR_KEY.return != null) {\n await ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n }\n`);\n\nexport default function (\n path: NodePath<t.ForOfStatement>,\n { getAsyncIterator }: { getAsyncIterator: t.Identifier },\n) {\n const { node, scope, parent } = path;\n\n const stepKey = scope.generateUidIdentifier(\"step\");\n const stepValue = t.memberExpression(stepKey, t.identifier(\"value\"));\n const left = node.left;\n let declar;\n\n if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n // for await (i of test), for await ({ i } of test)\n declar = t.expressionStatement(\n t.assignmentExpression(\"=\", left, stepValue),\n );\n } else if (t.isVariableDeclaration(left)) {\n // for await (let i of test)\n declar = t.variableDeclaration(left.kind, [\n t.variableDeclarator(left.declarations[0].id, stepValue),\n ]);\n }\n let template = buildForAwait({\n ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier(\"didIteratorError\"),\n ITERATOR_ABRUPT_COMPLETION: scope.generateUidIdentifier(\n \"iteratorAbruptCompletion\",\n ),\n ITERATOR_ERROR_KEY: scope.generateUidIdentifier(\"iteratorError\"),\n ITERATOR_KEY: scope.generateUidIdentifier(\"iterator\"),\n GET_ITERATOR: getAsyncIterator,\n OBJECT: node.right,\n STEP_KEY: t.cloneNode(stepKey),\n });\n\n // remove async function wrapper\n // @ts-expect-error todo(flow->ts) improve type annotation for buildForAwait\n template = template.body.body as t.Statement[];\n\n const isLabeledParent = t.isLabeledStatement(parent);\n const tryBody = (template[3] as t.TryStatement).block.body;\n const loop = tryBody[0] as t.ForStatement;\n\n if (isLabeledParent) {\n tryBody[0] = t.labeledStatement(parent.label, loop);\n }\n\n return {\n replaceParent: isLabeledParent,\n node: template,\n declar,\n loop,\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,MAAMC,aAAa,GAAG,IAAAC,cAAQ,EAAE;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AAEa,SAAAC,SACbC,IAAgC,EAChC;EAAEC;AAAqD,CAAC,EACxD;EACA,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGJ,IAAI;EAEpC,MAAMK,OAAO,GAAGF,KAAK,CAACG,qBAAqB,CAAC,MAAM,CAAC;EACnD,MAAMC,SAAS,GAAGC,WAAC,CAACC,gBAAgB,CAACJ,OAAO,EAAEG,WAAC,CAACE,UAAU,CAAC,OAAO,CAAC,CAAC;EACpE,MAAMC,IAAI,GAAGT,IAAI,CAACS,IAAI;EACtB,IAAIC,MAAM;EAEV,IAAIJ,WAAC,CAACK,YAAY,CAACF,IAAI,CAAC,IAAIH,WAAC,CAACM,SAAS,CAACH,IAAI,CAAC,IAAIH,WAAC,CAACO,kBAAkB,CAACJ,IAAI,CAAC,EAAE;IAE3EC,MAAM,GAAGJ,WAAC,CAACQ,mBAAmB,CAC5BR,WAAC,CAACS,oBAAoB,CAAC,GAAG,EAAEN,IAAI,EAAEJ,SAAS,CAC7C,CAAC;EACH,CAAC,MAAM,IAAIC,WAAC,CAACU,qBAAqB,CAACP,IAAI,CAAC,EAAE;IAExCC,MAAM,GAAGJ,WAAC,CAACW,mBAAmB,CAACR,IAAI,CAACS,IAAI,EAAE,CACxCZ,WAAC,CAACa,kBAAkB,CAACV,IAAI,CAACW,YAAY,CAAC,CAAC,CAAC,CAACC,EAAE,EAAEhB,SAAS,CAAC,CACzD,CAAC;EACJ;EACA,IAAIT,QAAQ,GAAGD,aAAa,CAAC;IAC3B2B,sBAAsB,EAAErB,KAAK,CAACG,qBAAqB,CAAC,kBAAkB,CAAC;IACvEmB,0BAA0B,EAAEtB,KAAK,CAACG,qBAAqB,CACrD,0BACF,CAAC;IACDoB,kBAAkB,EAAEvB,KAAK,CAACG,qBAAqB,CAAC,eAAe,CAAC;IAChEqB,YAAY,EAAExB,KAAK,CAACG,qBAAqB,CAAC,UAAU,CAAC;IACrDsB,YAAY,EAAE3B,gBAAgB;IAC9B4B,MAAM,EAAE3B,IAAI,CAAC4B,KAAK;IAClBC,QAAQ,EAAEvB,WAAC,CAACwB,SAAS,CAAC3B,OAAO;EAC/B,CAAC,CAAC;EAIFP,QAAQ,GAAGA,QAAQ,CAACmC,IAAI,CAACA,IAAqB;EAE9C,MAAMC,eAAe,GAAG1B,WAAC,CAAC2B,kBAAkB,CAAC/B,MAAM,CAAC;EACpD,MAAMgC,OAAO,GAAItC,QAAQ,CAAC,CAAC,CAAC,CAAoBuC,KAAK,CAACJ,IAAI;EAC1D,MAAMK,IAAI,GAAGF,OAAO,CAAC,CAAC,CAAmB;EAEzC,IAAIF,eAAe,EAAE;IACnBE,OAAO,CAAC,CAAC,CAAC,GAAG5B,WAAC,CAAC+B,gBAAgB,CAACnC,MAAM,CAACoC,KAAK,EAAEF,IAAI,CAAC;EACrD;EAEA,OAAO;IACLG,aAAa,EAAEP,eAAe;IAC9BhC,IAAI,EAAEJ,QAAQ;IACdc,MAAM;IACN0B;EACF,CAAC;AACH"}
\ No newline at end of file diff --git a/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js b/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js new file mode 100644 index 00000000..0d3d6b9b --- /dev/null +++ b/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js @@ -0,0 +1,85 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _helperPluginUtils = require("@babel/helper-plugin-utils"); +var _helperRemapAsyncToGenerator = require("@babel/helper-remap-async-to-generator"); +var _core = require("@babel/core"); +var _forAwait = require("./for-await.js"); +var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor"); +var _default = (0, _helperPluginUtils.declare)(api => { + api.assertVersion(7); + const yieldStarVisitor = _core.traverse.visitors.merge([{ + ArrowFunctionExpression(path) { + path.skip(); + }, + YieldExpression({ + node + }, state) { + if (!node.delegate) return; + const asyncIter = _core.types.callExpression(state.addHelper("asyncIterator"), [node.argument]); + node.argument = _core.types.callExpression(state.addHelper("asyncGeneratorDelegate"), [asyncIter, state.addHelper("awaitAsyncGenerator")]); + } + }, _helperEnvironmentVisitor.default]); + const forAwaitVisitor = _core.traverse.visitors.merge([{ + ArrowFunctionExpression(path) { + path.skip(); + }, + ForOfStatement(path, { + file + }) { + const { + node + } = path; + if (!node.await) return; + const build = (0, _forAwait.default)(path, { + getAsyncIterator: file.addHelper("asyncIterator") + }); + const { + declar, + loop + } = build; + const block = loop.body; + path.ensureBlock(); + if (declar) { + block.body.push(declar); + if (path.node.body.body.length) { + block.body.push(_core.types.blockStatement(path.node.body.body)); + } + } else { + block.body.push(...path.node.body.body); + } + _core.types.inherits(loop, node); + _core.types.inherits(loop.body, node.body); + const p = build.replaceParent ? path.parentPath : path; + p.replaceWithMultiple(build.node); + p.scope.parent.crawl(); + } + }, _helperEnvironmentVisitor.default]); + const visitor = { + Function(path, state) { + if (!path.node.async) return; + path.traverse(forAwaitVisitor, state); + if (!path.node.generator) return; + path.traverse(yieldStarVisitor, state); + (0, _helperRemapAsyncToGenerator.default)(path, { + wrapAsync: state.addHelper("wrapAsyncGenerator"), + wrapAwait: state.addHelper("awaitAsyncGenerator") + }); + } + }; + return { + name: "transform-async-generator-functions", + inherits: require("@babel/plugin-syntax-async-generators").default, + visitor: { + Program(path, state) { + path.traverse(visitor, state); + } + } + }; +}); +exports.default = _default; + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js.map b/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js.map new file mode 100644 index 00000000..313dabca --- /dev/null +++ b/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_helperPluginUtils","require","_helperRemapAsyncToGenerator","_core","_forAwait","_helperEnvironmentVisitor","_default","declare","api","assertVersion","yieldStarVisitor","traverse","visitors","merge","ArrowFunctionExpression","path","skip","YieldExpression","node","state","delegate","asyncIter","t","callExpression","addHelper","argument","environmentVisitor","forAwaitVisitor","ForOfStatement","file","await","build","rewriteForAwait","getAsyncIterator","declar","loop","block","body","ensureBlock","push","length","blockStatement","inherits","p","replaceParent","parentPath","replaceWithMultiple","scope","parent","crawl","visitor","Function","async","generator","remapAsyncToGenerator","wrapAsync","wrapAwait","name","default","Program","exports"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport remapAsyncToGenerator from \"@babel/helper-remap-async-to-generator\";\nimport type { NodePath, Visitor } from \"@babel/traverse\";\nimport { traverse, types as t, type PluginPass } from \"@babel/core\";\nimport rewriteForAwait from \"./for-await.ts\";\nimport environmentVisitor from \"@babel/helper-environment-visitor\";\n\nexport default declare(api => {\n api.assertVersion(7);\n\n const yieldStarVisitor = traverse.visitors.merge<PluginPass>([\n {\n ArrowFunctionExpression(path) {\n path.skip();\n },\n\n YieldExpression({ node }, state) {\n if (!node.delegate) return;\n const asyncIter = t.callExpression(state.addHelper(\"asyncIterator\"), [\n node.argument,\n ]);\n node.argument = t.callExpression(\n state.addHelper(\"asyncGeneratorDelegate\"),\n process.env.BABEL_8_BREAKING\n ? [asyncIter]\n : [asyncIter, state.addHelper(\"awaitAsyncGenerator\")],\n );\n },\n },\n environmentVisitor,\n ]);\n\n const forAwaitVisitor = traverse.visitors.merge<PluginPass>([\n {\n ArrowFunctionExpression(path) {\n path.skip();\n },\n\n ForOfStatement(path: NodePath<t.ForOfStatement>, { file }) {\n const { node } = path;\n if (!node.await) return;\n\n const build = rewriteForAwait(path, {\n getAsyncIterator: file.addHelper(\"asyncIterator\"),\n });\n\n const { declar, loop } = build;\n const block = loop.body as t.BlockStatement;\n\n // ensure that it's a block so we can take all its statements\n path.ensureBlock();\n\n // add the value declaration to the new loop body\n if (declar) {\n block.body.push(declar);\n if (path.node.body.body.length) {\n block.body.push(t.blockStatement(path.node.body.body));\n }\n } else {\n block.body.push(...path.node.body.body);\n }\n\n t.inherits(loop, node);\n t.inherits(loop.body, node.body);\n\n const p = build.replaceParent ? path.parentPath : path;\n p.replaceWithMultiple(build.node);\n\n // TODO: Avoid crawl\n p.scope.parent.crawl();\n },\n },\n environmentVisitor,\n ]);\n\n const visitor: Visitor<PluginPass> = {\n Function(path, state) {\n if (!path.node.async) return;\n\n path.traverse(forAwaitVisitor, state);\n\n if (!path.node.generator) return;\n\n path.traverse(yieldStarVisitor, state);\n\n // We don't need to pass the noNewArrows assumption, since\n // async generators are never arrow functions.\n remapAsyncToGenerator(path, {\n wrapAsync: state.addHelper(\"wrapAsyncGenerator\"),\n wrapAwait: state.addHelper(\"awaitAsyncGenerator\"),\n });\n },\n };\n\n return {\n name: \"transform-async-generator-functions\",\n inherits: USE_ESM\n ? undefined\n : IS_STANDALONE\n ? undefined\n : // eslint-disable-next-line no-restricted-globals\n require(\"@babel/plugin-syntax-async-generators\").default,\n\n visitor: {\n Program(path, state) {\n // We need to traverse the ast here (instead of just vising Function\n // in the top level visitor) because for-await needs to run before the\n // async-to-generator plugin. This is because for-await is transpiled\n // using \"await\" expressions, which are then converted to \"yield\".\n //\n // This is bad for performance, but plugin ordering will allow as to\n // directly visit Function in the top level visitor.\n path.traverse(visitor, state);\n },\n },\n };\n});\n"],"mappings":"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"}
\ No newline at end of file |
