studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
38 lines (37 loc) • 938 B
JavaScript
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
};