UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

38 lines (37 loc) 938 B
import { z } from "astro/zod"; const WebVitalsRatingSchema = z.enum(["good", "needs-improvement", "poor"]); const CoreWebVitalsMetricTypeSchema = z.enum(["CLS", "INP", "LCP"]); const WebVitalsMetricTypeSchema = CoreWebVitalsMetricTypeSchema.or( z.enum(["FCP", "FID", "TTFB"]) ); const RouteSummaryRowSchema = z.tuple([ // route path z.string(), CoreWebVitalsMetricTypeSchema, WebVitalsRatingSchema, // value z.number().gte(0), // sample size z.number() ]); const MetricSummaryRowSchema = z.tuple([ WebVitalsMetricTypeSchema, WebVitalsRatingSchema, // value z.number().gte(0), // density z.number().gte(0), // rating end z.union([z.literal(0), z.literal(1)]).transform(Boolean), // percentile z.number().or(z.null()), // sample size z.number() ]); export { CoreWebVitalsMetricTypeSchema, MetricSummaryRowSchema, RouteSummaryRowSchema, WebVitalsMetricTypeSchema, WebVitalsRatingSchema };