forked from mcollina/async-cache-dedupe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.d.ts
118 lines (97 loc) · 2.58 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import { Redis } from "ioredis";
type StorageOptionsType = "redis" | "memory";
type References = string | string[];
interface LoggerInput {
msg: string;
[key: string]: any;
}
interface Logger {
debug: (input: LoggerInput) => void;
warn: (input: LoggerInput) => void;
error: (input: LoggerInput) => void;
}
interface StorageRedisOptions {
client: Redis;
log?: Logger;
invalidation?: { referencesTTL: number } | boolean;
}
interface StorageMemoryOptions {
size?: number;
log?: Logger;
invalidation?: boolean;
}
type Events = {
onDedupe?: (key: string) => void;
onError?: (err: any) => void;
onHit?: (key: string) => void;
onMiss?: (key: string) => void;
};
type StorageInputRedis = {
type: "redis";
options?: StorageRedisOptions;
};
type StorageInputMemory = {
type: "memory";
options?: StorageMemoryOptions;
};
declare class StorageInterface {
constructor(options: any);
get(key: string): Promise<undefined | any>;
set(
key: string,
value: any,
ttl: number,
references?: References
): Promise<void>;
remove(key: string): Promise<void>;
invalidate(references: References): Promise<void>;
clear(name: string): Promise<void>;
refresh(): Promise<void>;
}
declare function createCache(
options?: {
storage?: StorageInputRedis | StorageInputMemory;
ttl?: number;
} & Events
): Cache;
declare class Cache {
constructor(
options: {
ttl: number;
storage: StorageOptionsType;
} & Events
);
define(
name: string,
opts: {
storage?: StorageOptionsType;
ttl?: number;
serialize?: (...args: any[]) => any;
references?: (...args: any[]) => References | Promise<References>;
} & Events,
func?: (...args: any[]) => any
): void;
define(
name: string,
opts: (...args: any[]) => any,
): void;
clear(): Promise<void>;
clear(name: string, value: any): Promise<void>;
get(name: string, key: string): Promise<any>;
set(name: string, key: string, value: any, ttl: number, references?: References): Promise<void>;
invalidate(name: string, references: References): Promise<void>;
invalidateAll(name: string, storage: StorageOptionsType): Promise<void>;
}
declare function createStorage(
type: "redis",
options: StorageRedisOptions
): StorageInterface;
declare function createStorage(
type: "memory",
options: StorageMemoryOptions
): StorageInterface;
declare function createStorage(
type: StorageOptionsType,
options: StorageRedisOptions | StorageMemoryOptions
): StorageInterface;
export { createCache, Cache, createStorage, StorageInterface, StorageMemoryOptions };