Table of Contents

Namespace CobaltPdf.WebKit.Infrastructure.Provisioning

Classes

BundleDownloadProgress

Progress payload reported during a bundle download.

BundleManifest

Per-RID source-of-truth for which bundle to fetch and what SHA-256 it must have. The values here are pinned to the package version — every release publishes fresh bundles and updates this table.

To override at deployment time, set COBALT_BUNDLE_URL (and optionally COBALT_BUNDLE_SHA256) — see BundleProvisioner.

BundleProvisioner

Downloads, verifies, extracts, and caches the WebKitGTK bundle so the rendering subprocess can run inline (no Docker) inside a Linux .NET app.

First call performs the full provision (HTTPS GET → streaming SHA-256 → tar.gz extract → chmod). Subsequent calls short-circuit on the .ready marker, returning in microseconds.

Cross-process safety: a file lock under the cache directory serialises concurrent provisions (two web app workers booting at once).

BundleSource

Describes where to fetch the WebKitGTK bundle for a given RID and how to verify its integrity. Resolved by BundleManifest.

BundleVariant

One buildable bundle for a RID, distinguished by its glibc floor. The host must have glibc ≥ MinGlibc to run it.

DockerProbe

Lightweight check for "is Docker actually running on this host?" Used on Windows / macOS to decide whether the auto-Docker dev path is available before we attempt a render. Result is cached for the process lifetime — Docker doesn't appear and disappear during a single .NET app run.

RuntimeId

Resolves the runtime identifier used to select the matching WebKitGTK bundle. Format: linux-{x64|arm64}-{glibc|musl}.

WslBundleProvisioner

Provisions the Linux WebKit bundle inside a WSL distribution so renders can run as a real Linux subprocess on a Windows dev box — no Docker required. The tarball is downloaded on the Windows side (re-using the regular HTTPS + SHA-256 pipeline), then extracted into the distro's $HOME/.cache/CobaltPdfWebKit/… via wsl tar.

Fast-path: subsequent calls check for the .ready marker through the \wsl$<distro> UNC view in a few microseconds and skip straight to dispatch.

WslHomePaths

Triple of (distro name, Linux-side bundle home, UNC view of the same). Returned by EnsureAsync(CancellationToken).

WslProbe

Detects whether WSL (Windows Subsystem for Linux) is usable as a render backend, and exposes the bits of distro state the rest of the library needs (chosen distro name, that distro's $HOME, path translation).

All checks short-circuit on non-Windows OSes.