diff options
| author | Christian Cleberg <[email protected]> | 2026-04-18 22:32:53 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-18 22:32:53 -0500 |
| commit | 580e798e16346eb894eb899edac82d2efdf40adc (patch) | |
| tree | 6dec3b7db678f781138b40d34da37d21ac8fbe7d /node_modules/@babel/traverse/lib/traverse-node.js | |
| download | brand-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.js | 137 |
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 |
