foxts 2.0.1 → 3.0.0

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.
@@ -1,2 +1,2 @@
1
- function e(e){let r={};return new Headers(e).forEach((e,t)=>{r[t]=e}),r}export{e as headersToObject};
1
+ function e(e){let r={};return null==e||new Headers(e).forEach((e,n)=>{r[n]=e}),r}export{e as headersToObject};
2
2
  //# sourceMappingURL=headers-to-object.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"headers-to-object.mjs","sources":["../../src/headers-to-object/index.ts"],"sourcesContent":["import type { HeadersInitLike } from '../merge-headers';\n\nexport function headersToObject(headers: HeadersInitLike | Headers): Record<string, string> {\n const obj: Record<string, string> = {};\n\n new Headers(headers).forEach((value: string, key: string) => {\n obj[key] = value;\n });\n\n return obj;\n}\n"],"names":["headersToObject","headers","obj","Headers","forEach","value","key"],"mappings":"AAEO,SAASA,EAAgBC,CAAkC,EAChE,IAAMC,EAA8B,CAAC,EAMrC,OAJA,IAAIC,QAAQF,GAASG,OAAO,CAAC,CAACC,EAAeC,KAC3CJ,CAAG,CAACI,EAAI,CAAGD,CACb,GAEOH,CACT"}
1
+ {"version":3,"file":"headers-to-object.mjs","sources":["../../src/headers-to-object/index.ts"],"sourcesContent":["import type { HeadersInitLike } from '../merge-headers';\n\nexport function headersToObject(headers: HeadersInitLike | Headers): Record<string, string> {\n const obj: Record<string, string> = {};\n\n if (headers == null) {\n return obj;\n }\n\n new Headers(headers).forEach((value: string, key: string) => {\n obj[key] = value;\n });\n\n return obj;\n}\n"],"names":["headersToObject","headers","obj","Headers","forEach","value","key"],"mappings":"AAEO,SAASA,EAAgBC,CAAkC,EAChE,IAAMC,EAA8B,CAAC,SAEtB,MAAXD,GAIJ,IAAIE,QAAQF,GAASG,OAAO,CAAC,CAACC,EAAeC,KAC3CJ,CAAG,CAACI,EAAI,CAAGD,CACb,GALSH,CAQX"}
@@ -1,6 +1,6 @@
1
- type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers;
2
- type IncomingHttpHeadersLike = Record<string, string | string[] | undefined>;
3
- type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined>;
1
+ type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers | null | undefined;
2
+ type IncomingHttpHeadersLike = Record<string, string | string[] | undefined> | undefined | null;
3
+ type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined> | undefined | null;
4
4
  declare function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers;
5
5
  declare function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;
6
6
  declare function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;
@@ -1,2 +1,2 @@
1
- function e(e,r){let t=new Headers(e);return new Headers(r).forEach((e,r)=>{t.set(r,e)}),t}function r(e,r){return Object.assign({},e,r)}export{e as mergeHeaders,r as mergeNodeHttpHeaders};
1
+ function e(e,n){if(null==e)return null==n?new Headers:new Headers(n);if(null==n)return new Headers(e);let r=new Headers(e);return new Headers(n).forEach((e,n)=>{r.set(n,e)}),r}function n(e,n){return null==e?null==n?{}:n:null==n?e:Object.assign({},e,n)}export{e as mergeHeaders,n as mergeNodeHttpHeaders};
2
2
  //# sourceMappingURL=merge-headers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-headers.mjs","sources":["../../src/merge-headers/index.ts"],"sourcesContent":["export type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers;\nexport type IncomingHttpHeadersLike = Record<string, string | string[] | undefined>;\nexport type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined>;\n\nexport function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers {\n const destHeaders = new Headers(dest);\n const sourceHeaders = new Headers(source);\n\n sourceHeaders.forEach((value: string, key: string) => {\n destHeaders.set(key, value);\n });\n\n return destHeaders;\n}\n\nexport function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;\nexport function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;\nexport function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike | OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): IncomingHttpHeadersLike | OutgoingHttpHeadersLike {\n return Object.assign({}, dest, source);\n}\n"],"names":["mergeHeaders","dest","source","destHeaders","Headers","sourceHeaders","forEach","value","key","set","mergeNodeHttpHeaders","Object","assign"],"mappings":"AAIO,SAASA,EAAaC,CAAqB,CAAEC,CAAuB,EACzE,IAAMC,EAAc,IAAIC,QAAQH,GAOhC,OAJAI,AAFsB,IAAID,QAAQF,GAEpBI,OAAO,CAAC,CAACC,EAAeC,KACpCL,EAAYM,GAAG,CAACD,EAAKD,EACvB,GAEOJ,CACT,CAIO,SAASO,EAAqBT,CAAuD,CAAEC,CAAyD,EACrJ,OAAOS,OAAOC,MAAM,CAAC,GAAIX,EAAMC,EACjC"}
