[]previous and next page

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).