Openstatus
www.openstatus.dev
1import { z } from "@hono/zod-openapi";
2import { ZodError } from "zod";
3
4export const isoDate = z.preprocess((val) => {
5 try {
6 if (val) {
7 return new Date(String(val)).toISOString();
8 }
9 return new Date().toISOString();
10 } catch (_e) {
11 throw new ZodError([
12 {
13 code: "invalid_type",
14 message: "Invalid date",
15 expected: "string",
16 path: [],
17 },
18 ]);
19 }
20}, z.string());
21
22export function isNumberArray<T>(
23 monitors: number[] | T[],
24): monitors is number[] {
25 return (
26 Array.isArray(monitors) &&
27 monitors.every((item) => typeof item === "number")
28 );
29}