|
1 | 1 | import { Redis } from "ioredis";
|
2 | 2 |
|
3 |
| -type StorageOptionsType = "redis" | "memory"; |
| 3 | +export type StorageOptionsType = "redis" | "memory"; |
| 4 | + |
| 5 | +export type StorageOptions = { |
| 6 | + type: StorageOptionsType, |
| 7 | + options: StorageRedisOptions | StorageMemoryOptions, |
| 8 | +} |
4 | 9 |
|
5 | 10 | type References = string | string[];
|
6 | 11 |
|
7 | 12 | interface LoggerInput {
|
8 |
| - msg: string; |
9 |
| - [key: string]: any; |
| 13 | + msg: string; |
| 14 | + [key: string]: any; |
10 | 15 | }
|
11 | 16 |
|
12 | 17 | interface Logger {
|
13 |
| - debug: (input: LoggerInput) => void; |
14 |
| - warn: (input: LoggerInput) => void; |
15 |
| - error: (input: LoggerInput) => void; |
| 18 | + debug: (input: LoggerInput) => void; |
| 19 | + warn: (input: LoggerInput) => void; |
| 20 | + error: (input: LoggerInput) => void; |
16 | 21 | }
|
17 |
| -interface StorageRedisOptions { |
18 |
| - client: Redis; |
19 |
| - log?: Logger; |
20 |
| - invalidation?: { referencesTTL: number } | boolean; |
| 22 | +export interface StorageRedisOptions { |
| 23 | + client: Redis; |
| 24 | + log?: Logger; |
| 25 | + invalidation?: { referencesTTL: number } | boolean; |
21 | 26 | }
|
22 | 27 |
|
23 |
| -interface StorageMemoryOptions { |
24 |
| - size?: number; |
25 |
| - log?: Logger; |
26 |
| - invalidation?: boolean; |
| 28 | +export interface StorageMemoryOptions { |
| 29 | + size?: number; |
| 30 | + log?: Logger; |
| 31 | + invalidation?: boolean; |
27 | 32 | }
|
28 | 33 |
|
29 | 34 | interface DataTransformer {
|
30 |
| - serialize: (data: any) => any; |
31 |
| - deserialize: (data: any) => any; |
| 35 | + serialize: (data: any) => any; |
| 36 | + deserialize: (data: any) => any; |
32 | 37 | }
|
33 | 38 |
|
34 | 39 | type Events = {
|
35 |
| - onDedupe?: (key: string) => void; |
36 |
| - onError?: (err: any) => void; |
37 |
| - onHit?: (key: string) => void; |
38 |
| - onMiss?: (key: string) => void; |
| 40 | + onDedupe?: (key: string) => void; |
| 41 | + onError?: (err: any) => void; |
| 42 | + onHit?: (key: string) => void; |
| 43 | + onMiss?: (key: string) => void; |
39 | 44 | };
|
40 | 45 |
|
41 |
| -type StorageInputRedis = { |
42 |
| - type: "redis"; |
43 |
| - options?: StorageRedisOptions; |
| 46 | +export type StorageInputRedis = { |
| 47 | + type: "redis"; |
| 48 | + options?: StorageRedisOptions; |
44 | 49 | };
|
45 | 50 |
|
46 |
| -type StorageInputMemory = { |
47 |
| - type: "memory"; |
48 |
| - options?: StorageMemoryOptions; |
| 51 | +export type StorageInputMemory = { |
| 52 | + type: "memory"; |
| 53 | + options?: StorageMemoryOptions; |
49 | 54 | };
|
50 | 55 |
|
51 |
| -declare class StorageInterface { |
52 |
| - constructor(options: any); |
| 56 | +export declare class StorageInterface { |
| 57 | + constructor(options: any); |
53 | 58 |
|
54 |
| - get(key: string): Promise<undefined | any>; |
55 |
| - set(key: string, value: any, ttl: number, references?: References): Promise<void>; |
56 |
| - remove(key: string): Promise<void>; |
57 |
| - invalidate(references: References): Promise<void>; |
58 |
| - clear(name: string): Promise<void>; |
59 |
| - refresh(): Promise<void>; |
| 59 | + get(key: string): Promise<undefined | any>; |
| 60 | + set(key: string, value: any, ttl: number, references?: References): Promise<void>; |
| 61 | + remove(key: string): Promise<void>; |
| 62 | + invalidate(references: References): Promise<void>; |
| 63 | + clear(name: string): Promise<void>; |
| 64 | + refresh(): Promise<void>; |
60 | 65 | }
|
61 | 66 |
|
62 |
| -declare function createCache( |
63 |
| - options?: { |
64 |
| - storage?: StorageInputRedis | StorageInputMemory; |
65 |
| - ttl?: number | ((result: unknown) => number); |
66 |
| - transformer?: DataTransformer; |
67 |
| - stale?: number | ((result: unknown) => number); |
68 |
| - } & Events, |
| 67 | +export declare function createCache( |
| 68 | + options?: { |
| 69 | + storage?: StorageInputRedis | StorageInputMemory; |
| 70 | + ttl?: number | ((result: unknown) => number); |
| 71 | + transformer?: DataTransformer; |
| 72 | + stale?: number | ((result: unknown) => number); |
| 73 | + } & Events, |
69 | 74 | ): Cache;
|
70 | 75 |
|
71 |
| -declare class Cache { |
| 76 | +export declare class Cache { |
72 | 77 | constructor(
|
73 | 78 | options: {
|
74 | 79 | ttl: number | ((result: unknown) => number);
|
75 |
| - storage: StorageOptionsType; |
| 80 | + stale?: number | ((result: unknown) => number); |
| 81 | + storage: StorageInterface; |
76 | 82 | } & Events
|
77 | 83 | );
|
78 | 84 |
|
79 | 85 | define<T extends (args: any) => any, N extends string, S extends this>(
|
80 | 86 | name: N,
|
81 | 87 | opts: {
|
82 |
| - storage?: StorageOptionsType; |
| 88 | + storage?: StorageOptions; |
83 | 89 | transformer?: DataTransformer;
|
84 | 90 | ttl?: number | ((result: Awaited<ReturnType<T>>) => number);
|
85 | 91 | stale?: number | ((result: Awaited<ReturnType<T>>) => number);
|
@@ -119,11 +125,10 @@ declare class Cache {
|
119 | 125 | ): Promise<void>;
|
120 | 126 | }
|
121 | 127 |
|
122 |
| -declare function createStorage(type: "redis", options: StorageRedisOptions): StorageInterface; |
123 |
| -declare function createStorage(type: "memory", options: StorageMemoryOptions): StorageInterface; |
124 |
| -declare function createStorage( |
125 |
| - type: StorageOptionsType, |
126 |
| - options: StorageRedisOptions | StorageMemoryOptions, |
| 128 | +export declare function createStorage(type: "redis", options: StorageRedisOptions): StorageInterface; |
| 129 | +export declare function createStorage(type: "memory", options: StorageMemoryOptions): StorageInterface; |
| 130 | +export declare function createStorage( |
| 131 | + type: StorageOptionsType, |
| 132 | + options: StorageRedisOptions | StorageMemoryOptions, |
127 | 133 | ): StorageInterface;
|
128 | 134 |
|
129 |
| -export { createCache, Cache, createStorage, StorageInterface, StorageMemoryOptions }; |
|
0 commit comments