Sha256: 14c966fd6114e9cee422966914a95fbd157cc3323b31e25742da6d0dc39a5061
Contents?: true
Size: 1.78 KB
Versions: 3
Compression:
Stored size: 1.78 KB
Contents
"use strict"; exports.__esModule = true; 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; } } var _types = require("../../types"); var t = _interopRequireWildcard(_types); var awaitVisitor = { Function: function Function() { this.skip(); }, AwaitExpression: function AwaitExpression(node) { node.type = "YieldExpression"; if (node.all) { // await* foo; -> yield Promise.all(foo); node.all = false; node.argument = t.callExpression(t.memberExpression(t.identifier("Promise"), t.identifier("all")), [node.argument]); } } }; var referenceVisitor = { ReferencedIdentifier: function ReferencedIdentifier(node, parent, scope, state) { var name = state.id.name; if (node.name === name && scope.bindingIdentifierEquals(name, state.id)) { return state.ref = state.ref || scope.generateUidIdentifier(name); } } }; exports["default"] = function (path, callId) { var node = path.node; node.async = false; node.generator = true; path.traverse(awaitVisitor, state); var call = t.callExpression(callId, [node]); var id = node.id; node.id = null; if (t.isFunctionDeclaration(node)) { var declar = t.variableDeclaration("let", [t.variableDeclarator(id, call)]); declar._blockHoist = true; return declar; } else { if (id) { var state = { id: id }; path.traverse(referenceVisitor, state); if (state.ref) { path.scope.parent.push({ id: state.ref }); return t.assignmentExpression("=", state.ref, call); } } return call; } }; module.exports = exports["default"];
Version data entries
3 entries across 3 versions & 1 rubygems