@nodesecure/js-x-ray
Version:
JavaScript AST XRay analysis
38 lines • 1.32 kB
JavaScript
// Import Internal Dependencies
import { getCallExpressionIdentifier, isCallExpression, isIdentifier, isMemberExpression } from "../../estree/index.js";
import { Inlined } from "../../Inlined.js";
export class InlinedRequire {
static assertNode(node) {
if (isCallExpression(node) &&
getCallExpressionIdentifier(node)?.match(/^require..*$/i)) {
return true;
}
return false;
}
static split(expectedCallExpr) {
if (!InlinedRequire.assertNode(expectedCallExpr)) {
return null;
}
const requireCall = InlinedRequire.#findRequireCall(expectedCallExpr);
if (!requireCall) {
return null;
}
return Inlined.buildSplitResult(expectedCallExpr, requireCall, "require");
}
static #findRequireCall(node) {
const object = isMemberExpression(node)
? node.object
: node.callee;
if (isCallExpression(object) &&
isIdentifier(object.callee) &&
object.callee.name === "require") {
return object;
}
if (isMemberExpression(object) ||
isCallExpression(object)) {
return InlinedRequire.#findRequireCall(object);
}
return null;
}
}
//# sourceMappingURL=InlinedRequire.js.map