Skip to content

Build(deps): Bump asciidoctor from 3.0.4 to 4.0.4#85

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/npm_and_yarn/asciidoctor-4.0.4
Open

Build(deps): Bump asciidoctor from 3.0.4 to 4.0.4#85
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/npm_and_yarn/asciidoctor-4.0.4

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 19, 2026

Copy link
Copy Markdown
Contributor

Bumps asciidoctor from 3.0.4 to 4.0.4.

Release notes

Sourced from asciidoctor's releases.

v4.0.4

Summary

Release meta

Released on: 2026-07-15 Released by: ggrossetie Published by: GitHub

Logs: full diff

Changelog

Improvements

  • Declare the instance form ("style 3") of the Registry extension registration methods in the TypeScript typings. The runtime has always accepted an already-constructed processor (registry.includeProcessor(new MyIncludeProcessor())) in addition to the class and registration-function forms, but the 4.0 typings only declared the latter two, forcing consumers such as the VS Code AsciiDoc extension to augment the module by hand. preprocessor, treeProcessor, postprocessor, includeProcessor, docinfoProcessor, block, blockMacro and inlineMacro now expose an overload accepting a processor instance (the syntax processor methods also accept the optional explicit name), and the compile-only type tests cover the instance form
  • Type the filter callback accepted by AbstractBlock#findBy (and its query alias) as (node: AbstractBlock) => boolean | string instead of the bare Function, so the candidate node passed to the callback resolves as an AbstractBlock without casts — both in the two-argument form and in the findBy(callback) shorthand
  • Type the reader received by preprocessor and include processor callbacks as PreprocessorReader instead of Reader, and export PreprocessorReader from the package root. Preprocessor#process, IncludeProcessor#process and the matching DSL process(fn) callbacks actually receive a PreprocessorReader at runtime, so its members (pushInclude, getIncludeDepth, …) now resolve without casts or manual module augmentation

Infrastructure

  • Display the package version number in the generated TypeDoc API documentation (includeVersion option), so both the @asciidoctor/core API docs and the asciidoctor CLI docs show which release they document (e.g. @asciidoctor/core - v4.0.3)
  • Publish a major.minor alias of the TypeDoc API documentation on each stable release — e.g. releasing v4.0.4 (re)deploys the docs to both 4.0.4/ and 4.0/ on GitHub Pages, so the 4.0 URL always points to the documentation of the latest 4.0.x release
  • Simplify the release workflow: the intermediate "Bump version for release" workflow (release-bump.yml) is gone — the Release workflow is now dispatched directly with the version to release and performs the whole chain (bump + tag, build, npm publish, GitHub release, docs) in a single run, from main or from a maintenance branch (e.g. 4.0.x or v4.0.x). The git commands (commit, tag, push) live in the workflow itself; the release scripts are reduced to three focused tools: tasks/version.js <version> (sets both package versions and keeps the asciidoctor@asciidoctor/core dependency in sync), tasks/changelog.js release <version> (rolls the Unreleased section into a dated release section) / tasks/changelog.js notes <version> (prints the Markdown release notes of a version to stdout), and tasks/publish.js (publishes both packages to npmjs). tasks/release.js, scripts/publish.sh, the npm run release script and the skip_publish input are gone (use GitHub’s "Re-run failed jobs" to resume a partially failed release). The reusable build and native-image workflows accept a ref input so the release builds the tagged commit (with the bumped version) rather than the pre-bump branch head
  • Publishing a maintenance release no longer steals the npm latest dist-tag: when the version being published is older than the currently published latest (e.g. releasing 4.0.5 while 4.1.0 is out), the packages are published under a latest-<major>.<minor> dist-tag (e.g. latest-4.0, following the latest-2 convention already used for the 2.x line) instead

v4.0.3

Summary

Release meta

Released on: 2026-07-13 Released by: github-actions[bot] Published by: GitHub

Logs: full diff

Changelog

Bug Fixes

  • Fix AsciiDoc table cells (a) losing their content when they belong to a table that is itself nested inside another AsciiDoc cell — the deeper cells rendered as an empty <div class="content"></div> (text became invisible). Document#convert computes each AsciiDoc cell’s inner content in _convertAsciiDocCells, but that pass only ran on the root document (guarded by !parentDocument) and, when it converted an AsciiDoc cell’s inner document, never recursed into the tables inside that inner document. So a nested table’s own AsciiDoc cells were rendered before their _innerContent was ever set. The pass now recurses into a cell’s inner document before rendering it, so AsciiDoc cells at any nesting depth have their content computed first

