withCache
Higher-order function which wraps a function with caching functionality using Raycast's Cache API. Allows for caching of expensive functions like paginated API calls that rarely change.
Signature
function withCache<Fn extends (...args: any) => Promise<any>>(
fn: Fn,
options?: {
validate?: (data: Awaited<ReturnType<Fn>>) => boolean;
maxAge?: number;
},
): Fn & { clearCache: () => void };
Arguments
options
is an object containing:
options.validate
: an optional function that receives the cached data and returns a boolean depending on whether the data is still valid or not.options.maxAge
: Maximum age of cached data in milliseconds after which the data will be considered invalid
Return
Returns the wrapped function
Example
import { withCache } from "@raycast/utils";
function fetchExpensiveData(query) {
// ...
}
const cachedFunction = withCache(fetchExpensiveData, {
maxAge: 5 * 60 * 1000, // Cache for 5 minutes
});
const result = await cachedFunction(query);
Last updated