diff --git a/src/runtime/cache.ts b/src/runtime/cache.ts index 0577710557..7d2ff3bef9 100644 --- a/src/runtime/cache.ts +++ b/src/runtime/cache.ts @@ -24,8 +24,8 @@ export interface CacheOptions { getKey?: (...args: any[]) => string | Promise; transform?: (entry: CacheEntry, ...args: any[]) => any; validate?: (entry: CacheEntry) => boolean; - shouldInvalidateCache?: (...args: any[]) => boolean; - shouldBypassCache?: (...args: any[]) => boolean; + shouldInvalidateCache?: (...args: any[]) => boolean | Promise; + shouldBypassCache?: (...args: any[]) => boolean | Promise; group?: string; integrity?: any; /** @@ -150,12 +150,12 @@ export function defineCachedFunction( } return async (...args) => { - const shouldBypassCache = opts.shouldBypassCache?.(...args); + const shouldBypassCache = await opts.shouldBypassCache?.(...args); if (shouldBypassCache) { return fn(...args); } const key = await (opts.getKey || getKey)(...args); - const shouldInvalidateCache = opts.shouldInvalidateCache?.(...args); + const shouldInvalidateCache = await opts.shouldInvalidateCache?.(...args); const entry = await get( key, () => fn(...args), @@ -184,8 +184,8 @@ export interface ResponseCacheEntry { export interface CachedEventHandlerOptions extends Omit>, "transform" | "validate"> { - shouldInvalidateCache?: (event: H3Event) => boolean; - shouldBypassCache?: (event: H3Event) => boolean; + shouldInvalidateCache?: (event: H3Event) => boolean | Promise; + shouldBypassCache?: (event: H3Event) => boolean | Promise; getKey?: (event: H3Event) => string | Promise; headersOnly?: boolean; varies?: string[];