fix(deps): update dependency asciidoctor to v4 - #84
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^2.0.3→^4.0.0Release Notes
asciidoctor/asciidoctor.js (asciidoctor)
v4.0.11Compare Source
Summary
Release meta
Released on: 2026-08-18
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Improvements
Options#getProgramName(),#getUsageLine(), and#getHelpDescription()to the extensible CLI (@asciidoctor/core’scli.js), letting an extended CLI override just the program name shown by--help-- or the usage line/description individually -- the same wayInvoker#version()can already be overridden;#getHelpPreamble()` remains available to override the whole preamble as a last resortBug Fixes
text/getText()before conversion (e.g. from an extension) no longer fixes the wrong number either -- an unresolved footnote there now previews as1rather than consuming the real counter (#1871)v4.0.10Compare Source
Summary
Release meta
Released on: 2026-08-17
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
pass:[...]macro escaping its content instead of passing it through unmodified when no explicit substitution list is given, e.g.pass:[<u>underlined</u>]rendered as<u>underlined</u>instead of<u>underlined</u>. The passthrough’ssubswas leftundefined, which fell through toapplySubs()’sNORMAL_SUBS` default parameter instead of the intended "no substitutions" behavior (#1870)id(invalid HTML, and the later footnote reference would link to the earlier definition). List item and table cell text is substituted eagerly, ahead of normal body conversion, and the footnote counter was unconditionally reset afterwards; it now carries forward into conversion so later footnotes continue numbering from where these left off (#1871)v4.0.9Compare Source
Summary
Release meta
Released on: 2026-08-16
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
thistypes (BlockProcessorDslInterface,BlockMacroProcessorDslInterface,InlineMacroProcessorDslInterface, and the document-processor DSLs for preprocessors, tree processors, postprocessors, include processors, and docinfo processors) missing the node-builder helpers --createSection,createBlock,createList,createListItem,createImageBlock,createInline,parseContent,parseAttributes, and thecreateBlock/createInlineshorthands (createParagraph,createOpenBlock,createExampleBlock,createPassBlock,createListingBlock,createLiteralBlock,createAnchor,createInlinePass) -- even though all of them are available at runtime on the bound processor instance, since every processor type shares the sameProcessorbase class (matching Ruby’sAsciidoctor::Extensions::Processor)Documenttype references acrossabstract_node.js,extensions.js,parser.js,syntax_highlighter.js, andtable.js(and the corresponding generated.d.tsfiles) resolving to the ambient DOMDocumenttype instead of Asciidoctor’s ownDocumentclass fromdocument.js. None of those source files importedDocument, so TypeScript resolved the unqualified name tolib.dom.d.ts—getDocument(), extension processor callbacks (Preprocessor#process(),TreeProcessor#process(), etc.),Parsermethods,SyntaxHighlighterBasemethods, andTable.Cell#getInnerDocument()were all typed against the browser DOM document rather than the Asciidoctor document, silently defeating type checking on any code calling AsciidoctorDocumentmethods on the resultlogging.jslogging a spurious CORS error to the console in some browsers (e.g. Firefox) on first use. The per-execution logger context lazily probes fornode:async_hooksand falls back tonullwhen unavailable, but the dynamicimport('node:async_hooks')itself was still attempted in the browser, where it is treated as a cross-origin fetch and rejected -- caught safely, but still logged by the browser regardless. The import is now skipped entirely whenprocessis undefined (i.e. outside Node.js)Infrastructure
test/types/document_type.test-d.ts) guarding against theDocumentDOM-leak regression above, coveringAbstractNode#getDocument(),Preprocessor/TreeProcessor/Postprocessor/IncludeProcessor/DocinfoProcessor’sprocess()/handles(),Registry#activate(), andSyntaxHighlighterBase’sdocinfo()/writeStylesheet()/writeStylesheetToDisk()v4.0.8Compare Source
Summary
Release meta
Released on: 2026-08-06
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Improvements
Severity({ DEBUG, INFO, WARN, ERROR, FATAL, UNKNOWN }) from@asciidoctor/core’s public API (index.jsandbrowser.js). Previously the constant existed only insidelogging.jsand was not re-exported, so a custom logger built withLoggerManager.newLogger(name, { add })had no way to compare the (already-numeric)severity` argument against named levels without redeclaring the map by handpipeconstructor option onLogger(new Logger({ pipe })), mirroring Ruby’sLogger.new(logdev). It previously had no effect —_writeln()always wrote toprocess.stderr/console.errorregardless of the option.pipenow accepts anything with awrite(line)method, or a function called as(line, severity)— the numeric severity lets a function-style pipe route by level (e.g.console.errorforERROR+,console.warnforWARN) without subclassingLogger, overridingadd(), or touching the internal_writeln()methodInfrastructure
test/types/logging.test-d.ts) covering theLoggerconstructor’spipeoption (both the object{write}form and the severity-aware(line, severity)function form, plus a negative@ts-expect-errorcase for an invalidpipevalue) andLoggerManager.newLogger()’sadd/postConstruct` override shapev4.0.7Compare Source
Summary
Release meta
Released on: 2026-07-31
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
PathResolver#partitionPath()/#expandPath()dropping a slash fromfile:///(and other triple-slash) URIs, turningfile:///Users/guillaume/foo.pngintofile://Users/guillaume/foo.png— a malformed URL whose "host" (Users) browsers reject asNot allowed to load local resource.UriSniffRxonly ever matches up to 2 slashes after the scheme, so for a triple-slash URI the 3rd slash is left in the remainder to partition into segments;partitionPath()unconditionally filtered out all empty segments (including that leading one), silently discarding the information needed to reconstruct the slash onjoinPath(). It now mirrors Ruby’sString#split('/')semantics and drops only trailing empty segments, keeping leading ones intactv4.0.6Compare Source
Summary
Release meta
Released on: 2026-07-26
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
AbstractNode#imageUri()no longer percent-encoding spaces in adata:URI image target (e.g.image::data:image/svg+xml,<svg ...><text>a b</text></svg>[]), a regression from the data URI image target support added for inline SVG embedding. That change short-circuitedimageUri()for anydata:target by returning it unchanged, bypassing the space-encoding thatnormalizeWebPath()still applies for every other URI-ish target — and that upstream Asciidoctor (Ruby) also applies, sinceimage_urihas nodata:-specific early return at all.imageUri()now runsdata:targets throughencodeSpacesInUri()before returning them, matching Ruby’s output byte-for-byte, while still avoiding the spuriouscould not retrieve image data from URIwarning the earlier fix was meant to preventtasks/changelog.js notes(used to generate GitHub release notes) leaving AsciiDoc attribute references such as[#​1857](https://redirect.github.com/asciidoctor/asciidoctor.js/issues/1857)unresolved in the generated Markdown.extractReleaseNotesused to extract the raw AsciiDoc section for a release and convert only that fragment to Markdown, losing the:uri-repo:attribute definition from the changelog header in the process. The whole changelog is now converted to Markdown once, and the release section is extracted from the resulting Markdown instead, so attribute references resolve correctlyLogger#warn()/#debug()/#info()/#error()/#fatal()/#unknown()/#log()(and the matchingMemoryLoggermethods) with an optionalprogname/pnparameter instead of a required one. The generated.d.tspreviously declared both arguments as mandatory, so callingdoc.getLogger().warn(doc.messageWithContext(...))with a single argument — the documented pattern for logging from an extension — was flagged by editors as "expected 2 arguments" even though it is valid at runtime; the error surfaced becausegetLogger()resolves to theLoggerLikeunion (Logger | MemoryLogger | NullLogger | Console) and TypeScript requires a call to satisfy every member’s signaturemessageWithContext()/createLogMessage()onDocument,ConverterBase,PathResolver, andTable.ParserContext(and the static equivalents onParser). These are installed at runtime by theapplyLogging()mixin (logging.js) after the class body closes, sotsc’s JSDoc-based declaration emit never picked them up —doc.messageWithContext(...)`, the pattern shown in the extensions guide, previously had no type at all on the public API surfaceInfrastructure
LoggerLikeunion (test/types/logging.test-d.ts, run bynpm run test:types), covering every shorthand log method across single- and two-argument call forms, theapplyLogging()consumers listed above, and negative@ts-expect-errorchecks (e.g.fatal()/unknown()are intentionally unavailable on the rawLoggerLikeunion becauseConsolehas neither, but resolve once narrowed away fromConsole)v4.0.5Compare Source
Summary
Release meta
Released on: 2026-07-21
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
Document#getLogger()(andgetLogger()on any prototype augmented byapplyLogging():Converter,Parser,PathResolver,Table.ParserContext) silently ignoring a per-instance override of theloggergetter, even though its own JSDoc describes it as "a method alias for theloggergetter".applyLogging()(logging.js) installedgetLoggeras a fixed arrow function with nothisbinding, so it always fell back to the globalLoggerManager.loggerinstead of resolving throughthis.logger— breaking theloggeroption toconvert()/load()once the async-local-storage scope fromload()had closed (i.e. duringdoc.convert(), when most block/inline converters and extensions run). Extensions/converters that follow the documenteddoc.getLogger()pattern (e.g. to log a warning withmessageWithContext()) would have those messages silently escape a caller-supplied logger such as aMemoryLoggercontentModel/positionalAttrs(or the DSLcontentModel()/positionalAttributes()/resolveAttributes()setters) configuration, so the macro’s bracket content was never parsed into named/positional attributes and always ended up as a raw string inattributes.textinstead — e.g.registry.inlineMacro(function () { this.named('emoji'); this.positionalAttributes('size'); this.process(...) })produced{ text: '2x' }instead of{ '1': '2x', size: '2x' }foremoji:smile[2x].Substitutors#subMacros(the inline macro substitution path insubstitutors.js) read the extension config with keys that were never populated by the DSL/static config (#1857)Improvements
Processorconfig keys (contentModel,positionalAttrs,defaultAttrs) now usecamelCaseconsistently across every registration style — the DSL setters, class-basedstatic config, and the block/inline macro substitution code that reads them. The legacy Ruby-stylesnake_casekeys (content_model,positional_attrs,pos_attrs,default_attrs) are still accepted for backward compatibility when a processor class declares its config directly (static config = { content_model: 'attributes' }orMyProcessor.config = { content_model: 'attributes' }).Processor.configalso gained a static setter, so assigning a static config object after the class declaration (as shown in theBlockMacroProcessor/InlineMacroProcessorJSDoc examples) no longer throws aTypeErrorAbstractNode#logger/#getLogger()andReader/PreprocessorReader#logger/#getLogger()/#createLogMessage()with the newLoggerLikeunion (Logger | MemoryLogger | NullLogger | Console, exported fromlogging.js) instead of a bareobject. Inreader.js, fields and helper methods that are only ever touched within the class that declares them (Reader’s cursor mark,PreprocessorReader’s include/conditional-directive bookkeeping) are now real JS#privatemembers instead of_-prefixed by convention; the remaining_-prefixed fields thatPreprocessorReadermust read/reassign (_dir,_document,_lines, …) are annotated@internalso they’re stripped from the generated public.d.tswithout changing runtime accessv4.0.4Compare Source
Summary
Release meta
Released on: 2026-07-15
Released by: ggrossetie
Published by: GitHub
Logs: full diff
Changelog
Improvements
Registryextension 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,blockMacroandinlineMacronow 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 formAbstractBlock#findBy(and itsqueryalias) as(node: AbstractBlock) => boolean | stringinstead of the bareFunction, so the candidate node passed to the callback resolves as anAbstractBlockwithout casts — both in the two-argument form and in thefindBy(callback)shorthandPreprocessorReaderinstead ofReader, and exportPreprocessorReaderfrom the package root.Preprocessor#process,IncludeProcessor#processand the matching DSLprocess(fn)callbacks actually receive aPreprocessorReaderat runtime, so its members (pushInclude,getIncludeDepth, …) now resolve without casts or manual module augmentationInfrastructure
includeVersionoption), so both the@asciidoctor/coreAPI docs and theasciidoctorCLI docs show which release they document (e.g.@asciidoctor/core - v4.0.3)major.minoralias of the TypeDoc API documentation on each stable release — e.g. releasing v4.0.4 (re)deploys the docs to both4.0.4/and4.0/on GitHub Pages, so the4.0URL always points to the documentation of the latest 4.0.x releaserelease-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, frommainor from a maintenance branch (e.g.4.0.xorv4.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 theasciidoctor→@asciidoctor/coredependency 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), andtasks/publish.js(publishes both packages to npmjs).tasks/release.js,scripts/publish.sh, thenpm run releasescript and theskip_publishinput are gone (use GitHub’s "Re-run failed jobs" to resume a partially failed release). The reusable build and native-image workflows accept arefinput so the release builds the tagged commit (with the bumped version) rather than the pre-bump branch headlatestdist-tag: when the version being published is older than the currently publishedlatest(e.g. releasing 4.0.5 while 4.1.0 is out), the packages are published under alatest-<major>.<minor>dist-tag (e.g.latest-4.0, following thelatest-2convention already used for the 2.x line) insteadv4.0.3Compare Source
Summary
Release meta
Released on: 2026-07-13
Released by: github-actions[bot]
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
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#convertcomputes 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_innerContentwas 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 firstv4.0.2Compare Source
Summary
Release meta
Released on: 2026-07-06
Released by: github-actions[bot]
Published by: GitHub
Logs: full diff
Changelog
Improvements
data:URI (e.g.image::data:image/svg+xml;base64,…[opts=inline]).readSvgContentsdecodes both Base64 and percent-encodeddata: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 enablingallow-uri-read. The SVG format is inferred from theimage/svg+xmlmedia type, so an explicitformat=svgattribute is no longer required on adata:URI targetBug Fixes
imageUrinow returns adata:URI image target as-is instead of attempting to read it as a file or fetch it via the Fetch API; previously, with bothdata-uriandallow-uri-readset, adata:URI target (e.g.data:image/png;base64,…) triggered a spurious "could not retrieve image data from URI" warningasciidoctor-versionattribute reporting the hard-coded upstream Ruby version (3.0.0.dev) instead of the actual library version — it now resolves to the@asciidoctor/corepackage version (e.g.4.0.1), so references such as{asciidoctor-version}reflect the real releaseAsciidoctor.js(instead ofAsciidoctor) in the HTML5<meta name="generator">and manpageGenerator:metadata, so the generated output identifies the JavaScript library and its version (e.g.Asciidoctor.js 4.0.1)<<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 synchronousresolveIdfallback then matched against the rawreftextattribute rather than the computedxreftext(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#2, e.g.converter.outfilesuffix = '.html') being silently overwritten with accessor functions after the first conversion — normalizing the converter applied theBackendTraitsmixin, which installed same-named accessor methods on the instance, clobbering the author’s strings. Code readingconverter.outfilesuffixthen got a function instead of.html(and only after normalization, so the value’s type changed mid-lifecycle).applyBackendTraitsno longer overwrites an existing same-named data property, andDocumentreads backend traits through_getBackendTraits()rather than the accessor methods, so flat string properties stay strings throughout.jstemplate in a"type": "module"(ESM) project crashed withtemplate.render is not a function, and.mjstemplates were silently ignored (the extension was not even recognised). The template loader used a CommonJSrequire()for.js/.cjsfiles, which returned the ESM namespace object (not the render function) for ESM.jsfiles and did not handle.mjsat all..jsand.mjstemplates are now loaded with a dynamicimport()(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 optionalhelpersfile (helpers.js/helpers.cjs/helpers.mjs), which can now also be an ES modulev4.0.1Compare Source
Summary
Release meta
Released on: 2026-07-01
Released by: github-actions[bot]
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
:reassigned: one…:reassigned: two) must resolve to the value in scope at each reference (Ruby rendersonethentwo), 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 withObject.keys(...), which skips theSymbol-keyedATTR_ENTRIES_KEY, so the array ofAttributeEntryobjects leaked and accumulated across blocks; each block’s attribute-entry playback then replayed every assignment. The reset now usesReflect.ownKeys(...)so the entries are cleared too: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 afterrestoreAttributes()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._resolveAllTextsnow replays each block’s attribute entries in document order (mirroringAbstractBlock#convert) while pre-computing, then restores the header state. In addition, a block carrying onlySymbol-keyed attribute entries (an:attr:entry immediately preceding a list or table) now still receives them — the parser’s transfer guard usedObject.keys(...).length(0 for entry-only attributes) instead ofReflect.ownKeys(...).length, matching Ruby’sattributes.empty?where:attribute_entriesis countedsource_locationon 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, somessage.getSourceLocation()returnednull(regression from 2.x). The reader now logs an auto-formatting message that keeps the cursor as a structuredsource_location, sogetSourceLocation()(getFile()/getLineNumber()) is populated again andgetText()stays clean; the stderrLoggerstill renders the"<path>: line <N>: "prefix. This restores line-anchored diagnostics for downstream tooling (IDE integrations, linters, CI annotations)allow-uri-readnot being recognised when declared with an empty value (e.g.allow-uri-read=orattributes: { 'allow-uri-read': '' }) — include resolution checked the attribute’s truthiness viagetAttribute, 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 viahasAttribute, matching Ruby’sattr?` semanticsasyncsubstitutor methods —applySubs,subQuotes,subMacros,subPostReplacements,subSource,subCallouts,highlightSource,restorePassthroughsandparseAttributesare allasyncbut their JSDoc@returnsdeclared the unwrapped type (e.g.string), so the emitted.d.tsadvertisedstringinstead ofPromise<string>; callers following the types could concatenate the returned Promise and produce[object Promise]. The JSDoc now declaresPromise<…>and the.d.tswas regeneratedImprovements
MemoryLogger#getMessages()— it previously returnedany[]; theLogMessagewrapper class is now exported andgetMessages()is declared to returnLogMessage[], so consumers get typedgetSeverity()(string),getText()(string) andgetSourceLocation()(Cursor | undefined) accessors. The wrapper’s internal_text/_sourceLocationfields were renamed to publictext/sourceLocationproperties (consistent withseverity), providing dual property/getter accessv4.0.0Compare Source
Summary
This release is a complete rewrite of Asciidoctor.js — the Opal runtime and transpiled Ruby code have been replaced by a native JavaScript implementation.
The public API has been preserved as closely as possible from version 3, but there are breaking changes.
Please refer to the migration guide before upgrading.
Release meta
Released on: 2026-06-22
Released by: github-actions[bot]
Published by: GitHub
Logs: full diff
Changelog
Bug Fixes
registry.preprocessor(fn)) now survive the internal reset and are preserved across multiple conversions, matching the behaviour of group-block registrations (Extensions.create(name, block)); both patterns are now safe to reuseImprovements
Extensions.create(name, block)) survive the internal reset and are safe to reuse across multiple conversions; extensions registered directly on a registry instance are cleared on every activation and will be silently lost after the first conversion--extensionCLI option to load and register Asciidoctor extension files — the option calls theregister(registry)named export of the loaded module with a shared registry; can be repeated to load multiple extensions--requireCLI option — it now only loads the module as a side effect and no longer auto-calls any exported function; use--extensionto register Asciidoctor extensions, and--requirefor libraries that configure themselves on load (syntax highlighters, polyfills, etc.)IncludeProcessorDsl#handles— add@overloadsignatures documenting the two setter forms (arity-1(target)and arity-2(doc, target)) and the invoker form; updateIncludeProcessorDslInterfacetypedef to expose both setter overloadsBreaking Changes
--requireno longer inspects or calls aregisterexport from the loaded module — this auto-call was already broken (it passed theExtensionsnamespace instead of a registry instance); any extension that relied on this behaviour must be updated to either export aregister(registry)function and be loaded via--extension, or self-register usingExtensions.register()at the top level to remain loadable via--requirev3.0.4Compare Source
Summary
This release is based on Asciidoctor 2.0.20 and Opal 1.7.3 and fixes a regression introduced in 3.0.3.
Release meta
Released on: 2024-02-12
Released by: @ggrossetie
Published by: GitHub Actions
Logs: full diff
Changelog
Bug Fixes
Infrastructure
New Contributors
Full Changelog: asciidoctor/asciidoctor.js@v3.0.3...v3.0.4
v3.0.3Compare Source
Summary
This release is based on Asciidoctor 2.0.20 and Opal 1.7.3.
Release meta
Released on: 2024-01-13
Released by: @ggrossetie
Published by: GitHub Actions
Logs: full diff
Changelog
Bug Fixes
package.json- thanks @sinediedcontextandnode_nameaccessor in the type definition - thanks @RayOffiahInfrastructure
New Contributors
Full Changelog: asciidoctor/asciidoctor.js@v3.0.2...v3.0.3
v3.0.2Compare Source
Summary
This release is based on Asciidoctor 2.0.20 and Opal 1.7.3.
Release meta
Released on: 2023-06-24
Released by: @ggrossetie
Published by: GitHub Actions
Logs: full diff
Changelog
Breaking Changes
Remove
Asciidoctornamespace in TypeScript:Publish
@asciidoctor/coreas an ES6 moduleBug Fixes
Document.append(#1681)getSectionNumeral()function by @benjaminleonard (#1659)getDocinfoandfindBytype definition (#1621)parseContentnow callstoHashon attrs (#1519)Improvements
Map
this.super.<method>to call the parent function (#1682)Map
AbstractBlock.getContentModelandAbstractBlock.setContentModel(#1680)Map
Document.getSyntaxHighlighter(#1667)Map
CompositeConverter#convert(#1649)Simplify table option checks by @mojavelinux (#1656)
Support Stream.Writable as
to_file(#1624)Infrastructure
Documentation
convert()on return value of process method for inline macro extension by @mojavelinux (#1653)New Contributors
v3.0.1Compare Source
v3.0.0Compare Source
v2.2.9Compare Source
Summary
This release is based on Asciidoctor 2.0.23 and Opal 0.11.99.dev (31d26d69).
Release meta
Released on: 2026-04-30
Released by: @ggrossetie
Published by: GitHub Actions
Logs: full diff
What's Changed
globbyfast-globunxhrto 1.2v2.2.8Compare Source
Summary
This release is based on Asciidoctor 2.0.23 and Opal 0.11.99.dev (31d26d69).
Release meta
Released on: 2024-06-02
Released by: @ggrossetie
Published by: GitHub Actions
Logs: full diff
What's Changed
v2.2.7Compare Source
Summary
This release is based on Asciidoctor 2.0.22 and Opal 0.11.99.dev (31d26d69).
Release meta
Released on: 2024-03-17
Released by: @ggrossetie
Published by: GitHub Actions
Logs: full diff
What's Changed
v2.2.6Compare Source
Summary
This release is based on Asciidoctor 2.0.17 and Opal 0.11.99.dev (31d26d69).
Release meta
Released on: 2022-01-21
Released by: @Mogztter
Published by: GitHub Actions
Logs: full diff
📖 API documentation
📚 User Manual
Changelog
Bug Fixes
Improvements
Infrastructure
Documentation
New Contributors
v2.2.5Compare Source
Summary
This release is based on Asciidoctor 2.0.16 and Opal 0.11.99.dev (31d26d69).
An internal change was made to how lines are iterated by the reader (switching from a stack to a queue), which will substantially improve the performance when processing large files.
Please note that this change should be seamless unless you were accessing the lines property on the reader directly.
Release meta
Released on: 2021-08-08
Released by: @Mogztter
Published by: GitHub Actions
Logs: full diff
📖 API documentation
📚 User Manual
Changelog
Bug Fixes
LoggerManager#setLoggersetter - thanks @mojavelinux (#1322)Improvements
Infrastructure
npm audit fixv2.2.4Compare Source
Summary
This release is based on Asciidoctor 2.0.15 and Opal 0.11.99.dev (31d26d69).
It includes all the fixes from Asciidoctor 2.0.15 without any additional changes in Asciidoctor.js.
Release meta
Released on: 2021-04-30
Released by: @Mogztter
Published by: GitHub Actions
Logs: full diff
📖 API documentation
📚 User Manual
v2.2.3Compare Source
Summary
This release is based on Asciidoctor 2.0.13 and Opal 0.11.99.dev (31d26d69).
It includes all the fixes from Asciidoctor 2.0.13 without any additional changes in Asciidoctor.js.
Release meta
Released on: 2021-04-13
Released by: @Mogztter
Published by: GitHub Actions
Logs: full diff
📖 API documentation
📚 User Manual
v2.2.2Compare Source
Summary
This release is based on Asciidoctor 2.0.12 and Opal 0.11.99.dev (31d26d69).
Release meta
Released on: 2021-03-24
Released by: @Mogztter
Published by: GitHub Actions
Logs: full diff
Changelog
Bug Fixes
AbstractNode#getImageUri,#getMediaUri,#getIconUri(#1193)Document#getDocumentTitle,#getTitle(can return undefined) (#1150)AbstractNode#getParent(can return undefined) (#1131)AbstractBlock#alt(andInline#alt) (#1192)AbstractNode#resolveSubstitutionsreturnsundefined(#1153)Infrastructure
Documentation
file:///📖 API documentation
📚 User Manual
v2.2.1Compare Source
Summary
This release is based on Asciidoctor 2.0.12 and Opal 0.11.99.dev (31d26d69).
Highlights
This version includes all the bug fixes and improvements introduced in Asciidoctor Ruby 2.0.11 and 2.0.12 🎉
It also contains a few bug fixes and improvements related to the Asciidoctor.js API.
Release meta
Released on: 2020-11-26
Released by: @Mogztter
Published by: GitHub Actions
Logs: full diff
Changelog
Bug Fixes
Opal.nilwhen title is undefined (#1010)Improvements
AbstractBlock#assignCaption(#1011)Infrastructure
http-serverfrom 0.12.1 to 0.12.3 in /packages/core (#953)dtslintfrom 3.4.2 to 3.6.3 in /packages/core (#958) (#971) ([#976](https://redirect.github.com/asciidoctor/asciidoctor.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.