numenor
Version:
Customizable, safe evaluator of JavaScript-like expressions.
39 lines (29 loc) • 843 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Await = void 0;
var _ = require("./");
var _Parser = require("../../Parser");
var _Error = require("../Error");
var Await = function Await(expr, options, compile) {
if (expr.type !== _Parser.ExpressionType.Await) {
throw new TypeError((0, _Error.UnknownExpression)(expr));
}
var rhs = compile(expr.rhs, options, compile);
var isConst = (0, _.hasConstValue)(rhs);
return (0, _.mark)({
isConst: isConst,
isAsync: true
}, function (context, stack) {
var thenable = rhs(context, stack);
if (Array.isArray(thenable)) {
return Promise.all(thenable);
}
if (!thenable || typeof thenable.then !== 'function') {
return Promise.resolve(thenable);
}
return thenable;
});
};
exports.Await = Await;