This documentation is also published as Markdown for efficient machine reading: the whole site is indexed at /llms.txt, and every page has a clean Markdown copy at the same URL with .md appended. These are generated from the same source and cost far fewer tokens to read than this rendered HTML.

Skip to main content Skip to navigation

BookArtifactContentService Pennington.Book

Artifact-tier façade over BookArtifactService: claims /pdf/ and /book-preview/, renders PDFs and live previews on demand in dev through core's artifact router, and enumerates the PDFs for the static build. Preview routes are resolvable but deliberately not enumerated — they exist for live print-CSS iteration only, so build output stays PDF-only. Transient so each resolution captures the current file-watched service.

Properties

Claims ImmutableList<ArtifactClaim>
URL territories this service serves. Options-derived and consulted on every request — must be cheap and must not trigger discovery, the projection, or any lazy corpus work.

Constructors

BookArtifactContentService

#
public BookArtifactContentService(BookArtifactService service)

Creates the façade over the given BookArtifactService.

Parameters

service BookArtifactService

Methods

DiscoverAsync

#
public IAsyncEnumerable<DiscoveredItem> DiscoverAsync()

Enumerates every artifact route the static build should write, as GeneratedSource items. May consume the projection — the build invokes this outside any request, after the page crawl has primed the render cache. Never called on the request path.

Returns

IAsyncEnumerable<DiscoveredItem>

ResolveAsync

#
public Task<ArtifactContent> ResolveAsync(string relativePath, CancellationToken cancellationToken)

Returns the bytes for relativePath (no leading slash, e.g. search/en/index.json), or null to decline so the request falls through to content routing. May materialize the projection, build an index, or run Chromium on demand.

Parameters

relativePath string
cancellationToken CancellationToken

Returns

Task<ArtifactContent>

Pennington.Book.BookArtifactContentService

namespace Pennington.Book;

/// Artifact-tier façade over BookArtifactService: claims /pdf/ and /book-preview/, renders PDFs and live previews on demand in dev through core's artifact router, and enumerates the PDFs for the static build. Preview routes are resolvable but deliberately not enumerated — they exist for live print-CSS iteration only, so build output stays PDF-only. Transient so each resolution captures the current file-watched service.
public class BookArtifactContentService
{
    /// Creates the façade over the given BookArtifactService.
    
public BookArtifactContentService(BookArtifactService service)
; /// URL territories this service serves. Options-derived and consulted on every request — must be cheap and must not trigger discovery, the projection, or any lazy corpus work.
public ImmutableList<ArtifactClaim> Claims { get; }
/// Enumerates every artifact route the static build should write, as GeneratedSource items. May consume the projection — the build invokes this outside any request, after the page crawl has primed the render cache. Never called on the request path.
public IAsyncEnumerable<DiscoveredItem> DiscoverAsync()
; /// Returns the bytes for relativePath (no leading slash, e.g. search/en/index.json), or null to decline so the request falls through to content routing. May materialize the projection, build an index, or run Chromium on demand.
public Task<ArtifactContent> ResolveAsync(string relativePath, CancellationToken cancellationToken)
; }