Skip to content

fix(cli): await config functions before parsing - #4138

Merged
UziTech merged 1 commit into
markedjs:masterfrom
YIOYIOIOI:fix/await-cli-config-functions
Oct 26, 2026
Merged

UziTech merged 1 commit into
markedjs:masterfrom
YIOYIOIOI:fix/await-cli-config-functions

Conversation

@YIOYIOIOI

Copy link
Copy Markdown
Contributor

Marked version: 18.1.1 (cdbdc012)

Markdown flavor: n/a (CLI configuration)

Description

The CLI awaits loading a config module but ignores the Promise returned by an exported config function. A function that defers extension setup can therefore finish after parsing, or never finish because the CLI exits first. Initialization failures also produce successful output and exit status 0.

For example, this config should enable line breaks before rendering:

import { setImmediate } from 'node:timers/promises';

export default async marked => {
  await setImmediate();
  marked.use({ breaks: true });
};

For input line1\nline2, master emits <p>line1\nline2</p> instead of <p>line1<br>line2</p>.

Await the config callback in runConfig() so setup finishes before parsing and rejected callbacks reach the existing CLI error handler. Document the behavior and add regressions for asynchronous setup and rejection, plus a synchronous callback control. The asynchronous tests launch the actual CLI in separate processes to check output and exit status.

Validation

  • Both asynchronous regressions fail without the source change; the synchronous control passes.
  • npm test passes on Windows with Node 24.18.0: 1,911 spec executions, 202 unit tests, documentation build, UMD/CJS checks, type/export checks, and ESLint.
  • git diff --check passes.

Contributor

  • Test(s) exist to ensure functionality and minimize regression.
  • No tests required for this PR.
  • The configuration behavior is documented.

Committer

@vercel

vercel Bot commented Oct 13, 2026

Copy link
Copy Markdown

@YIOYIOIOI is attempting to deploy a commit to the MarkedJS Team on Vercel.

A member of the Team first needs to authorize it.

@vercel

vercel Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
marked-website Ready Ready Preview Oct 13, 2026 5:48pm UTC

Request Review

@UziTech UziTech left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch! 💯

@UziTech
UziTech merged commit 3a11ad1 into markedjs:master Oct 26, 2026
8 checks passed
github-actions Bot pushed a commit that referenced this pull request Oct 26, 2026
## [18.1.2](v18.1.1...v18.1.2) (2026-10-26)

### Bug Fixes

* allow a tab or end of input after a type 6 html block tag name ([#4128](#4128)) ([e09c40d](e09c40d))
* apply emphasis flanking and rules 9-10 to the whole delimiter run ([#4145](#4145)) ([5d8e234](5d8e234))
* **cli:** await config functions before parsing ([#4138](#4138)) ([3a11ad1](3a11ad1))
* **cli:** create no-clobber output files atomically ([#4135](#4135)) ([e7c4f64](e7c4f64))
* do not continue a block quote paragraph from a whitespace-only line ([#4134](#4134)) ([42f34a8](42f34a8))
* expand a tab after the block quote marker to the next tab stop ([#4110](#4110)) ([2d3899b](2d3899b))
* honor per-call async options when composing hooks ([#4139](#4139)) ([379be9d](379be9d))
* keep a line starting with # but no space in the list item ([#4127](#4127)) ([6b63189](6b63189))
* keep duplicate link definitions in the tokens ([#4132](#4132)) ([2784acc](2784acc))
* keep lazy lines after a list in a nested blockquote ([#4137](#4137)) ([38c7e55](38c7e55))
* keep lazy setext underlines in list items as text ([#4126](#4126)) ([398234c](398234c))
* render nested image alt formatting as plain text ([#4131](#4131)) ([15f59bb](15f59bb))
* stop an unclosed inline raw tag from unescaping later blocks ([#4130](#4130)) ([4562b6f](4562b6f))

### Performance Improvements

* ~16% faster parsing by skipping em/strong masking for runs without *, _ or ~ ([#4142](#4142)) ([f0fd3e0](f0fd3e0))

This branch was successfully deployed

1 active deployment
Preview — 61acb7a3 Deployed Oct 13, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants