Skip to content

chore(deps): update pnpm.catalog.default @takumi-rs/helpers-v1 to v2 - #666

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/takumi-rs-helpers-v1-2.x
Open

chore(deps): update pnpm.catalog.default @takumi-rs/helpers-v1 to v2#666
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/takumi-rs-helpers-v1-2.x

Conversation

@renovate

@renovate renovate Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@takumi-rs/helpers-v1 (source) 1.8.72.9.2 age confidence

Release Notes

kane50613/takumi (@​takumi-rs/helpers-v1)

v2.9.2

Treat the synthetic HTML root as a block container

Markup written in a template literal carries whitespace either side, which parsed into text roots. The synthetic root that holds them was inline, so the leading one kept a line box and pushed the content down the page. It is a block container now, the way <body> is, and fromHtml drops the whitespace roots the way the Rust crate already did.

v2.8.0

Render fragment, memo and forwardRef children inside <svg>

Inline SVG silently dropped any child it could not map to a tag name. Fragments, memo and forwardRef components now serialize the same way React does.

Draw list markers for <ol> and <ul>

List items rendered with no bullet or number. A display: list-item box now generates a marker: list-style-type, list-style-position and list-style-image pick what it draws and where it sits, and <ol start> and <li value> set the count.

v2.7.2

Follow Unicode emoji presentation in extractEmojis

extractEmojis replaced every pictograph with a CDN image, so and came back as color emoji. Pictographs that default to text presentation now stay text, U+FE0F forces the emoji image, and U+FE0E forces the text glyph.

v2.7.1

Collect <head> styles and decode character references in fromHtml

fromHtml skipped the whole <head> subtree, so a full document lost every <style> rule while the same markup as a fragment kept them. <style> tags inside <head> now land in stylesheets for both fromHtml and fromJsx. Text nodes also decode HTML character references, so &nbsp;, &deg; and &#&#8203;176; render as the characters instead of the raw source.

v2.6.0

Route shared codepoints to the subset that declares them

A Google Fonts subset encodes more than the unicode-range it was cut for, and the Cyrillic and Greek ones also carry the ASCII space and the Latin capitals. Selection took the first subset whose glyphs covered a character, in family-name order, so those codepoints left the Latin subset and every word split into separate runs. Subsets now rank by the range they declare, lowest first.

v2.5.8

Raise the default fetch timeout to 30 seconds

AbortSignal.timeout counts wall-clock time, so a 5-second budget aborted otherwise-healthy font fetches whenever heavy synchronous work (SSG, wasm rendering) blocked the event loop past it.

v2.4.2

Hand font and image bytes to the bindings as Uint8Array views

Fetched fonts and images flowed to the bindings as bare ArrayBuffers, which the native binding copies. Wrapping them in a Uint8Array view costs nothing and takes the zero-copy path.

v2.4.0

Enforce allowUrl on every redirect hop

fetchOk with an allowUrl policy now follows redirects manually (capped at 5 hops) and re-checks the resolved target of each hop, so an allowed URL can no longer redirect to a blocked address. Callers without a policy keep default redirect handling.

v2.3.3

Honour per-element white-space when collapsing inline text

Inline whitespace collapsing read the block's white-space value for every span, so a white-space: pre child inside a normal-collapsing parent lost its spaces and line breaks. Each span now collapses against its own value. <br> also carries a white-space: pre preset, so its line break survives.

v2.3.0

Accept raw RGBA pixels as an image source

An image node's src takes { width, height, data, premultiplied? } and renders the pixels without decoding; the Bitmap JSX helper wraps it as an <img>.

v2.2.0

Support generic on googleFonts families

A family's generic (e.g. "monospace") propagates to every loaded coverage subset, so generic stacks like font-mono resolve to it.

Claim generic font families from the JS font API

Font descriptors accept generic (e.g. "monospace"), so stacks like Tailwind's font-mono resolve to registered fonts without naming the family.

v2.1.1

Bundle the WebContainer fallback instead of @takumi-rs/wasm/auto

The node backend's fallback pulled in auto, whose conditions resolve against
the host bundler: Turbopack sets module and got Vite's ?url import of the
binary, failing the build. It now loads @takumi-rs/wasm/node, which every
bundler resolves, so only @takumi-rs/core needs externalizing.

Drop preact-render-to-string

An optional import no bundler can skip: webpack and Vite have no optional
import, so resolving it statically failed the build of every app that renders
React and never installed it. Preact trees now traverse natively. Components
calling a Preact hook no longer render — those hooks live on Preact's mangled
internals, which no dispatcher can stand in for.

Accept preact/compat elements in ReactElementLike

preact/compat types $$typeof as symbol | string, so its elements — and a
propless component's FunctionComponentElement<never> — no longer need a cast
to reach render.

v2.1.0

Resolve hooks without react-dom and render Preact trees

fromJsx installs a server-semantics hook dispatcher instead of falling back
to react-dom/server, handles context providers and consumers natively, and
renders Preact subtrees through preact-render-to-string. The react-dom
peer dependency is gone; preact and preact-render-to-string are new
optional peers.

v2.0.2

Accept a families array in googleFonts

Pass the families directly instead of wrapping them in an options object:
googleFonts(["Inter", "Noto Sans JP"]). The object form stays for text,
display, and the other options.

v2.0.1

Default the Google Fonts CSS cache

googleFonts now caches the CSS metadata process-wide when no cache is
passed, so callers who omit it still fetch each URL once. Pass your own Map
to scope the cache, or a fresh one per call to opt out.

v2.0.0

Cache the Google Fonts CSS promise

googleFonts's cache now stores the in-flight Promise<string> instead of
the resolved CSS, so concurrent calls for the same URL share one request
instead of each missing and fetching. A failed fetch evicts itself, so the
next call retries. The cache type is now
Pick<Map<string, Promise<string>>, "get" | "set" | "delete">.

Share the renderer facade between the napi and wasm bindings

The napi and wasm Renderer wrappers now build on a shared prepareRenderInput
helper in @takumi-rs/helpers/renderer, so their option types and render bodies
live in one place. Both backends check signal before and after resolving
fonts and images: on native, an already-aborted signal now throws before any
resource fetch.

Match the Chromium UA stylesheet for default element styles

Parse the relative font keywords bolder/lighter (font-weight) and
larger/smaller (font-size), resolving to the values Chromium uses. Expand
the default element presets to cover lists, sub/sup, ins/del, forms,
details/summary, and search.

Bound remote fetches with byte caps and default timeouts

Remote image, font, and Google Fonts CSS fetches now reject bodies past a byte
cap (maxBytes, default 32 MiB; 2 MiB for CSS) and apply the 5 s timeout to
every fetch, not just images. Set timeout: 0 to disable it. A new allowUrl
hook on FetchOptions skips URLs it rejects.

Add the @takumi-rs/helpers/renderer entrypoint

The shared renderer wrapper backing the napi and wasm bindings is now exported
as @takumi-rs/helpers/renderer.

Fix googleFonts losing your declared family order

googleFonts returned subsets in whatever order Google's css2 response happened to list
@font-face blocks in — not the order families were passed in families. A render with no
explicit fontFamilies falls back to registration order, so a Han-unified codepoint shared by
two requested families (e.g. "Noto Sans TC" and "Noto Sans JP") could pick the wrong one
regardless of how families was ordered. googleFonts now sorts its result to match the
caller's declared order.

Replace fetchResources/extractResourceUrls with prepareImages

@takumi-rs/helpers exports prepareImages({ node, sources?, fetchCache?, fetch?, timeout? }),
which collects a node tree's remote images and fetches the ones not already supplied. Pass a
fetchCache (a Map<string, Promise<ArrayBuffer>>, or any Map-like store) to coalesce
concurrent fetches of the same URL and reuse the bytes across renders; a failed fetch is
evicted so a later call retries.

The extractResourceUrls and fetchResources helpers are removed. The images render option
takes the same group form: { sources, fetchCache, fetch, timeout }.

Keep elements as containers when children carry no text

An element whose children resolved to a textless iterable (e.g. {[]}) became an
empty text node instead of a container, so its background and other box styles
never painted. Such elements now stay containers.

Shrink and sharpen the Google Fonts family type

Group the ~1940 families by their distinct weight/style/axis shape (152 of them) so
GoogleFontFamily builds a discriminated union over shapes, not families. The shipped
.d.ts drops from ~192 KB to ~58 KB and the checker does ~75% fewer instantiations. The
object form now autocompletes each known family's weight, style, and axes, and still accepts
a name built at runtime. The generator refuses to write a catalog with under 1000 families.

Accept a bare URL string in fonts

fonts entries can now be a URL string, e.g. fonts: ["https://example.com/Inter.woff2"].
The bytes are fetched on demand and keyed by the URL; family name, weight, and style come
from the font file. The object form stays for overriding those. Adds fontFromUrl to
@takumi-rs/helpers.

Add baseUrl to googleFonts

googleFonts takes an optional baseUrl, defaulting to Google Fonts, so an API-compatible
css2 mirror can be used instead, e.g. baseUrl: "https://fonts.bunny.net/css2" for Bunny Fonts.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "on Monday"
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown

📦 Package Size

No notable size changes

