zod-joda
Version:
JS-Joda integration for Zod validation library
35 lines (34 loc) • 1.3 kB
JavaScript
import { globalRegistry, pipe, string, transform } from "zod/v4/mini";
import { durationConfig, localDateConfig, localDateTimeConfig, localTimeConfig, zonedDateTimeConfig, } from "./core.js";
const createParseConstructor = ({ parse, invalidMessage, schemaFormat, example, }) => (params) => {
const inputSchema = string().register(globalRegistry, { example: example(params) });
inputSchema._zod.toJSONSchema = () => ({
format: schemaFormat,
});
return pipe(inputSchema, transform((value, context) => {
try {
return parse(value, params);
}
catch {
context.issues.push({
code: "custom",
message: params?.error ?? invalidMessage,
input: context.value,
});
return undefined;
}
}));
};
export const duration = createParseConstructor(durationConfig);
export const localDate = createParseConstructor(localDateConfig);
export const localDateTime = createParseConstructor(localDateTimeConfig);
export const localTime = createParseConstructor(localTimeConfig);
export const zonedDateTime = createParseConstructor(zonedDateTimeConfig);
export const zj = {
duration,
localDate,
localDateTime,
localTime,
zonedDateTime,
};
export default zj;