@nodesecure/js-x-ray
Version:
JavaScript AST XRay analysis
25 lines • 1.18 kB
JavaScript
// Import Internal Dependencies
import { getMemberExpressionIdentifier } from "./getMemberExpressionIdentifier.js";
import { isCallExpression, isIdentifier, isMemberExpression, noop } from "../types.js";
export function getCallExpressionIdentifier(node, options = {}) {
if (node.type !== "CallExpression" && node.type !== "NewExpression") {
return null;
}
const { externalIdentifierLookup = noop, resolveCallExpression = true } = options;
if (isIdentifier(node.callee)) {
return node.callee.name;
}
if (isMemberExpression(node.callee)) {
const memberObject = node.callee.object;
let lastId = "";
for (const part of getMemberExpressionIdentifier(node.callee, { externalIdentifierLookup })) {
lastId = lastId === "" ? part : `${lastId}.${part}`;
}
return resolveCallExpression && isCallExpression(memberObject) ?
getCallExpressionIdentifier(memberObject) + `.${lastId}` :
lastId;
}
return resolveCallExpression ?
getCallExpressionIdentifier(node.callee, { externalIdentifierLookup }) : null;
}
//# sourceMappingURL=getCallExpressionIdentifier.js.map