error-serializer
Version:
Convert errors to/from plain objects
37 lines (21 loc) • 783 B
JavaScript
export const setConstructorArgs=({constructorArgs,message})=>
Array.isArray(constructorArgs)?
packConstructorArgs(constructorArgs,message):
[];
const packConstructorArgs=(constructorArgs,message)=>{
if(constructorArgs[0]!==message){
return[["constructorArgs",constructorArgs]]
}
return canUseDefaultArgs(constructorArgs)?
[]:
[["constructorArgs",[null,...constructorArgs.slice(1)]]]
};
const canUseDefaultArgs=(constructorArgs)=>
constructorArgs.length===1||
constructorArgs.length===2&&isEmptyObject(constructorArgs[1]);
const isEmptyObject=(value)=>
typeof value==="object"&&value!==null&&Object.keys(value).length===0;
export const unpackConstructorArgs=(constructorArgs,message)=>
constructorArgs[0]===null?
[message,...constructorArgs.slice(1)]:
constructorArgs;