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