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' ;
311import RedisBloomModules from '@node-redis/bloom' ;
412import RedisGraph from '@node-redis/graph' ;
513import RedisJSON from '@node-redis/json' ;
@@ -13,28 +21,46 @@ export * from '@node-redis/json';
1321export * from '@node-redis/search' ;
1422export * from '@node-redis/time-series' ;
1523
16- const modules = {
24+ const modules = {
1725 ...RedisBloomModules ,
1826 graph : RedisGraph ,
1927 json : RedisJSON ,
2028 ft : RediSearch ,
2129 ts : RedisTimeSeries
2230} ;
2331
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 > {
2742 return _createClient ( {
2843 ...options ,
29- modules
44+ modules : {
45+ ...modules ,
46+ ...( options ?. modules as M )
47+ }
3048 } ) ;
3149}
3250
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 > {
3659 return _createCluster ( {
3760 ...options ,
38- modules
61+ modules : {
62+ ...modules ,
63+ ...( options ?. modules as M )
64+ }
3965 } ) ;
4066}
0 commit comments