import { visitAsync } from "https://deno.land/x/windmill@v1.317.1/node_modules/yaml/browser/dist/index.js";
Apply an async visitor to an AST node or document.
Walks through the tree (depth-first) starting from node
, calling a
visitor
function with three arguments:
key
: For sequence values and mapPair
, the node's index in the collection. Within aPair
,'key'
or'value'
, correspondingly.null
for the root node.node
: The current node.path
: The ancestry of the current node.
The return value of the visitor may be used to control the traversal:
Promise
: Must resolve to one of the following valuesundefined
(default): Do nothing and continuevisit.SKIP
: Do not visit the children of this node, continue with next siblingvisit.BREAK
: Terminate traversal completelyvisit.REMOVE
: Remove the current node, then continue with the next oneNode
: Replace the current node, then continue by visiting itnumber
: While iterating the items of a sequence or map, set the index of the next step. This is useful especially if the index of the current node has changed.
If visitor
is a single function, it will be called with all values
encountered in the tree, including e.g. null
values. Alternatively,
separate visitor functions may be defined for each Map
, Pair
, Seq
,
Alias
and Scalar
node. To define the same visitor function for more than
one node type, use the Collection
(map and seq), Value
(map, seq & scalar)
and Node
(alias, map, seq & scalar) targets. Of all these, only the most
specific defined one will be used for each node.