diff --git a/packages/client/lib/client/multi-command.ts b/packages/client/lib/client/multi-command.ts index aa446a7db3..e270af48d4 100644 --- a/packages/client/lib/client/multi-command.ts +++ b/packages/client/lib/client/multi-command.ts @@ -13,7 +13,7 @@ type CommandSignature< S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping -> = (...args: Tail>) => InternalRedisClientMultiCommandType< +> = (...args: Tail>) => RedisClientMultiCommandTyped< [...REPLIES, ReplyWithTypeMapping, TYPE_MAPPING>], M, F, @@ -70,7 +70,7 @@ type WithScripts< [P in keyof S]: CommandSignature; }; -type InternalRedisClientMultiCommandType< +export type RedisClientMultiCommandTyped< // eslint-disable-next-line @typescript-eslint/no-explicit-any -- variance marker for reply tuple REPLIES extends Array, M extends RedisModules, @@ -99,7 +99,7 @@ export type RedisClientMultiCommandType< S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping -> = TypedOrAny>; +> = TypedOrAny>; type ExecuteMulti = (commands: Array, selectedDB?: number) => Promise>; diff --git a/packages/redis/index.ts b/packages/redis/index.ts index 981f7075a2..b8e7839607 100644 --- a/packages/redis/index.ts +++ b/packages/redis/index.ts @@ -35,107 +35,109 @@ const modules = { ts: RedisTimeSeries }; -export type RedisDefaultModules = typeof modules; +type RedisStackModules = typeof modules; +export interface RedisDefaultModules extends RedisStackModules {} export type RedisClientType< - M extends RedisModules = RedisDefaultModules, + M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 3, TYPE_MAPPING extends TypeMapping = {} -> = GenericRedisClientType; +> = GenericRedisClientType; -export type RedisClientPoolType< - M extends RedisModules = RedisDefaultModules, +export function createClient< + M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, - RESP extends RespVersions = 2, + RESP extends RespVersions = 3, TYPE_MAPPING extends TypeMapping = {} -> = GenericRedisClientPoolType; - -export function createClient< - M extends RedisModules, - F extends RedisFunctions, - S extends RedisScripts, - RESP extends RespVersions, - TYPE_MAPPING extends TypeMapping >( options?: RedisClientOptions -): GenericRedisClientType { +): RedisClientType { return genericCreateClient({ ...options, modules: { ...modules, ...(options?.modules as M) } - }); + }) as RedisClientType; } export function createClientPool< - M extends RedisModules, - F extends RedisFunctions, - S extends RedisScripts, - RESP extends RespVersions, + M extends RedisModules = {}, + F extends RedisFunctions = {}, + S extends RedisScripts = {}, + RESP extends RespVersions = 3, TYPE_MAPPING extends TypeMapping = {} >(clientOptions?: Omit, "clientSideCache">, - options?: Partial): GenericRedisClientPoolType { + options?: Partial): RedisClientPoolType { return genericCreateClientPool({ ...clientOptions, modules: { ...modules, ...(clientOptions?.modules as M) } - }, options); + }, options) as RedisClientPoolType; } +export type RedisClientPoolType< + M extends RedisModules = {}, + F extends RedisFunctions = {}, + S extends RedisScripts = {}, + RESP extends RespVersions = 3, + TYPE_MAPPING extends TypeMapping = {} +> = GenericRedisClientPoolType; + export type RedisClusterType< - M extends RedisModules = RedisDefaultModules, + M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 3, TYPE_MAPPING extends TypeMapping = {} -> = genericRedisClusterType; +> = genericRedisClusterType; export function createCluster< - M extends RedisModules, - F extends RedisFunctions, - S extends RedisScripts, - RESP extends RespVersions, - TYPE_MAPPING extends TypeMapping + M extends RedisModules = {}, + F extends RedisFunctions = {}, + S extends RedisScripts = {}, + RESP extends RespVersions = 3, + TYPE_MAPPING extends TypeMapping = {} >( options: RedisClusterOptions -): RedisClusterType { +): RedisClusterType { return genericCreateCluster({ ...options, modules: { ...modules, ...(options?.modules as M) } - }); + }) as RedisClusterType; } export type RedisSentinelType< - M extends RedisModules = RedisDefaultModules, + M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 3, TYPE_MAPPING extends TypeMapping = {} -> = genericRedisSentinelType; +> = genericRedisSentinelType; export function createSentinel< - M extends RedisModules, - F extends RedisFunctions, - S extends RedisScripts, - RESP extends RespVersions, - TYPE_MAPPING extends TypeMapping + M extends RedisModules = {}, + F extends RedisFunctions = {}, + S extends RedisScripts = {}, + RESP extends RespVersions = 3, + TYPE_MAPPING extends TypeMapping = {} >( options: RedisSentinelOptions -): RedisSentinelType { +): RedisSentinelType { return genericCreateSentinel({ ...options, modules: { ...modules, ...(options?.modules as M) } - }); + }) as RedisSentinelType; } +