Turns validated documentation collections into a renderer-neutral site.
The host owns the choices that make one site different from another: title,
taxonomy, routes, navigation, visibility, locales, and redirects. It supplies
those choices through DocShell.Presentation.SiteSource. The projector then
applies the portable guarantees shared by every renderer: source identity,
finite limits, deterministic anchors and digests, a closed internal-link
graph, reading order, search records, and renderer capability requirements.
Projection performs no rendering, filesystem writes, network requests, or
authorization. The result is a DocShell.Presentation.Site value that a
hosted renderer or DocShell.Presentation.StaticExporter can consume without
reopening the source corpora.
Summary
Functions
Projects loaded collections through a host site source.
Functions
@spec project(keyword()) :: {:ok, DocShell.Presentation.Site.t()} | {:error, term()}
Projects loaded collections through a host site source.
The required :collections option contains values returned by
DocShell.Generate.Collection.load/1. :source defaults to
DocShell.Presentation.SiteSource.Default; a host can provide another module
to choose routes and taxonomy. Projection is deterministic except for the
generated snapshot identity, which callers may set with :generation_id.
Returns a complete doc-shell-site/v1 value or a tagged error before any
rendering or publication occurs.