Skip to content

Commit

Permalink
ref #1741 - fix socket options type
Browse files Browse the repository at this point in the history
  • Loading branch information
leibale committed Nov 28, 2021
1 parent ac37827 commit e81bf64
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 19 deletions.
5 changes: 3 additions & 2 deletions packages/client/lib/client/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import COMMANDS from './commands';
import { RedisCommand, RedisCommandArguments, RedisCommandRawReply, RedisCommandReply, RedisModules, RedisPlugins, RedisScript, RedisScripts } from '../commands';
import RedisSocket, { RedisSocketOptions, RedisNetSocketOptions, RedisTlsSocketOptions } from './socket';
import RedisSocket, { RedisSocketOptions, RedisTlsSocketOptions } from './socket';
import RedisCommandsQueue, { PubSubListener, PubSubSubscribeCommands, PubSubUnsubscribeCommands, QueueCommandOptions } from './commands-queue';
import RedisClientMultiCommand, { RedisClientMultiCommandType } from './multi-command';
import { RedisMultiQueuedCommand } from '../multi-command';
Expand All @@ -13,6 +13,7 @@ import { extendWithCommands, extendWithModulesAndScripts, LegacyCommandArguments
import { Pool, Options as PoolOptions, createPool } from 'generic-pool';
import { ClientClosedError, DisconnectsClientError } from '../errors';
import { URL } from 'url';
import { TcpSocketConnectOpts } from 'net';

export interface RedisClientOptions<M extends RedisModules, S extends RedisScripts> extends RedisPlugins<M, S> {
url?: string;
Expand Down Expand Up @@ -97,7 +98,7 @@ export default class RedisClient<M extends RedisModules, S extends RedisScripts>
}

if (port) {
(parsed.socket as RedisNetSocketOptions).port = Number(port);
(parsed.socket as TcpSocketConnectOpts).port = Number(port);
}

if (username) {
Expand Down
23 changes: 6 additions & 17 deletions packages/client/lib/client/socket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,13 @@ export interface RedisSocketCommonOptions {
reconnectStrategy?(retries: number): number | Error;
}

export interface RedisNetSocketOptions extends RedisSocketCommonOptions {
port?: number;
host?: string;
}

export interface RedisUnixSocketOptions extends RedisSocketCommonOptions {
path: string;
}
export type RedisNetSocketOptions = Partial<net.SocketConnectOpts>;

export interface RedisTlsSocketOptions extends RedisNetSocketOptions, tls.SecureContextOptions, tls.CommonConnectionOptions {
export interface RedisTlsSocketOptions extends RedisSocketCommonOptions, tls.ConnectionOptions {
tls: true;
}

export type RedisSocketOptions = RedisNetSocketOptions | RedisUnixSocketOptions | RedisTlsSocketOptions;
export type RedisSocketOptions = RedisSocketCommonOptions & (RedisNetSocketOptions | RedisTlsSocketOptions);

interface CreateSocketReturn<T> {
connectEvent: string;
Expand All @@ -38,9 +31,9 @@ export type RedisSocketInitiator = () => Promise<void>;
export default class RedisSocket extends EventEmitter {
static #initiateOptions(options?: RedisSocketOptions): RedisSocketOptions {
options ??= {};
if (!RedisSocket.#isUnixSocket(options)) {
(options as RedisNetSocketOptions).port ??= 6379;
(options as RedisNetSocketOptions).host ??= '127.0.0.1';
if (!(options as net.IpcSocketConnectOpts).path) {
(options as net.TcpSocketConnectOpts).port ??= 6379;
(options as net.TcpSocketConnectOpts).host ??= '127.0.0.1';
}

options.connectTimeout ??= 5000;
Expand All @@ -54,10 +47,6 @@ export default class RedisSocket extends EventEmitter {
return Math.min(retries * 50, 500);
}

static #isUnixSocket(options: RedisSocketOptions): options is RedisUnixSocketOptions {
return Object.prototype.hasOwnProperty.call(options, 'path');
}

static #isTlsSocket(options: RedisSocketOptions): options is RedisTlsSocketOptions {
return (options as RedisTlsSocketOptions).tls === true;
}
Expand Down

0 comments on commit e81bf64

Please sign in to comment.