@d3vtool/hooks
Version:
Collection of custom React hooks to simplify tasks in your React projects.
2 lines (1 loc) • 1.72 kB
JavaScript
var u=new Set(["WeakMap","WeakSet","Promise","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","Proxy","Reflect","WeakRef"]);export function serialize(e){var t,r={value:"",dataType:"unknown"};if(e&&typeof e=="object"&&u.has(Object.getPrototypeOf(e).constructor.name))throw new Error("Error: Unsupported Type");if(typeof e=="bigint")r.value=e.toString(),r.dataType="bigint";else if(e instanceof Date)r.value=e.toUTCString(),r.dataType="date";else if(e instanceof RegExp){var a=e.flags,n=e.source,o={innerPattern:n,flags:a};r.value=JSON.stringify(o),r.dataType="regex"}else if(e instanceof Symbol){var s=new RegExp(/\((.+)\)/),i=(t=e.toString().match(s))===null||t===void 0?void 0:t[1];if(!i)throw new Error("Error: Unable to parse Symbol Description");r.value=i,r.dataType="symbol"}else if(e instanceof Map){var p=Array.from(e.entries());r.dataType="map",r.value=JSON.stringify(p)}else if(e instanceof Set){var l=Array.from(e);r.dataType="set",r.value=JSON.stringify(l)}else r.value=JSON.stringify(e),r.dataType="simple";return JSON.stringify(r)}export function deserialize(e){var t=JSON.parse(e);try{switch(t.dataType){case"bigint":return BigInt(t.value);case"date":return new Date(t.value);case"regex":var r=JSON.parse(t.value);return new RegExp(r.innerPattern,r.flags);case"simple":return JSON.parse(t.value);case"symbol":return Symbol.for(t.value);case"map":var a=JSON.parse(t.value);return new Map(a);case"set":var n=JSON.parse(t.value);return new Set(n);case"unknown":throw new Error("Error: Unsupported type.")}}catch{throw new Error("Error: Unsupported type.")}}var f=function(){function e(){}return e.currentSize=0,e.sizeLimit=5242880,e}();export{f as StoreState};
;