{"version":3,"file":"walk.js","sources":["../src/index.js"],"sourcesContent":["// AST walker module for Mozilla Parser API compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All Parser API node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nexport function simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) baseVisitor = base\n ;(function c(node, st, override) {\n let type = override || node.type, found = visitors[type]\n baseVisitor[type](node, st, c)\n if (found) found(node, st)\n })(node, state, override)\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nexport function ancestor(node, visitors, baseVisitor, state, override) {\n let ancestors = []\n if (!baseVisitor) baseVisitor = base\n ;(function c(node, st, override) {\n let type = override || node.type, found = visitors[type]\n let isNew = node !== ancestors[ancestors.length - 1]\n if (isNew) ancestors.push(node)\n baseVisitor[type](node, st, c)\n if (found) found(node, st || ancestors, ancestors)\n if (isNew) ancestors.pop()\n })(node, state, override)\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nexport function recursive(node, state, funcs, baseVisitor, override) {\n let visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c)\n })(node, state, override)\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n return type => type === test\n else if (!test)\n return () => true\n else\n return test\n}\n\nclass Found {\n constructor(node, state) { this.node = node; this.state = state }\n}\n\n// A full walk triggers the callback on each node\nexport function full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) baseVisitor = base\n let last\n ;(function c(node, st, override) {\n let type = override || node.type\n baseVisitor[type](node, st, c)\n if (last !== node) {\n callback(node, st, type)\n last = node\n }\n })(node, state, override)\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nexport function fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) baseVisitor = base\n let ancestors = [], last\n ;(function c(node, st, override) {\n let type = override || node.type\n let isNew = node !== ancestors[ancestors.length - 1]\n if (isNew) ancestors.push(node)\n baseVisitor[type](node, st, c)\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type)\n last = node\n }\n if (isNew) ancestors.pop()\n })(node, state)\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nexport function findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) baseVisitor = base\n test = makeTest(test)\n try {\n (function c(node, st, override) {\n let type = override || node.type\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n baseVisitor[type](node, st, c)\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n throw new Found(node, st)\n })(node, state)\n } catch (e) {\n if (e instanceof Found) return e\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nexport function findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test)\n if (!baseVisitor) baseVisitor = base\n try {\n (function c(node, st, override) {\n let type = override || node.type\n if (node.start > pos || node.end < pos) return\n baseVisitor[type](node, st, c)\n if (test(type, node)) throw new Found(node, st)\n })(node, state)\n } catch (e) {\n if (e instanceof Found) return e\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nexport function findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test)\n if (!baseVisitor) baseVisitor = base\n try {\n (function c(node, st, override) {\n if (node.end < pos) return\n let type = override || node.type\n if (node.start >= pos && test(type, node)) throw new Found(node, st)\n baseVisitor[type](node, st, c)\n })(node, state)\n } catch (e) {\n if (e instanceof Found) return e\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nexport function findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test)\n if (!baseVisitor) baseVisitor = base\n let max\n ;(function c(node, st, override) {\n if (node.start > pos) return\n let type = override || node.type\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n max = new Found(node, st)\n baseVisitor[type](node, st, c)\n })(node, state)\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nexport function make(funcs, baseVisitor) {\n let visitor = Object.create(baseVisitor || base)\n for (let type in funcs) visitor[type] = funcs[type]\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st) }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nexport const base = {}\n\nbase.Program = base.BlockStatement = (node, st, c) => {\n for (let stmt of node.body)\n c(stmt, st, \"Statement\")\n}\nbase.Statement = skipThrough\nbase.EmptyStatement = ignore\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n (node, st, c) => c(node.expression, st, \"Expression\")\nbase.IfStatement = (node, st, c) => {\n c(node.test, st, \"Expression\")\n c(node.consequent, st, \"Statement\")\n if (node.alternate) c(node.alternate, st, \"Statement\")\n}\nbase.LabeledStatement = (node, st, c) => c(node.body, st, \"Statement\")\nbase.BreakStatement = base.ContinueStatement = ignore\nbase.WithStatement = (node, st, c) => {\n c(node.object, st, \"Expression\")\n c(node.body, st, \"Statement\")\n}\nbase.SwitchStatement = (node, st, c) => {\n c(node.discriminant, st, \"Expression\")\n for (let cs of node.cases) {\n if (cs.test) c(cs.test, st, \"Expression\")\n for (let cons of cs.consequent)\n c(cons, st, \"Statement\")\n }\n}\nbase.SwitchCase = (node, st, c) => {\n if (node.test) c(node.test, st, \"Expression\")\n for (let cons of node.consequent)\n c(cons, st, \"Statement\")\n}\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = (node, st, c) => {\n if (node.argument) c(node.argument, st, \"Expression\")\n}\nbase.ThrowStatement = base.SpreadElement =\n (node, st, c) => c(node.argument, st, \"Expression\")\nbase.TryStatement = (node, st, c) => {\n c(node.block, st, \"Statement\")\n if (node.handler) c(node.handler, st)\n if (node.finalizer) c(node.finalizer, st, \"Statement\")\n}\nbase.CatchClause = (node, st, c) => {\n if (node.param) c(node.param, st, \"Pattern\")\n c(node.body, st, \"Statement\")\n}\nbase.WhileStatement = base.DoWhileStatement = (node, st, c) => {\n c(node.test, st, \"Expression\")\n c(node.body, st, \"Statement\")\n}\nbase.ForStatement = (node, st, c) => {\n if (node.init) c(node.init, st, \"ForInit\")\n if (node.test) c(node.test, st, \"Expression\")\n if (node.update) c(node.update, st, \"Expression\")\n c(node.body, st, \"Statement\")\n}\nbase.ForInStatement = base.ForOfStatement = (node, st, c) => {\n c(node.left, st, \"ForInit\")\n c(node.right, st, \"Expression\")\n c(node.body, st, \"Statement\")\n}\nbase.ForInit = (node, st, c) => {\n if (node.type === \"VariableDeclaration\") c(node, st)\n else c(node, st, \"Expression\")\n}\nbase.DebuggerStatement = ignore\n\nbase.FunctionDeclaration = (node, st, c) => c(node, st, \"Function\")\nbase.VariableDeclaration = (node, st, c) => {\n for (let decl of node.declarations)\n c(decl, st)\n}\nbase.VariableDeclarator = (node, st, c) => {\n c(node.id, st, \"Pattern\")\n if (node.init) c(node.init, st, \"Expression\")\n}\n\nbase.Function = (node, st, c) => {\n if (node.id) c(node.id, st, \"Pattern\")\n for (let param of node.params)\n c(param, st, \"Pattern\")\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\")\n}\n\nbase.Pattern = (node, st, c) => {\n if (node.type === \"Identifier\")\n c(node, st, \"VariablePattern\")\n else if (node.type === \"MemberExpression\")\n c(node, st, \"MemberPattern\")\n else\n c(node, st)\n}\nbase.VariablePattern = ignore\nbase.MemberPattern = skipThrough\nbase.RestElement = (node, st, c) => c(node.argument, st, \"Pattern\")\nbase.ArrayPattern = (node, st, c) => {\n for (let elt of node.elements) {\n if (elt) c(elt, st, \"Pattern\")\n }\n}\nbase.ObjectPattern = (node, st, c) => {\n for (let prop of node.properties) {\n if (prop.type === \"Property\") {\n if (prop.computed) c(prop.key, st, \"Expression\")\n c(prop.value, st, \"Pattern\")\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\")\n }\n }\n}\n\nbase.Expression = skipThrough\nbase.ThisExpression = base.Super = base.MetaProperty = ignore\nbase.ArrayExpression = (node, st, c) => {\n for (let elt of node.elements) {\n if (elt) c(elt, st, \"Expression\")\n }\n}\nbase.ObjectExpression = (node, st, c) => {\n for (let prop of node.properties)\n c(prop, st)\n}\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration\nbase.SequenceExpression = (node, st, c) => {\n for (let expr of node.expressions)\n c(expr, st, \"Expression\")\n}\nbase.TemplateLiteral = (node, st, c) => {\n for (let quasi of node.quasis)\n c(quasi, st)\n\n for (let expr of node.expressions)\n c(expr, st, \"Expression\")\n}\nbase.TemplateElement = ignore\nbase.UnaryExpression = base.UpdateExpression = (node, st, c) => {\n c(node.argument, st, \"Expression\")\n}\nbase.BinaryExpression = base.LogicalExpression = (node, st, c) => {\n c(node.left, st, \"Expression\")\n c(node.right, st, \"Expression\")\n}\nbase.AssignmentExpression = base.AssignmentPattern = (node, st, c) => {\n c(node.left, st, \"Pattern\")\n c(node.right, st, \"Expression\")\n}\nbase.ConditionalExpression = (node, st, c) => {\n c(node.test, st, \"Expression\")\n c(node.consequent, st, \"Expression\")\n c(node.alternate, st, \"Expression\")\n}\nbase.NewExpression = base.CallExpression = (node, st, c) => {\n c(node.callee, st, \"Expression\")\n if (node.arguments)\n for (let arg of node.arguments)\n c(arg, st, \"Expression\")\n}\nbase.MemberExpression = (node, st, c) => {\n c(node.object, st, \"Expression\")\n if (node.computed) c(node.property, st, \"Expression\")\n}\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = (node, st, c) => {\n if (node.declaration)\n c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\")\n if (node.source) c(node.source, st, \"Expression\")\n}\nbase.ExportAllDeclaration = (node, st, c) => {\n if (node.exported)\n c(node.exported, st)\n c(node.source, st, \"Expression\")\n}\nbase.ImportDeclaration = (node, st, c) => {\n for (let spec of node.specifiers)\n c(spec, st)\n c(node.source, st, \"Expression\")\n}\nbase.ImportExpression = (node, st, c) => {\n c(node.source, st, \"Expression\")\n}\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore\n\nbase.TaggedTemplateExpression = (node, st, c) => {\n c(node.tag, st, \"Expression\")\n c(node.quasi, st, \"Expression\")\n}\nbase.ClassDeclaration = base.ClassExpression = (node, st, c) => c(node, st, \"Class\")\nbase.Class = (node, st, c) => {\n if (node.id) c(node.id, st, \"Pattern\")\n if (node.superClass) c(node.superClass, st, \"Expression\")\n c(node.body, st)\n}\nbase.ClassBody = (node, st, c) => {\n for (let elt of node.body)\n c(elt, st)\n}\nbase.MethodDefinition = base.Property = (node, st, c) => {\n if (node.computed) c(node.key, st, \"Expression\")\n c(node.value, st, \"Expression\")\n}\n"],"names":["let"],"mappings":"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"}