INNER CODE UNIT · JavaScript
walk
Fausto-404/js-reverse-automation--skill · js-reverse-automation/scripts/ast_candidate_analyzer.js:64
function walk(node, parent, visit) {
if (!node || typeof node !== "object") return;
if (typeof node.type === "string") visit(node, parent);
for (const [key, value] of Object.entries(node)) {
if (["loc", "start", "end", "extra", "tokens", "comments"].includes(key)) continue;
if (Array.isArray(value)) value.forEach(child => walk(child, node, visit));
else if (value && typeof value === "object") walk(value, node, visit);
}
}
function nameOf(node, parent) {
if (node.id && node.id.name) return node.id.name;
if (parent && parent.type === "VariableDeclarator" && parent.id && parent.id.name)
return parent.id.name;
if (parent && /ObjectProperty|ObjectMethod|ClassMethod/.test(parent.type || ""))
return parent.key && (parent.key.name || parent.key.value) || "anonymous";
return "anonymous";
}