All files / packages/utils/src temporal.ts

100% Statements 3/3
100% Branches 0/0
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26      39x           39x 156x                              
import { mapValues } from "remeda";
import { z } from "zod";
 
const temporalClasses = {
	plainTime: Temporal.PlainTime,
	plainDate: Temporal.PlainDate,
	plainDateTime: Temporal.PlainDateTime,
	zonedDateTime: Temporal.ZonedDateTime,
} as const;
export const temporalSchemas = mapValues(temporalClasses, (value) =>
	z.instanceof(value, {
		error: `Input not instance of ${value.name}`,
	}),
) as {
	[K in keyof TemporalMapping]: z.ZodCustom<
		InstanceType<(typeof temporalClasses)[K]>,
		InstanceType<(typeof temporalClasses)[K]>
	>;
};
 
export type TemporalMapping = {
	[K in keyof typeof temporalClasses]: InstanceType<
		(typeof temporalClasses)[K]
	>;
};