@cabloy/zod-errors-custom
Version:
zod-errors-custom
23 lines (22 loc) • 875 B
JavaScript
import { z } from 'zod';
export function setLocaleAdapter(localeAdapterFn) {
z.util.setLocaleAdapter(localeAdapterFn);
}
export function setLocaleErrors(localeCurrentAdapterFn, localeErrors, localeDefault = 'en-us') {
const localeErrorsInstance = {};
function getLocalErrorInstance(locale) {
if (!localeErrorsInstance[locale]) {
localeErrorsInstance[locale] = localeErrors[locale]().localeError;
}
return localeErrorsInstance[locale];
}
z.config({
localeError(issue) {
const localeCurrent = localeCurrentAdapterFn();
if (localeErrors[localeCurrent])
return getLocalErrorInstance(localeCurrent)(issue);
if (localeCurrent !== localeDefault && localeErrors[localeDefault])
return getLocalErrorInstance(localeDefault)(issue);
},
});
}