1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-09 00:22:08 +03:00

fix #1865 - enhance "all in one" types (#1984)

This commit is contained in:
Leibale Eidelman
2022-02-15 14:22:34 -05:00
committed by GitHub
parent 0803f4e19c
commit 23991f7a0b

View File

@@ -1,5 +1,13 @@
import { createClient as _createClient, createCluster as _createCluster, RedisClientOptions, RedisClientType, RedisClusterOptions, RedisClusterType } from '@node-redis/client'; import {
import { RedisScripts } from '@node-redis/client/dist/lib/commands'; RedisModules,
RedisScripts,
createClient as _createClient,
RedisClientOptions,
RedisClientType as _RedisClientType,
createCluster as _createCluster,
RedisClusterOptions,
RedisClusterType as _RedisClusterType
} from '@node-redis/client';
import RedisBloomModules from '@node-redis/bloom'; import RedisBloomModules from '@node-redis/bloom';
import RedisGraph from '@node-redis/graph'; import RedisGraph from '@node-redis/graph';
import RedisJSON from '@node-redis/json'; import RedisJSON from '@node-redis/json';
@@ -21,20 +29,38 @@ const modules = {
ts: RedisTimeSeries ts: RedisTimeSeries
}; };
export function createClient<S extends RedisScripts>( export type RedisDefaultModules = typeof modules;
options?: Omit<RedisClientOptions<never, S>, 'modules'>
): RedisClientType<typeof modules, S> { export type RedisClientType<
M extends RedisModules = RedisDefaultModules,
S extends RedisScripts = Record<string, never>
> = _RedisClientType<M, S>;
export function createClient<M extends RedisModules, S extends RedisScripts>(
options?: RedisClientOptions<M, S>
): _RedisClientType<RedisDefaultModules & M, S> {
return _createClient({ return _createClient({
...options, ...options,
modules modules: {
...modules,
...(options?.modules as M)
}
}); });
} }
export function createCluster<S extends RedisScripts>( export type RedisClusterType<
options: Omit<RedisClusterOptions<never, S>, 'modules'> M extends RedisModules = RedisDefaultModules,
): RedisClusterType<typeof modules, S> { S extends RedisScripts = Record<string, never>
> = _RedisClusterType<M, S>;
export function createCluster<M extends RedisModules, S extends RedisScripts>(
options: RedisClusterOptions<M, S>
): RedisClusterType<RedisDefaultModules & M, S> {
return _createCluster({ return _createCluster({
...options, ...options,
modules modules: {
...modules,
...(options?.modules as M)
}
}); });
} }