Spaces:
Sleeping
Sleeping
| ; | |
| 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 _traverse = require("@babel/traverse"); | |
| var _forAwait = require("./for-await.js"); | |
| var _default = exports.default = (0, _helperPluginUtils.declare)(api => { | |
| api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta"); | |
| const yieldStarVisitor = _traverse.visitors.environmentVisitor({ | |
| 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")]); | |
| } | |
| }); | |
| const forAwaitVisitor = _traverse.visitors.environmentVisitor({ | |
| 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(); | |
| } | |
| }); | |
| const visitor = { | |
| Function(path, state) { | |
| if (!path.node.async) return; | |
| path.traverse(forAwaitVisitor, state); | |
| if (!path.node.generator) return; | |
| path.traverse(yieldStarVisitor, state); | |
| path.setData("@babel/plugin-transform-async-generator-functions/async_generator_function", true); | |
| (0, _helperRemapAsyncToGenerator.default)(path, { | |
| wrapAsync: state.addHelper("wrapAsyncGenerator"), | |
| wrapAwait: state.addHelper("awaitAsyncGenerator") | |
| }); | |
| } | |
| }; | |
| return { | |
| name: "transform-async-generator-functions", | |
| manipulateOptions: (_, parser) => parser.plugins.push("asyncGenerators"), | |
| visitor: { | |
| Program(path, state) { | |
| path.traverse(visitor, state); | |
| } | |
| } | |
| }; | |
| }); | |
| //# sourceMappingURL=index.js.map | |