safe-json-value
Version:
⛑️ JSON serialization should never fail
34 lines (23 loc) • 557 B
JavaScript
export const omitInvalidTypes=(value,changes,path)=>{
const reason=getInvalidTypeReason(value);
if(reason===undefined){
return value
}
changes.push({path,oldValue:value,newValue:undefined,reason})
};
const getInvalidTypeReason=(value)=>{
const type=typeof value;
const reason=INVALID_TYPES[type];
if(reason!==undefined){
return reason
}
if(type==="number"&&!Number.isFinite(value)){
return"unstableInfinite"
}
};
const INVALID_TYPES={
function:"ignoredFunction",
symbol:"ignoredSymbolValue",
undefined:"ignoredUndefined",
bigint:"unsafeBigInt"
};