v4.0.2

Summary

Release meta

... (truncated)

Changelog

Sourced from asciidoctor's changelog.

== v4.0.4 (2026-07-15)

Improvements::

  • Declare the instance form ("style 3") of the Registry extension registration methods in the TypeScript typings. The runtime has always accepted an already-constructed processor (registry.includeProcessor(new MyIncludeProcessor())) in addition to the class and registration-function forms, but the 4.0 typings only declared the latter two, forcing consumers such as the VS Code AsciiDoc extension to augment the module by hand. preprocessor, treeProcessor, postprocessor, includeProcessor, docinfoProcessor, block, blockMacro and inlineMacro now expose an overload accepting a processor instance (the syntax processor methods also accept the optional explicit name), and the compile-only type tests cover the instance form
  • Type the filter callback accepted by AbstractBlock#findBy (and its query alias) as (node: AbstractBlock) => boolean | string instead of the bare Function, so the candidate node passed to the callback resolves as an AbstractBlock without casts — both in the two-argument form and in the findBy(callback) shorthand
  • Type the reader received by preprocessor and include processor callbacks as PreprocessorReader instead of Reader, and export PreprocessorReader from the package root. Preprocessor#process, IncludeProcessor#process and the matching DSL process(fn) callbacks actually receive a PreprocessorReader at runtime, so its members (pushInclude, getIncludeDepth, …) now resolve without casts or manual module augmentation

