@serwist/build
Version:
A module that integrates into your build process, helping you generate a manifest of local files that should be precached.
55 lines (51 loc) • 1.92 kB
JavaScript
import { z } from 'zod';
class SerwistConfigError extends Error {
constructor({ moduleName, message }){
super(`Received an invalid ${moduleName ?? "Serwist"} configuration: ${message}`);
Object.setPrototypeOf(this, new.target.prototype);
}
}
const validationErrorMap = (error, ctx)=>{
switch(error.code){
case z.ZodIssueCode.invalid_type:
{
return {
message: `${error.message ?? "Received invalid type"}: expected ${error.expected}, received ${error.received}.`
};
}
case z.ZodIssueCode.invalid_literal:
{
return {
message: `${error.message ?? "Received invalid literal"}: expected ${error.expected}, received ${error.received}.`
};
}
case z.ZodIssueCode.unrecognized_keys:
{
return {
message: `${error.message ?? "Received unrecognized keys"}: ${error.keys.join(",")}`
};
}
case z.ZodIssueCode.invalid_arguments:
{
return {
message: `${error.message ?? "Received invalid arguments"}: ${error.argumentsError.errors.map((e)=>validationErrorMap(e, ctx)).join(",")}.`
};
}
case z.ZodIssueCode.invalid_return_type:
{
return {
message: `${error.message ?? "Received invalid return type"}: ${error.returnTypeError.errors.map((e)=>validationErrorMap(e, ctx)).join(",")}.`
};
}
case z.ZodIssueCode.custom:
{
return {
message: error.message ?? ctx.defaultError
};
}
}
return {
message: ctx.defaultError
};
};
export { SerwistConfigError as S, validationErrorMap as v };