# @unified-latex/unified-latex-util-visit

> Functions for traversing a unified-latex AST

Latest version **1.8.4** (published 2026-04-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @unified-latex/unified-latex-util-visit
pnpm add @unified-latex/unified-latex-util-visit
yarn add @unified-latex/unified-latex-util-visit
bun add @unified-latex/unified-latex-util-visit
```

## Health

**Score 60/100 (C)** — status: active.

Positive: has types; esm support; no vulnerabilities; high maintenance score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.8.4 |
| Published | 2026-04-03 |
| First published | 2022-05-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 47.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 127 |
| Author | Jason Siefken |
| Maintainers | siefkenj |
| Keywords | pegjs, latex, parser, prettier, unified-latex, unified |

## Links

- npm: https://www.npmjs.com/package/@unified-latex/unified-latex-util-visit
- Repository: https://github.com/siefkenj/unified-latex
- Homepage: https://github.com/siefkenj/unified-latex#readme
- Issues: https://github.com/siefkenj/unified-latex/issues
- npm.io page: https://npm.io/package/@unified-latex/unified-latex-util-visit

## Dependencies (2)

- [@unified-latex/unified-latex-types](https://npm.io/package/@unified-latex/unified-latex-types.md) ^1.8.4
- [@unified-latex/unified-latex-util-match](https://npm.io/package/@unified-latex/unified-latex-util-match.md) ^1.8.4

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 1.8.4 (latest) — 2026-04-03
- 1.8.3 — 2025-06-16
- 1.8.2 — 2025-02-09
- 1.8.0 — 2024-08-22
- 1.7.1 — 2024-03-19
- 1.7.0 — 2024-02-25
- 1.6.1 — 2024-02-18
- 1.6.0 — 2024-01-17
- 1.4.2 — 2023-09-30
- 1.4.0 — 2023-06-20
- 1.3.2 — 2023-04-26
- 1.3.1 — 2023-03-05
- 1.3.0 — 2023-02-06
- 1.2.2 — 2022-12-15
- 1.2.1 — 2022-11-23
- … 10 more at https://npm.io/package/@unified-latex/unified-latex-util-visit/versions

## README

<!-- DO NOT MODIFY -->
<!-- This file was autogenerated by build-docs.ts -->
<!-- Edit the docstring in index.ts and regenerate -->
<!-- rather than editing this file directly. -->
# unified-latex-util-visit

## What is this?

Functions to traverse a `unified-latex` Abstract Syntax Tree (AST). `visit` is
very similar to [estree-util-visit](https://github.com/syntax-tree/estree-util-visit).

## When should I use this?

If you want to recursively replace particular AST nodes.

## Install

```bash
npm install @unified-latex/unified-latex-util-visit
```

This package contains both esm and commonjs exports. To explicitly access the esm export,
import the `.js` file. To explicitly access the commonjs export, import the `.cjs` file.

# Functions

## `visit(tree, visitor, options)`

Visit children of tree which pass a test

```typescript
function visit<Opts extends VisitOptions>(
  tree: Ast.Ast,
  visitor:
    | Visitor<NarrowArraysBasedOnOptions<GuardFromOptions<Opts, Ast.Ast>, Opts>>
    | Visitors<
        NarrowArraysBasedOnOptions<GuardFromOptions<Opts, Ast.Ast>, Opts>
      >,
  options: VisitOptions
): void;
```

**Parameters**

| Param   | Type                              | Description                   |
| :------ | :-------------------------------- | ----------------------------- |
| tree    | `Ast.Ast`                         | Abstract syntax tree to walk  |
| visitor | <span color='gray'>Omitted</span> | Function to run for each node |
| options | `VisitOptions`                    | *see below*                   |

where

```typescript
type VisitOptions = {
  startingContext?: VisitorContext;
  /**
   * Type guard for types that are passed to the `visitor` function.
   */
  test?: (node: Ast.Ast, info: VisitInfo) => boolean;
  /**
   * Whether arrays will be sent to the `visitor` function. If falsy,
   * only nodes will be past to `visitor`.
   */
  includeArrays?: boolean;
};
```

# Constants

| Name       | Type     | Description                          |
| :--------- | :------- | :----------------------------------- |
| `CONTINUE` | `Symbol` | Continue traversing as normal        |
| `EXIT`     | `Symbol` | Stop traversing immediately          |
| `SKIP`     | `Symbol` | Do not traverse this node’s children |

# Types

## `VisitInfo`

```typescript
export type VisitInfo = {
    /**
     * If the element was accessed via an attribute, the attribute key is specified.
     */
    readonly key: string | undefined;
    /**
     * If the element was accessed in an array, the index is specified.
     */
    readonly index: number | undefined;
    /**
     * A list of ancestor nodes, `[parent, grandparent, great-grandparent, ...]`
     */
    readonly parents: (Ast.Node | Ast.Argument)[];
    /**
     * If the element was accessed in an array, the array that it is part of.
     */
    readonly containingArray: (Ast.Node | Ast.Argument)[] | undefined;
    /**
     * The LaTeX context of the current match.
     */
    readonly context: VisitorContext;
};
```

## `VisitorContext`

```typescript
export type VisitorContext = {
    /**
     * Whether the node is being processed in math mode.
     *
     * This happens when the node is a director or indirect child
     * of a math environment (e.g. `$abc$`), but not when an environment
     * re-establishes text mode (e.g. `$\text{abc}$`)
     */
    inMathMode?: boolean;
    /**
     * Whether the node has any ancestor that is processed in math mode.
     */
    hasMathModeAncestor?: boolean;
};
```

---
_Source: https://npm.io/package/@unified-latex/unified-latex-util-visit · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
