Skip to content

Commit 23991f7

Browse files
authored
fix #1865 - enhance "all in one" types (#1984)
1 parent 0803f4e commit 23991f7

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

index.ts

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
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';
311
import RedisBloomModules from '@node-redis/bloom';
412
import RedisGraph from '@node-redis/graph';
513
import RedisJSON from '@node-redis/json';
@@ -13,28 +21,46 @@ export * from '@node-redis/json';
1321
export * from '@node-redis/search';
1422
export * 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

Comments
 (0)