# vkobeliatsky/mu-parser architecture

> Architecture diagram of the GitHub repository vkobeliatsky/mu-parser, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-23). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vkobeliatsky/mu-parser
- Repository: https://github.com/vkobeliatsky/mu-parser

## Overview

mu-parser is a dependency-free TypeScript runtime library for validating and transforming unknown values into typed results. A caller supplies input and a parser to `runParser`; primitive, field, and list parsers validate or traverse it, while combinators compose and transform parser results. Parser state tracks nested paths, visited values, and optional user state; failures carry path-aware errors that `runParser` can format or pass to a handler. The utility implementation is not sampled, so its internal behavior is not expanded here.

Main entry points: [`packages/mu-parser/src/parser.ts`](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser.ts) (runParser), [`packages/mu-parser/src/index.ts`](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/index.ts) (Public exports), [`packages/mu-parser/src/parsers/parsers.ts`](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parsers/parsers.ts) (Field and list parsers), [`packages/mu-parser/src/parser-error.ts`](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-error.ts) (Parse errors)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_caller(("Library caller"))
node_public["Public exports<br/>[index.ts]"]
node_entry["runParser<br/>[parser.ts]"]
node_combinators["Parser combinators<br/>[parser.ts]"]
node_basic["Basic parsers<br/>[parsers.ts]"]
node_collections["Field and list parsers<br/>[parsers.ts]"]
node_state["Parser state<br/>[parser-state.ts]"]
node_result["Parser results<br/>[parser-result.ts]"]
node_errors["Parse errors<br/>[parser-error.ts]"]
node_utils["Error utilities<br/>[utils.ts]"]
node_parsed["Parsed value or error"]

node_caller -->|"imports"| node_public
node_caller -->|"supplies input"| node_entry
node_public -->|"exports"| node_entry
node_public -->|"exports"| node_combinators
node_public -->|"exports"| node_basic
node_public -->|"exports"| node_collections
node_entry -->|"runs parser"| node_combinators
node_entry -->|"creates state"| node_state
node_entry -->|"attempts recovery"| node_utils
node_entry -->|"formats failure"| node_errors
node_combinators -->|"threads state"| node_state
node_combinators -->|"returns results"| node_result
node_combinators -->|"recovers errors"| node_errors
node_basic -->|"returns results"| node_result
node_collections -->|"validates objects"| node_basic
node_collections -->|"composes parsers"| node_combinators
node_collections -->|"tracks paths"| node_state
node_result -->|"throws failures"| node_errors
node_errors -->|"defines recovery"| node_utils
node_entry -->|"returns or throws"| node_parsed

click node_public "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/index.ts"
click node_entry "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser.ts"
click node_combinators "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser.ts"
click node_basic "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parsers/parsers.ts"
click node_collections "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parsers/parsers.ts"
click node_state "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-state.ts"
click node_result "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-result.ts"
click node_errors "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-error.ts"
click node_utils "https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/utils.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_caller,node_parsed toneIndigo
class node_public,node_entry,node_combinators,node_basic,node_collections,node_state,node_result,node_errors,node_utils toneTeal
```

## Components

### Other components

- **Library caller**
- [Public exports](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/index.ts): `packages/mu-parser/src/index.ts`
- [runParser](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser.ts): `packages/mu-parser/src/parser.ts`
- [Parser combinators](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser.ts): `packages/mu-parser/src/parser.ts`
- [Basic parsers](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parsers/parsers.ts): `packages/mu-parser/src/parsers/parsers.ts`
- [Field and list parsers](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parsers/parsers.ts): `packages/mu-parser/src/parsers/parsers.ts`
- [Parser state](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-state.ts): `packages/mu-parser/src/parser-state.ts`
- [Parser results](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-result.ts): `packages/mu-parser/src/parser-result.ts`
- [Parse errors](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/parser-error.ts): `packages/mu-parser/src/parser-error.ts`
- [Error utilities](https://github.com/vkobeliatsky/mu-parser/blob/master/packages/mu-parser/src/utils.ts): `packages/mu-parser/src/utils.ts`
- **Parsed value or error**

## Connections

- Library caller → Public exports: imports
- Library caller → runParser: supplies input
- Public exports → runParser: exports
- Public exports → Parser combinators: exports
- Public exports → Basic parsers: exports
- Public exports → Field and list parsers: exports
- runParser → Parser combinators: runs parser
- runParser → Parser state: creates state
- runParser → Error utilities: attempts recovery
- runParser → Parse errors: formats failure
- Parser combinators → Parser state: threads state
- Parser combinators → Parser results: returns results
- Parser combinators → Parse errors: recovers errors
- Basic parsers → Parser results: returns results
- Field and list parsers → Basic parsers: validates objects
- Field and list parsers → Parser combinators: composes parsers
- Field and list parsers → Parser state: tracks paths
- Parser results → Parse errors: throws failures
- Parse errors → Error utilities: defines recovery
- runParser → Parsed value or error: returns or throws
