fix(javascript): handle deep AST traversal and addition without stack overflow (#915)

* fix(javascript): avoid recursion and eager ancestry copies in deep ASTs

* fix(javascript): traverse static analysis and bundler ASTs iteratively
This commit is contained in:
morluto authored and GitHub committed 2026-10-07 17:40:05 +08:00
1 parent f6a58f1062
commit 62b37111e7
9 files changed
+203 -40

No files matched your search

@@ -1,5 +1,7 @@
import * as t from "@babel/types";
import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js";
import { inspectElectronStaticNode } from "./electronStaticAnalysis.js";
import {
detectVendors,
@@ -56,10 +58,12 @@ const traverseStaticSource = (
file: ParsedJavaScriptSource,
accumulator: AnalysisAccumulator,
): void => {
t.traverseFast(file, (node) => {
accumulator.visitedNodes += 1;
inspectNode(source, node, accumulator);
return undefined;
traverseJavaScriptAst(file, {
enter: (node) => {
accumulator.visitedNodes += 1;
inspectNode(source, node, accumulator);
return undefined;
},
});
};