Visitor
What PluginContext.walk takes: a function or an enter/leave pair for the node types of NodeMap, and an untyped enter and leave for every node.
What PluginContext.walk takes: a function or an enter/leave pair for the node types of
NodeMap, and an untyped enter and leave for every node. For one node the untyped
enter runs first, then the typed one; after the children the typed leave runs, then the
untyped one.
Import#
ts
import type { Visitor } from "@shadow-js/compiler";
Signature#
ts
type Visitor = {
[K in keyof NodeMap]?: Visit<NodeMap[K]> | VisitorEntry<NodeMap[K]>;
} & VisitorEntry<PluginNode>
Members#
| Name | Type | Description |
|---|---|---|
Program? |
Program: ProgramNode |
The module. |
Identifier? |
Identifier: IdentifierNode |
An identifier. |
Literal? |
Literal: LiteralNode |
A literal. |
TemplateLiteral? |
TemplateLiteral: TemplateLiteralNode |
A template literal. |
CallExpression? |
CallExpression: CallExpressionNode |
A call. |
MemberExpression? |
MemberExpression: MemberExpressionNode |
A member access. |
ImportDeclaration? |
ImportDeclaration: ImportDeclarationNode |
An import declaration. |
ObjectExpression? |
ObjectExpression: ObjectExpressionNode |
An object literal. |
Property? |
Property: PropertyNode |
An object member. |
JSXElement? |
JSXElement: JSXElementNode |
A JSX element. |
JSXFragment? |
JSXFragment: JSXFragmentNode |
A JSX fragment. |
JSXOpeningElement? |
JSXOpeningElement: JSXOpeningElementNode |
An opening tag. |
JSXAttribute? |
JSXAttribute: JSXAttributeNode |
A JSX attribute. |
JSXSpreadAttribute? |
JSXSpreadAttribute: JSXSpreadAttributeNode |
A JSX spread attribute. |
JSXIdentifier? |
JSXIdentifier: JSXIdentifierNode |
A JSX word. |
JSXMemberExpression? |
JSXMemberExpression: JSXMemberExpressionNode |
A JSX dotted name. |
JSXNamespacedName? |
JSXNamespacedName: JSXNamespacedNameNode |
A JSX namespaced name. |
JSXExpressionContainer? |
JSXExpressionContainer: JSXExpressionContainerNode |
A JSX {} container. |
JSXText? |
JSXText: JSXTextNode |
JSX text. |
enter? |
enter?: Visit<N> |
Called before the children of the node. Return false to skip them. |
leave? |
leave?: (node: N, parent: PluginNode | null) => void |
Called after the children of the node (also when enter skipped them). |