Skip to content

Commit 47df737

Browse files
authored
Allow define.ttl to be a number or function in the typescript definitions (#58)
1 parent cdd50a3 commit 47df737

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

index.d.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,17 @@ declare class Cache {
8282
);
8383

8484

85-
define(
85+
define<T extends (...args: any[]) => any>(
8686
name: string,
8787
opts: {
8888
storage?: StorageOptionsType;
8989
transformer?: DataTransformer;
90-
ttl?: number;
90+
ttl?: number | ((result: Awaited<ReturnType<T>>) => number);
9191
stale?: number;
9292
serialize?: (...args: any[]) => any;
9393
references?: (...args: any[]) => References | Promise<References>;
9494
} & Events,
95-
func?: (...args: any[]) => any
95+
func?: T
9696
): void;
9797
define(
9898
name: string,

index.test-d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const fetchSomething = async (k: any) => {
3939
export type CachedFunctions = {
4040
fetchSomething: typeof fetchSomething;
4141
fetchSomethingElse: typeof fetchSomething;
42+
fetchSomethingElseWithTtlFunction: typeof fetchSomething;
4243
};
4344

4445
const unionMemoryCache = createCache({
@@ -55,6 +56,10 @@ expectType<typeof fetchSomething>(unionMemoryCache.fetchSomething);
5556
unionMemoryCache.define("fetchSomethingElse", { ttl: 1000, stale: 1000}, fetchSomething);
5657
expectType<typeof fetchSomething>(unionMemoryCache.fetchSomethingElse);
5758

59+
unionMemoryCache.define("fetchSomethingElseWithTtlFunction", { ttl: (result) => result.k ? 1000 : 5, stale: 1000}, fetchSomething);
60+
expectType<typeof fetchSomething>(unionMemoryCache.fetchSomethingElseWithTtlFunction);
61+
62+
5863
const result = await unionMemoryCache.fetchSomething("test");
5964
expectType<{ k: any }>(result);
6065

0 commit comments

Comments
 (0)