DocShell.Presentation.StaticExporter (DocShell v0.5.0)

Copy Markdown View Source

Builds and atomically publishes a complete static documentation site.

Renderers only return bytes and logical assets. The exporter owns output paths, content hashing, local-link admission, finite budgets, staging, replacement and rollback. It never invokes a network client or external build process. Search adapters follow the same rule: they return local assets and an inert query contract rather than writing into the destination.

The completed tree includes rendered routes, redirects, a not-found page, content-hashed renderer assets, search data, a deterministic manifest, sitemap and robots files, and compact/full machine-readable documentation. Publication happens only after the in-memory output and staged filesystem tree pass validation. A failed replacement preserves the prior destination or reports the retained recovery path.

Summary

Types

The deterministic manifest payload written as site-manifest.json.

Functions

Renders, validates, and atomically replaces one static site destination.

Types

manifest()

@type manifest() :: map()

The deterministic manifest payload written as site-manifest.json.

Functions

export(opts)

@spec export(keyword()) :: {:ok, manifest()} | {:error, term()}

Renders, validates, and atomically replaces one static site destination.

Required options are :site, :renderer, and :destination. Optional :search_adapter, renderer/search option lists, :canonical_origin, finite :limits, and an explicit :generated_at value customize the build. The exporter does not synthesize timestamps, contact a network service, or start the host application.

On success, returns the decoded doc-shell-static-site/v1 manifest. Expected renderer, validation, resource, and filesystem failures return tagged errors; callback exceptions are contained at the renderer/adapter boundary.