fix: harden prerender publication boundary

This commit is contained in:
2026-09-02 02:44:23 +03:00
parent 3dd4a818d0
commit c16c4c57da
22 changed files with 1275 additions and 231 deletions

View File

@@ -0,0 +1,40 @@
import type { ViteManifest } from './prerender.mjs';
export interface ViteAssetClosure {
entryModule: string;
executableModules: string[];
modulePreloads: string[];
styles: string[];
viteAssets: string[];
}
export interface ArtifactContractFile {
path: string;
sha256: string;
}
export interface ArtifactContract extends ViteAssetClosure {
schema: 'portfolio-artifact-contract/v1';
buildId: string;
publicAssets: string[];
files: ArtifactContractFile[];
}
export interface BuildAuthority {
schema: 'portfolio-build-authority/v1';
viteManifest: ViteManifest;
artifactContract: ArtifactContract;
}
export function resolveViteAssetClosure(manifest: ViteManifest): ViteAssetClosure;
export function parseArtifactContract(input: unknown): ArtifactContract;
export function createArtifactContract(
closure: ViteAssetClosure,
publicManifest: { assets: ReadonlyArray<{ fileName: string }> },
digestByPath: Readonly<Record<string, string>>,
buildId: string,
): ArtifactContract;
export function serializeArtifactContract(contract: ArtifactContract): string;
export function createBuildAuthority(viteManifest: ViteManifest, artifactContract: ArtifactContract): BuildAuthority;
export function parseBuildAuthority(input: unknown): BuildAuthority;
export function serializeBuildAuthority(authority: BuildAuthority): string;