zod-joda
Version:
JS-Joda integration for Zod validation library
32 lines (31 loc) • 1.62 kB
JavaScript
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),
};