UNPKG

zod-joda

Version:

JS-Joda integration for Zod validation library

32 lines (31 loc) 1.62 kB
import { DateTimeFormatter, Duration, LocalDate, LocalDateTime, LocalTime, ZoneId, ZonedDateTime, } from "@js-joda/core"; export const durationConfig = { parse: (input) => Duration.parse(input), invalidMessage: "Invalid duration", schemaFormat: "duration", example: () => "PT1H", }; export const localDateConfig = { parse: (input, params) => LocalDate.parse(input, params?.dateTimeFormatter), invalidMessage: "Invalid local date", schemaFormat: "date", example: (params) => LocalDate.of(2020, 1, 1).format(params?.dateTimeFormatter ?? DateTimeFormatter.ISO_LOCAL_DATE), }; export const localDateTimeConfig = { parse: (input, params) => LocalDateTime.parse(input, params?.dateTimeFormatter), invalidMessage: "Invalid local date time", schemaFormat: "local-date-time", example: (params) => LocalDateTime.of(2020, 1, 1, 14, 0, 0, 0).format(params?.dateTimeFormatter ?? DateTimeFormatter.ISO_LOCAL_DATE_TIME), }; export const localTimeConfig = { parse: (input, params) => LocalTime.parse(input, params?.dateTimeFormatter), invalidMessage: "Invalid local time", schemaFormat: "time", example: (params) => LocalTime.of(14, 0, 0, 0).format(params?.dateTimeFormatter ?? DateTimeFormatter.ISO_LOCAL_TIME), }; export const zonedDateTimeConfig = { parse: (input, params) => ZonedDateTime.parse(input, params?.dateTimeFormatter), invalidMessage: "Invalid zoned date time", schemaFormat: "date-time", example: (params) => ZonedDateTime.of(2020, 1, 1, 14, 0, 0, 0, ZoneId.UTC).format(params?.dateTimeFormatter ?? DateTimeFormatter.ISO_OFFSET_DATE_TIME), };