Sha256: 0c77a1bd805d4184f1e217e3dfba66cd7e06049da665a2f5a60326359bcde26d

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

"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]);
  }
}

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
disco_app-0.16.1 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js
disco_app-0.15.2 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js
disco_app-0.18.4 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js
disco_app-0.18.1 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js
disco_app-0.14.0 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/@babel/helper-optimise-call-expression/lib/index.js