diff options
Diffstat (limited to 'node_modules/babel-helper-remap-async-to-generator/lib/index.js')
-rw-r--r-- | node_modules/babel-helper-remap-async-to-generator/lib/index.js | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/node_modules/babel-helper-remap-async-to-generator/lib/index.js b/node_modules/babel-helper-remap-async-to-generator/lib/index.js deleted file mode 100644 index 7d3bf64..0000000 --- a/node_modules/babel-helper-remap-async-to-generator/lib/index.js +++ /dev/null @@ -1,175 +0,0 @@ -"use strict"; - -exports.__esModule = true; - -exports.default = function (path, file, helpers) { - if (!helpers) { - helpers = { wrapAsync: file }; - file = null; - } - path.traverse(awaitVisitor, { - file: file, - wrapAwait: helpers.wrapAwait - }); - - if (path.isClassMethod() || path.isObjectMethod()) { - classOrObjectMethod(path, helpers.wrapAsync); - } else { - plainFunction(path, helpers.wrapAsync); - } -}; - -var _babelHelperFunctionName = require("babel-helper-function-name"); - -var _babelHelperFunctionName2 = _interopRequireDefault(_babelHelperFunctionName); - -var _babelTemplate = require("babel-template"); - -var _babelTemplate2 = _interopRequireDefault(_babelTemplate); - -var _babelTypes = require("babel-types"); - -var t = _interopRequireWildcard(_babelTypes); - -var _forAwait = require("./for-await"); - -var _forAwait2 = _interopRequireDefault(_forAwait); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var buildWrapper = (0, _babelTemplate2.default)("\n (() => {\n var REF = FUNCTION;\n return function NAME(PARAMS) {\n return REF.apply(this, arguments);\n };\n })\n"); - -var namedBuildWrapper = (0, _babelTemplate2.default)("\n (() => {\n var REF = FUNCTION;\n function NAME(PARAMS) {\n return REF.apply(this, arguments);\n }\n return NAME;\n })\n"); - -var awaitVisitor = { - Function: function Function(path) { - if (path.isArrowFunctionExpression() && !path.node.async) { - path.arrowFunctionToShadowed(); - return; - } - path.skip(); - }, - AwaitExpression: function AwaitExpression(_ref, _ref2) { - var node = _ref.node; - var wrapAwait = _ref2.wrapAwait; - - node.type = "YieldExpression"; - if (wrapAwait) { - node.argument = t.callExpression(wrapAwait, [node.argument]); - } - }, - ForAwaitStatement: function ForAwaitStatement(path, _ref3) { - var file = _ref3.file, - wrapAwait = _ref3.wrapAwait; - var node = path.node; - - - var build = (0, _forAwait2.default)(path, { - getAsyncIterator: file.addHelper("asyncIterator"), - wrapAwait: wrapAwait - }); - - var declar = build.declar, - loop = build.loop; - - var block = loop.body; - - path.ensureBlock(); - - if (declar) { - block.body.push(declar); - } - - block.body = block.body.concat(node.body.body); - - t.inherits(loop, node); - t.inherits(loop.body, node.body); - - if (build.replaceParent) { - path.parentPath.replaceWithMultiple(build.node); - path.remove(); - } else { - path.replaceWithMultiple(build.node); - } - } -}; - -function classOrObjectMethod(path, callId) { - var node = path.node; - var body = node.body; - - node.async = false; - - var container = t.functionExpression(null, [], t.blockStatement(body.body), true); - container.shadow = true; - body.body = [t.returnStatement(t.callExpression(t.callExpression(callId, [container]), []))]; - - node.generator = false; -} - -function plainFunction(path, callId) { - var node = path.node; - var isDeclaration = path.isFunctionDeclaration(); - var asyncFnId = node.id; - var wrapper = buildWrapper; - - if (path.isArrowFunctionExpression()) { - path.arrowFunctionToShadowed(); - } else if (!isDeclaration && asyncFnId) { - wrapper = namedBuildWrapper; - } - - node.async = false; - node.generator = true; - - node.id = null; - - if (isDeclaration) { - node.type = "FunctionExpression"; - } - - var built = t.callExpression(callId, [node]); - var container = wrapper({ - NAME: asyncFnId, - REF: path.scope.generateUidIdentifier("ref"), - FUNCTION: built, - PARAMS: node.params.reduce(function (acc, param) { - acc.done = acc.done || t.isAssignmentPattern(param) || t.isRestElement(param); - - if (!acc.done) { - acc.params.push(path.scope.generateUidIdentifier("x")); - } - - return acc; - }, { - params: [], - done: false - }).params - }).expression; - - if (isDeclaration) { - var declar = t.variableDeclaration("let", [t.variableDeclarator(t.identifier(asyncFnId.name), t.callExpression(container, []))]); - declar._blockHoist = true; - - path.replaceWith(declar); - } else { - var retFunction = container.body.body[1].argument; - if (!asyncFnId) { - (0, _babelHelperFunctionName2.default)({ - node: retFunction, - parent: path.parent, - scope: path.scope - }); - } - - if (!retFunction || retFunction.id || node.params.length) { - path.replaceWith(t.callExpression(container, [])); - } else { - path.replaceWith(built); - } - } -} - -module.exports = exports["default"];
\ No newline at end of file |