Urara-Blog/node_modules/.pnpm-store/v3/files/2f/6cfcacbb3f13bbdf67c68731afda8d2c6a9ce20e8bad136b5f410624b3d099f68aaf32c30df6aba0ab2de3d79fb8d525cec810d6fe90002a072f74a12e844b
2022-08-14 01:14:53 +08:00

36 lines
No EOL
1 KiB
Text

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = optimiseCallExpression;
var _t = require("@babel/types");
const {
callExpression,
identifier,
isIdentifier,
isSpreadElement,
memberExpression,
optionalCallExpression,
optionalMemberExpression
} = _t;
function optimiseCallExpression(callee, thisNode, args, optional) {
if (args.length === 1 && isSpreadElement(args[0]) && isIdentifier(args[0].argument, {
name: "arguments"
})) {
if (optional) {
return optionalCallExpression(optionalMemberExpression(callee, identifier("apply"), false, true), [thisNode, args[0].argument], false);
}
return callExpression(memberExpression(callee, identifier("apply")), [thisNode, args[0].argument]);
} else {
if (optional) {
return optionalCallExpression(optionalMemberExpression(callee, identifier("call"), false, true), [thisNode, ...args], false);
}
return callExpression(memberExpression(callee, identifier("call")), [thisNode, ...args]);
}
}