From 8160fa7d6555bd6e012e7c33ae23ea09d2b676d2 Mon Sep 17 00:00:00 2001 From: Leibale Eidelman Date: Mon, 31 Jan 2022 08:35:24 -0500 Subject: [PATCH] fix #1865 - add defaults to RedisModules and RedisScripts (#1885) --- packages/client/lib/client/index.ts | 15 ++++++++++----- packages/client/lib/cluster/index.ts | 13 +++++++++---- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/client/lib/client/index.ts b/packages/client/lib/client/index.ts index 51fbde91c1..2ce93773e9 100644 --- a/packages/client/lib/client/index.ts +++ b/packages/client/lib/client/index.ts @@ -15,7 +15,10 @@ import { ClientClosedError, DisconnectsClientError, AuthError } from '../errors' import { URL } from 'url'; import { TcpSocketConnectOpts } from 'net'; -export interface RedisClientOptions extends RedisPlugins { +export interface RedisClientOptions< + M extends RedisModules = Record, + S extends RedisScripts = Record +> extends RedisPlugins { url?: string; socket?: RedisSocketOptions; username?: string; @@ -73,8 +76,10 @@ export type WithScripts = { [P in keyof S as ExcludeMappedString

]: RedisClientCommandSignature; }; -export type RedisClientType = - RedisClient & WithCommands & WithModules & WithScripts; +export type RedisClientType< + M extends RedisModules = Record, + S extends RedisScripts = Record +> = RedisClient & WithCommands & WithModules & WithScripts; export type InstantiableRedisClient = new (options?: RedisClientOptions) => RedisClientType; @@ -112,10 +117,10 @@ export default class RedisClient return new (RedisClient.extend(options))(options); } - static parseURL(url: string): RedisClientOptions, Record> { + static parseURL(url: string): RedisClientOptions { // https://www.iana.org/assignments/uri-schemes/prov/redis const { hostname, port, protocol, username, password, pathname } = new URL(url), - parsed: RedisClientOptions, Record> = { + parsed: RedisClientOptions = { socket: { host: hostname } diff --git a/packages/client/lib/cluster/index.ts b/packages/client/lib/cluster/index.ts index 10288158e4..4f2f3f98d3 100644 --- a/packages/client/lib/cluster/index.ts +++ b/packages/client/lib/cluster/index.ts @@ -7,9 +7,12 @@ import { EventEmitter } from 'events'; import RedisClusterMultiCommand, { RedisClusterMultiCommandType } from './multi-command'; import { RedisMultiQueuedCommand } from '../multi-command'; -export type RedisClusterClientOptions = Omit, Record>, 'modules' | 'scripts'>; +export type RedisClusterClientOptions = Omit; -export interface RedisClusterOptions extends RedisPlugins { +export interface RedisClusterOptions< + M extends RedisModules = Record, + S extends RedisScripts = Record +> extends RedisPlugins { rootNodes: Array; defaults?: Partial; useReplicas?: boolean; @@ -20,8 +23,10 @@ type WithCommands = { [P in keyof typeof COMMANDS]: RedisClientCommandSignature<(typeof COMMANDS)[P]>; }; -export type RedisClusterType = - RedisCluster & WithCommands & WithModules & WithScripts; +export type RedisClusterType< + M extends RedisModules = Record, + S extends RedisScripts = Record +> = RedisCluster & WithCommands & WithModules & WithScripts; export default class RedisCluster extends EventEmitter { static extractFirstKey(command: RedisCommand, originalArgs: Array, redisArgs: RedisCommandArguments): RedisCommandArgument | undefined {