keyv-cache-proxy
Advanced tools
+49
-19
| import type Keyv from "keyv"; | ||
| import type { KeyvStoreAdapter } from "keyv"; | ||
| type Awaitable<T> = T | Promise<T>; | ||
| /** | ||
@@ -10,4 +11,4 @@ * KeyvCacheProxy | ||
| * @param ttl - Time-to-live for cached entries in milliseconds. | ||
| * @param onCache - Optional hook called when data is loaded from cache. Receives key and cached value, can return modified value. | ||
| * @param onFetch - Optional hook called when data is freshly fetched. Receives key and fetched value, can return modified value before caching. | ||
| * @param onCached - Optional hook called when data is loaded from cache. Receives key and cached value, can return modified value. | ||
| * @param onFetched - Optional hook called when data is freshly fetched. Receives key and fetched value, can return modified value before caching. | ||
| * @param prefix - Optional prefix to prepend to cache keys. | ||
@@ -31,4 +32,4 @@ * | ||
| * // hooks for logging | ||
| * onCache: (key, value) => value ? console.log(`Cache hit: ${key}`) : console.log(`Cache miss: ${key}`), | ||
| * onFetch: (key, value) => console.log(`Fetched fresh: ${key}`), | ||
| * onCached: (key, value) => value ? console.log(`Cache hit: ${key}`) : console.log(`Cache miss: ${key}`), | ||
| * onFetched: (key, value) => console.log(`Fetched fresh: ${key}`), | ||
| * })(new Octokit()); | ||
@@ -54,12 +55,12 @@ * | ||
| * // Modify cached data before returning (called on every invocation) | ||
| * onCache: (key, value) => { | ||
| * onCached: (key, value) => { | ||
| * if (value !== undefined) { | ||
| * console.log(`Using cached data for ${key}`); | ||
| * return { ...value, fromCache: true }; | ||
| * return { data: { ...value, fromCache: true } }; | ||
| * } | ||
| * }, | ||
| * // Transform fetched data before caching | ||
| * onFetch: (key, value) => { | ||
| * onFetched: (key, value) => { | ||
| * console.log(`Caching fresh data for ${key}`); | ||
| * return { ...value, fetchedAt: Date.now() }; | ||
| * return { data: { ...value, fetchedAt: Date.now() } }; | ||
| * }, | ||
@@ -71,3 +72,3 @@ * })(new Octokit()); | ||
| * | ||
| * Force cache refresh by returning null from onCache | ||
| * Force cache refresh by returning { skip: true } from onCached | ||
| * ```ts | ||
@@ -77,11 +78,28 @@ * const gh = KeyvCacheProxy({ | ||
| * ttl: 600e3, | ||
| * onCache: (key, value) => { | ||
| * // Return null to force refetch even if cached | ||
| * onCached: (key, value) => { | ||
| * // Return { skip: true } to force refetch even if cached | ||
| * if (shouldRefresh(value)) { | ||
| * return null; // Forces cache miss | ||
| * return { skip: true }; // Forces cache miss | ||
| * } | ||
| * return value; // Use cached value | ||
| * // Return undefined to use cached value as-is | ||
| * }, | ||
| * })(new Octokit()); | ||
| * ``` | ||
| * | ||
| * @example | ||
| * | ||
| * Custom TTL per request with onFetched | ||
| * ```ts | ||
| * const gh = KeyvCacheProxy({ | ||
| * store: kv, | ||
| * ttl: 600e3, // Default 10 minutes | ||
| * onFetched: (key, value) => { | ||
| * // Cache user data for 1 hour, other data uses default TTL | ||
| * if (key.includes('users')) { | ||
| * return { data: value, ttl: 3600e3 }; | ||
| * } | ||
| * return { data: value }; | ||
| * }, | ||
| * })(new Octokit()); | ||
| * ``` | ||
| */ | ||
@@ -95,13 +113,24 @@ export default function KeyvCacheProxy(options: { | ||
| * Called when data is loaded from cache. Receives key and cached value, can return modified value. | ||
| * Return null to treat as cache miss. | ||
| * Returns undefined to use original cached value. | ||
| * Returns modified value to use that instead. | ||
| * Return { skip: true } to skip returning cached value and treat as cache miss. | ||
| * Return { data?: <value> } to return modified cached value. | ||
| */ | ||
| onCache?: (key: string, value: any) => Promise<any> | any; | ||
| onCached?: (key: string, value: any) => Awaitable<{ | ||
| data?: any; | ||
| } | { | ||
| skip: true; | ||
| } | undefined>; | ||
| /** | ||
| * Called when data is freshly fetched. Receives key and fetched value, can return modified value before caching. | ||
| * Returns undefined to use original fetched value. | ||
| * Returns modified value to cache that instead. | ||
| * Return undefined to use original fetched value. | ||
| * Return {} to use original fetched value with default TTL. | ||
| * Return { data?: <value>, ttl?: <number> } to cache modified value with optional custom TTL. | ||
| * Return { skip: true } to skip caching but still return fetched value. | ||
| */ | ||
| onFetch?: (key: string, value: any) => Promise<any> | any; | ||
| onFetched?: (key: string, value: any) => Awaitable<{ | ||
| data?: any; | ||
| ttl?: number; | ||
| } | { | ||
| skip: true; | ||
| } | undefined>; | ||
| /** Prefix of keys */ | ||
@@ -130,2 +159,3 @@ prefix?: string; | ||
| export declare function globalThisCached<T>(name: string, compute: () => T): T; | ||
| export {}; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE;IAC9C,6CAA6C;IAC7C,KAAK,EAAE,IAAI,GAAG,gBAAgB,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1D;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1D,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,IAGS,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAG,eAAe,CAAC,CAAC,CAAC,CAuDtD;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GACtD,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACnC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrB,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAcrE"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAE7C,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE;IAC9C,6CAA6C;IAC7C,KAAK,EAAE,IAAI,GAAG,gBAAgB,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/C,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAC/F;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,KACP,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,IAGS,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAG,eAAe,CAAC,CAAC,CAAC,CAuEtD;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GACtD,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GACnC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrB,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAcrE"} |
+65
-31
@@ -8,4 +8,4 @@ /** | ||
| * @param ttl - Time-to-live for cached entries in milliseconds. | ||
| * @param onCache - Optional hook called when data is loaded from cache. Receives key and cached value, can return modified value. | ||
| * @param onFetch - Optional hook called when data is freshly fetched. Receives key and fetched value, can return modified value before caching. | ||
| * @param onCached - Optional hook called when data is loaded from cache. Receives key and cached value, can return modified value. | ||
| * @param onFetched - Optional hook called when data is freshly fetched. Receives key and fetched value, can return modified value before caching. | ||
| * @param prefix - Optional prefix to prepend to cache keys. | ||
@@ -29,4 +29,4 @@ * | ||
| * // hooks for logging | ||
| * onCache: (key, value) => value ? console.log(`Cache hit: ${key}`) : console.log(`Cache miss: ${key}`), | ||
| * onFetch: (key, value) => console.log(`Fetched fresh: ${key}`), | ||
| * onCached: (key, value) => value ? console.log(`Cache hit: ${key}`) : console.log(`Cache miss: ${key}`), | ||
| * onFetched: (key, value) => console.log(`Fetched fresh: ${key}`), | ||
| * })(new Octokit()); | ||
@@ -52,12 +52,12 @@ * | ||
| * // Modify cached data before returning (called on every invocation) | ||
| * onCache: (key, value) => { | ||
| * onCached: (key, value) => { | ||
| * if (value !== undefined) { | ||
| * console.log(`Using cached data for ${key}`); | ||
| * return { ...value, fromCache: true }; | ||
| * return { data: { ...value, fromCache: true } }; | ||
| * } | ||
| * }, | ||
| * // Transform fetched data before caching | ||
| * onFetch: (key, value) => { | ||
| * onFetched: (key, value) => { | ||
| * console.log(`Caching fresh data for ${key}`); | ||
| * return { ...value, fetchedAt: Date.now() }; | ||
| * return { data: { ...value, fetchedAt: Date.now() } }; | ||
| * }, | ||
@@ -69,3 +69,3 @@ * })(new Octokit()); | ||
| * | ||
| * Force cache refresh by returning null from onCache | ||
| * Force cache refresh by returning { skip: true } from onCached | ||
| * ```ts | ||
@@ -75,14 +75,31 @@ * const gh = KeyvCacheProxy({ | ||
| * ttl: 600e3, | ||
| * onCache: (key, value) => { | ||
| * // Return null to force refetch even if cached | ||
| * onCached: (key, value) => { | ||
| * // Return { skip: true } to force refetch even if cached | ||
| * if (shouldRefresh(value)) { | ||
| * return null; // Forces cache miss | ||
| * return { skip: true }; // Forces cache miss | ||
| * } | ||
| * return value; // Use cached value | ||
| * // Return undefined to use cached value as-is | ||
| * }, | ||
| * })(new Octokit()); | ||
| * ``` | ||
| * | ||
| * @example | ||
| * | ||
| * Custom TTL per request with onFetched | ||
| * ```ts | ||
| * const gh = KeyvCacheProxy({ | ||
| * store: kv, | ||
| * ttl: 600e3, // Default 10 minutes | ||
| * onFetched: (key, value) => { | ||
| * // Cache user data for 1 hour, other data uses default TTL | ||
| * if (key.includes('users')) { | ||
| * return { data: value, ttl: 3600e3 }; | ||
| * } | ||
| * return { data: value }; | ||
| * }, | ||
| * })(new Octokit()); | ||
| * ``` | ||
| */ | ||
| export default function KeyvCacheProxy(options) { | ||
| const { store, ttl, onCache, onFetch, prefix = "" } = options; | ||
| const { store, ttl, onCached, onFetched, prefix = "" } = options; | ||
| return (obj) => new Proxy(obj, { | ||
@@ -98,13 +115,17 @@ get(target, prop, receiver) { | ||
| let cached = await store.get(key); | ||
| if (onCache) { | ||
| const modified = await onCache(key, cached); | ||
| if (modified === null) { | ||
| cached = undefined; // treat null as cache miss | ||
| if (onCached) { | ||
| const modified = await onCached(key, cached); | ||
| if (modified !== undefined && typeof modified === "object" && modified !== null) { | ||
| if ("skip" in modified && modified.skip) { | ||
| // Treat as cache miss | ||
| cached = undefined; | ||
| } | ||
| else if ("data" in modified) { | ||
| // Return modified data | ||
| return modified.data; | ||
| } | ||
| // If modified is {} without skip or data, continue with original cached value | ||
| } | ||
| else if (modified !== undefined) { | ||
| return modified; // return modified cached value | ||
| } // else return original cached value | ||
| } | ||
| if (cached !== undefined) { | ||
| // onCache hook - can modify cached value before returning | ||
| return cached; | ||
@@ -114,11 +135,24 @@ } | ||
| let result = await method(...args); // call original method | ||
| // onFetch hook - can modify result before caching | ||
| if (onFetch) { | ||
| // call onFetch hook, can modify result before caching | ||
| const modified = await onFetch(key, result); | ||
| if (modified !== undefined) { | ||
| result = modified; | ||
| let customTtl = ttl; | ||
| // onFetched hook - can modify result before caching | ||
| if (onFetched) { | ||
| const modified = await onFetched(key, result); | ||
| if (modified !== undefined && typeof modified === "object" && modified !== null) { | ||
| if ("skip" in modified && modified.skip) { | ||
| // Skip caching, but still return the fetched value | ||
| return result; | ||
| } | ||
| else if ("data" in modified || "ttl" in modified) { | ||
| // Use modified data and/or custom TTL | ||
| if ("data" in modified && modified.data !== undefined) { | ||
| result = modified.data; | ||
| } | ||
| if ("ttl" in modified && modified.ttl !== undefined) { | ||
| customTtl = modified.ttl; | ||
| } | ||
| } | ||
| // If modified is {} without skip/data/ttl, use original result with default TTL | ||
| } | ||
| } | ||
| await store.set(key, result, ttl); | ||
| await store.set(key, result, customTtl); | ||
| return result; | ||
@@ -132,4 +166,4 @@ }; | ||
| ttl, | ||
| onCache, | ||
| onFetch, | ||
| onCached, | ||
| onFetched, | ||
| prefix: `${prefix}${String(prop)}.`, | ||
@@ -136,0 +170,0 @@ })(val); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAyBtC;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEjE,OAAO,CAAmB,GAAM,EAAsB,EAAE,CACtD,IAAI,KAAK,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,wCAAwC;YACxC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAe,CAAC,CAAC;YACpC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;oBAC9B,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAE5F,cAAc;oBACd,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBAC7C,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;4BAChF,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gCACxC,sBAAsB;gCACtB,MAAM,GAAG,SAAS,CAAC;4BACrB,CAAC;iCAAM,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;gCAC9B,uBAAuB;gCACvB,OAAO,QAAQ,CAAC,IAAI,CAAC;4BACvB,CAAC;4BACD,8EAA8E;wBAChF,CAAC;oBACH,CAAC;oBACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBACzB,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAED,mBAAmB;oBACnB,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,uBAAuB;oBAC3D,IAAI,SAAS,GAAG,GAAG,CAAC;oBAEpB,oDAAoD;oBACpD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBAC9C,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;4BAChF,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gCACxC,mDAAmD;gCACnD,OAAO,MAAM,CAAC;4BAChB,CAAC;iCAAM,IAAI,MAAM,IAAI,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;gCACnD,sCAAsC;gCACtC,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oCACtD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gCACzB,CAAC;gCACD,IAAI,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oCACpD,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;gCAC3B,CAAC;4BACH,CAAC;4BACD,gFAAgF;wBAClF,CAAC;oBACH,CAAC;oBAED,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;oBACxC,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC;YACJ,CAAC;YACD,gCAAgC;YAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC5C,OAAO,cAAc,CAAC;oBACpB,KAAK;oBACL,GAAG;oBACH,QAAQ;oBACR,SAAS;oBACT,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;iBACpC,CAAC,CAAC,GAAG,CAAC,CAAC;YACV,CAAC;YACD,oDAAoD;YACpD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAAuB,CAAC;AAC7B,CAAC;AAUD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAI,IAAY,EAAE,OAAgB;IAChE,MAAM,CAAC,GAAG,UAET,CAAC;IACF,CAAC,CAAC,iCAAiC,KAAK,IAAI,GAAG,EAAE,CAAC;IAElD,MAAM,KAAK,GAAG,CAAC,CAAC,iCAAiC,CAAC;IAClD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAM,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"} |
+112
-54
@@ -66,5 +66,5 @@ import { beforeEach, describe, expect, test } from "bun:test"; | ||
| }); | ||
| describe("Hooks - onCache", () => { | ||
| test("should call onCache hook on every invocation", async () => { | ||
| const onCacheCalls = []; | ||
| describe("Hooks - onCached", () => { | ||
| test("should call onCached hook on every invocation", async () => { | ||
| const onCachedCalls = []; | ||
| const obj = { | ||
@@ -75,15 +75,16 @@ getValue: (x) => x * 2, | ||
| store, | ||
| onCache: (key, value) => { | ||
| onCacheCalls.push({ key, value }); | ||
| onCached: (key, value) => { | ||
| onCachedCalls.push({ key, value }); | ||
| return undefined; | ||
| }, | ||
| })(obj); | ||
| await cached.getValue(5); // First call - cache miss, onCache called with undefined | ||
| expect(onCacheCalls.length).toBe(1); | ||
| expect(onCacheCalls[0]?.value).toBe(undefined); | ||
| await cached.getValue(5); // Second call - cache hit, onCache called with cached value | ||
| expect(onCacheCalls.length).toBe(2); | ||
| expect(onCacheCalls[1]?.value).toBe(10); | ||
| expect(onCacheCalls[1]?.key).toContain("getValue"); | ||
| await cached.getValue(5); // First call - cache miss, onCached called with undefined | ||
| expect(onCachedCalls.length).toBe(1); | ||
| expect(onCachedCalls[0]?.value).toBe(undefined); | ||
| await cached.getValue(5); // Second call - cache hit, onCached called with cached value | ||
| expect(onCachedCalls.length).toBe(2); | ||
| expect(onCachedCalls[1]?.value).toBe(10); | ||
| expect(onCachedCalls[1]?.key).toContain("getValue"); | ||
| }); | ||
| test("should allow onCache to modify cached value", async () => { | ||
| test("should allow onCached to modify cached value", async () => { | ||
| const obj = { | ||
@@ -94,6 +95,6 @@ getData: () => ({ value: 100 }), | ||
| store, | ||
| onCache: (_key, value) => { | ||
| onCached: (_key, value) => { | ||
| // Only modify if value exists (cache hit) | ||
| if (value !== undefined) { | ||
| return { ...value, fromCache: true }; | ||
| return { data: { ...value, fromCache: true } }; | ||
| } | ||
@@ -107,3 +108,3 @@ }, | ||
| }); | ||
| test("should return original value if onCache returns undefined", async () => { | ||
| test("should return original value if onCached returns undefined", async () => { | ||
| const obj = { | ||
@@ -114,3 +115,3 @@ getValue: () => 42, | ||
| store, | ||
| onCache: (_key, _value) => { | ||
| onCached: (_key, _value) => { | ||
| // Return undefined to keep original | ||
@@ -124,3 +125,3 @@ return undefined; | ||
| }); | ||
| test("should support async onCache hook", async () => { | ||
| test("should support async onCached hook", async () => { | ||
| const obj = { | ||
@@ -131,7 +132,7 @@ getValue: () => 100, | ||
| store, | ||
| onCache: async (_key, value) => { | ||
| onCached: async (_key, value) => { | ||
| await new Promise((resolve) => setTimeout(resolve, 10)); | ||
| // Only modify on cache hit | ||
| if (value !== undefined) { | ||
| return value * 2; | ||
| return { data: value * 2 }; | ||
| } | ||
@@ -144,3 +145,3 @@ }, | ||
| }); | ||
| test("should force cache miss when onCache returns null", async () => { | ||
| test("should force cache miss when onCached returns skip", async () => { | ||
| let fetchCount = 0; | ||
@@ -155,6 +156,6 @@ const obj = { | ||
| store, | ||
| onCache: (_key, value) => { | ||
| // Return null to force refetch even if cached | ||
| onCached: (_key, value) => { | ||
| // Return { skip: true } to force refetch even if cached | ||
| if (value !== undefined) { | ||
| return null; // Force cache miss | ||
| return { skip: true }; // Force cache miss | ||
| } | ||
@@ -170,5 +171,5 @@ }, | ||
| }); | ||
| describe("Hooks - onFetch", () => { | ||
| test("should call onFetch hook on cache miss", async () => { | ||
| const onFetchCalls = []; | ||
| describe("Hooks - onFetched", () => { | ||
| test("should call onFetched hook on cache miss", async () => { | ||
| const onFetchedCalls = []; | ||
| const obj = { | ||
@@ -179,14 +180,15 @@ getValue: (x) => x * 2, | ||
| store, | ||
| onFetch: (key, value) => { | ||
| onFetchCalls.push({ key, value }); | ||
| onFetched: (key, value) => { | ||
| onFetchedCalls.push({ key, value }); | ||
| return undefined; | ||
| }, | ||
| })(obj); | ||
| await cached.getValue(5); | ||
| expect(onFetchCalls.length).toBe(1); | ||
| expect(onFetchCalls[0]?.value).toBe(10); | ||
| expect(onFetchCalls[0]?.key).toContain("getValue"); | ||
| expect(onFetchedCalls.length).toBe(1); | ||
| expect(onFetchedCalls[0]?.value).toBe(10); | ||
| expect(onFetchedCalls[0]?.key).toContain("getValue"); | ||
| await cached.getValue(5); // Cache hit - no fetch | ||
| expect(onFetchCalls.length).toBe(1); | ||
| expect(onFetchedCalls.length).toBe(1); | ||
| }); | ||
| test("should allow onFetch to modify value before caching", async () => { | ||
| test("should allow onFetched to modify value before caching", async () => { | ||
| const obj = { | ||
@@ -197,4 +199,4 @@ getData: () => ({ value: 100 }), | ||
| store, | ||
| onFetch: (_key, value) => { | ||
| return { ...value, fetchedAt: Date.now() }; | ||
| onFetched: (_key, value) => { | ||
| return { data: { ...value, fetchedAt: Date.now() } }; | ||
| }, | ||
@@ -209,3 +211,3 @@ })(obj); | ||
| }); | ||
| test("should support async onFetch hook", async () => { | ||
| test("should support async onFetched hook", async () => { | ||
| const obj = { | ||
@@ -216,5 +218,5 @@ getValue: () => 50, | ||
| store, | ||
| onFetch: async (_key, value) => { | ||
| onFetched: async (_key, value) => { | ||
| await new Promise((resolve) => setTimeout(resolve, 10)); | ||
| return value * 3; | ||
| return { data: value * 3 }; | ||
| }, | ||
@@ -225,3 +227,3 @@ })(obj); | ||
| }); | ||
| test("should cache modified value from onFetch", async () => { | ||
| test("should cache modified value from onFetched", async () => { | ||
| let callCount = 0; | ||
@@ -236,3 +238,3 @@ const obj = { | ||
| store, | ||
| onFetch: (_key, value) => value * 10, | ||
| onFetched: (_key, value) => ({ data: value * 10 }), | ||
| })(obj); | ||
@@ -245,2 +247,30 @@ const result1 = await cached.getValue(); | ||
| }); | ||
| test("should skip caching when onFetched returns skip", async () => { | ||
| let callCount = 0; | ||
| const obj = { | ||
| getValue: (x) => { | ||
| callCount++; | ||
| return x * 2; | ||
| }, | ||
| }; | ||
| const cached = KeyvCacheProxy({ | ||
| store, | ||
| onFetched: () => { | ||
| // Return { skip: true } to skip caching | ||
| return { skip: true }; | ||
| }, | ||
| })(obj); | ||
| // First call - fetch fresh | ||
| const result1 = await cached.getValue(5); | ||
| expect(result1).toBe(10); | ||
| expect(callCount).toBe(1); | ||
| // Second call - should fetch again because nothing was cached | ||
| const result2 = await cached.getValue(5); | ||
| expect(result2).toBe(10); | ||
| expect(callCount).toBe(2); // Should call original method again | ||
| // Verify nothing was cached | ||
| const key = "getValue(5)"; | ||
| const cachedValue = await store.get(key); | ||
| expect(cachedValue).toBeUndefined(); | ||
| }); | ||
| }); | ||
@@ -255,7 +285,7 @@ describe("Hooks - Combined", () => { | ||
| store, | ||
| onCache: (_key, value) => { | ||
| onCached: (_key, value) => { | ||
| hookCalls.push("cache"); | ||
| return value; | ||
| }, | ||
| onFetch: (_key, value) => { | ||
| onFetched: (_key, value) => { | ||
| hookCalls.push("fetch"); | ||
@@ -265,7 +295,7 @@ return value; | ||
| })(obj); | ||
| await cached.getValue(1); // cache miss: onCache(undefined), then onFetch | ||
| await cached.getValue(1); // cache miss: onCached(undefined), then onFetched | ||
| expect(hookCalls).toEqual(["cache", "fetch"]); | ||
| await cached.getValue(1); // cache hit: onCache(value) | ||
| await cached.getValue(1); // cache hit: onCached(value) | ||
| expect(hookCalls).toEqual(["cache", "fetch", "cache"]); | ||
| await cached.getValue(2); // cache miss: onCache(undefined), then onFetch | ||
| await cached.getValue(2); // cache miss: onCached(undefined), then onFetched | ||
| expect(hookCalls).toEqual(["cache", "fetch", "cache", "cache", "fetch"]); | ||
@@ -279,9 +309,9 @@ }); | ||
| store, | ||
| onCache: (_key, value) => { | ||
| onCached: (_key, value) => { | ||
| // Only modify on cache hit | ||
| if (value !== undefined) { | ||
| return { ...value, fromCache: true }; | ||
| return { data: { ...value, fromCache: true } }; | ||
| } | ||
| }, | ||
| onFetch: (_key, value) => ({ ...value, fromFetch: true }), | ||
| onFetched: (_key, value) => ({ data: { ...value, fromFetch: true } }), | ||
| })(obj); | ||
@@ -327,4 +357,5 @@ const result1 = await cached.getValue(); | ||
| store, | ||
| onFetch: (key) => { | ||
| onFetched: (key) => { | ||
| hookCalls.push(key); | ||
| return undefined; | ||
| }, | ||
@@ -368,4 +399,5 @@ })(obj); | ||
| prefix: "myapp:", | ||
| onFetch: (key) => { | ||
| onFetched: (key) => { | ||
| keys.push(key); | ||
| return undefined; | ||
| }, | ||
@@ -386,8 +418,9 @@ })(obj); | ||
| prefix: "app:", | ||
| onFetch: (key) => { | ||
| onFetched: (key) => { | ||
| keys.push(key); | ||
| return undefined; | ||
| }, | ||
| })(obj); | ||
| await cached.api.getData(); | ||
| expect(keys[0]).toBe("app:api.getData:[]"); | ||
| expect(keys[0]).toBe("app:api.getData()"); | ||
| }); | ||
@@ -417,2 +450,27 @@ }); | ||
| }); | ||
| test("should support custom TTL from onFetched", async () => { | ||
| let callCount = 0; | ||
| const obj = { | ||
| getValue: () => { | ||
| callCount++; | ||
| return callCount; | ||
| }, | ||
| }; | ||
| const cached = KeyvCacheProxy({ | ||
| store, | ||
| ttl: 10000, // Default 10s | ||
| onFetched: (_key, value) => { | ||
| // Use custom TTL of 100ms | ||
| return { data: value, ttl: 100 }; | ||
| }, | ||
| })(obj); | ||
| const result1 = await cached.getValue(); | ||
| expect(result1).toBe(1); | ||
| const result2 = await cached.getValue(); | ||
| expect(result2).toBe(1); // Cached | ||
| // Wait for custom TTL to expire (100ms) | ||
| await new Promise((resolve) => setTimeout(resolve, 150)); | ||
| const result3 = await cached.getValue(); | ||
| expect(result3).toBe(2); // Fresh call due to custom TTL | ||
| }); | ||
| }); | ||
@@ -506,3 +564,3 @@ describe("Non-function Properties", () => { | ||
| store, | ||
| onFetch: () => { | ||
| onFetched: () => { | ||
| throw new Error("Hook error"); | ||
@@ -509,0 +567,0 @@ }, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,cAAc,EAAE,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,KAAW,CAAC;IAEhB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE;oBACtB,SAAS,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,qCAAqC;YACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE1B,4CAA4C;YAC5C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;oBAC5B,SAAS,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE1B,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACjC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE1B,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACjC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,GAAG,GAAG;gBACV,KAAK,CAAC,SAAS,CAAC,EAAU;oBACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9B,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,GAAG,GAAG;gBACV,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;aACjC,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,aAAa,GAAuC,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;aAC/B,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACvB,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;oBACnC,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,0DAA0D;YACpF,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,6DAA6D;YACvF,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,GAAG,GAAG;gBACV,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aAChC,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACxB,0CAA0C;oBAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;oBACjD,CAAC;gBACH,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;aACnB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;oBACzB,oCAAoC;oBACpC,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc;YACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG;aACpB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,2BAA2B;oBAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC7B,CAAC;gBACH,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc;YACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YACpE,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE;oBACb,UAAU,EAAE,CAAC;oBACb,OAAO,UAAU,CAAC;gBACpB,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACxB,wDAAwD;oBACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,mBAAmB;oBAC5C,CAAC;gBACH,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,6BAA6B;YACtE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,cAAc,GAAuC,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;aAC/B,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACxB,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;oBACpC,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAErD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;YACjD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,GAAG,GAAG;gBACV,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;aAChC,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACzB,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;gBACvD,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhC,sCAAsC;YACtC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;aACnB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC7B,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC5D,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE;oBACb,SAAS,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,CAAC;aACnD,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE1B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YACjE,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE;oBACtB,SAAS,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,GAAG,EAAE;oBACd,wCAAwC;oBACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACxB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,2BAA2B;YAC3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE1B,8DAA8D;YAC9D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC;YAE/D,4BAA4B;YAC5B,MAAM,GAAG,GAAG,aAAa,CAAC;YAC1B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;aAC3B,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACxB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACzB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACf,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD;YAC5E,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;YACvD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD;YAC5E,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;aAC9B,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACxB,2BAA2B;oBAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;oBACjD,CAAC;gBACH,CAAC;gBACD,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;aACtE,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;gBAC5B,IAAI,EAAE,CAAC;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,GAAG,EAAE;oBACH,KAAK,EAAE;wBACL,GAAG,EAAE,CAAC,EAAU,EAAE,EAAE;4BAClB,SAAS,EAAE,CAAC;4BACZ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;wBACpC,CAAC;qBACF;iBACF;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG;gBACV,MAAM,EAAE;oBACN,MAAM,EAAE;wBACN,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ;qBACvB;iBACF;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACjB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG;gBACV,MAAM,EAAE;oBACN,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,OAAO,EAAE,CAAC;wBAChB,OAAO,SAAS,CAAC;oBACnB,CAAC;oBACD,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,OAAO,EAAE,CAAC;wBAChB,OAAO,SAAS,CAAC;oBACnB,CAAC;iBACF;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAE9B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG;gBACV,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;aACtB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACf,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG;gBACV,GAAG,EAAE;oBACH,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;iBACtB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACf,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE;oBACb,SAAS,EAAE,CAAC;oBACZ,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,GAAG,EAAE,GAAG,EAAE,QAAQ;aACnB,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAElC,yBAAyB;YACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YAC1D,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE;oBACb,SAAS,EAAE,CAAC;oBACZ,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,GAAG,EAAE,KAAK,EAAE,cAAc;gBAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACzB,0BAA0B;oBAC1B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBACnC,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAElC,wCAAwC;YACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEzD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ;aACvB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,GAAG,GAAG;gBACV,SAAS,EAAE,IAAY;gBACvB,cAAc,EAAE,SAAsB;gBACtC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ;aACvB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACzD,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE;oBACb,SAAS,EAAE,CAAC;oBACZ,OAAO,OAAO,CAAC;gBACjB,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACrE,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG;gBACV,OAAO,EAAE,CAAC,IAA+C,EAAE,EAAE;oBAC3D,SAAS,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3B,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAClD,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE;oBACb,UAAU,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,yFAAyF;YACzF,iCAAiC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,GAAG,GAAG;gBACV,UAAU,EAAE,GAAG,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;aACnB,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC;gBAC5B,KAAK;gBACL,SAAS,EAAE,GAAG,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;aACF,CAAC,CAAC,GAAG,CAAC,CAAC;YAER,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE;oBACtB,SAAS,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAExD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,GAAG,GAAG;gBACV,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC;gBAC5C,MAAM,EAAE,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC;aAChD,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,GAAG,GAAW,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAW,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACvB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1D,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,MAAM,GAAG,GAAG,gBAAgB,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,gBAAgB,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} |
+1
-1
| { | ||
| "name": "keyv-cache-proxy", | ||
| "version": "0.1.3", | ||
| "version": "0.2.0", | ||
| "description": "A transparent caching proxy for any object using Keyv - automatically cache method calls with TTL support", | ||
@@ -5,0 +5,0 @@ "type": "module", |
+40
-21
@@ -86,4 +86,4 @@ # keyv-cache-proxy | ||
| prefix: 'github.', | ||
| onCache: (key, value) => console.log('Cache hit:', key), | ||
| onFetch: (key, value) => console.log('Fetched fresh:', key), | ||
| onCached: (key, value) => console.log('Cache hit:', key), | ||
| onFetched: (key, value) => console.log('Fetched fresh:', key), | ||
| })(new Octokit().rest); | ||
@@ -183,7 +183,7 @@ | ||
| ttl: 60000, | ||
| onCache: (key, value) => { | ||
| onCached: (key, value) => { | ||
| hits++; | ||
| console.log(`Cache hit for ${key}. Total hits: ${hits}`); | ||
| }, | ||
| onFetch: (key, value) => { | ||
| onFetched: (key, value) => { | ||
| fetches++; | ||
@@ -202,12 +202,12 @@ console.log(`Fetched fresh for ${key}. Total fetches: ${fetches}`); | ||
| // Add metadata to cached data (called on every invocation) | ||
| onCache: (key, value) => { | ||
| onCached: (key, value) => { | ||
| if (value !== undefined) { | ||
| console.log('Returning cached data'); | ||
| return { ...value, fromCache: true, cachedAt: Date.now() }; | ||
| return { data: { ...value, fromCache: true, cachedAt: Date.now() } }; | ||
| } | ||
| }, | ||
| // Transform fetched data before caching | ||
| onFetch: (key, value) => { | ||
| onFetched: (key, value) => { | ||
| console.log('Processing fresh data'); | ||
| return { ...value, fetchedAt: Date.now(), processed: true }; | ||
| return { data: { ...value, fetchedAt: Date.now(), processed: true } }; | ||
| }, | ||
@@ -223,8 +223,8 @@ })(myObject); | ||
| ttl: 60000, | ||
| onCache: (key, value) => { | ||
| // Return null to force refetch even if cached | ||
| onCached: (key, value) => { | ||
| // Return { skip: true } to force refetch even if cached | ||
| if (value && isStale(value)) { | ||
| return null; // Forces cache miss and refetch | ||
| return { skip: true }; // Forces cache miss and refetch | ||
| } | ||
| return value; // Use cached value | ||
| // Return undefined to use cached value | ||
| }, | ||
@@ -234,2 +234,18 @@ })(myObject); | ||
| Custom TTL per request: | ||
| ```typescript | ||
| const cached = KeyvCacheProxy({ | ||
| store: new Keyv(), | ||
| ttl: 60000, // Default 1 minute | ||
| onFetched: (key, value) => { | ||
| // Cache user data longer than other data | ||
| if (key.includes('user')) { | ||
| return { data: value, ttl: 3600000 }; // 1 hour | ||
| } | ||
| return { data: value }; // Use default TTL | ||
| }, | ||
| })(myObject); | ||
| ``` | ||
| ## API | ||
@@ -244,13 +260,16 @@ | ||
| - **`store`** (required): A Keyv instance for cache storage | ||
| - **`ttl`** (optional): Time-to-live for cached entries in milliseconds | ||
| - **`ttl`** (optional): Time-to-live for cached entries in milliseconds (can be overridden per request via `onFetched`) | ||
| - **`prefix`** (optional): Prefix for cache keys (default: `""`) | ||
| - **`onCache`** (optional): Hook called on **every invocation**. Receives key and cached value (or `undefined` on cache miss). | ||
| - Return `null` → Treat as cache miss and refetch | ||
| - **`onCached`** (optional): Hook called on **every invocation**. Receives key and cached value (or `undefined` on cache miss). | ||
| - Return `undefined` → Use original cached value | ||
| - Return modified value → Use that instead | ||
| - Signature: `(key: string, value: any) => any | null | Promise<any | null>` | ||
| - **`onFetch`** (optional): Hook called when data is freshly fetched (cache miss). Receives key and fetched value. | ||
| - Return `undefined` → Cache original fetched value | ||
| - Return modified value → Cache that instead | ||
| - Signature: `(key: string, value: any) => any | Promise<any>` | ||
| - Return `{ skip: true }` → Treat as cache miss and refetch | ||
| - Return `{ data: <value> }` → Return modified cached value | ||
| - Signature: `(key: string, value: any) => { data?: any } | { skip: true } | undefined | Promise<...>` | ||
| - **`onFetched`** (optional): Hook called when data is freshly fetched (cache miss). Receives key and fetched value. | ||
| - Return `undefined` → Cache original fetched value with default TTL | ||
| - Return `{}` → Cache original fetched value with default TTL (same as undefined) | ||
| - Return `{ data: <value> }` → Cache modified value | ||
| - Return `{ data: <value>, ttl: <ms> }` → Cache modified value with custom TTL | ||
| - Return `{ skip: true }` → Skip caching but still return the fetched value | ||
| - Signature: `(key: string, value: any) => { data?: any, ttl?: number } | { skip: true } | undefined | Promise<...>` | ||
@@ -257,0 +276,0 @@ #### Returns |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
78085
12.67%987
14.1%334
6.03%2
Infinity%8
33.33%