foxts 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ "use strict";const e={"<":"\\u003C","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\u2028":"\\u2028","\u2029":"\\u2029"};class t extends Error{constructor(e,t){super(e),this.name="DevalueError",this.path=t.join("")}}function r(e){return Object(e)!==e}const n=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function a(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t||Object.getOwnPropertyNames(t).sort().join("\0")===n}function o(e){return Object.prototype.toString.call(e).slice(8,-1)}function s(e){let t="",r=0;const n=e.length;for(let a=0;a<n;a+=1){const n=function(e){switch(e){case'"':return'\\"';case"<":return"\\u003C";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e<" "?`\\u${e.charCodeAt(0).toString(16).padStart(4,"0")}`:""}}(e[a]);n&&(t+=e.slice(r,a)+n,r=a+1)}return`"${0===r?e:t+e.slice(r)}"`}function c(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}const i=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function f(e){return i.test(e)?"."+e:"["+JSON.stringify(e)+"]"}const u="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$",l=/[<\b\f\n\r\t\0\u2028\u2029]/g,y=/^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;function p(t){return e[t]||t}function g(e){return e.replace(l,p)}function h(e){if("string"==typeof e)return s(e);if(void 0===e)return"void 0";if(0===e&&1/e<0)return"-0";const t=String(e);return"number"==typeof e?t.replace(/^(-)?0\./,"$1."):"bigint"==typeof e?e+"n":t}function b(e){const t=new DataView(e);let r="";for(let n=0;n<e.byteLength;n++)r+=String.fromCharCode(t.getUint8(n));return function(e){let t="";for(let r=0;r<e.length;r+=3){const n=[void 0,void 0,void 0,void 0];n[0]=e.charCodeAt(r)>>2,n[1]=(3&e.charCodeAt(r))<<4,e.length>r+1&&(n[1]|=e.charCodeAt(r+1)>>4,n[2]=(15&e.charCodeAt(r+1))<<2),e.length>r+2&&(n[2]|=e.charCodeAt(r+2)>>6,n[3]=63&e.charCodeAt(r+2));for(let e=0;e<n.length;e++)void 0===n[e]?t+="=":t+=$[n[e]]}return t}(r)}function A(e){const t=function(e){e.length%4==0&&(e=e.replace(/==?$/,""));let t="",r=0,n=0;for(let a=0;a<e.length;a++)r<<=6,r|=$.indexOf(e[a]),24===(n+=6)&&(t+=String.fromCharCode((0xff0000&r)>>16),t+=String.fromCharCode((65280&r)>>8),t+=String.fromCharCode(255&r),r=n=0);return 12===n?(r>>=4,t+=String.fromCharCode(r)):18===n&&(r>>=2,t+=String.fromCharCode((65280&r)>>8),t+=String.fromCharCode(255&r)),t}(e),r=new ArrayBuffer(t.length),n=new DataView(r);for(let e=0;e<r.byteLength;e++)n.setUint8(e,t.charCodeAt(e));return r}const $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function w(e,t){if("number"==typeof e)return n(e,!0);if(!Array.isArray(e)||0===e.length)throw Error("Invalid input");const r=Array(e.length);function n(a,o=!1){if(-1===a)return;if(-3===a)return NaN;if(-4===a)return 1/0;if(-5===a)return-1/0;if(-6===a)return -0;if(o)throw Error("Invalid input");if(a in r)return r[a];const s=e[a];if(s&&"object"==typeof s){if(Array.isArray(s)){if("string"==typeof s[0]){const e=s[0],o=t?.[e];if(o)return r[a]=o(n(s[1]));switch(e){case"Date":r[a]=new Date(s[1]);break;case"Set":const c=new Set;r[a]=c;for(let e=1;e<s.length;e+=1)c.add(n(s[e]));break;case"Map":const i=new Map;r[a]=i;for(let e=1;e<s.length;e+=2)i.set(n(s[e]),n(s[e+1]));break;case"RegExp":r[a]=new RegExp(s[1],s[2]);break;case"Object":r[a]=Object(s[1]);break;case"BigInt":r[a]=BigInt(s[1]);break;case"null":const f=Object.create(null);r[a]=f;for(let e=1;e<s.length;e+=2)f[s[e]]=n(s[e+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const t=new globalThis[e](A(s[1]));r[a]=t;break}case"ArrayBuffer":{const e=A(s[1]);r[a]=e;break}default:throw Error(`Unknown type ${e}`)}}else{const e=Array(s.length);r[a]=e;for(let t=0;t<s.length;t+=1){const r=s[t];-2!==r&&(e[t]=n(r))}}}else{const e={};for(const t in r[a]=e,s){const r=s[t];e[t]=n(r)}}}else r[a]=s;return r[a]}return n(0)}function d(e){const t=typeof e;return"string"===t?s(e):e instanceof String?s(e.toString()):void 0===e?"-1":0===e&&1/e<0?"-6":"bigint"===t?`["BigInt","${e}"]`:String(e)}exports.parse=function(e,t){return w(JSON.parse(e),t)},exports.stringify=function(e,n){const i=[],u=new Map,l=[];if(n)for(const e of Object.getOwnPropertyNames(n))l.push({key:e,fn:n[e]});const y=[];let p=0;const g=function e(n){if("function"==typeof n)throw new t("Cannot stringify a function",y);if(u.has(n))return u.get(n);if(void 0===n)return -1;if(Number.isNaN(n))return -3;if(n===1/0)return -4;if(n===-1/0)return -5;if(0===n&&1/n<0)return -6;const g=p++;for(const{key:t,fn:r}of(u.set(n,g),l)){const a=r(n);if(a)return i[g]=`["${t}",${e(a)}]`,g}let h="";if(r(n))h=d(n);else{const i=o(n);switch(i){case"Number":case"String":case"Boolean":h=`["Object",${d(n)}]`;break;case"BigInt":h=`["BigInt",${n}]`;break;case"Date":const u=!isNaN(n.getDate());h=`["Date","${u?n.toISOString():""}"]`;break;case"RegExp":const{source:l,flags:p}=n;h=p?`["RegExp",${s(l)},"${p}"]`:`["RegExp",${s(l)}]`;break;case"Array":h="[";for(let t=0;t<n.length;t+=1)t>0&&(h+=","),t in n?(y.push(`[${t}]`),h+=e(n[t]),y.pop()):h+=-2;h+="]";break;case"Set":for(const t of(h='["Set"',n))h+=`,${e(t)}`;h+="]";break;case"Map":for(const[t,a]of(h='["Map"',n))y.push(`.get(${r(t)?d(t):"..."})`),h+=`,${e(t)},${e(a)}`,y.pop();h+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":h='["'+i+'","'+b(n.buffer)+'"]';break;case"ArrayBuffer":{const e=b(n);h=`["ArrayBuffer","${e}"]`;break}default:if(!a(n))throw new t("Cannot stringify arbitrary non-POJOs",y);if(c(n).length>0)throw new t("Cannot stringify POJOs with symbolic keys",y);if(null===Object.getPrototypeOf(n)){for(const t in h='["null"',n)y.push(f(t)),h+=`,${s(t)},${e(n[t])}`,y.pop();h+="]"}else{h="{";let t=!1;for(const r in n)t&&(h+=","),t=!0,y.push(f(r)),h+=`${s(r)}:${e(n[r])}`,y.pop();h+="}"}}}return i[g]=h,g}(e);return g<0?`${g}`:`[${i.join(",")}]`},exports.uneval=function(e,n){const i=new Map,l=[],p=new Map;!function e(s){if("function"==typeof s)throw new t("Cannot stringify a function",l);if(!r(s)){if(i.has(s)){i.set(s,i.get(s)+1);return}if(i.set(s,1),n){const e=n(s);if("string"==typeof e){p.set(s,e);return}}switch(o(s)){case"Number":case"BigInt":case"String":case"Boolean":case"Date":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":case"ArrayBuffer":return;case"Array":s.forEach((t,r)=>{l.push(`[${r}]`),e(t),l.pop()});break;case"Set":Array.from(s).forEach(e);break;case"Map":for(const[t,n]of s)l.push(`.get(${r(t)?h(t):"..."})`),e(n),l.pop();break;default:if(!a(s))throw new t("Cannot stringify arbitrary non-POJOs",l);if(c(s).length>0)throw new t("Cannot stringify POJOs with symbolic keys",l);for(const t in s)l.push(f(t)),e(s[t]),l.pop()}}}(e);const b=new Map;function A(e){if(b.has(e))return b.get(e);if(r(e))return h(e);if(p.has(e))return p.get(e);const t=o(e);switch(t){case"Number":case"String":case"Boolean":return`Object(${A(e.valueOf())})`;case"RegExp":return`new RegExp(${s(e.source)}, "${e.flags}")`;case"Date":return`new Date(${e.getTime()})`;case"Array":const n=e.map((t,r)=>r in e?A(t):""),a=0===e.length||e.length-1 in e?"":",";return`[${n.join(",")}${a}]`;case"Set":case"Map":return`new ${t}([${Array.from(e).map(A).join(",")}])`;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":return`new ${t}([${e.toString()}])`;case"ArrayBuffer":{const t=new Uint8Array(e);return`new Uint8Array([${t.toString()}]).buffer`}default:const c=`{${Object.keys(e).map(t=>{var r;return`${r=t,/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(r)?r:g(JSON.stringify(r))}:${A(e[t])}`}).join(",")}}`;if(null===Object.getPrototypeOf(e))return Object.keys(e).length>0?`Object.assign(Object.create(null),${c})`:"Object.create(null)";return c}}Array.from(i).filter(e=>e[1]>1).sort((e,t)=>t[1]-e[1]).forEach((e,t)=>{b.set(e[0],function(e){let t="";do t=u[e%u.length]+t,e=~~(e/u.length)-1;while(e>=0);return y.test(t)?`${t}0`:t}(t))});const $=A(e);if(!b.size)return $;{const e=[],t=[],n=[];return b.forEach((a,s)=>{if(e.push(a),p.has(s)){n.push(p.get(s));return}if(r(s)){n.push(h(s));return}switch(o(s)){case"Number":case"String":case"Boolean":n.push(`Object(${A(s.valueOf())})`);break;case"RegExp":n.push(s.toString());break;case"Date":n.push(`new Date(${s.getTime()})`);break;case"Array":n.push(`Array(${s.length})`),s.forEach((e,r)=>{t.push(`${a}[${r}]=${A(e)}`)});break;case"Set":n.push("new Set"),t.push(`${a}.${Array.from(s).map(e=>`add(${A(e)})`).join(".")}`);break;case"Map":n.push("new Map"),t.push(`${a}.${Array.from(s).map(([e,t])=>`set(${A(e)}, ${A(t)})`).join(".")}`);break;default:n.push(null===Object.getPrototypeOf(s)?"Object.create(null)":"{}"),Object.keys(s).forEach(e=>{var r;t.push(`${a}${(r=e,/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(r)?`.${r}`:`[${g(JSON.stringify(r))}]`)}=${A(s[e])}`)})}}),t.push(`return ${$}`),`(function(${e.join(",")}){${t.join(";")}}(${n.join(",")}))`}},exports.unflatten=w;
@@ -0,0 +1 @@
1
+ const e={"<":"\\u003C","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\u2028":"\\u2028","\u2029":"\\u2029"};class t extends Error{constructor(e,t){super(e),this.name="DevalueError",this.path=t.join("")}}function r(e){return Object(e)!==e}const n=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function a(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t||Object.getOwnPropertyNames(t).sort().join("\0")===n}function o(e){return Object.prototype.toString.call(e).slice(8,-1)}function s(e){let t="",r=0;const n=e.length;for(let a=0;a<n;a+=1){const n=function(e){switch(e){case'"':return'\\"';case"<":return"\\u003C";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e<" "?`\\u${e.charCodeAt(0).toString(16).padStart(4,"0")}`:""}}(e[a]);n&&(t+=e.slice(r,a)+n,r=a+1)}return`"${0===r?e:t+e.slice(r)}"`}function c(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}const i=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function f(e){return i.test(e)?"."+e:"["+JSON.stringify(e)+"]"}const u="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$",l=/[<\b\f\n\r\t\0\u2028\u2029]/g,y=/^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;function g(e,n){const i=new Map,l=[],g=new Map;!function e(s){if("function"==typeof s)throw new t("Cannot stringify a function",l);if(!r(s)){if(i.has(s)){i.set(s,i.get(s)+1);return}if(i.set(s,1),n){const e=n(s);if("string"==typeof e){g.set(s,e);return}}switch(o(s)){case"Number":case"BigInt":case"String":case"Boolean":case"Date":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":case"ArrayBuffer":return;case"Array":s.forEach((t,r)=>{l.push(`[${r}]`),e(t),l.pop()});break;case"Set":Array.from(s).forEach(e);break;case"Map":for(const[t,n]of s)l.push(`.get(${r(t)?b(t):"..."})`),e(n),l.pop();break;default:if(!a(s))throw new t("Cannot stringify arbitrary non-POJOs",l);if(c(s).length>0)throw new t("Cannot stringify POJOs with symbolic keys",l);for(const t in s)l.push(f(t)),e(s[t]),l.pop()}}}(e);const p=new Map;function A(e){if(p.has(e))return p.get(e);if(r(e))return b(e);if(g.has(e))return g.get(e);const t=o(e);switch(t){case"Number":case"String":case"Boolean":return`Object(${A(e.valueOf())})`;case"RegExp":return`new RegExp(${s(e.source)}, "${e.flags}")`;case"Date":return`new Date(${e.getTime()})`;case"Array":const n=e.map((t,r)=>r in e?A(t):""),a=0===e.length||e.length-1 in e?"":",";return`[${n.join(",")}${a}]`;case"Set":case"Map":return`new ${t}([${Array.from(e).map(A).join(",")}])`;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":return`new ${t}([${e.toString()}])`;case"ArrayBuffer":{const t=new Uint8Array(e);return`new Uint8Array([${t.toString()}]).buffer`}default:const c=`{${Object.keys(e).map(t=>{var r;return`${r=t,/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(r)?r:h(JSON.stringify(r))}:${A(e[t])}`}).join(",")}}`;if(null===Object.getPrototypeOf(e))return Object.keys(e).length>0?`Object.assign(Object.create(null),${c})`:"Object.create(null)";return c}}Array.from(i).filter(e=>e[1]>1).sort((e,t)=>t[1]-e[1]).forEach((e,t)=>{p.set(e[0],function(e){let t="";do t=u[e%u.length]+t,e=~~(e/u.length)-1;while(e>=0);return y.test(t)?`${t}0`:t}(t))});const $=A(e);if(!p.size)return $;{const e=[],t=[],n=[];return p.forEach((a,s)=>{if(e.push(a),g.has(s)){n.push(g.get(s));return}if(r(s)){n.push(b(s));return}switch(o(s)){case"Number":case"String":case"Boolean":n.push(`Object(${A(s.valueOf())})`);break;case"RegExp":n.push(s.toString());break;case"Date":n.push(`new Date(${s.getTime()})`);break;case"Array":n.push(`Array(${s.length})`),s.forEach((e,r)=>{t.push(`${a}[${r}]=${A(e)}`)});break;case"Set":n.push("new Set"),t.push(`${a}.${Array.from(s).map(e=>`add(${A(e)})`).join(".")}`);break;case"Map":n.push("new Map"),t.push(`${a}.${Array.from(s).map(([e,t])=>`set(${A(e)}, ${A(t)})`).join(".")}`);break;default:n.push(null===Object.getPrototypeOf(s)?"Object.create(null)":"{}"),Object.keys(s).forEach(e=>{var r;t.push(`${a}${(r=e,/^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(r)?`.${r}`:`[${h(JSON.stringify(r))}]`)}=${A(s[e])}`)})}}),t.push(`return ${$}`),`(function(${e.join(",")}){${t.join(";")}}(${n.join(",")}))`}}function p(t){return e[t]||t}function h(e){return e.replace(l,p)}function b(e){if("string"==typeof e)return s(e);if(void 0===e)return"void 0";if(0===e&&1/e<0)return"-0";const t=String(e);return"number"==typeof e?t.replace(/^(-)?0\./,"$1."):"bigint"==typeof e?e+"n":t}function A(e){const t=new DataView(e);let r="";for(let n=0;n<e.byteLength;n++)r+=String.fromCharCode(t.getUint8(n));return function(e){let t="";for(let r=0;r<e.length;r+=3){const n=[void 0,void 0,void 0,void 0];n[0]=e.charCodeAt(r)>>2,n[1]=(3&e.charCodeAt(r))<<4,e.length>r+1&&(n[1]|=e.charCodeAt(r+1)>>4,n[2]=(15&e.charCodeAt(r+1))<<2),e.length>r+2&&(n[2]|=e.charCodeAt(r+2)>>6,n[3]=63&e.charCodeAt(r+2));for(let e=0;e<n.length;e++)void 0===n[e]?t+="=":t+=w[n[e]]}return t}(r)}function $(e){const t=function(e){e.length%4==0&&(e=e.replace(/==?$/,""));let t="",r=0,n=0;for(let a=0;a<e.length;a++)r<<=6,r|=w.indexOf(e[a]),24===(n+=6)&&(t+=String.fromCharCode((0xff0000&r)>>16),t+=String.fromCharCode((65280&r)>>8),t+=String.fromCharCode(255&r),r=n=0);return 12===n?(r>>=4,t+=String.fromCharCode(r)):18===n&&(r>>=2,t+=String.fromCharCode((65280&r)>>8),t+=String.fromCharCode(255&r)),t}(e),r=new ArrayBuffer(t.length),n=new DataView(r);for(let e=0;e<r.byteLength;e++)n.setUint8(e,t.charCodeAt(e));return r}const w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function d(e,t){return O(JSON.parse(e),t)}function O(e,t){if("number"==typeof e)return n(e,!0);if(!Array.isArray(e)||0===e.length)throw Error("Invalid input");const r=Array(e.length);function n(a,o=!1){if(-1===a)return;if(-3===a)return NaN;if(-4===a)return 1/0;if(-5===a)return-1/0;if(-6===a)return -0;if(o)throw Error("Invalid input");if(a in r)return r[a];const s=e[a];if(s&&"object"==typeof s){if(Array.isArray(s)){if("string"==typeof s[0]){const e=s[0],o=t?.[e];if(o)return r[a]=o(n(s[1]));switch(e){case"Date":r[a]=new Date(s[1]);break;case"Set":const c=new Set;r[a]=c;for(let e=1;e<s.length;e+=1)c.add(n(s[e]));break;case"Map":const i=new Map;r[a]=i;for(let e=1;e<s.length;e+=2)i.set(n(s[e]),n(s[e+1]));break;case"RegExp":r[a]=new RegExp(s[1],s[2]);break;case"Object":r[a]=Object(s[1]);break;case"BigInt":r[a]=BigInt(s[1]);break;case"null":const f=Object.create(null);r[a]=f;for(let e=1;e<s.length;e+=2)f[s[e]]=n(s[e+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const t=new globalThis[e]($(s[1]));r[a]=t;break}case"ArrayBuffer":{const e=$(s[1]);r[a]=e;break}default:throw Error(`Unknown type ${e}`)}}else{const e=Array(s.length);r[a]=e;for(let t=0;t<s.length;t+=1){const r=s[t];-2!==r&&(e[t]=n(r))}}}else{const e={};for(const t in r[a]=e,s){const r=s[t];e[t]=n(r)}}}else r[a]=s;return r[a]}return n(0)}function m(e,n){const i=[],u=new Map,l=[];if(n)for(const e of Object.getOwnPropertyNames(n))l.push({key:e,fn:n[e]});const y=[];let g=0;const p=function e(n){if("function"==typeof n)throw new t("Cannot stringify a function",y);if(u.has(n))return u.get(n);if(void 0===n)return -1;if(Number.isNaN(n))return -3;if(n===1/0)return -4;if(n===-1/0)return -5;if(0===n&&1/n<0)return -6;const p=g++;for(const{key:t,fn:r}of(u.set(n,p),l)){const a=r(n);if(a)return i[p]=`["${t}",${e(a)}]`,p}let h="";if(r(n))h=j(n);else{const i=o(n);switch(i){case"Number":case"String":case"Boolean":h=`["Object",${j(n)}]`;break;case"BigInt":h=`["BigInt",${n}]`;break;case"Date":const u=!isNaN(n.getDate());h=`["Date","${u?n.toISOString():""}"]`;break;case"RegExp":const{source:l,flags:g}=n;h=g?`["RegExp",${s(l)},"${g}"]`:`["RegExp",${s(l)}]`;break;case"Array":h="[";for(let t=0;t<n.length;t+=1)t>0&&(h+=","),t in n?(y.push(`[${t}]`),h+=e(n[t]),y.pop()):h+=-2;h+="]";break;case"Set":for(const t of(h='["Set"',n))h+=`,${e(t)}`;h+="]";break;case"Map":for(const[t,a]of(h='["Map"',n))y.push(`.get(${r(t)?j(t):"..."})`),h+=`,${e(t)},${e(a)}`,y.pop();h+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":h='["'+i+'","'+A(n.buffer)+'"]';break;case"ArrayBuffer":{const e=A(n);h=`["ArrayBuffer","${e}"]`;break}default:if(!a(n))throw new t("Cannot stringify arbitrary non-POJOs",y);if(c(n).length>0)throw new t("Cannot stringify POJOs with symbolic keys",y);if(null===Object.getPrototypeOf(n)){for(const t in h='["null"',n)y.push(f(t)),h+=`,${s(t)},${e(n[t])}`,y.pop();h+="]"}else{h="{";let t=!1;for(const r in n)t&&(h+=","),t=!0,y.push(f(r)),h+=`${s(r)}:${e(n[r])}`,y.pop();h+="}"}}}return i[p]=h,p}(e);return p<0?`${p}`:`[${i.join(",")}]`}function j(e){const t=typeof e;return"string"===t?s(e):e instanceof String?s(e.toString()):void 0===e?"-1":0===e&&1/e<0?"-6":"bigint"===t?`["BigInt","${e}"]`:String(e)}export{d as parse,m as stringify,g as uneval,O as unflatten};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foxts",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "Opinionated collection of common TypeScript utils by @SukkaW",
5
5
  "repository": {
6
6
  "url": "https://github.com/SukkaW/foxts"
@@ -38,14 +38,14 @@
38
38
  "require": "./add-array-elements-to-set/index.cjs",
39
39
  "default": "./add-array-elements-to-set/index.cjs"
40
40
  },
41
- "./append-set-elements-to-array": {
42
- "types": "./append-set-elements-to-array/index.d.ts",
41
+ "./ahocorasick": {
42
+ "types": "./ahocorasick/index.d.ts",
43
43
  "import": {
44
- "types": "./append-set-elements-to-array/index.d.ts",
45
- "default": "./append-set-elements-to-array/index.mjs"
44
+ "types": "./ahocorasick/index.d.ts",
45
+ "default": "./ahocorasick/index.mjs"
46
46
  },
47
- "require": "./append-set-elements-to-array/index.cjs",
48
- "default": "./append-set-elements-to-array/index.cjs"
47
+ "require": "./ahocorasick/index.cjs",
48
+ "default": "./ahocorasick/index.cjs"
49
49
  },
50
50
  "./async-write-to-stream": {
51
51
  "types": "./async-write-to-stream/index.d.ts",
@@ -56,15 +56,6 @@
56
56
  "require": "./async-write-to-stream/index.cjs",
57
57
  "default": "./async-write-to-stream/index.cjs"
58
58
  },
59
- "./ahocorasick": {
60
- "types": "./ahocorasick/index.d.ts",
61
- "import": {
62
- "types": "./ahocorasick/index.d.ts",
63
- "default": "./ahocorasick/index.mjs"
64
- },
65
- "require": "./ahocorasick/index.cjs",
66
- "default": "./ahocorasick/index.cjs"
67
- },
68
59
  "./bitwise": {
69
60
  "types": "./bitwise/index.d.ts",
70
61
  "import": {
@@ -74,6 +65,15 @@
74
65
  "require": "./bitwise/index.cjs",
75
66
  "default": "./bitwise/index.cjs"
76
67
  },
68
+ "./escape-string-regexp": {
69
+ "types": "./escape-string-regexp/index.d.ts",
70
+ "import": {
71
+ "types": "./escape-string-regexp/index.d.ts",
72
+ "default": "./escape-string-regexp/index.mjs"
73
+ },
74
+ "require": "./escape-string-regexp/index.cjs",
75
+ "default": "./escape-string-regexp/index.cjs"
76
+ },
77
77
  "./fast-string-array-join": {
78
78
  "types": "./fast-string-array-join/index.d.ts",
79
79
  "import": {
@@ -83,14 +83,14 @@
83
83
  "require": "./fast-string-array-join/index.cjs",
84
84
  "default": "./fast-string-array-join/index.cjs"
85
85
  },
86
- "./escape-string-regexp": {
87
- "types": "./escape-string-regexp/index.d.ts",
86
+ "./append-set-elements-to-array": {
87
+ "types": "./append-set-elements-to-array/index.d.ts",
88
88
  "import": {
89
- "types": "./escape-string-regexp/index.d.ts",
90
- "default": "./escape-string-regexp/index.mjs"
89
+ "types": "./append-set-elements-to-array/index.d.ts",
90
+ "default": "./append-set-elements-to-array/index.mjs"
91
91
  },
92
- "require": "./escape-string-regexp/index.cjs",
93
- "default": "./escape-string-regexp/index.cjs"
92
+ "require": "./append-set-elements-to-array/index.cjs",
93
+ "default": "./append-set-elements-to-array/index.cjs"
94
94
  },
95
95
  "./fifo": {
96
96
  "types": "./fifo/index.d.ts",
@@ -110,15 +110,6 @@
110
110
  "require": "./fnv1a/index.cjs",
111
111
  "default": "./fnv1a/index.cjs"
112
112
  },
113
- "./guard": {
114
- "types": "./guard/index.d.ts",
115
- "import": {
116
- "types": "./guard/index.d.ts",
117
- "default": "./guard/index.mjs"
118
- },
119
- "require": "./guard/index.cjs",
120
- "default": "./guard/index.cjs"
121
- },
122
113
  "./fnv1a52": {
123
114
  "types": "./fnv1a52/index.d.ts",
124
115
  "import": {
@@ -128,14 +119,14 @@
128
119
  "require": "./fnv1a52/index.cjs",
129
120
  "default": "./fnv1a52/index.cjs"
130
121
  },
131
- "./identity": {
132
- "types": "./identity/index.d.ts",
122
+ "./guard": {
123
+ "types": "./guard/index.d.ts",
133
124
  "import": {
134
- "types": "./identity/index.d.ts",
135
- "default": "./identity/index.mjs"
125
+ "types": "./guard/index.d.ts",
126
+ "default": "./guard/index.mjs"
136
127
  },
137
- "require": "./identity/index.cjs",
138
- "default": "./identity/index.cjs"
128
+ "require": "./guard/index.cjs",
129
+ "default": "./guard/index.cjs"
139
130
  },
140
131
  "./headers-to-object": {
141
132
  "types": "./headers-to-object/index.d.ts",
@@ -146,6 +137,15 @@
146
137
  "require": "./headers-to-object/index.cjs",
147
138
  "default": "./headers-to-object/index.cjs"
148
139
  },
140
+ "./identity": {
141
+ "types": "./identity/index.d.ts",
142
+ "import": {
143
+ "types": "./identity/index.d.ts",
144
+ "default": "./identity/index.mjs"
145
+ },
146
+ "require": "./identity/index.cjs",
147
+ "default": "./identity/index.cjs"
148
+ },
149
149
  "./is-probably-ip": {
150
150
  "types": "./is-probably-ip/index.d.ts",
151
151
  "import": {
@@ -173,6 +173,15 @@
173
173
  "require": "./noop/index.cjs",
174
174
  "default": "./noop/index.cjs"
175
175
  },
176
+ "./serialized-memo": {
177
+ "types": "./serialized-memo/index.d.ts",
178
+ "import": {
179
+ "types": "./serialized-memo/index.d.ts",
180
+ "default": "./serialized-memo/index.mjs"
181
+ },
182
+ "require": "./serialized-memo/index.cjs",
183
+ "default": "./serialized-memo/index.cjs"
184
+ },
176
185
  "./simple-string-hash": {
177
186
  "types": "./simple-string-hash/index.d.ts",
178
187
  "import": {
@@ -0,0 +1,5 @@
1
+ "use strict";var e,A=require("../fast-string-array-join/index.cjs"),t=require("../identity/index.cjs"),n=require("../noop/index.cjs");/*!
2
+ * hash-wasm (https://www.npmjs.com/package/hash-wasm)
3
+ * (c) Dani Biro
4
+ * @license MIT
5
+ */function r(e,A,t,n){return new(t||(t=Promise))(function(A,r){function i(e){try{a(n.next(e))}catch(e){r(e)}}function o(e){try{a(n.throw(e))}catch(e){r(e)}}function a(e){var n;e.done?A(e.value):((n=e.value)instanceof t?n:new t(function(e){e(n)})).then(i,o)}a((n=n.apply(e,[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class i{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(A=>{e=A})}dispatch(e){return r(this,void 0,void 0,function*(){const A=yield this.lock();try{return yield Promise.resolve(e())}finally{A()}})}}const o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,a=null!==(e=o.Buffer)&&void 0!==e?e:null,s=o.TextEncoder?new o.TextEncoder:null;function f(e,A){return(15&e)+(e>>6|e>>3&8)<<4|(15&A)+(A>>6|A>>3&8)}function Q(e,A,t){let n=0;for(let r=0;r<t;r++){let t=A[r]>>>4;e[n++]=t>9?t+87:t+48,t=15&A[r],e[n++]=t>9?t+87:t+48}return String.fromCharCode.apply(null,e)}const l=null!==a?e=>{if("string"==typeof e){const A=a.from(e,"utf8");return new Uint8Array(A.buffer,A.byteOffset,A.length)}if(a.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")}:e=>{if("string"==typeof e)return s.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")},C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",I=new Uint8Array(256);for(let e=0;e<C.length;e++)I[C.charCodeAt(e)]=e;const h=new i,u=new Map;new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i,new i;var c={name:"xxhash64",data:"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",hash:"177fbfa3"};const B=new i;let g=null;const w=new Uint8Array(8);function E(e){return!Number.isInteger(e)||e<0||e>0xffffffff?Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function d(e,A,t){const n=new DataView(e);n.setUint32(0,A,!0),n.setUint32(4,t,!0)}function y(e,A=0,t=0){if(E(A))return Promise.reject(E(A));if(E(t))return Promise.reject(E(t));if(null===g)return(function(e,A,t){return r(this,void 0,void 0,function*(){const t=yield e.lock(),n=yield function(e,A){return r(this,void 0,void 0,function*(){let t=null,n=null,i=!1;if("undefined"==typeof WebAssembly)throw Error("WebAssembly is not supported in this environment!");const o=()=>new DataView(t.exports.memory.buffer).getUint32(t.exports.STATE_SIZE,!0),a=h.dispatch(()=>r(this,void 0,void 0,function*(){if(!u.has(e.name)){const A=function(e){const A=function(e){let A=Math.floor(.75*e.length);const t=e.length;return"="===e[t-1]&&(A-=1,"="===e[t-2]&&(A-=1)),A}(e),t=e.length,n=new Uint8Array(A);let r=0;for(let A=0;A<t;A+=4){const t=I[e.charCodeAt(A)],i=I[e.charCodeAt(A+1)],o=I[e.charCodeAt(A+2)],a=I[e.charCodeAt(A+3)];n[r]=t<<2|i>>4,n[r+=1]=(15&i)<<4|o>>2,n[r+=1]=(3&o)<<6|63&a,r+=1}return n}(e.data),t=WebAssembly.compile(A);u.set(e.name,t)}const A=yield u.get(e.name);t=yield WebAssembly.instantiate(A,{})})),s=(e=null)=>{i=!0,t.exports.Hash_Init(e)},C=e=>{let A=0;for(;A<e.length;){const r=e.subarray(A,A+16384);A+=r.length,n.set(r),t.exports.Hash_Update(r.length)}},c=e=>{if(!i)throw Error("update() called before init()");C(l(e))},B=new Uint8Array(16),g=(e,r=null)=>{if(!i)throw Error("digest() called before init()");return(i=!1,t.exports.Hash_Final(r),"binary"===e)?n.slice(0,A):Q(B,n,A)},w=e=>"string"==typeof e?e.length<4096:e.byteLength<16384;let E=w;switch(e.name){case"argon2":case"scrypt":E=()=>!0;break;case"blake2b":case"blake2s":E=(e,A)=>A<=512&&w(e);break;case"blake3":E=(e,A)=>0===A&&w(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":E=()=>!1}return yield r(this,void 0,void 0,function*(){t||(yield a);const e=t.exports.Hash_GetBuffer();n=new Uint8Array(t.exports.memory.buffer,e,16384)}),{getMemory:()=>n,writeMemory:(e,A=0)=>{n.set(e,A)},getExports:()=>t.exports,setMemorySize:e=>{t.exports.Hash_SetMemorySize(e);const A=t.exports.Hash_GetBuffer();n=new Uint8Array(t.exports.memory.buffer,A,e)},init:s,update:c,digest:g,save:()=>{if(!i)throw Error("save() can only be called after init() and before digest()");const A=t.exports.Hash_GetState(),n=o(),r=new Uint8Array(t.exports.memory.buffer,A,n),a=new Uint8Array(4+n);return function(e,A){const t=A.length>>1;for(let n=0;n<t;n++){const t=n<<1;e[n]=f(A.charCodeAt(t),A.charCodeAt(t+1))}}(a,e.hash),a.set(r,4),a},load:A=>{if(!(A instanceof Uint8Array))throw Error("load() expects an Uint8Array generated by save()");const n=t.exports.Hash_GetState(),r=o(),a=4+r,s=t.exports.memory.buffer;if(A.length!==a)throw Error(`Bad state length (expected ${a} bytes, got ${A.length})`);if(!function(e,A){if(e.length!==2*A.length)return!1;for(let t=0;t<A.length;t++){const n=t<<1;if(A[t]!==f(e.charCodeAt(n),e.charCodeAt(n+1)))return!1}return!0}(e.hash,A.subarray(0,4)))throw Error("This state was written by an incompatible hash implementation");const Q=A.subarray(4);new Uint8Array(s,n,r).set(Q),i=!0},calculate:(e,r=null,i=null)=>{if(!E(e,r))return s(r),c(e),g("hex",i);const o=l(e);return n.set(o),t.exports.Hash_Calculate(o.length,r,i),Q(B,n,A)},hashLength:A}})}(A,8);return t(),n})})(B,c,0).then(n=>(g=n,d(w.buffer,A,t),g.writeMemory(w),g.calculate(e)));try{d(w.buffer,A,t),g.writeMemory(w);const n=g.calculate(e);return Promise.resolve(n)}catch(e){return Promise.reject(e)}}new i,new i,new i,new i,new i,exports.createMemoize=function(e,{onlyUseCachedIfFail:r=!1,resetTtlOnHit:i=!1,defaultTtl:o=6048e5,onCacheUpdate:a=n.noop,onCacheMiss:s=n.noop,onCacheHit:f=n.noop}={}){return function(n,Q){if(Q?.temporaryBypass)return(...e)=>Promise.resolve(n(...e));const l=Q&&"serializer"in Q?Q.serializer:t.identity,C=Q&&"deserializer"in Q?Q.deserializer:t.identity,I=Q?.ttl??o,h=n.toString(),u=y(h),c=Promise.resolve().then(function(){return require("../chunks/index.BHInDuqN.cjs")});return async function(...t){const o=(await c).stringify,Q=A.fastStringArrayJoin(await Promise.all([u,y(o(t))]),"|"),B=n.name||h||Q;let g=e.get(Q);if(g&&"object"==typeof g&&"then"in g&&(g=await g),r)try{const A=await n(...t);a(Q,{humanReadableName:B,isUseCachedIfFail:!0});const r=e.set(Q,l(A),I);return r&&"then"in r&&await r,A}catch(A){if(null==g)throw s(Q,{humanReadableName:B,isUseCachedIfFail:!0}),A;if(i){const A=e.updateTtl?.(Q,I);A&&"then"in A&&await A}return f(Q,{humanReadableName:B,isUseCachedIfFail:!0}),C(g)}else{if(null==g){s(Q,{humanReadableName:B,isUseCachedIfFail:!1});const A=await n(...t),r=e.set(Q,l(A),I);return r&&"then"in r&&await r,A}if(f(Q,{humanReadableName:B,isUseCachedIfFail:!1}),i){const A=e.updateTtl?.(Q,I);A&&"then"in A&&await A}return C(g)}}}};
@@ -0,0 +1,55 @@
1
+ interface MemoizeStorageProvider {
2
+ has(key: string): boolean | Promise<boolean>;
3
+ get(key: string): string | undefined | PromiseLike<string | undefined>;
4
+ set(key: string, value: string, ttl: number): void | Promise<void>;
5
+ updateTtl?: (key: string, ttl: number) => void | Promise<void>;
6
+ delete(key: string): void | Promise<void>;
7
+ }
8
+ interface CreateMemoizeOptions {
9
+ /**
10
+ * When set to true, the memoize will always try run the function first.
11
+ * If promise resolved, it will update the cache.
12
+ * If promise rejected, it will try to get the value from cache, and return
13
+ * the cached value. If the cache is not available, it will throw the error.
14
+ */
15
+ onlyUseCachedIfFail?: boolean;
16
+ resetTtlOnHit?: boolean;
17
+ defaultTtl?: number;
18
+ onCacheUpdate?: (key: string, { humanReadableName }: {
19
+ humanReadableName: string;
20
+ isUseCachedIfFail: boolean;
21
+ }) => void;
22
+ onCacheMiss?: (key: string, { humanReadableName }: {
23
+ humanReadableName: string;
24
+ isUseCachedIfFail: boolean;
25
+ }) => void;
26
+ onCacheHit?: (key: string, { humanReadableName }: {
27
+ humanReadableName: string;
28
+ isUseCachedIfFail: boolean;
29
+ }) => void;
30
+ }
31
+ type SerializableValue = number | string | boolean | bigint | Date | RegExp | Set<SerializableValue> | SerializableValue[] | null | undefined | Map<SerializableValue, SerializableValue> | SerializableObject | /** TypedArray */ Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ArrayBuffer;
32
+ interface SerializableObject {
33
+ [key: string]: SerializableValue;
34
+ }
35
+ interface MemoizeBaseOptions {
36
+ /**
37
+ * The time to live of the cache in milliseconds.
38
+ */
39
+ ttl?: number | null;
40
+ temporaryBypass?: boolean;
41
+ }
42
+ interface MemoizeOptionsWithCustomSerializer<T> extends MemoizeBaseOptions {
43
+ serializer: (value: T) => string;
44
+ deserializer: (cached: string) => T;
45
+ }
46
+ type MemoizeOptions<T> = T extends string ? MemoizeBaseOptions : MemoizeOptionsWithCustomSerializer<T>;
47
+ /**
48
+ * A factory function that returns a memoize function.
49
+ *
50
+ * Unlike common memoize function out there, this serialize the parameters and returned value
51
+ * for easy storing with file system, SQLite, Redis, etc.
52
+ */
53
+ declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit }?: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
54
+
55
+ export { type CreateMemoizeOptions, type MemoizeOptions, type MemoizeStorageProvider, type SerializableValue, createMemoize };
@@ -0,0 +1,5 @@
1
+ import{fastStringArrayJoin as A}from"../fast-string-array-join/index.mjs";import{identity as e}from"../identity/index.mjs";import{noop as t}from"../noop/index.mjs";/*!
2
+ * hash-wasm (https://www.npmjs.com/package/hash-wasm)
3
+ * (c) Dani Biro
4
+ * @license MIT
5
+ */function n(A,e,t,n){return new(t||(t=Promise))(function(e,r){function i(A){try{a(n.next(A))}catch(A){r(A)}}function o(A){try{a(n.throw(A))}catch(A){r(A)}}function a(A){var n;A.done?e(A.value):((n=A.value)instanceof t?n:new t(function(A){A(n)})).then(i,o)}a((n=n.apply(A,[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class r{constructor(){this.mutex=Promise.resolve()}lock(){let A=()=>{};return this.mutex=this.mutex.then(()=>new Promise(A)),new Promise(e=>{A=e})}dispatch(A){return n(this,void 0,void 0,function*(){const e=yield this.lock();try{return yield Promise.resolve(A())}finally{e()}})}}const i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,o=null!==(u=i.Buffer)&&void 0!==u?u:null,a=i.TextEncoder?new i.TextEncoder:null;function s(A,e){return(15&A)+(A>>6|A>>3&8)<<4|(15&e)+(e>>6|e>>3&8)}function f(A,e,t){let n=0;for(let r=0;r<t;r++){let t=e[r]>>>4;A[n++]=t>9?t+87:t+48,t=15&e[r],A[n++]=t>9?t+87:t+48}return String.fromCharCode.apply(null,A)}const Q=null!==o?A=>{if("string"==typeof A){const e=o.from(A,"utf8");return new Uint8Array(e.buffer,e.byteOffset,e.length)}if(o.isBuffer(A))return new Uint8Array(A.buffer,A.byteOffset,A.length);if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw Error("Invalid data type!")}:A=>{if("string"==typeof A)return a.encode(A);if(ArrayBuffer.isView(A))return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw Error("Invalid data type!")},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",C=new Uint8Array(256);for(let A=0;A<l.length;A++)C[l.charCodeAt(A)]=A;const I=new r,h=new Map;new r,new r,new r,new r,new r,new r,new r,new r,new r,new r,new r,new r,new r,new r,new r,new r;var u,B={name:"xxhash64",data:"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",hash:"177fbfa3"};const g=new r;let c=null;const w=new Uint8Array(8);function E(A){return!Number.isInteger(A)||A<0||A>0xffffffff?Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function m(A,e,t){const n=new DataView(A);n.setUint32(0,e,!0),n.setUint32(4,t,!0)}function d(A,e=0,t=0){if(E(e))return Promise.reject(E(e));if(E(t))return Promise.reject(E(t));if(null===c)return(function(A,e,t){return n(this,void 0,void 0,function*(){const t=yield A.lock(),r=yield function(A,e){return n(this,void 0,void 0,function*(){let t=null,r=null,i=!1;if("undefined"==typeof WebAssembly)throw Error("WebAssembly is not supported in this environment!");const o=()=>new DataView(t.exports.memory.buffer).getUint32(t.exports.STATE_SIZE,!0),a=I.dispatch(()=>n(this,void 0,void 0,function*(){if(!h.has(A.name)){const e=function(A){const e=function(A){let e=Math.floor(.75*A.length);const t=A.length;return"="===A[t-1]&&(e-=1,"="===A[t-2]&&(e-=1)),e}(A),t=A.length,n=new Uint8Array(e);let r=0;for(let e=0;e<t;e+=4){const t=C[A.charCodeAt(e)],i=C[A.charCodeAt(e+1)],o=C[A.charCodeAt(e+2)],a=C[A.charCodeAt(e+3)];n[r]=t<<2|i>>4,n[r+=1]=(15&i)<<4|o>>2,n[r+=1]=(3&o)<<6|63&a,r+=1}return n}(A.data),t=WebAssembly.compile(e);h.set(A.name,t)}const e=yield h.get(A.name);t=yield WebAssembly.instantiate(e,{})})),l=(A=null)=>{i=!0,t.exports.Hash_Init(A)},u=A=>{let e=0;for(;e<A.length;){const n=A.subarray(e,e+16384);e+=n.length,r.set(n),t.exports.Hash_Update(n.length)}},B=A=>{if(!i)throw Error("update() called before init()");u(Q(A))},g=new Uint8Array(16),c=(A,n=null)=>{if(!i)throw Error("digest() called before init()");return(i=!1,t.exports.Hash_Final(n),"binary"===A)?r.slice(0,e):f(g,r,e)},w=A=>"string"==typeof A?A.length<4096:A.byteLength<16384;let E=w;switch(A.name){case"argon2":case"scrypt":E=()=>!0;break;case"blake2b":case"blake2s":E=(A,e)=>e<=512&&w(A);break;case"blake3":E=(A,e)=>0===e&&w(A);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":E=()=>!1}return yield n(this,void 0,void 0,function*(){t||(yield a);const A=t.exports.Hash_GetBuffer();r=new Uint8Array(t.exports.memory.buffer,A,16384)}),{getMemory:()=>r,writeMemory:(A,e=0)=>{r.set(A,e)},getExports:()=>t.exports,setMemorySize:A=>{t.exports.Hash_SetMemorySize(A);const e=t.exports.Hash_GetBuffer();r=new Uint8Array(t.exports.memory.buffer,e,A)},init:l,update:B,digest:c,save:()=>{if(!i)throw Error("save() can only be called after init() and before digest()");const e=t.exports.Hash_GetState(),n=o(),r=new Uint8Array(t.exports.memory.buffer,e,n),a=new Uint8Array(4+n);return function(A,e){const t=e.length>>1;for(let n=0;n<t;n++){const t=n<<1;A[n]=s(e.charCodeAt(t),e.charCodeAt(t+1))}}(a,A.hash),a.set(r,4),a},load:e=>{if(!(e instanceof Uint8Array))throw Error("load() expects an Uint8Array generated by save()");const n=t.exports.Hash_GetState(),r=o(),a=4+r,f=t.exports.memory.buffer;if(e.length!==a)throw Error(`Bad state length (expected ${a} bytes, got ${e.length})`);if(!function(A,e){if(A.length!==2*e.length)return!1;for(let t=0;t<e.length;t++){const n=t<<1;if(e[t]!==s(A.charCodeAt(n),A.charCodeAt(n+1)))return!1}return!0}(A.hash,e.subarray(0,4)))throw Error("This state was written by an incompatible hash implementation");const Q=e.subarray(4);new Uint8Array(f,n,r).set(Q),i=!0},calculate:(A,n=null,i=null)=>{if(!E(A,n))return l(n),B(A),c("hex",i);const o=Q(A);return r.set(o),t.exports.Hash_Calculate(o.length,n,i),f(g,r,e)},hashLength:e}})}(e,8);return t(),r})})(g,B,0).then(n=>(c=n,m(w.buffer,e,t),c.writeMemory(w),c.calculate(A)));try{m(w.buffer,e,t),c.writeMemory(w);const n=c.calculate(A);return Promise.resolve(n)}catch(A){return Promise.reject(A)}}function y(n,{onlyUseCachedIfFail:r=!1,resetTtlOnHit:i=!1,defaultTtl:o=6048e5,onCacheUpdate:a=t,onCacheMiss:s=t,onCacheHit:f=t}={}){return function(t,Q){if(Q?.temporaryBypass)return(...A)=>Promise.resolve(t(...A));const l=Q&&"serializer"in Q?Q.serializer:e,C=Q&&"deserializer"in Q?Q.deserializer:e,I=Q?.ttl??o,h=t.toString(),u=d(h),B=import("../chunks/index.CiCKJNbp.mjs");return async function(...e){const o=(await B).stringify,Q=A(await Promise.all([u,d(o(e))]),"|"),g=t.name||h||Q;let c=n.get(Q);if(c&&"object"==typeof c&&"then"in c&&(c=await c),r)try{const A=await t(...e);a(Q,{humanReadableName:g,isUseCachedIfFail:!0});const r=n.set(Q,l(A),I);return r&&"then"in r&&await r,A}catch(A){if(null==c)throw s(Q,{humanReadableName:g,isUseCachedIfFail:!0}),A;if(i){const A=n.updateTtl?.(Q,I);A&&"then"in A&&await A}return f(Q,{humanReadableName:g,isUseCachedIfFail:!0}),C(c)}else{if(null==c){s(Q,{humanReadableName:g,isUseCachedIfFail:!1});const A=await t(...e),r=n.set(Q,l(A),I);return r&&"then"in r&&await r,A}if(f(Q,{humanReadableName:g,isUseCachedIfFail:!1}),i){const A=n.updateTtl?.(Q,I);A&&"then"in A&&await A}return C(c)}}}}new r,new r,new r,new r,new r;export{y as createMemoize};