1
- import { createClient as _createClient , createCluster as _createCluster , RedisClientOptions , RedisClientType , RedisClusterOptions , RedisClusterType } from '@node-redis/client' ;
2
- import { RedisScripts } from '@node-redis/client/dist/lib/commands' ;
1
+ import {
2
+ RedisModules ,
3
+ RedisScripts ,
4
+ createClient as _createClient ,
5
+ RedisClientOptions ,
6
+ RedisClientType as _RedisClientType ,
7
+ createCluster as _createCluster ,
8
+ RedisClusterOptions ,
9
+ RedisClusterType as _RedisClusterType
10
+ } from '@node-redis/client' ;
3
11
import RedisBloomModules from '@node-redis/bloom' ;
4
12
import RedisGraph from '@node-redis/graph' ;
5
13
import RedisJSON from '@node-redis/json' ;
@@ -13,28 +21,46 @@ export * from '@node-redis/json';
13
21
export * from '@node-redis/search' ;
14
22
export * from '@node-redis/time-series' ;
15
23
16
- const modules = {
24
+ const modules = {
17
25
...RedisBloomModules ,
18
26
graph : RedisGraph ,
19
27
json : RedisJSON ,
20
28
ft : RediSearch ,
21
29
ts : RedisTimeSeries
22
30
} ;
23
31
24
- export function createClient < S extends RedisScripts > (
25
- options ?: Omit < RedisClientOptions < never , S > , 'modules' >
26
- ) : RedisClientType < typeof modules , S > {
32
+ export type RedisDefaultModules = typeof modules ;
33
+
34
+ export type RedisClientType <
35
+ M extends RedisModules = RedisDefaultModules ,
36
+ S extends RedisScripts = Record < string , never >
37
+ > = _RedisClientType < M , S > ;
38
+
39
+ export function createClient < M extends RedisModules , S extends RedisScripts > (
40
+ options ?: RedisClientOptions < M , S >
41
+ ) : _RedisClientType < RedisDefaultModules & M , S > {
27
42
return _createClient ( {
28
43
...options ,
29
- modules
44
+ modules : {
45
+ ...modules ,
46
+ ...( options ?. modules as M )
47
+ }
30
48
} ) ;
31
49
}
32
50
33
- export function createCluster < S extends RedisScripts > (
34
- options : Omit < RedisClusterOptions < never , S > , 'modules' >
35
- ) : RedisClusterType < typeof modules , S > {
51
+ export type RedisClusterType <
52
+ M extends RedisModules = RedisDefaultModules ,
53
+ S extends RedisScripts = Record < string , never >
54
+ > = _RedisClusterType < M , S > ;
55
+
56
+ export function createCluster < M extends RedisModules , S extends RedisScripts > (
57
+ options : RedisClusterOptions < M , S >
58
+ ) : RedisClusterType < RedisDefaultModules & M , S > {
36
59
return _createCluster ( {
37
60
...options ,
38
- modules
61
+ modules : {
62
+ ...modules ,
63
+ ...( options ?. modules as M )
64
+ }
39
65
} ) ;
40
66
}
0 commit comments