modern-errors-serialize
Version:
`modern-errors` plugin to serialize/parse errors
65 lines (39 loc) • 1.16 kB
JavaScript
import{serialize as serializeToObject}from"error-serializer";
import{applyLoose}from"./loose.js";
export const serialize=({ErrorClass,instancesData,errorInfo},value)=>
serializeValue({ErrorClass,instancesData,errorInfo,value});
export const toJSON=({ErrorClass,instancesData,errorInfo,error})=>
serializeValue({ErrorClass,instancesData,errorInfo,value:error});
const serializeValue=({ErrorClass,instancesData,errorInfo,value})=>{
const{
options:{loose,shallow,include,exclude,transformObject}
}=errorInfo(value);
const valueA=applyLoose(value,loose,ErrorClass);
return serializeToObject(valueA,{
loose,
shallow,
include,
exclude,
transformObject:applyTransformObject.bind(undefined,{
instancesData,
transformObject
})
})
};
const applyTransformObject=(
{instancesData,transformObject},
errorObject,
error)=>
{
serializePluginsOpts(errorObject,error,instancesData);
transformObject?.(errorObject,error)
};
const serializePluginsOpts=(errorObject,error,instancesData)=>{
if(!instancesData.has(error)){
return
}
const{pluginsOpts}=instancesData.get(error);
if(Object.keys(pluginsOpts).length!==0){
errorObject.pluginsOpts=pluginsOpts
}
};