@ai-react-markdown/engine 2.7.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -88,13 +88,6 @@ interface Deprecation {
88
88
  * `.parse()` and `.runSync()` (or `.run()`) on it.
89
89
  */
90
90
  declare function createProcessor(options: Readonly<PipelineOptions>): Processor<Root, Root, Root$1, undefined, undefined>;
91
- /**
92
- * Wrap the markdown string in a VFile so plugins that consume `file.value`
93
- * work. Mirrors react-markdown: in dev `unreachable` throws an AssertionError
94
- * for non-string `children`; in prod it silently no-ops, leaving `file.value`
95
- * undefined and unified treating the input as empty.
96
- */
97
- declare function createFile(options: Readonly<PipelineOptions>): VFile;
98
91
 
99
92
  /**
100
93
  * The pure pipeline stages, lifted verbatim from core's Markdown.tsx
@@ -227,7 +220,7 @@ declare const defaultUrlTransform: UrlTransform;
227
220
  * rest of that line as raw content too (`<!-- c --> tail`) — same seam.
228
221
  * 7. **Phase poison** (`phasePoisonedAt`) — points where this line-level
229
222
  * model may have DIVERGED from micromark and provably cannot resync:
230
- * a fence/math open suppressed by `mayBeRawToMicromark` (only certainly
223
+ * a fence/math open suppressed inside an html-flow run (only certainly
231
224
  * swallowed at top level — in a container it really opens and the
232
225
  * open/close phase inverts permanently), and a paragraph-inline `<!--`
233
226
  * that fails to close by end of line (literal text to micromark, but
@@ -533,7 +526,8 @@ declare function advanceIncrementalParse(prev: IncrementalParseState | null, con
533
526
  declare function attributeHastChildren(mdast: Root, hast: Root$1, stopAt?: number): number[];
534
527
 
535
528
  /**
536
- * TEST/STORY helper (not exported from the package barrel): prefix
529
+ * TEST/STORY helper (exported from the package barrel for the Storybook
530
+ * streams): prefix
537
531
  * snapshots sliced at CODE-POINT granularity, so a frame boundary never
538
532
  * splits a surrogate pair. Every streaming verifier in the repo — the
539
533
  * splice-equivalence arbiter, the prefixFreeze experiment harness, and the
@@ -1296,13 +1290,6 @@ declare const defaultEnginePlugins: readonly AIMarkdownEnginePlugin[];
1296
1290
  * `tagName === 'section'` AND presence of the `dataFootnotes` property.
1297
1291
  */
1298
1292
  declare function isFootnoteSection(node: Element): boolean;
1299
- /**
1300
- * Whitespace-only text node. `mdast-util-to-hast`'s `state.wrap(content,
1301
- * true)` interleaves `\n` text nodes between (and around) the block-level
1302
- * children of an `<li>`, so any code reasoning about a list item's real
1303
- * children has to look past them.
1304
- */
1305
- declare function isWhitespaceText(c: ElementContent): boolean;
1306
1293
  /**
1307
1294
  * Index of the last child that is not a whitespace-only text node, or -1 if
1308
1295
  * there is none.
@@ -1500,24 +1487,6 @@ declare function measureStage<T>(stage: PipelineStage, fn: () => T, instanceId?:
1500
1487
  */
1501
1488
 
1502
1489
  type Schema = typeof defaultSchema;
1503
- type AttributeEntry = NonNullable<NonNullable<Schema['attributes']>[string]>[number];
1504
- /**
1505
- * Extend the allowlist for a tag's `className` attribute with extra class
1506
- * names while preserving all other default entries.
1507
- *
1508
- * `findDefinition` in hast-util-sanitize returns the *first* matching entry
1509
- * for a given property name, so appending a second `className` entry would be
1510
- * ignored. Instead, merge the allowed values into the existing entry.
1511
- *
1512
- * Edge cases:
1513
- * - `existing` is `undefined` → returns a single new `['className', ...extra]`
1514
- * - `existing` has no `className` entry → appends one with just the extras
1515
- * - `existing` has a bare-string `'className'` entry (hast-util-sanitize's
1516
- * "allow all values" form) → would be narrowed to an allow-list. This is a
1517
- * semantics change, but the current `defaultSchema.attributes.code` entry
1518
- * is always tuple-form, so this branch is defensive only.
1519
- */
1520
- declare function mergeClassNameAllowlist(existing: ReadonlyArray<AttributeEntry> | undefined, extraClassNames: readonly string[]): AttributeEntry[];
1521
1490
  declare const sanitizeSchema: Schema;
1522
1491
 
1523
1492
  /**
@@ -1728,49 +1697,6 @@ type AIMDContentPreprocessor = (content: string) => string;
1728
1697
  */
1729
1698
  declare function preprocessAIMDContent(content: string, extraPreprocessors?: AIMDContentPreprocessor[], latexPreprocessor?: AIMDContentPreprocessor): string;
1730
1699
 
1731
- /**
1732
- * LaTeX preprocessing pipeline.
1733
- *
1734
- * Normalizes raw markdown so that LaTeX expressions survive the remark/rehype
1735
- * rendering pipeline intact. The main entry point is {@link preprocessLaTeX},
1736
- * which splits content into protected regions (code blocks, inline code, HTML
1737
- * tags) and applies a sequence of transformations to the unprotected text:
1738
- *
1739
- * 1. Escape mhchem commands (`\ce`, `\pu`)
1740
- * 2. Escape currency dollar signs (e.g. `$100`, `$1,000.50`)
1741
- * 3. Convert bracket delimiters (`\[...\]`, `\(...\)`) to dollar delimiters
1742
- * 4. Escape pipes inside closed LaTeX blocks to prevent GFM table interference
1743
- * 5. Escape pipes inside unclosed LaTeX blocks (streaming partial content)
1744
- * 6. Escape underscores inside `\text{...}` commands
1745
- * 7. Convert single-dollar delimiters to double-dollar delimiters
1746
- * 8. Truncate trailing unclosed LaTeX blocks (streaming protection)
1747
- *
1748
- * Thanks to the implementations from the following repositories:
1749
- * - https://github.com/lobehub/lobe-ui/blob/master/src/hooks/useMarkdown/latex.ts
1750
- * - https://github.com/danny-avila/LibreChat/blob/main/client/src/utils/latex.ts
1751
- *
1752
- * @module preprocessors/latex
1753
- */
1754
- interface Segment {
1755
- text: string;
1756
- isCode: boolean;
1757
- }
1758
- /**
1759
- * Split content into alternating text and protected segments.
1760
- * Protected segments (isCode: true) are excluded from LaTeX processing:
1761
- * - fenced multiline code blocks: 3+ backticks or tildes at the *start of a
1762
- * line* (any indentation — container-relative limits are not modelled).
1763
- * Mid-line runs are never fence openers. INDENTED code blocks (4+ spaces
1764
- * after a blank line, outside any container) are NOT modelled: without a
1765
- * container model they cannot be told from a list item's continuation
1766
- * paragraph, and protecting them would silence math in nested lists.
1767
- * Known limitation — `$` inside an indented code block may be rewritten.
1768
- * - inline code spans: a run of N backticks closed by another run of exactly
1769
- * N backticks. May span newlines. Multi-backtick forms (e.g. `` `` `x` ``)
1770
- * are supported so literal backtick characters can appear inside.
1771
- * - HTML tags (e.g. `<span>$</span>` where `$` should not be treated as LaTeX).
1772
- */
1773
- declare function splitByProtectedRegions(content: string): Segment[];
1774
1700
  /**
1775
1701
  * Main LaTeX preprocessor entry point.
1776
1702
  *
@@ -1879,4 +1805,4 @@ type RemendPreprocessorOptions = Omit<RemendOptions, 'katex' | 'inlineKatex'>;
1879
1805
  */
1880
1806
  declare function createRemendPreprocessor(options?: RemendPreprocessorOptions): AIMDContentPreprocessor;
1881
1807
 
1882
- export { type AIMDContentPreprocessor, type AIMarkdownEnginePlugin, type AIMarkdownEnginePluginName, type AdvanceOptions, type AdvanceResult, type AllowElement, type ChunkData, type Contribution, type CrossChunkHandlerOptions, DEFAULT_PAYLOAD, type DefLabelScanner, type DefLabels, type Deprecation, type EnginePluginInternals, type EnginePluginStage, type ExtractContributionsOptions, type FootnoteDef, type FreezeBoundaryOptions, type IncrementalParseState, type IncrementalStage, type LinkDef, PIPELINE_STAGES, type ParsedMarkdown, type PhantomLabels, type PipelineOptions, type PipelineStage, type RefKind, type RefRecord, type Registry, type RegistryInternal, type RehypePlugins, type RehypeRebaseHashLinksOptions, type RemarkPlugins, type RemarkRehypeOptions, type RemendPreprocessorOptions, SENTINEL_FN_CONTENT, SENTINEL_LINK_URL, SMOOTH_STREAM_PACING_PRESETS, STAGE_MEASURE_PREFIX, type SanitizeSchema, type SmoothStreamController, type SmoothStreamOptions, type SmoothStreamPacing, type SmoothStreamPacingParams, type TransformContext, type UrlAttrKey, type UrlAttrTag, type UrlTransform, advanceIncrementalParse, attributeHastChildren, buildCoreRehypePlugins, buildCoreRemarkPlugins, buildCoreRemarkRehypeOptions, buildCrossChunkHandlers, buildPhantomSuffix, buildTransform, codePointSnapshots, collectDefLabels, computeFreezeBoundary, createDefLabelScanner, createFile, createIncrementalLatexPreprocessor, createProcessor, createRegistry, createRemendPreprocessor, createSmoothStreamController, defaultEnginePlugins, defaultUrlTransform, definitionList, extendSanitizeSchema, extractContributions, extractDefBodiesFromHast, footnoteSafeId, getEnginePluginInternals, hasLoneSurrogate, highlight, isFootnoteSection, isWhitespaceText, lastMeaningfulIdx, measureStage, mergeClassNameAllowlist, normalizeForMatch, normalizeId, pangu, parseStage, phantomSuffixCloser, preprocessAIMDContent, preprocessLaTeX, rehypeFooterAdorn, rehypeRebaseHashLinks, removeComments, sanitizeCrossChunkUrl, sanitizeSchema, shortenDocumentId, smartypants, sourceIdFromFootnoteLiId, splitByProtectedRegions, subscribeStageTimings, transformStage, withDefs };
1808
+ export { type AIMDContentPreprocessor, type AIMarkdownEnginePlugin, type AIMarkdownEnginePluginName, type AdvanceOptions, type AdvanceResult, type AllowElement, type ChunkData, type Contribution, type CrossChunkHandlerOptions, DEFAULT_PAYLOAD, type DefLabelScanner, type DefLabels, type Deprecation, type EnginePluginInternals, type EnginePluginStage, type ExtractContributionsOptions, type FootnoteDef, type FreezeBoundaryOptions, type IncrementalParseState, type IncrementalStage, type LinkDef, PIPELINE_STAGES, type ParsedMarkdown, type PhantomLabels, type PipelineOptions, type PipelineStage, type RefKind, type RefRecord, type Registry, type RegistryInternal, type RehypePlugins, type RehypeRebaseHashLinksOptions, type RemarkPlugins, type RemarkRehypeOptions, type RemendPreprocessorOptions, SENTINEL_FN_CONTENT, SENTINEL_LINK_URL, SMOOTH_STREAM_PACING_PRESETS, STAGE_MEASURE_PREFIX, type SanitizeSchema, type SmoothStreamController, type SmoothStreamOptions, type SmoothStreamPacing, type SmoothStreamPacingParams, type TransformContext, type UrlAttrKey, type UrlAttrTag, type UrlTransform, advanceIncrementalParse, attributeHastChildren, buildCoreRehypePlugins, buildCoreRemarkPlugins, buildCoreRemarkRehypeOptions, buildCrossChunkHandlers, buildPhantomSuffix, buildTransform, codePointSnapshots, collectDefLabels, computeFreezeBoundary, createDefLabelScanner, createIncrementalLatexPreprocessor, createProcessor, createRegistry, createRemendPreprocessor, createSmoothStreamController, defaultEnginePlugins, defaultUrlTransform, definitionList, extendSanitizeSchema, extractContributions, extractDefBodiesFromHast, footnoteSafeId, getEnginePluginInternals, hasLoneSurrogate, highlight, isFootnoteSection, lastMeaningfulIdx, measureStage, normalizeForMatch, normalizeId, pangu, parseStage, phantomSuffixCloser, preprocessAIMDContent, preprocessLaTeX, rehypeFooterAdorn, rehypeRebaseHashLinks, removeComments, sanitizeCrossChunkUrl, sanitizeSchema, shortenDocumentId, smartypants, sourceIdFromFootnoteLiId, subscribeStageTimings, transformStage, withDefs };
package/dist/index.d.ts CHANGED
@@ -88,13 +88,6 @@ interface Deprecation {
88
88
  * `.parse()` and `.runSync()` (or `.run()`) on it.
89
89
  */
90
90
  declare function createProcessor(options: Readonly<PipelineOptions>): Processor<Root, Root, Root$1, undefined, undefined>;
91
- /**
92
- * Wrap the markdown string in a VFile so plugins that consume `file.value`
93
- * work. Mirrors react-markdown: in dev `unreachable` throws an AssertionError
94
- * for non-string `children`; in prod it silently no-ops, leaving `file.value`
95
- * undefined and unified treating the input as empty.
96
- */
97
- declare function createFile(options: Readonly<PipelineOptions>): VFile;
98
91
 
99
92
  /**
100
93
  * The pure pipeline stages, lifted verbatim from core's Markdown.tsx
@@ -227,7 +220,7 @@ declare const defaultUrlTransform: UrlTransform;
227
220
  * rest of that line as raw content too (`<!-- c --> tail`) — same seam.
228
221
  * 7. **Phase poison** (`phasePoisonedAt`) — points where this line-level
229
222
  * model may have DIVERGED from micromark and provably cannot resync:
230
- * a fence/math open suppressed by `mayBeRawToMicromark` (only certainly
223
+ * a fence/math open suppressed inside an html-flow run (only certainly
231
224
  * swallowed at top level — in a container it really opens and the
232
225
  * open/close phase inverts permanently), and a paragraph-inline `<!--`
233
226
  * that fails to close by end of line (literal text to micromark, but
@@ -533,7 +526,8 @@ declare function advanceIncrementalParse(prev: IncrementalParseState | null, con
533
526
  declare function attributeHastChildren(mdast: Root, hast: Root$1, stopAt?: number): number[];
534
527
 
535
528
  /**
536
- * TEST/STORY helper (not exported from the package barrel): prefix
529
+ * TEST/STORY helper (exported from the package barrel for the Storybook
530
+ * streams): prefix
537
531
  * snapshots sliced at CODE-POINT granularity, so a frame boundary never
538
532
  * splits a surrogate pair. Every streaming verifier in the repo — the
539
533
  * splice-equivalence arbiter, the prefixFreeze experiment harness, and the
@@ -1296,13 +1290,6 @@ declare const defaultEnginePlugins: readonly AIMarkdownEnginePlugin[];
1296
1290
  * `tagName === 'section'` AND presence of the `dataFootnotes` property.
1297
1291
  */
1298
1292
  declare function isFootnoteSection(node: Element): boolean;
1299
- /**
1300
- * Whitespace-only text node. `mdast-util-to-hast`'s `state.wrap(content,
1301
- * true)` interleaves `\n` text nodes between (and around) the block-level
1302
- * children of an `<li>`, so any code reasoning about a list item's real
1303
- * children has to look past them.
1304
- */
1305
- declare function isWhitespaceText(c: ElementContent): boolean;
1306
1293
  /**
1307
1294
  * Index of the last child that is not a whitespace-only text node, or -1 if
1308
1295
  * there is none.
@@ -1500,24 +1487,6 @@ declare function measureStage<T>(stage: PipelineStage, fn: () => T, instanceId?:
1500
1487
  */
1501
1488
 
1502
1489
  type Schema = typeof defaultSchema;
1503
- type AttributeEntry = NonNullable<NonNullable<Schema['attributes']>[string]>[number];
1504
- /**
1505
- * Extend the allowlist for a tag's `className` attribute with extra class
1506
- * names while preserving all other default entries.
1507
- *
1508
- * `findDefinition` in hast-util-sanitize returns the *first* matching entry
1509
- * for a given property name, so appending a second `className` entry would be
1510
- * ignored. Instead, merge the allowed values into the existing entry.
1511
- *
1512
- * Edge cases:
1513
- * - `existing` is `undefined` → returns a single new `['className', ...extra]`
1514
- * - `existing` has no `className` entry → appends one with just the extras
1515
- * - `existing` has a bare-string `'className'` entry (hast-util-sanitize's
1516
- * "allow all values" form) → would be narrowed to an allow-list. This is a
1517
- * semantics change, but the current `defaultSchema.attributes.code` entry
1518
- * is always tuple-form, so this branch is defensive only.
1519
- */
1520
- declare function mergeClassNameAllowlist(existing: ReadonlyArray<AttributeEntry> | undefined, extraClassNames: readonly string[]): AttributeEntry[];
1521
1490
  declare const sanitizeSchema: Schema;
1522
1491
 
1523
1492
  /**
@@ -1728,49 +1697,6 @@ type AIMDContentPreprocessor = (content: string) => string;
1728
1697
  */
1729
1698
  declare function preprocessAIMDContent(content: string, extraPreprocessors?: AIMDContentPreprocessor[], latexPreprocessor?: AIMDContentPreprocessor): string;
1730
1699
 
1731
- /**
1732
- * LaTeX preprocessing pipeline.
1733
- *
1734
- * Normalizes raw markdown so that LaTeX expressions survive the remark/rehype
1735
- * rendering pipeline intact. The main entry point is {@link preprocessLaTeX},
1736
- * which splits content into protected regions (code blocks, inline code, HTML
1737
- * tags) and applies a sequence of transformations to the unprotected text:
1738
- *
1739
- * 1. Escape mhchem commands (`\ce`, `\pu`)
1740
- * 2. Escape currency dollar signs (e.g. `$100`, `$1,000.50`)
1741
- * 3. Convert bracket delimiters (`\[...\]`, `\(...\)`) to dollar delimiters
1742
- * 4. Escape pipes inside closed LaTeX blocks to prevent GFM table interference
1743
- * 5. Escape pipes inside unclosed LaTeX blocks (streaming partial content)
1744
- * 6. Escape underscores inside `\text{...}` commands
1745
- * 7. Convert single-dollar delimiters to double-dollar delimiters
1746
- * 8. Truncate trailing unclosed LaTeX blocks (streaming protection)
1747
- *
1748
- * Thanks to the implementations from the following repositories:
1749
- * - https://github.com/lobehub/lobe-ui/blob/master/src/hooks/useMarkdown/latex.ts
1750
- * - https://github.com/danny-avila/LibreChat/blob/main/client/src/utils/latex.ts
1751
- *
1752
- * @module preprocessors/latex
1753
- */
1754
- interface Segment {
1755
- text: string;
1756
- isCode: boolean;
1757
- }
1758
- /**
1759
- * Split content into alternating text and protected segments.
1760
- * Protected segments (isCode: true) are excluded from LaTeX processing:
1761
- * - fenced multiline code blocks: 3+ backticks or tildes at the *start of a
1762
- * line* (any indentation — container-relative limits are not modelled).
1763
- * Mid-line runs are never fence openers. INDENTED code blocks (4+ spaces
1764
- * after a blank line, outside any container) are NOT modelled: without a
1765
- * container model they cannot be told from a list item's continuation
1766
- * paragraph, and protecting them would silence math in nested lists.
1767
- * Known limitation — `$` inside an indented code block may be rewritten.
1768
- * - inline code spans: a run of N backticks closed by another run of exactly
1769
- * N backticks. May span newlines. Multi-backtick forms (e.g. `` `` `x` ``)
1770
- * are supported so literal backtick characters can appear inside.
1771
- * - HTML tags (e.g. `<span>$</span>` where `$` should not be treated as LaTeX).
1772
- */
1773
- declare function splitByProtectedRegions(content: string): Segment[];
1774
1700
  /**
1775
1701
  * Main LaTeX preprocessor entry point.
1776
1702
  *
@@ -1879,4 +1805,4 @@ type RemendPreprocessorOptions = Omit<RemendOptions, 'katex' | 'inlineKatex'>;
1879
1805
  */
1880
1806
  declare function createRemendPreprocessor(options?: RemendPreprocessorOptions): AIMDContentPreprocessor;
1881
1807
 
1882
- export { type AIMDContentPreprocessor, type AIMarkdownEnginePlugin, type AIMarkdownEnginePluginName, type AdvanceOptions, type AdvanceResult, type AllowElement, type ChunkData, type Contribution, type CrossChunkHandlerOptions, DEFAULT_PAYLOAD, type DefLabelScanner, type DefLabels, type Deprecation, type EnginePluginInternals, type EnginePluginStage, type ExtractContributionsOptions, type FootnoteDef, type FreezeBoundaryOptions, type IncrementalParseState, type IncrementalStage, type LinkDef, PIPELINE_STAGES, type ParsedMarkdown, type PhantomLabels, type PipelineOptions, type PipelineStage, type RefKind, type RefRecord, type Registry, type RegistryInternal, type RehypePlugins, type RehypeRebaseHashLinksOptions, type RemarkPlugins, type RemarkRehypeOptions, type RemendPreprocessorOptions, SENTINEL_FN_CONTENT, SENTINEL_LINK_URL, SMOOTH_STREAM_PACING_PRESETS, STAGE_MEASURE_PREFIX, type SanitizeSchema, type SmoothStreamController, type SmoothStreamOptions, type SmoothStreamPacing, type SmoothStreamPacingParams, type TransformContext, type UrlAttrKey, type UrlAttrTag, type UrlTransform, advanceIncrementalParse, attributeHastChildren, buildCoreRehypePlugins, buildCoreRemarkPlugins, buildCoreRemarkRehypeOptions, buildCrossChunkHandlers, buildPhantomSuffix, buildTransform, codePointSnapshots, collectDefLabels, computeFreezeBoundary, createDefLabelScanner, createFile, createIncrementalLatexPreprocessor, createProcessor, createRegistry, createRemendPreprocessor, createSmoothStreamController, defaultEnginePlugins, defaultUrlTransform, definitionList, extendSanitizeSchema, extractContributions, extractDefBodiesFromHast, footnoteSafeId, getEnginePluginInternals, hasLoneSurrogate, highlight, isFootnoteSection, isWhitespaceText, lastMeaningfulIdx, measureStage, mergeClassNameAllowlist, normalizeForMatch, normalizeId, pangu, parseStage, phantomSuffixCloser, preprocessAIMDContent, preprocessLaTeX, rehypeFooterAdorn, rehypeRebaseHashLinks, removeComments, sanitizeCrossChunkUrl, sanitizeSchema, shortenDocumentId, smartypants, sourceIdFromFootnoteLiId, splitByProtectedRegions, subscribeStageTimings, transformStage, withDefs };
1808
+ export { type AIMDContentPreprocessor, type AIMarkdownEnginePlugin, type AIMarkdownEnginePluginName, type AdvanceOptions, type AdvanceResult, type AllowElement, type ChunkData, type Contribution, type CrossChunkHandlerOptions, DEFAULT_PAYLOAD, type DefLabelScanner, type DefLabels, type Deprecation, type EnginePluginInternals, type EnginePluginStage, type ExtractContributionsOptions, type FootnoteDef, type FreezeBoundaryOptions, type IncrementalParseState, type IncrementalStage, type LinkDef, PIPELINE_STAGES, type ParsedMarkdown, type PhantomLabels, type PipelineOptions, type PipelineStage, type RefKind, type RefRecord, type Registry, type RegistryInternal, type RehypePlugins, type RehypeRebaseHashLinksOptions, type RemarkPlugins, type RemarkRehypeOptions, type RemendPreprocessorOptions, SENTINEL_FN_CONTENT, SENTINEL_LINK_URL, SMOOTH_STREAM_PACING_PRESETS, STAGE_MEASURE_PREFIX, type SanitizeSchema, type SmoothStreamController, type SmoothStreamOptions, type SmoothStreamPacing, type SmoothStreamPacingParams, type TransformContext, type UrlAttrKey, type UrlAttrTag, type UrlTransform, advanceIncrementalParse, attributeHastChildren, buildCoreRehypePlugins, buildCoreRemarkPlugins, buildCoreRemarkRehypeOptions, buildCrossChunkHandlers, buildPhantomSuffix, buildTransform, codePointSnapshots, collectDefLabels, computeFreezeBoundary, createDefLabelScanner, createIncrementalLatexPreprocessor, createProcessor, createRegistry, createRemendPreprocessor, createSmoothStreamController, defaultEnginePlugins, defaultUrlTransform, definitionList, extendSanitizeSchema, extractContributions, extractDefBodiesFromHast, footnoteSafeId, getEnginePluginInternals, hasLoneSurrogate, highlight, isFootnoteSection, lastMeaningfulIdx, measureStage, normalizeForMatch, normalizeId, pangu, parseStage, phantomSuffixCloser, preprocessAIMDContent, preprocessLaTeX, rehypeFooterAdorn, rehypeRebaseHashLinks, removeComments, sanitizeCrossChunkUrl, sanitizeSchema, shortenDocumentId, smartypants, sourceIdFromFootnoteLiId, subscribeStageTimings, transformStage, withDefs };