fix: harden prerender publication boundary
This commit is contained in:
@@ -225,15 +225,14 @@ export const parsePortfolioContent = (input: unknown): PortfolioContent => portf
|
||||
export const parsePublicAssetManifest = (input: unknown): PublicAssetManifest => publicAssetManifestSchema.parse(input) as PublicAssetManifest;
|
||||
export const parseSiteConfig = (input: unknown): SiteConfig => siteConfigSchema.parse(input) as SiteConfig;
|
||||
|
||||
export const validateProductionInputs = (
|
||||
contentInput: unknown,
|
||||
manifestInput: unknown,
|
||||
siteInput: unknown,
|
||||
_preparedAssetRoot: URL,
|
||||
): ProductionInputs => {
|
||||
const content = parsePortfolioContent(contentInput);
|
||||
const manifest = parsePublicAssetManifest(manifestInput);
|
||||
const site = parseSiteConfig(siteInput);
|
||||
const productionInputsSchema = z.object({
|
||||
content: portfolioContentSchema,
|
||||
manifest: publicAssetManifestSchema,
|
||||
site: siteConfigSchema,
|
||||
}).strict();
|
||||
|
||||
export const parseProductionInputSnapshot = (input: unknown): ProductionInputs => {
|
||||
const { content, manifest, site } = productionInputsSchema.parse(input);
|
||||
const manifestIds = new Set(manifest.assets.map((asset) => asset.id));
|
||||
const referencedAssetIds = [
|
||||
...content.projects.selected.flatMap((project) => project.assetIds),
|
||||
@@ -247,5 +246,16 @@ export const validateProductionInputs = (
|
||||
throw new Error(`Unmanifested asset reference: ${assetId}`);
|
||||
}
|
||||
}
|
||||
return { content, manifest, site };
|
||||
return { content, manifest, site } as ProductionInputs;
|
||||
};
|
||||
|
||||
export const validateProductionInputs = (
|
||||
contentInput: unknown,
|
||||
manifestInput: unknown,
|
||||
siteInput: unknown,
|
||||
_preparedAssetRoot: URL,
|
||||
): ProductionInputs => parseProductionInputSnapshot({
|
||||
content: contentInput,
|
||||
manifest: manifestInput,
|
||||
site: siteInput,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user