All tracked output (18)
Package output Gzipped Raw
nuxt-og-image · dependency @clack/prompts 12 kB 50 kB
nuxt-og-image · dependency @vue/compiler-sfc 574 kB 2.62 MB
nuxt-og-image · dependency chrome-launcher 21 kB 69 kB
nuxt-og-image · dependency lightningcss 1.4 kB 3.6 kB
nuxt-og-image · dependency magicast 72 kB 355 kB
nuxt-og-image · dependency mocked-exports 1.3 kB 2.6 kB
nuxt-og-image · dependency nuxt-site-config 9.8 kB 24 kB
nuxt-og-image · dependency nuxtseo-shared 21 kB 72 kB
nuxt-og-image · dependency oxc-parser 131 kB 1.38 MB
nuxt-og-image · dependency radix3 4.3 kB 16 kB
nuxt-og-image · dependency strip-literal 711 B 2.3 kB
nuxt-og-image · dependency tinyexec 4.1 kB 13 kB
nuxt-og-image · export . 373 B 900 B
nuxt-og-image · export ./content 324 B 607 B
nuxt-og-image · published payload 165 kB 573 kB
nuxt-og-image · app runtime 8.5 kB 26 kB
nuxt-og-image · server runtime 64 kB 177 kB
nuxt-og-image · shared runtime 3.1 kB 9.7 kB
Runtime dependencies (30)
Package Dependency Requested Resolved Cost
nuxt-og-image @clack/prompts ^1.7.0 1.7.0 📦 12 kB gzip
nuxt-og-image @nuxt/kit ^4.5.2 4.5.2 ♻️ free via Nuxt 4.5.2
nuxt-og-image @vue/compiler-sfc ^3.5.41 3.5.41 📦 574 kB gzip
nuxt-og-image chrome-launcher ^1.2.1 1.2.1 📦 21 kB gzip
nuxt-og-image consola ^3.4.2 3.4.2 ♻️ free via Nuxt 4.5.2
nuxt-og-image defu ^6.1.7 6.1.7 ♻️ free via Nuxt 4.5.2
nuxt-og-image devalue ^5.9.0 5.9.0 ♻️ free via Nuxt 4.5.2
nuxt-og-image exsolve ^1.1.1 1.1.1 ♻️ free via Nuxt 4.5.2
nuxt-og-image fnv1a-64 ^0.1.2 0.1.2 ♻️ free via Nuxt 4.5.2
nuxt-og-image lightningcss ^1.33.0 1.33.0 📦 1.4 kB gzip
nuxt-og-image magic-string ^1.1.0 1.1.0 ♻️ free via Nuxt 4.5.2
nuxt-og-image magicast ^0.5.4 0.5.4 📦 72 kB gzip
nuxt-og-image mocked-exports ^0.1.1 0.1.1 📦 1.3 kB gzip
nuxt-og-image nuxt-site-config ^4.2.0 4.2.0 📦 9.8 kB gzip
nuxt-og-image nuxtseo-shared ^5.3.12 5.3.12 📦 21 kB gzip
nuxt-og-image nypm ^0.6.9 0.6.9 ♻️ free via Nuxt 4.5.2
nuxt-og-image object-identity ^0.2.3 0.2.3 ♻️ free via Nuxt 4.5.2
nuxt-og-image ofetch ^1.5.1 1.5.1 ♻️ free via Nuxt 4.5.2
nuxt-og-image ohash ^2.0.11 2.0.11 ♻️ free via Nuxt 4.5.2
nuxt-og-image oxc-parser ^0.143.0 0.143.0 📦 131 kB gzip
nuxt-og-image oxc-walker ^1.1.1 1.1.1 ♻️ free via Nuxt 4.5.2
nuxt-og-image pathe ^2.0.3 2.0.3 ♻️ free via Nuxt 4.5.2
nuxt-og-image pkg-types ^2.3.1 2.3.1 ♻️ free via Nuxt 4.5.2
nuxt-og-image radix3 ^1.1.2 1.1.2 📦 4.3 kB gzip
nuxt-og-image std-env ^4.2.0 4.2.0 ♻️ free via Nuxt 4.5.2
nuxt-og-image strip-literal ^4.0.0 4.0.0 📦 711 B gzip
nuxt-og-image tinyexec ^1.3.0 1.3.0 📦 4.1 kB gzip
nuxt-og-image ufo ^1.6.4 1.6.4 ♻️ free via Nuxt 4.5.2
nuxt-og-image ultrahtml ^1.7.0 1.7.0 ♻️ free via Nuxt 4.5.2
nuxt-og-image unplugin ^3.3.0 3.3.0 ♻️ free via Nuxt 4.5.2

Baseline: main_@_f8308f5a___2026-08-11 · gzip is the comparison metric · changes below 16 B gzip are ignored

@pkg-pr-new

pkg-pr-new Bot commented Aug 10, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/nuxt-og-image@666

commit: 943d95f

@renovate
renovate Bot force-pushed the renovate/takumi-rs-helpers-v1-2.x branch 10 times, most recently from 66dfb70 to 6da0770 Compare August 15, 2026 18:57
@renovate
renovate Bot force-pushed the renovate/takumi-rs-helpers-v1-2.x branch from 6da0770 to 943d95f Compare August 15, 2026 23:00
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.

0 participants