Something went wrong. Try again.
A functional toolkit for authoring resource-leveling algorithms — compose constraint and scoring blocks, enumerate feasible schedules
Something went wrong. Try again.
12345678910111213141516171819202122import { z } from "zod";
export const DateStringSchema = z .string() .refine((val) => !Number.isNaN(Date.parse(val)), { message: "Invalid date string", }) .transform((val) => new Date(val));
export const NullableDateStringSchema = z .nullable(z.string()) .transform((val) => { if (val === null || val === "") { return null; } const parsed = new Date(val); if (Number.isNaN(parsed.getTime())) { return null; } return parsed; });