/** * CacheDecorator - Decorator Pattern para caché de resultados. * * Envuelve una función asíncrona y memoiza su resultado por clave (los * argumentos serializados por defecto). No modifica la función original: * la caché se añade en tiempo de composición (Open/Closed). * * Nota: el nombre usa mayúscula inicial porque es un decorador composible, * no una función utilitaria (`use*`) del API pública. * * @typeParam T - Tipo de la función envuelta. * @param fn - La función asíncrona a decorar. * @param options - TTL en ms y estrategia de clave. * @returns La función decorada con caché. * * @example * ```ts * import { CacheDecorator } from "katanakit-js"; * * const getCached = CacheDecorator(fetchUser, { ttlMs: 60_000 }); * await getCached(1); // consulta * await getCached(1); // sirve de caché * ``` * * @remarks Keys live in a `Map` (no prototype-pollution risk). Expired * entries are reclaimed lazily — when their key is requested again — and * `useClearCache()` drops everything. For high-cardinality keys (unbounded * input space) call `useClearCache()` periodically or set a `ttlMs`. */ export interface CacheDecoratorOptions { /** Time-to-live de cada entrada en milisegundos. `0` = sin expiración. */ ttlMs?: number; /** Genera la clave de caché a partir de los argumentos. */ keyFn?: (...args: unknown[]) => string; } /** * Decorates an async function with memoized results (Decorator Pattern). * * @typeParam T - The async function type. * @param fn - The function to decorate. * @param options - TTL and key strategy. * @returns The decorated function with an attached cache registry. * * @example * ```ts * const getCached = CacheDecorator(async (id: number) => fetchUser(id), { ttlMs: 30_000 }); * ``` */ export declare function CacheDecorator Promise>(fn: T, options?: CacheDecoratorOptions): T & { useClearCache: () => void; useCacheSize: () => number; }; //# sourceMappingURL=cache.decorator.d.ts.map