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 under /_llms/. 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)
; }