Skip to content

@lanexio/parser-grammar-mdx

This page documents @lanexio/parser-grammar-mdx, the MDX grammar package implementing MDX 3.0 — Markdown with JSX and ESM import/export support.

  • Version: Stable
  • Module name: parser-grammar-mdx
  • Package: @lanexio/parser-grammar-mdx
  • Import path: @lanexio/parser-grammar-mdx
  • Layer: 2 (Grammar)
  • Runtime: Universal
  • Module format: ESM
  • Stability: Stable
  • Primary use case: Parse MDX documents (Markdown with JSX) into a flat AST.
  • You need to parse MDX documents (Markdown + JSX + ESM) into a traversable AST.
  • You need balanced JSX expression scanning for tooling workflows.
BoundaryDescription
InputsUint8Array (source bytes) + optional ParseMdxOptions
OutputsLexTree (flat AST rooted at MdxKind.MdxJsxFlowElement)
Side effectsNone
DeterminismYes
External dependencies@lanexio/parser-core, @lanexio/parser-grammar-markdown
Never-throw guaranteeYes
Security surfaceNone (parse only, no output generation)
  1. Install the package.

    Terminal window
    pnpm add @lanexio/parser-grammar-mdx
  2. Import the named export.

    import { parseMdx } from '@lanexio/parser-grammar-mdx';
RequirementRequiredLayerNotes
@lanexio/parser-coreYes1^1.0.0
@lanexio/parser-grammar-markdownYes2^1.0.0 (delegated Markdown parsing)
import { parseMdx } from '@lanexio/parser-grammar-mdx';
const encoder = new TextEncoder();
const bytes = encoder.encode('# Hello\n\n<Button>Click</Button>\n\nexport const name = "World"');
const tree = parseMdx(bytes);
console.log(tree.nodeCount);
const tree = parseMdx(encoder.encode('# Hello'), { gfm: false });
ExportTypeDescription
parseMdx(source: Uint8Array, options?: ParseMdxOptions) => LexTreeParse MDX. Never throws.
scanBalanced(source: Uint8Array, options?: ScanBalancedOptions) => BalancedRegion[]Scan for balanced JSX expressions.
MdxKindconst objectNumeric kind IDs for all MDX node types.
MdxFieldconst objectNumeric field IDs for MDX element slots.
MDX_FIELD_NAMES_BY_IDreadonly string[]Field name lookup by numeric field ID.
MDX_KIND_NAMES_BY_IDreadonly Record<number, string>Kind-name lookup by numeric ID.
MdxParseErrorCodeconst objectParse error code constants.
mdxGrammarLanexioParserPureGrammarGrammar descriptor for use with parser-pure.
mdxRegistrationGrammarRegistrationRegistration for the unified grammar registry.
FieldTypeRequiredDefaultDescription
gfmbooleanNotrueEnable GFM extensions in the embedded Markdown parser.
FieldTypeRequiredDefaultDescription
(reserved)---Reserved for future extension.
PropertyTypeDescription
rootLexNodeRoot node (MdxKind.MdxJsxFlowElement).
nodeCountnumberTotal nodes in the tree.
sourceUint8ArrayOriginal parsed bytes.
TypePurposeNotes
ParseMdxOptionsOptions for parseMdx{ gfm?: boolean }
ScanBalancedOptionsOptions for scanBalancedReserved
BalancedRegionBalanced expression regionReturned by scanBalanced
MdxKindTypeUnion of all MdxKind valuesType-safe kind reference
MdxFieldTypeUnion of all MdxField valuesType-safe field reference
MdxParseErrorParse error descriptorReturned via error codes

GFM is enabled by default in the embedded Markdown parser. Pass { gfm: false } for strict CommonMark within MDX documents.

scanBalanced is a utility for tooling workflows that need to find balanced JSX expressions (braces, parentheses, brackets, angle brackets) in MDX source.

  • No direct accessibility surface. The MDX parser produces flat AST data structures.
ConcernStatus
Generated output semanticsNot applicable (syntax format)
ARIA attributes in serialized outputNot applicable
Semantic element round-tripNot applicable
  • parseMdx never throws on any byte sequence.
ThreatMitigationStatus
Malformed input byte sequencePanic-free guarantee: all inputs accepted, errors produce LexError AST nodesImplemented
PackageRelationshipLayerNotes
@lanexio/parser-coreRequires1Provides LexTree, LexNode, LexCursor
@lanexio/parser-grammar-markdownRequires2Delegated Markdown parsing
@lanexio/parserConsumes6Unified entry point
VersionDateStatusNotable changes
1.0.02026-05-29CurrentInitial stable release. Apache-2.0.
  • None.