import { z } from "zod/mini" export const AssetSchema = z.strictObject({ id: z.string(), last_modified: z.string(), kind: z.union([z.literal("image"), z.literal("all")]), filename: z.optional(z.string()), extension: z.optional(z.string()), size: z.optional(z.number()), origin_url: z.string(), url: z.string(), width: z.optional(z.number()), height: z.optional(z.number()), notes: z.optional(z.string()), credits: z.optional(z.string()), alt: z.optional(z.string()), }) export type Asset = z.infer export const getAssetOrThrow = (assets: Record): ((assetId: Asset["id"]) => Asset) => (assetId: Asset["id"]): Asset => { const asset = assets[assetId] if (!asset) { throw new Error(`Missing asset with id '${assetId}'!`) } return asset }