@serwist/build
Version:
A module that integrates into your build process, helping you generate a manifest of local files that should be precached.
56 lines (54 loc) • 1.85 kB
JavaScript
class SerwistConfigError extends Error {
constructor({ moduleName, message }){
super(`Invalid ${moduleName ?? "Serwist"} configuration:\n${message}`);
Object.setPrototypeOf(this, new.target.prototype);
}
}
const parsedType = (data)=>{
const t = typeof data;
switch(t){
case "number":
{
return Number.isNaN(data) ? "NaN" : "number";
}
case "object":
{
if (Array.isArray(data)) {
return "array";
}
if (data === null) {
return "null";
}
if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {
return data.constructor.name;
}
}
}
return t;
};
const validationErrorMap = (error)=>{
switch(error.code){
case "invalid_type":
{
return `${error.message ?? "Received invalid type"}: expected ${error.expected}, received ${parsedType(error.input)}.`;
}
case "invalid_value":
{
return `${error.message ?? "Received invalid value"}: expected ${error.expected}, received ${parsedType(error.input)}.`;
}
case "invalid_union":
{
return `${error.message ?? "Received invalid union"}:\n${error.errors.flatMap((err)=>err.map((e)=>` → ${e.message}`)).join("\n")}`;
}
case "unrecognized_keys":
{
return `${error.message ?? "Received unrecognized keys"}: ${error.keys.join(".")}`;
}
case "custom":
{
return error.message ?? undefined;
}
}
return undefined;
};
export { SerwistConfigError as S, validationErrorMap as v };