1
+ {"version":3,"file":"merge-headers.mjs","sources":["../../src/merge-headers/index.ts"],"sourcesContent":["export type HeadersInitLike = string[][] | Record<string, string | readonly string[]> | Headers | null | undefined;\nexport type IncomingHttpHeadersLike = Record<string, string | string[] | undefined> | undefined | null;\nexport type OutgoingHttpHeadersLike = Record<string, number | string | string[] | undefined> | undefined | null;\n\nexport function mergeHeaders(dest: HeadersInitLike, source: HeadersInitLike): Headers {\n if (dest == null) {\n return source == null ? new Headers() : new Headers(source);\n }\n if (source == null) {\n return new Headers(dest);\n }\n\n const destHeaders = new Headers(dest);\n const sourceHeaders = new Headers(source);\n\n sourceHeaders.forEach((value: string, key: string) => {\n destHeaders.set(key, value);\n });\n\n return destHeaders;\n}\n\nexport function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike, source: IncomingHttpHeadersLike): IncomingHttpHeadersLike;\nexport function mergeNodeHttpHeaders(dest: OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): OutgoingHttpHeadersLike;\nexport function mergeNodeHttpHeaders(dest: IncomingHttpHeadersLike | OutgoingHttpHeadersLike, source: IncomingHttpHeadersLike | OutgoingHttpHeadersLike): IncomingHttpHeadersLike | OutgoingHttpHeadersLike {\n if (dest == null) {\n return source == null ? {} : source;\n }\n if (source == null) {\n return dest;\n }\n return Object.assign({}, dest, source);\n}\n"],"names":["mergeHeaders","dest","source","Headers","destHeaders","sourceHeaders","forEach","value","key","set","mergeNodeHttpHeaders","Object","assign"],"mappings":"AAIO,SAASA,EAAaC,CAAqB,CAAEC,CAAuB,EACzE,GAAID,AAAQ,MAARA,EACF,OAAOC,AAAU,MAAVA,EAAiB,IAAIC,QAAY,IAAIA,QAAQD,GAEtD,GAAIA,AAAU,MAAVA,EACF,OAAO,IAAIC,QAAQF,GAGrB,IAAMG,EAAc,IAAID,QAAQF,GAOhC,OAJAI,AAFsB,IAAIF,QAAQD,GAEpBI,OAAO,CAAC,CAACC,EAAeC,KACpCJ,EAAYK,GAAG,CAACD,EAAKD,EACvB,GAEOH,CACT,CAIO,SAASM,EAAqBT,CAAuD,CAAEC,CAAyD,SACrJ,AAAID,AAAQ,MAARA,EACKC,AAAU,MAAVA,EAAiB,CAAA,EAAKA,EAE3BA,AAAU,MAAVA,EACKD,EAEFU,OAAOC,MAAM,CAAC,GAAIX,EAAMC,EACjC"}
@@ -27,6 +27,10 @@ interface CreateMemoizeOptions {
27
27
  humanReadableName: string;
28
28
  isUseCachedIfFail: boolean;
29
29
  }) => void;
30
+ /** recommendation: import('hash-wasm').xxhash64 */
31
+ keyHasher?: (key: string) => Promise<string> | string;
32
+ /** recommendation: import('devalue').stringify */
33
+ argHasher: (args: any[]) => Promise<string> | string;
30
34
  }
31
35
  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
36
  interface SerializableObject {
@@ -50,6 +54,6 @@ type MemoizeOptions<T> = T extends string ? MemoizeBaseOptions : MemoizeOptionsW
50
54
  * Unlike common memoize function out there, this serialize the parameters and returned value
51
55
  * for easy storing with file system, SQLite, Redis, etc.
52
56
  */
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>;
57
+ declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit, keyHasher, argHasher }: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
54
58
 
55
59
  export { type CreateMemoizeOptions, type MemoizeOptions, type MemoizeStorageProvider, type SerializableValue, createMemoize };