Infrastructure::

  • Display the package version number in the generated TypeDoc API documentation (includeVersion option), so both the @asciidoctor/core API docs and the asciidoctor CLI docs show which release they document (e.g. @asciidoctor/core - v4.0.3)
  • Publish a major.minor alias of the TypeDoc API documentation on each stable release — e.g. releasing v4.0.4 (re)deploys the docs to both 4.0.4/ and 4.0/ on GitHub Pages, so the 4.0 URL always points to the documentation of the latest 4.0.x release
  • Simplify the release workflow: the intermediate "Bump version for release" workflow (release-bump.yml) is gone — the Release workflow is now dispatched directly with the version to release and performs the whole chain (bump + tag, build, npm publish, GitHub release, docs) in a single run, from main or from a maintenance branch (e.g. 4.0.x or v4.0.x). The git commands (commit, tag, push) live in the workflow itself; the release scripts are reduced to three focused tools: tasks/version.js <version> (sets both package versions and keeps the asciidoctor@asciidoctor/core dependency in sync), tasks/changelog.js release <version> (rolls the Unreleased section into a dated release section) / tasks/changelog.js notes <version> (prints the Markdown release notes of a version to stdout), and tasks/publish.js (publishes both packages to npmjs). tasks/release.js, scripts/publish.sh, the npm run release script and the skip_publish input are gone (use GitHub's "Re-run failed jobs" to resume a partially failed release). The reusable build and native-image workflows accept a ref input so the release builds the tagged commit (with the bumped version) rather than the pre-bump branch head
  • Publishing a maintenance release no longer steals the npm latest dist-tag: when the version being published is older than the currently published latest (e.g. releasing 4.0.5 while 4.1.0 is out), the packages are published under a latest-<major>.<minor> dist-tag (e.g. latest-4.0, following the latest-2 convention already used for the 2.x line) instead

== v4.0.3 (2026-07-13)

Bug Fixes::

  • Fix AsciiDoc table cells (a) losing their content when they belong to a table that is itself nested inside another AsciiDoc cell — the deeper cells rendered as an empty <div class="content"></div> (text became invisible). Document#convert computes each AsciiDoc cell's inner content in _convertAsciiDocCells, but that pass only ran on the root document (guarded by !parentDocument) and, when it converted an AsciiDoc cell's inner document, never recursed into the tables inside that inner document. So a nested table's own AsciiDoc cells were rendered before their _innerContent was ever set. The pass now recurses into a cell's inner document before rendering it, so AsciiDoc cells at any nesting depth have their content computed first

== v4.0.2 (2026-07-06)

Improvements::

  • Improve the TypeScript typings of the extension registration DSL so that the callback (block) form of every Registry processor method is fully typed. block, blockMacro, inlineMacro, preprocessor, treeProcessor, postprocessor, includeProcessor and docinfoProcessor now expose distinct overloads for the class form and the registration-function form; the function's this is inferred as the matching DSL interface (e.g. BlockProcessorDslInterface, PreprocessorDslInterface), and each process(fn) callback receives typed arguments and return type appropriate to its processor — e.g. block/inline macros get (parent: AbstractBlock, target: string, attributes), the preprocessor gets (document: Document, reader: Reader), the postprocessor (document, output: string) => string. The relevant createBlock / createInline helpers are surfaced on this, so block('shout', function () { this.process((parent, reader) => this.createBlock(parent, 'paragraph', reader.getLines().join('\n'))) }) type-checks without casts. New DSL interface types (PreprocessorDslInterface, TreeProcessorDslInterface, PostprocessorDslInterface, BlockMacroProcessorDslInterface) are exported, and a compile-only type test (npm run test:types) guards the typings against regressions. IncludeProcessor#handles accepts both the Ruby-style arity-1 override (handles(target)) and the arity-2 override (handles(doc, target)) — its first parameter is typed Document | string so either shape type-checks when subclassing
  • The HTML5 converter can now inline an SVG image whose target is a data: URI (e.g. image::data:image/svg+xml;base64,…[opts=inline]). readSvgContents decodes both Base64 and percent-encoded data: payloads instead of only reading from a file or remote URI, so a diagram or image embedded as a data-URI can be rendered as inline <svg> without writing a file or enabling allow-uri-read. The SVG format is inferred from the image/svg+xml media type, so an explicit format=svg attribute is no longer required on a data: URI target

Bug Fixes::

  • imageUri now returns a data: URI image target as-is instead of attempting to read it as a file or fetch it via the Fetch API; previously, with both data-uri and allow-uri-read set, a data: URI target (e.g. data:image/png;base64,…) triggered a spurious "could not retrieve image data from URI" warning
  • Fix the built-in asciidoctor-version attribute reporting the hard-coded upstream Ruby version (3.0.0.dev) instead of the actual library version — it now resolves to the @asciidoctor/core package version (e.g. 4.0.1), so references such as {asciidoctor-version} reflect the real release
  • Report Asciidoctor.js (instead of Asciidoctor) in the HTML5 <meta name="generator"> and manpage Generator: metadata, so the generated output identifies the JavaScript library and its version (e.g. Asciidoctor.js 4.0.1)
  • Fix natural cross-references (e.g. +<<Some section title>>+) not resolving inside list items, description list items and table cells — they rendered as <a href="#Some section title">[Some section title]</a> instead of linking to the section's generated ID. Unlike paragraph text (substituted lazily during conversion, after the reftext→id map is built), list/cell/dlist text is pre-computed eagerly in _resolveAllTexts, which ran before the map existed; the synchronous resolveId fallback then matched against the raw reftext attribute rather than the computed xreftext (a section's title), so the lookup failed. Text pre-computation now runs in two passes — titles and reftexts first, then the reftext→id map is built, then list/cell/dlist content text — restoring Ruby's invariant that all references are known before any content substitution resolves a natural cross-reference
  • Fix a registered converter's flat string trait properties (convention #2, e.g. converter.outfilesuffix = '.html') being silently overwritten with accessor functions after the first conversion — normalizing the converter applied the BackendTraits mixin, which installed same-named accessor methods on the instance, clobbering the author's strings. Code reading converter.outfilesuffix then got a function instead of '.html' (and only after normalization, so the value's type changed mid-lifecycle). applyBackendTraits no longer overwrites an existing same-named data property, and Document reads backend traits through _getBackendTraits() rather than the accessor methods, so flat string properties stay strings throughout
  • Fix JavaScript templates not being applied depending on their file extension and the project's module format ({uri-repo}/issues/1841#1841) — a .js template in a "type": "module" (ESM) project crashed with template.render is not a function, and .mjs templates were silently ignored (the extension was not even recognised). The template loader used a CommonJS require() for .js/.cjs files, which returned the ESM namespace object (not the render function) for ESM .js files and did not handle .mjs at all. .js and .mjs templates are now loaded with a dynamic import() (which Node resolves as either ESM or CommonJS) and the render function is taken from the module's default export, so all combinations of extension (.js, .cjs, .mjs) and module format (ESM or CommonJS) work. The same loading is applied to the optional helpers file (helpers.js/helpers.cjs/helpers.mjs), which can now also be an ES module

Infrastructure::

  • Add a compile-only type test (npm run test:types) that type-checks the generated declarations against the extension DSL usage, wired into the build CI job right after the type declarations are generated

== v4.0.1 (2026-07-01)

Bug Fixes::

  • Fix reassigned document-body attributes all resolving to their final value — a custom attribute redefined in the body (e.g. :reassigned: one:reassigned: two) must resolve to the value in scope at each reference (Ruby renders one then two), but every reference rendered the last value when any content preceded the entries (including a document header). The parser reset the shared block-attributes object between blocks with Object.keys(...), which skips the Symbol-keyed ATTR_ENTRIES_KEY, so the array of AttributeEntry objects leaked and accumulated across blocks; each block's attribute-entry playback then replayed every assignment. The reset now uses Reflect.ownKeys(...) so the entries are cleared too
  • Fix reassigned attributes not resolving correctly when referenced from list item or table cell text (e.g. :x: 1* item +{x}+:x: 2* item +{x}+) — unlike paragraph content (resolved lazily during conversion with attribute-entry playback), list item and table cell text is pre-computed eagerly after restoreAttributes() reverted the document to its header state, so body-level attributes were out of scope and rendered as unresolved (+{x}+) or with the wrong value. _resolveAllTexts now replays each block's attribute entries in document order (mirroring AbstractBlock#convert) while pre-computing, then restores the header state. In addition, a block carrying only Symbol-keyed attribute entries (an :attr: entry immediately preceding a list or table) now still receives them — the parser's transfer guard used Object.keys(...).length (0 for entry-only attributes) instead of Reflect.ownKeys(...).length, matching Ruby's attributes.empty? where :attribute_entries is counted
  • Fix loss of the structured source_location on log messages emitted through the reader/preprocessor path (e.g. include file not found, unterminated <type> block, unterminated preprocessor conditionals) — these were logged as a plain string with the cursor baked into the text as a "<path>: line <N>: " prefix, so message.getSourceLocation() returned null (regression from 2.x). The reader now logs an auto-formatting message that keeps the cursor as a structured source_location, so getSourceLocation() (getFile()/getLineNumber()) is populated again and getText() stays clean; the stderr Logger still renders the "<path>: line <N>: " prefix. This restores line-anchored diagnostics for downstream tooling (IDE integrations, linters, CI annotations)
  • Fix allow-uri-read not being recognised when declared with an empty value (e.g. allow-uri-read= or attributes: { 'allow-uri-read': '' }) — include resolution checked the attribute's truthiness via getAttribute, but '' is falsy in JavaScript while Asciidoctor treats the mere presence of an attribute as enabled; the include reader (Node and browser modes) now checks presence via hasAttribute, matching Ruby's attr? semantics
  • Fix incorrect generated type declarations for async substitutor methods — applySubs, subQuotes, subMacros, subPostReplacements, subSource, subCallouts, highlightSource, restorePassthroughs and parseAttributes are all async but their JSDoc @returns declared the unwrapped type (e.g. string), so the emitted .d.ts advertised string instead of Promise<string>; callers following the types could concatenate the returned Promise and produce [object Promise]. The JSDoc now declares Promise<…> and the .d.ts was regenerated

... (truncated)

Commits
  • a33f87e 4.0.4
  • 4bc7b65 ci(release): dispatch the release workflow with a version and simplify the re...
  • 8686e8e fix(types): type the findBy/query filter callback and selector object
  • f376d77 fix(types): declare the processor instance form and PreprocessorReader in the...
  • 7e03222 docs(migration): document the CLI --require/--extension split
  • 4903238 docs: remove the alpha version warning from the home page
  • a70c39b docs: link to the versioned 4.0 API docs instead of main
  • 455d538 ci(release): publish a major.minor docs alias pointing to the latest patch re...
  • 3462720 docs(typedoc): display the package version in the generated API documentation
  • 6fb225f 4.0.3
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for asciidoctor since your current version.


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [asciidoctor](https://github.com/asciidoctor/asciidoctor.js) from 3.0.4 to 4.0.4.
- [Release notes](https://github.com/asciidoctor/asciidoctor.js/releases)
- [Changelog](https://github.com/asciidoctor/asciidoctor.js/blob/main/CHANGELOG.adoc)
- [Commits](asciidoctor/asciidoctor.js@v3.0.4...v4.0.4)

---
updated-dependencies:
- dependency-name: asciidoctor
  dependency-version: 4.0.4
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jul 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants