summaryrefslogtreecommitdiff
path: root/node_modules/@babel/traverse/lib/traverse-node.js
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-18 22:32:53 -0500
committerChristian Cleberg <[email protected]>2026-04-18 22:32:53 -0500
commit580e798e16346eb894eb899edac82d2efdf40adc (patch)
tree6dec3b7db678f781138b40d34da37d21ac8fbe7d /node_modules/@babel/traverse/lib/traverse-node.js
downloadbrand-bench-580e798e16346eb894eb899edac82d2efdf40adc.tar.gz
brand-bench-580e798e16346eb894eb899edac82d2efdf40adc.tar.bz2
brand-bench-580e798e16346eb894eb899edac82d2efdf40adc.zip
initial commit
Diffstat (limited to 'node_modules/@babel/traverse/lib/traverse-node.js')
-rw-r--r--node_modules/@babel/traverse/lib/traverse-node.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/node_modules/@babel/traverse/lib/traverse-node.js b/node_modules/@babel/traverse/lib/traverse-node.js
new file mode 100644
index 0000000..56329ba
--- /dev/null
+++ b/node_modules/@babel/traverse/lib/traverse-node.js
@@ -0,0 +1,137 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.traverseNode = traverseNode;
+var _context = require("./context.js");
+var _index = require("./path/index.js");
+var _t = require("@babel/types");
+var _context2 = require("./path/context.js");
+const {
+ VISITOR_KEYS
+} = _t;
+function _visitPaths(ctx, paths) {
+ ctx.queue = paths;
+ ctx.priorityQueue = [];
+ const visited = new Set();
+ let stop = false;
+ let visitIndex = 0;
+ for (; visitIndex < paths.length;) {
+ const path = paths[visitIndex];
+ visitIndex++;
+ _context2.resync.call(path);
+ if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== ctx) {
+ _context2.pushContext.call(path, ctx);
+ }
+ if (path.key === null) continue;
+ const {
+ node
+ } = path;
+ if (visited.has(node)) continue;
+ if (node) visited.add(node);
+ if (_visit(ctx, path)) {
+ stop = true;
+ break;
+ }
+ if (ctx.priorityQueue.length) {
+ stop = _visitPaths(ctx, ctx.priorityQueue);
+ ctx.priorityQueue = [];
+ ctx.queue = paths;
+ if (stop) break;
+ }
+ }
+ for (let i = 0; i < visitIndex; i++) {
+ _context2.popContext.call(paths[i]);
+ }
+ ctx.queue = null;
+ return stop;
+}
+function _visit(ctx, path) {
+ var _opts$denylist;
+ const node = path.node;
+ if (!node) {
+ return false;
+ }
+ const opts = ctx.opts;
+ const denylist = (_opts$denylist = opts.denylist) != null ? _opts$denylist : opts.blacklist;
+ if (denylist != null && denylist.includes(node.type)) {
+ return false;
+ }
+ if (opts.shouldSkip != null && opts.shouldSkip(path)) {
+ return false;
+ }
+ if (path.shouldSkip) return path.shouldStop;
+ if (_context2._call.call(path, opts.enter)) return path.shouldStop;
+ if (path.node) {
+ var _opts$node$type;
+ if (_context2._call.call(path, (_opts$node$type = opts[node.type]) == null ? void 0 : _opts$node$type.enter)) return path.shouldStop;
+ }
+ path.shouldStop = _traverse(path.node, opts, path.scope, ctx.state, path, path.skipKeys);
+ if (path.node) {
+ if (_context2._call.call(path, opts.exit)) return true;
+ }
+ if (path.node) {
+ var _opts$node$type2;
+ _context2._call.call(path, (_opts$node$type2 = opts[node.type]) == null ? void 0 : _opts$node$type2.exit);
+ }
+ return path.shouldStop;
+}
+function _traverse(node, opts, scope, state, path, skipKeys, visitSelf) {
+ const keys = VISITOR_KEYS[node.type];
+ if (!(keys != null && keys.length)) return false;
+ const ctx = new _context.default(scope, opts, state, path);
+ if (visitSelf) {
+ if (skipKeys != null && skipKeys[path.parentKey]) return false;
+ return _visitPaths(ctx, [path]);
+ }
+ for (const key of keys) {
+ if (skipKeys != null && skipKeys[key]) continue;
+ const prop = node[key];
+ if (!prop) continue;
+ if (Array.isArray(prop)) {
+ if (!prop.length) continue;
+ const paths = [];
+ for (let i = 0; i < prop.length; i++) {
+ const childPath = _index.default.get({
+ parentPath: path,
+ parent: node,
+ container: prop,
+ key: i,
+ listKey: key
+ });
+ paths.push(childPath);
+ }
+ if (_visitPaths(ctx, paths)) return true;
+ } else {
+ if (_visitPaths(ctx, [_index.default.get({
+ parentPath: path,
+ parent: node,
+ container: node,
+ key,
+ listKey: null
+ })])) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+function traverseNode(node, opts, scope, state, path, skipKeys, visitSelf) {
+ const keys = VISITOR_KEYS[node.type];
+ if (!keys) return false;
+ const context = new _context.default(scope, opts, state, path);
+ if (visitSelf) {
+ if (skipKeys != null && skipKeys[path.parentKey]) return false;
+ return context.visitQueue([path]);
+ }
+ for (const key of keys) {
+ if (skipKeys != null && skipKeys[key]) continue;
+ if (context.visit(node, key)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+//# sourceMappingURL=traverse-node.js.map