@@ -1,2 +1,2 @@
1
- import{fastStringArrayJoin as e}from"./fast-string-array-join.mjs";import{identity as t}from"./identity.mjs";import{noop as A}from"./noop.mjs";function r(e,t,A,r){return new(A||(A=Promise))(function(t,n){function i(e){try{o(r.next(e))}catch(e){n(e)}}function a(e){try{o(r.throw(e))}catch(e){n(e)}}function o(e){var r;e.done?t(e.value):((r=e.value)instanceof A?r:new A(function(e){e(r)})).then(i,a)}o((r=r.apply(e,[])).next())})}class n{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return r(this,void 0,void 0,function*(){let t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}let i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,a=null!==(g=i.Buffer)&&void 0!==g?g:null,o=i.TextEncoder?new i.TextEncoder:null;function l(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}function f(e,t,A){let r=0;for(let n=0;n<A;n++){let A=t[n]>>>4;e[r++]=A>9?A+87:A+48,A=15&t[n],e[r++]=A>9?A+87:A+48}return String.fromCharCode.apply(null,e)}let s=null!==a?e=>{if("string"==typeof e){let t=a.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.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 o.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")},u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Q=new Uint8Array(256);for(let e=0;e<u.length;e++)Q[u.charCodeAt(e)]=e;let h=new n,C=new Map;new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n;var g,I={name:"xxhash64",data:"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",hash:"177fbfa3"};let c=new n,B=null,w=new Uint8Array(8);function y(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 E(e,t,A){let r=new DataView(e);r.setUint32(0,t,!0),r.setUint32(4,A,!0)}function b(e,t=0,A=0){if(y(t))return Promise.reject(y(t));if(y(A))return Promise.reject(y(A));if(null===B)return(function(e,t,A){return r(this,void 0,void 0,function*(){let A=yield e.lock(),n=yield function(e,t){return r(this,void 0,void 0,function*(){let A=null,n=null,i=!1;if("undefined"==typeof WebAssembly)throw Error("WebAssembly is not supported in this environment!");let a=()=>new DataView(A.exports.memory.buffer).getUint32(A.exports.STATE_SIZE,!0),o=h.dispatch(()=>r(this,void 0,void 0,function*(){if(!C.has(e.name)){let t=function(e){let t=function(e){let t=Math.floor(.75*e.length),A=e.length;return"="===e[A-1]&&(t-=1,"="===e[A-2]&&(t-=1)),t}(e),A=e.length,r=new Uint8Array(t),n=0;for(let t=0;t<A;t+=4){let A=Q[e.charCodeAt(t)],i=Q[e.charCodeAt(t+1)],a=Q[e.charCodeAt(t+2)],o=Q[e.charCodeAt(t+3)];r[n]=A<<2|i>>4,r[n+=1]=(15&i)<<4|a>>2,r[n+=1]=(3&a)<<6|63&o,n+=1}return r}(e.data),A=WebAssembly.compile(t);C.set(e.name,A)}let t=yield C.get(e.name);A=yield WebAssembly.instantiate(t,{})})),u=(e=null)=>{i=!0,A.exports.Hash_Init(e)},g=e=>{let t=0;for(;t<e.length;){let r=e.subarray(t,t+16384);t+=r.length,n.set(r),A.exports.Hash_Update(r.length)}},I=e=>{if(!i)throw Error("update() called before init()");g(s(e))},c=new Uint8Array(16),B=(e,r=null)=>{if(!i)throw Error("digest() called before init()");return(i=!1,A.exports.Hash_Final(r),"binary"===e)?n.slice(0,t):f(c,n,t)},w=e=>"string"==typeof e?e.length<4096:e.byteLength<16384,y=w;switch(e.name){case"argon2":case"scrypt":y=()=>!0;break;case"blake2b":case"blake2s":y=(e,t)=>t<=512&&w(e);break;case"blake3":y=(e,t)=>0===t&&w(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":y=()=>!1}return yield r(this,void 0,void 0,function*(){A||(yield o);let e=A.exports.Hash_GetBuffer();n=new Uint8Array(A.exports.memory.buffer,e,16384)}),{getMemory:()=>n,writeMemory:(e,t=0)=>{n.set(e,t)},getExports:()=>A.exports,setMemorySize:e=>{A.exports.Hash_SetMemorySize(e);let t=A.exports.Hash_GetBuffer();n=new Uint8Array(A.exports.memory.buffer,t,e)},init:u,update:I,digest:B,save:()=>{if(!i)throw Error("save() can only be called after init() and before digest()");let t=A.exports.Hash_GetState(),r=a(),n=new Uint8Array(A.exports.memory.buffer,t,r),o=new Uint8Array(4+r);return function(e,t){let A=t.length>>1;for(let r=0;r<A;r++){let A=r<<1;e[r]=l(t.charCodeAt(A),t.charCodeAt(A+1))}}(o,e.hash),o.set(n,4),o},load:t=>{if(!(t instanceof Uint8Array))throw Error("load() expects an Uint8Array generated by save()");let r=A.exports.Hash_GetState(),n=a(),o=4+n,f=A.exports.memory.buffer;if(t.length!==o)throw Error(`Bad state length (expected ${o} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let A=0;A<t.length;A++){let r=A<<1;if(t[A]!==l(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw Error("This state was written by an incompatible hash implementation");let s=t.subarray(4);new Uint8Array(f,r,n).set(s),i=!0},calculate:(e,r=null,i=null)=>{if(!y(e,r))return u(r),I(e),B("hex",i);let a=s(e);return n.set(a),A.exports.Hash_Calculate(a.length,r,i),f(c,n,t)},hashLength:t}})}(t,8);return A(),n})})(c,I,0).then(r=>(B=r,E(w.buffer,t,A),B.writeMemory(w),B.calculate(e)));try{E(w.buffer,t,A),B.writeMemory(w);let r=B.calculate(e);return Promise.resolve(r)}catch(e){return Promise.reject(e)}}new n,new n,new n,new n,new n;class d extends Error{constructor(e,t){super(e),this.name="DevalueError",this.path=t.join("")}}function p(e){return Object(e)!==e}let m=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function k(e){let t="",A=0,r=e.length;for(let n=0;n<r;n+=1){let r=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[n]);r&&(t+=e.slice(A,n)+r,A=n+1)}return`"${0===A?e:t+e.slice(A)}"`}let v=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function U(e){return v.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function F(e){let t=new DataView(e),A="";for(let r=0;r<e.byteLength;r++)A+=String.fromCharCode(t.getUint8(r));return function(e){let t="";for(let A=0;A<e.length;A+=3){let r=[void 0,void 0,void 0,void 0];r[0]=e.charCodeAt(A)>>2,r[1]=(3&e.charCodeAt(A))<<4,e.length>A+1&&(r[1]|=e.charCodeAt(A+1)>>4,r[2]=(15&e.charCodeAt(A+1))<<2),e.length>A+2&&(r[2]|=e.charCodeAt(A+2)>>6,r[3]=63&e.charCodeAt(A+2));for(let e=0;e<r.length;e++)void 0===r[e]?t+="=":t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r[e]]}return t}(A)}function J(e){let t=typeof e;return"string"===t?k(e):e instanceof String?k(e.toString()):void 0===e?"-1":0===e&&1/e<0?"-6":"bigint"===t?`["BigInt","${e}"]`:String(e)}function x(r,{onlyUseCachedIfFail:n=!1,resetTtlOnHit:i=!1,defaultTtl:a=6048e5,onCacheUpdate:o=A,onCacheMiss:l=A,onCacheHit:f=A}={}){return function(A,s){if(s?.temporaryBypass)return(...e)=>Promise.resolve(A(...e));let u=s&&"serializer"in s?s.serializer:t,Q=s&&"deserializer"in s?s.deserializer:t,h=s?.ttl??a,C=A.toString(),g=b(C);return async function(...t){let a=e(await Promise.all([g,b(function(e,t){let A=[],r=new Map,n=[],i=[],a=0,o=function e(t){if("function"==typeof t)throw new d("Cannot stringify a function",i);if(r.has(t))return r.get(t);if(void 0===t)return -1;if(Number.isNaN(t))return -3;if(t===1/0)return -4;if(t===-1/0)return -5;if(0===t&&1/t<0)return -6;let o=a++;for(let{key:i,fn:a}of(r.set(t,o),n)){let r=a(t);if(r)return A[o]=`["${i}",${e(r)}]`,o}let l="";if(p(t))l=J(t);else{let A=Object.prototype.toString.call(t).slice(8,-1);switch(A){case"Number":case"String":case"Boolean":l=`["Object",${J(t)}]`;break;case"BigInt":l=`["BigInt",${t}]`;break;case"Date":let r=!isNaN(t.getDate());l=`["Date","${r?t.toISOString():""}"]`;break;case"RegExp":let{source:n,flags:a}=t;l=a?`["RegExp",${k(n)},"${a}"]`:`["RegExp",${k(n)}]`;break;case"Array":l="[";for(let A=0;A<t.length;A+=1)A>0&&(l+=","),A in t?(i.push(`[${A}]`),l+=e(t[A]),i.pop()):l+=-2;l+="]";break;case"Set":for(let A of(l='["Set"',t))l+=`,${e(A)}`;l+="]";break;case"Map":for(let[A,r]of(l='["Map"',t))i.push(`.get(${p(A)?J(A):"..."})`),l+=`,${e(A)},${e(r)}`,i.pop();l+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":l='["'+A+'","'+F(t.buffer)+'"]';break;case"ArrayBuffer":{let e=F(t);l=`["ArrayBuffer","${e}"]`;break}default:if(!function(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||null===t||Object.getOwnPropertyNames(t).sort().join("\0")===m}(t))throw new d("Cannot stringify arbitrary non-POJOs",i);if(Object.getOwnPropertySymbols(t).filter(e=>Object.getOwnPropertyDescriptor(t,e).enumerable).length>0)throw new d("Cannot stringify POJOs with symbolic keys",i);if(null===Object.getPrototypeOf(t)){for(let A in l='["null"',t)i.push(U(A)),l+=`,${k(A)},${e(t[A])}`,i.pop();l+="]"}else{l="{";let A=!1;for(let r in t)A&&(l+=","),A=!0,i.push(U(r)),l+=`${k(r)}:${e(t[r])}`,i.pop();l+="}"}}}return A[o]=l,o}(e);return o<0?`${o}`:`[${A.join(",")}]`}(t))]),"|"),s=A.name||C||a,I=r.get(a);if(I&&"object"==typeof I&&"then"in I&&(I=await I),n)try{let e=await A(...t);o(a,{humanReadableName:s,isUseCachedIfFail:!0});let n=r.set(a,u(e),h);return n&&"then"in n&&await n,e}catch(e){if(null==I)throw l(a,{humanReadableName:s,isUseCachedIfFail:!0}),e;if(i){let e=r.updateTtl?.(a,h);e&&"then"in e&&await e}return f(a,{humanReadableName:s,isUseCachedIfFail:!0}),Q(I)}else{if(null==I){l(a,{humanReadableName:s,isUseCachedIfFail:!1});let e=await A(...t),n=r.set(a,u(e),h);return n&&"then"in n&&await n,e}if(f(a,{humanReadableName:s,isUseCachedIfFail:!1}),i){let e=r.updateTtl?.(a,h);e&&"then"in e&&await e}return Q(I)}}}}export{x as createMemoize};
1
+ import{fastStringArrayJoin as e}from"./fast-string-array-join.mjs";import{identity as a}from"./identity.mjs";import{noop as t}from"./noop.mjs";function i(i,{onlyUseCachedIfFail:r=!1,resetTtlOnHit:n=!1,defaultTtl:l=6048e5,onCacheUpdate:s=t,onCacheMiss:m=t,onCacheHit:o=t,keyHasher:f=a,argHasher:u}){return function(t,h){if(h?.temporaryBypass)return(...e)=>Promise.resolve(t(...e));let d=h&&"serializer"in h?h.serializer:a,c=h&&"deserializer"in h?h.deserializer:a,p=h?.ttl??l,w=t.toString(),y=f(w);return async function(...a){let l=e(await Promise.all([y,u(a)]),"|"),f=t.name||w||l,h=i.get(l);if(h&&"object"==typeof h&&"then"in h&&(h=await h),r)try{let e=await t(...a);s(l,{humanReadableName:f,isUseCachedIfFail:!0});let r=i.set(l,d(e),p);return r&&"then"in r&&await r,e}catch(e){if(null==h)throw m(l,{humanReadableName:f,isUseCachedIfFail:!0}),e;if(n){let e=i.updateTtl?.(l,p);e&&"then"in e&&await e}return o(l,{humanReadableName:f,isUseCachedIfFail:!0}),c(h)}else{if(null==h){m(l,{humanReadableName:f,isUseCachedIfFail:!1});let e=await t(...a),r=i.set(l,d(e),p);return r&&"then"in r&&await r,e}if(o(l,{humanReadableName:f,isUseCachedIfFail:!1}),n){let e=i.updateTtl?.(l,p);e&&"then"in e&&await e}return c(h)}}}}export{i as createMemoize};
2
2
  //# sourceMappingURL=serialized-memo.mjs.map