Socket
Socket
Sign inDemoInstall

@redis/client

Package Overview
Dependencies
2
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.0-next.1 to 2.0.0-next.2

dist/lib/client/legacy-mode.d.ts

2

dist/index.d.ts

@@ -1,2 +0,2 @@

export { RedisModules, RedisFunctions, RedisScripts, RespVersions } from './lib/RESP/types';
export { RedisModules, RedisFunctions, RedisScripts, RespVersions, TypeMapping, CommandPolicies } from './lib/RESP/types';
export { RESP_TYPES } from './lib/RESP/decoder';

@@ -3,0 +3,0 @@ export { VerbatimString } from './lib/RESP/verbatim-string';

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -11,5 +14,5 @@ exports.createCluster = exports.createClient = exports.defineScript = exports.VerbatimString = exports.RESP_TYPES = void 0;

// export * from './lib/errors';
const client_1 = require("./lib/client");
const client_1 = __importDefault(require("./lib/client"));
exports.createClient = client_1.default.create;
const cluster_1 = require("./lib/cluster");
const cluster_1 = __importDefault(require("./lib/cluster"));
exports.createCluster = cluster_1.default.create;

@@ -16,0 +19,0 @@ // export { GeoReplyWith } from './lib/commands/generic-transformers';

/// <reference types="node" />
/// <reference types="node" />
import { Decoder } from '../RESP/decoder';
import { CommandArguments, Flags, RespVersions } from '../RESP/types';
import { CommandArguments, TypeMapping, RespVersions } from '../RESP/types';
import { ChannelListeners, PubSubListener, PubSubType, PubSubTypeListeners } from './pub-sub';
import { EventEmitter } from 'stream';
export interface QueueCommandOptions {
export interface CommandOptions<T = TypeMapping> {
chainId?: symbol;
asap?: boolean;
chainId?: symbol;
signal?: AbortSignal;
flags?: Flags;
abortSignal?: AbortSignal;
/**
* Maps bettween RESP and JavaScript types
*/
typeMapping?: T;
}

@@ -16,3 +19,6 @@ export interface CommandWaitingToBeSent extends CommandWaitingForReply {

chainId?: symbol;
removeAbortListener?(): void;
abort?: {
signal: AbortSignal;
listener: () => unknown;
};
}

@@ -23,7 +29,6 @@ interface CommandWaitingForReply {

channelsCounter?: number;
flags?: Flags;
typeMapping?: TypeMapping;
}
export type OnShardedChannelMoved = (channel: string, listeners: ChannelListeners) => void;
export default class RedisCommandsQueue {
#private;
private readonly _maxLength;

@@ -42,6 +47,6 @@ private readonly _waitingToBeSent;

private _onPush;
private _getFlags;
private _getTypeMapping;
private _initiateResp3Decoder;
private _initiateResp2Decoder;
addCommand<T>(args: CommandArguments, options?: QueueCommandOptions): Promise<T>;
addCommand<T>(args: CommandArguments, options?: CommandOptions): Promise<T>;
subscribe<T extends boolean>(type: PubSubType, channels: string | Array<string>, listener: PubSubListener<T>, returnBuffers?: T): Promise<void> | undefined;

@@ -54,6 +59,10 @@ unsubscribe<T extends boolean>(type: PubSubType, channels?: string | Array<string>, listener?: PubSubListener<T>, returnBuffers?: T): Promise<void> | undefined;

private _pushPubSubCommand;
getCommandToSend(): CommandArguments | undefined;
waitingToBeSent(): Generator<CommandArguments, void, unknown>;
private _flushWaitingForReply;
private static _removeAbortListener;
private static _flushWaitingToBeSent;
flushWaitingForReply(err: Error): void;
flushAll(err: Error): void;
isEmpty(): boolean;
}
export {};
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _RedisCommandsQueue_instances, _a, _RedisCommandsQueue_flushWaitingForReply, _RedisCommandsQueue_flushWaitingToBeSent;
Object.defineProperty(exports, "__esModule", { value: true });
const LinkedList = require("yallist");
const encoder_1 = require("../RESP/encoder");
const linked_list_1 = require("./linked-list");
const encoder_1 = __importDefault(require("../RESP/encoder"));
const decoder_1 = require("../RESP/decoder");

@@ -15,4 +12,4 @@ const pub_sub_1 = require("./pub-sub");

const PONG = Buffer.from('pong');
const RESP2_PUSH_FLAGS = {
...decoder_1.PUSH_FLAGS,
const RESP2_PUSH_TYPE_MAPPING = {
...decoder_1.PUSH_TYPE_MAPPING,
[decoder_1.RESP_TYPES.SIMPLE_STRING]: Buffer

@@ -25,45 +22,5 @@ };

constructor(respVersion, maxLength, onShardedChannelMoved) {
_RedisCommandsQueue_instances.add(this);
Object.defineProperty(this, "_maxLength", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_waitingToBeSent", {
enumerable: true,
configurable: true,
writable: true,
value: new LinkedList()
});
Object.defineProperty(this, "_waitingForReply", {
enumerable: true,
configurable: true,
writable: true,
value: new LinkedList()
});
Object.defineProperty(this, "_onShardedChannelMoved", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_pubSub", {
enumerable: true,
configurable: true,
writable: true,
value: new pub_sub_1.PubSub()
});
Object.defineProperty(this, "_chainInExecution", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "decoder", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this._waitingToBeSent = new linked_list_1.DoublyLinkedList();
this._waitingForReply = new linked_list_1.SinglyLinkedList();
this._pubSub = new pub_sub_1.PubSub();
this.decoder = this._initiateDecoder(respVersion);

@@ -103,4 +60,4 @@ this._maxLength = maxLength;

}
_getFlags() {
return this._waitingForReply.head.value.flags ?? {};
_getTypeMapping() {
return this._waitingForReply.head.value.typeMapping ?? {};
}

@@ -115,3 +72,3 @@ _initiateResp3Decoder() {

},
getFlags: () => this._getFlags()
getTypeMapping: () => this._getTypeMapping()
});

@@ -126,4 +83,4 @@ }

if (PONG.equals(reply[0])) {
const { resolve, flags } = this._waitingForReply.shift(), buffer = (reply[1].length === 0 ? reply[0] : reply[1]);
resolve(flags?.[decoder_1.RESP_TYPES.SIMPLE_STRING] === Buffer ? buffer : buffer.toString());
const { resolve, typeMapping } = this._waitingForReply.shift(), buffer = (reply[1].length === 0 ? reply[0] : reply[1]);
resolve(typeMapping?.[decoder_1.RESP_TYPES.SIMPLE_STRING] === Buffer ? buffer : buffer.toString());
return;

@@ -139,7 +96,7 @@ }

onPush: undefined,
getFlags: () => {
getTypeMapping: () => {
// PubSub push is an Array in RESP2
return this._pubSub.isActive ?
RESP2_PUSH_FLAGS :
this._getFlags();
RESP2_PUSH_TYPE_MAPPING :
this._getTypeMapping();
}

@@ -152,27 +109,29 @@ });

}
else if (options?.signal?.aborted) {
else if (options?.abortSignal?.aborted) {
return Promise.reject(new errors_1.AbortError());
}
return new Promise((resolve, reject) => {
const node = new LinkedList.Node({
let node;
const value = {
args,
chainId: options?.chainId,
flags: options?.flags,
typeMapping: options?.typeMapping,
resolve,
reject
});
if (options?.signal) {
const listener = () => {
this._waitingToBeSent.removeNode(node);
node.value.reject(new errors_1.AbortError());
reject,
abort: undefined
};
const signal = options?.abortSignal;
if (signal) {
value.abort = {
signal,
listener: () => {
this._waitingToBeSent.remove(node);
value.reject(new errors_1.AbortError());
}
};
node.value.removeAbortListener = () => options.signal?.removeEventListener('abort', listener);
options.signal.addEventListener('abort', listener, { once: true });
signal.addEventListener('abort', value.abort.listener, { once: true });
}
if (options?.asap) {
this._waitingToBeSent.unshiftNode(node);
}
else {
this._waitingToBeSent.pushNode(node);
}
node = options?.asap ?
this._waitingToBeSent.unshift(value) :
this._waitingToBeSent.push(value);
});

@@ -208,3 +167,3 @@ }

channelsCounter: command.channelsCounter,
flags: decoder_1.PUSH_FLAGS,
typeMapping: decoder_1.PUSH_TYPE_MAPPING,
resolve: () => {

@@ -221,24 +180,41 @@ command.resolve();

}
getCommandToSend() {
const toSend = this._waitingToBeSent.shift();
if (!toSend)
return;
let encoded;
try {
encoded = (0, encoder_1.default)(toSend.args);
*waitingToBeSent() {
let toSend = this._waitingToBeSent.shift();
while (toSend) {
let encoded;
try {
encoded = (0, encoder_1.default)(toSend.args);
}
catch (err) {
toSend.reject(err);
toSend = this._waitingToBeSent.shift();
continue;
}
if (toSend.abort) {
RedisCommandsQueue._removeAbortListener(toSend);
toSend.abort = undefined;
}
// TODO reuse `toSend` or create new object?
toSend.args = undefined;
toSend.chainId = undefined;
this._waitingForReply.push(toSend);
this._chainInExecution = toSend.chainId;
yield encoded;
toSend = this._waitingToBeSent.shift();
}
catch (err) {
toSend.reject(err);
return;
}
_flushWaitingForReply(err) {
for (const node of this._waitingForReply) {
node.reject(err);
}
// TODO
// reuse `toSend`
toSend.args = undefined;
if (toSend.removeAbortListener) {
toSend.removeAbortListener();
toSend.removeAbortListener = undefined;
this._waitingForReply.reset();
}
static _removeAbortListener(command) {
command.abort.signal.removeEventListener('abort', command.abort.listener);
}
static _flushWaitingToBeSent(toBeSent, err) {
if (toBeSent.abort) {
RedisCommandsQueue._removeAbortListener(toBeSent);
}
this._waitingForReply.push(toSend);
this._chainInExecution = toSend.chainId;
return encoded;
toBeSent.reject(err);
}

@@ -248,7 +224,7 @@ flushWaitingForReply(err) {

this._pubSub.reset();
__classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_flushWaitingForReply).call(this, err);
this._flushWaitingForReply(err);
if (!this._chainInExecution)
return;
while (this._waitingToBeSent.head?.value.chainId === this._chainInExecution) {
__classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_flushWaitingToBeSent).call(RedisCommandsQueue, this._waitingToBeSent.shift(), err);
RedisCommandsQueue._flushWaitingToBeSent(this._waitingToBeSent.shift(), err);
}

@@ -260,16 +236,13 @@ this._chainInExecution = undefined;

this._pubSub.reset();
__classPrivateFieldGet(this, _RedisCommandsQueue_instances, "m", _RedisCommandsQueue_flushWaitingForReply).call(this, err);
while (this._waitingToBeSent.head) {
__classPrivateFieldGet(RedisCommandsQueue, _a, "m", _RedisCommandsQueue_flushWaitingToBeSent).call(RedisCommandsQueue, this._waitingToBeSent.shift(), err);
this._flushWaitingForReply(err);
for (const node of this._waitingToBeSent) {
RedisCommandsQueue._flushWaitingToBeSent(node, err);
}
this._waitingToBeSent.reset();
}
isEmpty() {
return (this._waitingToBeSent.length === 0 &&
this._waitingForReply.length === 0);
}
}
exports.default = RedisCommandsQueue;
_a = RedisCommandsQueue, _RedisCommandsQueue_instances = new WeakSet(), _RedisCommandsQueue_flushWaitingForReply = function _RedisCommandsQueue_flushWaitingForReply(err) {
while (this._waitingForReply.head) {
this._waitingForReply.shift().reject(err);
}
}, _RedisCommandsQueue_flushWaitingToBeSent = function _RedisCommandsQueue_flushWaitingToBeSent(command, err) {
command.removeAbortListener?.();
command.reject(err);
};
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import COMMANDS from '../commands';
import { RedisSocketOptions } from './socket';
import { QueueCommandOptions } from './commands-queue';
import { CommandOptions } from './commands-queue';
import { EventEmitter } from 'events';
import { PubSubType, PubSubListener, PubSubTypeListeners, ChannelListeners } from './pub-sub';
import { CommandArguments, CommandSignature, Flags, CommanderConfig, RedisFunctions, RedisModules, RedisScripts, ReplyUnion, RespVersions, RedisArgument } from '../RESP/types';
import { CommandArguments, CommandSignature, TypeMapping, CommanderConfig, RedisFunctions, RedisModules, RedisScripts, ReplyUnion, RespVersions, RedisArgument } from '../RESP/types';
import { RedisClientMultiCommandType } from './multi-command';
import { Options as PoolOptions } from 'generic-pool';
import { ReplyWithFlags, CommandReply } from '../RESP/types';
import SCAN, { ScanOptions, ScanCommonOptions } from '../commands/SCAN';
export interface RedisClientOptions<M extends RedisModules = RedisModules, F extends RedisFunctions = RedisFunctions, S extends RedisScripts = RedisScripts, RESP extends RespVersions = RespVersions> extends CommanderConfig<M, F, S, RESP> {
import { RedisMultiQueuedCommand } from '../multi-command';
import { ScanOptions, ScanCommonOptions } from '../commands/SCAN';
import { RedisLegacyClientType } from './legacy-mode';
interface ClientCommander<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> extends CommanderConfig<M, F, S, RESP> {
commandOptions?: CommandOptions<TYPE_MAPPING>;
}
export interface RedisClientOptions<M extends RedisModules = RedisModules, F extends RedisFunctions = RedisFunctions, S extends RedisScripts = RedisScripts, RESP extends RespVersions = RespVersions, TYPE_MAPPING extends TypeMapping = TypeMapping> extends ClientCommander<M, F, S, RESP, TYPE_MAPPING> {
/**

@@ -53,10 +57,2 @@ * `redis[s]://[[username][:password]@][host][:port][/db-number]`

/**
* TODO
*/
legacyMode?: boolean;
/**
* TODO
*/
isolationPoolOptions?: PoolOptions;
/**
* Send `PING` command at interval (in ms).

@@ -67,26 +63,24 @@ * Useful with Redis deployments that do not use TCP Keep-Alive.

}
type WithCommands<RESP extends RespVersions, FLAGS extends Flags> = {
[P in keyof typeof COMMANDS]: CommandSignature<(typeof COMMANDS)[P], RESP, FLAGS>;
type WithCommands<RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[P in keyof typeof COMMANDS]: CommandSignature<(typeof COMMANDS)[P], RESP, TYPE_MAPPING>;
};
type WithModules<M extends RedisModules, RESP extends RespVersions, FLAGS extends Flags> = {
type WithModules<M extends RedisModules, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[P in keyof M]: {
[C in keyof M[P]]: CommandSignature<M[P][C], RESP, FLAGS>;
[C in keyof M[P]]: CommandSignature<M[P][C], RESP, TYPE_MAPPING>;
};
};
type WithFunctions<F extends RedisFunctions, RESP extends RespVersions, FLAGS extends Flags> = {
type WithFunctions<F extends RedisFunctions, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[L in keyof F]: {
[C in keyof F[L]]: CommandSignature<F[L][C], RESP, FLAGS>;
[C in keyof F[L]]: CommandSignature<F[L][C], RESP, TYPE_MAPPING>;
};
};
type WithScripts<S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = {
[P in keyof S]: CommandSignature<S[P], RESP, FLAGS>;
type WithScripts<S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[P in keyof S]: CommandSignature<S[P], RESP, TYPE_MAPPING>;
};
export type RedisClientType<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, FLAGS extends Flags = {}> = (RedisClient<M, F, S, RESP, FLAGS> & WithCommands<RESP, FLAGS> & WithModules<M, RESP, FLAGS> & WithFunctions<F, RESP, FLAGS> & WithScripts<S, RESP, FLAGS>);
export interface ClientCommandOptions extends QueueCommandOptions {
isolated?: boolean;
}
export type RedisClientExtensions<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}> = (WithCommands<RESP, TYPE_MAPPING> & WithModules<M, RESP, TYPE_MAPPING> & WithFunctions<F, RESP, TYPE_MAPPING> & WithScripts<S, RESP, TYPE_MAPPING>);
export type RedisClientType<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}> = (RedisClient<M, F, S, RESP, TYPE_MAPPING> & RedisClientExtensions<M, F, S, RESP, TYPE_MAPPING>);
interface ScanIteratorOptions {
cursor?: number;
}
export default class RedisClient<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> extends EventEmitter {
export default class RedisClient<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> extends EventEmitter {
private static _createCommand;

@@ -96,4 +90,4 @@ private static _createModuleCommand;

private static _createScriptCommand;
static factory<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2>(config?: CommanderConfig<M, F, S, RESP>): (options?: Omit<RedisClientOptions, keyof Exclude<typeof config, undefined>>) => RedisClientType<M, F, S, RESP, {}>;
static create<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2>(options?: RedisClientOptions<M, F, S, RESP>): RedisClientType<M, F, S, RESP, {}>;
static factory<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}>(config?: ClientCommander<M, F, S, RESP, TYPE_MAPPING>): (options?: Omit<RedisClientOptions, keyof Exclude<typeof config, undefined>>) => RedisClientType<M, F, S, RESP, TYPE_MAPPING>;
static create<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}>(this: void, options?: RedisClientOptions<M, F, S, RESP, TYPE_MAPPING>): RedisClientType<M, F, S, RESP, TYPE_MAPPING>;
static parseURL(url: string): RedisClientOptions;

@@ -104,4 +98,4 @@ self: this;

private readonly _queue;
private _isolationPool?;
private _selectedDB;
private _commandOptions?;
get options(): RedisClientOptions<M, F, S, RESP> | undefined;

@@ -111,3 +105,3 @@ get isOpen(): boolean;

get isPubSubActive(): boolean;
constructor(options?: RedisClientOptions<M, F, S, RESP>);
constructor(options?: RedisClientOptions<M, F, S, RESP, TYPE_MAPPING>);
private _initiateOptions;

@@ -118,20 +112,26 @@ private _initiateQueue;

private _setPingTimer;
withCommandOptions<T extends ClientCommandOptions>(options: T): RedisClientType<M, F, S, RESP, T["flags"] extends Flags ? T["flags"] : {}>;
withCommandOptions<OPTIONS extends CommandOptions<TYPE_MAPPING>, TYPE_MAPPING extends TypeMapping>(options: OPTIONS): RedisClientType<M, F, S, RESP, TYPE_MAPPING extends TypeMapping ? TYPE_MAPPING : {}>;
private _commandOptionsProxy;
/**
* Override the `flags` command option
* Override the `typeMapping` command option
*/
withFlags<FLAGS extends Flags>(flags: FLAGS): RedisClientType<M, F, S, RESP, FLAGS extends Flags ? FLAGS : {}>;
withTypeMapping<TYPE_MAPPING extends TypeMapping>(typeMapping: TYPE_MAPPING): RedisClientType<M, F, S, RESP, TYPE_MAPPING extends TypeMapping ? TYPE_MAPPING : {}>;
/**
* Override the `abortSignal` command option
*/
withAbortSignal(abortSignal: AbortSignal): RedisClientType<M, F, S, RESP, TYPE_MAPPING>;
/**
* Override the `asap` command option to `true`
*/
asap(): RedisClientType<M, F, S, RESP, FLAGS>;
asap(): RedisClientType<M, F, S, RESP, TYPE_MAPPING>;
/**
* Override the `isolated` command option to `true`
* Create the "legacy" (v3/callback) interface
*/
isolated(): RedisClientType<M, F, S, RESP, FLAGS>;
duplicate(overrides?: Partial<RedisClientOptions<M, F, S, RESP>>): RedisClientType<M, F, S, RESP, {}>;
legacy(): RedisLegacyClientType;
/**
* Create `RedisClientPool` using this client as a prototype
*/
duplicate<_M extends RedisModules = M, _F extends RedisFunctions = F, _S extends RedisScripts = S, _RESP extends RespVersions = RESP, _TYPE_MAPPING extends TypeMapping = TYPE_MAPPING>(overrides?: Partial<RedisClientOptions<_M, _F, _S, _RESP, _TYPE_MAPPING>>): RedisClientType<_M, _F, _S, _RESP, _TYPE_MAPPING>;
connect(): Promise<void>;
sendCommand: <T = ReplyUnion>(args: CommandArguments, options?: ClientCommandOptions) => Promise<T>;
_sendCommand<T = ReplyUnion>(args: CommandArguments, options?: ClientCommandOptions): Promise<T>;
sendCommand<T = ReplyUnion>(args: CommandArguments, options?: CommandOptions): Promise<T>;
SELECT(db: number): Promise<void>;

@@ -155,21 +155,42 @@ select: (db: number) => Promise<void>;

extendPubSubListeners(type: PubSubType, listeners: PubSubTypeListeners): Promise<void>;
QUIT(): Promise<string>;
quit: () => Promise<string>;
_tick(force?: boolean): void;
executeIsolated<T>(fn: (client: RedisClientType<M, F, S, RESP, FLAGS>) => T | Promise<T>): Promise<T>;
private _addMultiCommands;
MULTI(): RedisClientMultiCommandType<[], M, F, S, RESP, FLAGS>;
multi: () => RedisClientMultiCommandType<[], M, F, S, RESP, FLAGS>;
scanIterator(this: RedisClientType<M, F, S, RESP, FLAGS>, options?: ScanOptions & ScanIteratorOptions): AsyncIterable<ReplyWithFlags<CommandReply<typeof SCAN, RESP>['keys'], FLAGS>>;
hScanIterator(this: RedisClientType<M, F, S, RESP, FLAGS>, key: RedisArgument, options?: ScanCommonOptions & ScanIteratorOptions): AsyncGenerator<{
field: (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string) | (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string);
value: (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string) | (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string);
private _write;
private _scheduledWrite?;
private _scheduleWrite;
/**
* @internal
*/
executePipeline(commands: Array<RedisMultiQueuedCommand>): Promise<unknown[]>;
/**
* @internal
*/
executeMulti(commands: Array<RedisMultiQueuedCommand>, selectedDB?: number): Promise<unknown[]>;
MULTI(): RedisClientMultiCommandType<[], M, F, S, RESP, TYPE_MAPPING>;
multi: () => RedisClientMultiCommandType<[], M, F, S, RESP, TYPE_MAPPING>;
scanIterator(this: RedisClientType<M, F, S, RESP, TYPE_MAPPING>, options?: ScanOptions & ScanIteratorOptions): AsyncGenerator<TYPE_MAPPING[42] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<import("../RESP/types").BlobStringReply[], T>, TYPE_MAPPING> : ((TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string) | (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string))[], void, unknown>;
hScanIterator(this: RedisClientType<M, F, S, RESP, TYPE_MAPPING>, key: RedisArgument, options?: ScanCommonOptions & ScanIteratorOptions): AsyncGenerator<{
field: (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string) | (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string);
value: (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string) | (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string);
}[], void, unknown>;
sScanIterator(this: RedisClientType<M, F, S, RESP, FLAGS>, key: RedisArgument, options?: ScanCommonOptions & ScanIteratorOptions): AsyncGenerator<((FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string) | (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string))[], void, unknown>;
zScanIterator(this: RedisClientType<M, F, S, RESP, FLAGS>, key: RedisArgument, options?: ScanCommonOptions & ScanIteratorOptions): AsyncGenerator<{
value: (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string) | (FLAGS[36] extends import("../RESP/types").Flag<infer T> ? ReplyWithFlags<Extract<string, T>, FLAGS> | ReplyWithFlags<Extract<Buffer, T>, FLAGS> : string);
sScanIterator(this: RedisClientType<M, F, S, RESP, TYPE_MAPPING>, key: RedisArgument, options?: ScanCommonOptions & ScanIteratorOptions): AsyncGenerator<((TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string) | (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string))[], void, unknown>;
zScanIterator(this: RedisClientType<M, F, S, RESP, TYPE_MAPPING>, key: RedisArgument, options?: ScanCommonOptions & ScanIteratorOptions): AsyncGenerator<{
value: (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string) | (TYPE_MAPPING[36] extends import("../RESP/types").Flag<infer T> ? import("../RESP/types").ReplyWithTypeMapping<Extract<string, T>, TYPE_MAPPING> | import("../RESP/types").ReplyWithTypeMapping<Extract<Buffer, T>, TYPE_MAPPING> : string);
score: number;
}[], void, unknown>;
/**
* @deprecated use .close instead
*/
QUIT(): Promise<string>;
quit: () => Promise<string>;
/**
* @deprecated use .destroy instead
*/
disconnect(): Promise<void>;
private _destroyIsolationPool;
/**
* Close the client. Wait for pending commands.
*/
close(): Promise<void>;
/**
* Destroy the client. Rejects all commands immediately.
*/
destroy(): void;
ref(): void;

@@ -176,0 +197,0 @@ unref(): void;

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const commands_1 = require("../commands");
const socket_1 = require("./socket");
const commands_queue_1 = require("./commands-queue");
const commands_1 = __importDefault(require("../commands"));
const socket_1 = __importDefault(require("./socket"));
const commands_queue_1 = __importDefault(require("./commands-queue"));
const events_1 = require("events");

@@ -11,12 +14,12 @@ const commander_1 = require("../commander");

const pub_sub_1 = require("./pub-sub");
const multi_command_1 = require("./multi-command");
const HELLO_1 = require("../commands/HELLO");
const generic_pool_1 = require("generic-pool");
const multi_command_1 = __importDefault(require("./multi-command"));
const HELLO_1 = __importDefault(require("../commands/HELLO"));
const legacy_mode_1 = require("./legacy-mode");
class RedisClient extends events_1.EventEmitter {
static _createCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return async function () {
const args = command.transformArguments.apply(undefined, arguments), reply = await this._sendCommand(args, this.commandOptions);
return async function (...args) {
const redisArgs = command.transformArguments(...args), reply = await this.sendCommand(redisArgs, this._commandOptions);
return transformReply ?
transformReply(reply, args.preserve) :
transformReply(reply, redisArgs.preserve) :
reply;

@@ -27,6 +30,6 @@ };

const transformReply = (0, commander_1.getTransformReply)(command, resp);
return async function () {
const args = command.transformArguments.apply(undefined, arguments), reply = await this.self._sendCommand(args, this.self.commandOptions);
return async function (...args) {
const redisArgs = command.transformArguments(...args), reply = await this.self.sendCommand(redisArgs, this.self._commandOptions);
return transformReply ?
transformReply(reply, args.preserve) :
transformReply(reply, redisArgs.preserve) :
reply;

@@ -37,4 +40,4 @@ };

const prefix = (0, commander_1.functionArgumentsPrefix)(name, fn), transformReply = (0, commander_1.getTransformReply)(fn, resp);
return async function () {
const fnArgs = fn.transformArguments.apply(undefined, arguments), reply = await this.self._sendCommand(prefix.concat(fnArgs), this.self.commandOptions);
return async function (...args) {
const fnArgs = fn.transformArguments(...args), reply = await this.self.sendCommand(prefix.concat(fnArgs), this.self._commandOptions);
return transformReply ?

@@ -47,9 +50,9 @@ transformReply(reply, fnArgs.preserve) :

const prefix = (0, commander_1.scriptArgumentsPrefix)(script), transformReply = (0, commander_1.getTransformReply)(script, resp);
return async function () {
const scriptArgs = script.transformArguments.apply(undefined, arguments), args = prefix.concat(scriptArgs), reply = await this._sendCommand(args, this.commandOptions).catch((err) => {
return async function (...args) {
const scriptArgs = script.transformArguments(...args), redisArgs = prefix.concat(scriptArgs), reply = await this.sendCommand(redisArgs, this._commandOptions).catch((err) => {
if (!err?.message?.startsWith?.('NOSCRIPT'))
throw err;
args[0] = 'EVAL';
args[1] = script.SCRIPT;
return this._sendCommand(args, this.commandOptions);
redisArgs[0] = 'EVAL';
redisArgs[1] = script.SCRIPT;
return this.sendCommand(redisArgs, this._commandOptions);
});

@@ -124,170 +127,18 @@ return transformReply ?

}
// get v4(): Record<string, any> {
// if (!this.client.#options?.legacyMode) {
// throw new Error('the client is not in "legacy mode"');
// }
// return this.client.#v4;
// }
constructor(options) {
super();
Object.defineProperty(this, "self", {
enumerable: true,
configurable: true,
writable: true,
value: this
});
Object.defineProperty(this, "_options", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_socket", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_queue", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_isolationPool", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
// readonly #v4: Record<string, any> = {};
Object.defineProperty(this, "_selectedDB", {
enumerable: true,
configurable: true,
writable: true,
value: 0
});
// #legacyMode(): void {
// if (!this.#options?.legacyMode) return;
// (this as any).#v4.sendCommand = this.#sendCommand.bind(this);
// (this as any).sendCommand = (...args: Array<any>): void => {
// const result = this.#legacySendCommand(...args);
// if (result) {
// result.promise
// .then(reply => result.callback(null, reply))
// .catch(err => result.callback(err));
// }
// };
// for (const [name, command] of Object.entries(COMMANDS)) {
// this.#defineLegacyCommand(name, command);
// (this as any)[name.toLowerCase()] ??= (this as any)[name];
// }
// // hard coded commands
// this.#defineLegacyCommand('SELECT');
// this.#defineLegacyCommand('select');
// this.#defineLegacyCommand('SUBSCRIBE');
// this.#defineLegacyCommand('subscribe');
// this.#defineLegacyCommand('PSUBSCRIBE');
// this.#defineLegacyCommand('pSubscribe');
// this.#defineLegacyCommand('UNSUBSCRIBE');
// this.#defineLegacyCommand('unsubscribe');
// this.#defineLegacyCommand('PUNSUBSCRIBE');
// this.#defineLegacyCommand('pUnsubscribe');
// this.#defineLegacyCommand('QUIT');
// this.#defineLegacyCommand('quit');
// }
// #legacySendCommand(...args: Array<any>) {
// const callback = typeof args[args.length - 1] === 'function' ?
// args.pop() as ClientLegacyCallback :
// undefined;
// const promise = this.#sendCommand(transformLegacyCommandArguments(args));
// if (callback) return {
// promise,
// callback
// };
// promise.catch(err => this.emit('error', err));
// }
// #defineLegacyCommand(name: string, command?: RedisCommand): void {
// this.#v4[name] = (this as any)[name].bind(this);
// (this as any)[name] = command && command.TRANSFORM_LEGACY_REPLY && command.transformReply ?
// (...args: Array<unknown>) => {
// const result = this.#legacySendCommand(name, ...args);
// if (result) {
// result.promise
// .then(reply => result.callback(null, command.transformReply!(reply)))
// .catch(err => result.callback(err));
// }
// } :
// (...args: Array<unknown>) => (this as any).sendCommand(name, ...args);
// }
Object.defineProperty(this, "_pingTimer", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "sendCommand", {
enumerable: true,
configurable: true,
writable: true,
value: this._sendCommand.bind(this)
});
Object.defineProperty(this, "select", {
enumerable: true,
configurable: true,
writable: true,
value: this.SELECT
});
Object.defineProperty(this, "subscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.SUBSCRIBE
});
Object.defineProperty(this, "unsubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.UNSUBSCRIBE
});
Object.defineProperty(this, "pSubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.PSUBSCRIBE
});
Object.defineProperty(this, "pUnsubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.PUNSUBSCRIBE
});
Object.defineProperty(this, "sSubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.SSUBSCRIBE
});
Object.defineProperty(this, "sUnsubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.SUNSUBSCRIBE
});
Object.defineProperty(this, "quit", {
enumerable: true,
configurable: true,
writable: true,
value: this.QUIT
});
Object.defineProperty(this, "multi", {
enumerable: true,
configurable: true,
writable: true,
value: this.MULTI
});
this.self = this;
this._selectedDB = 0;
this.select = this.SELECT;
this.subscribe = this.SUBSCRIBE;
this.unsubscribe = this.UNSUBSCRIBE;
this.pSubscribe = this.PSUBSCRIBE;
this.pUnsubscribe = this.PUNSUBSCRIBE;
this.sSubscribe = this.SSUBSCRIBE;
this.sUnsubscribe = this.SUNSUBSCRIBE;
this.multi = this.MULTI;
this.quit = this.QUIT;
this._options = this._initiateOptions(options);
this._queue = this._initiateQueue();
this._socket = this._initiateSocket();
// this.#legacyMode();
}

@@ -305,2 +156,5 @@ _initiateOptions(options) {

}
if (options?.commandOptions) {
this._commandOptions = options.commandOptions;
}
return options;

@@ -318,8 +172,3 @@ }

if (this._options?.readonly) {
// promises.push(
// this.#queue.addCommand(
// COMMANDS.READONLY.transformArguments(),
// { asap: true }
// )
// );
promises.push(this._queue.addCommand(commands_1.default.READONLY.transformArguments(), { asap: true }));
}

@@ -341,19 +190,9 @@ if (this._options?.RESP) {

if (this._options?.name) {
// promises.push(
// this.#queue.addCommand(
// COMMANDS.CLIENT_SETNAME.transformArguments(this.#options.name),
// { asap: true }
// )
// );
promises.push(this._queue.addCommand(commands_1.default.CLIENT_SETNAME.transformArguments(this._options.name), { asap: true }));
}
if (this._options?.username || this._options?.password) {
// promises.push(
// this.#queue.addCommand(
// COMMANDS.AUTH.transformArguments({
// username: this.#options.username,
// password: this.#options.password ?? ''
// }),
// { asap: true }
// )
// );
promises.push(this._queue.addCommand(commands_1.default.AUTH.transformArguments({
username: this._options.username,
password: this._options.password ?? ''
}), { asap: true }));
}

@@ -366,3 +205,3 @@ }

if (promises.length) {
this._tick(true);
this._write();
await Promise.all(promises);

@@ -372,3 +211,11 @@ }

return new socket_1.default(socketInitiator, this._options?.socket)
.on('data', chunk => this._queue.decoder.write(chunk))
.on('data', chunk => {
try {
this._queue.decoder.write(chunk);
}
catch (err) {
this._queue.decoder.reset();
this.emit('error', err);
}
})
.on('error', err => {

@@ -387,6 +234,6 @@ this.emit('error', err);

this._setPingTimer();
this._tick();
this._scheduleWrite();
})
.on('reconnecting', () => this.emit('reconnecting'))
.on('drain', () => this._tick())
.on('drain', () => this._scheduleWrite())
.on('end', () => this.emit('end'));

@@ -401,4 +248,3 @@ }

return;
// using _sendCommand to support legacy mode
this._sendCommand(['PING'])
this.sendCommand(['PING'])
.then(reply => this.emit('ping-interval', reply))

@@ -411,3 +257,3 @@ .catch(err => this.emit('error', err))

const proxy = Object.create(this.self);
proxy.commandOptions = options;
proxy._commandOptions = options;
return proxy;

@@ -417,13 +263,19 @@ }

const proxy = Object.create(this.self);
proxy.commandOptions = Object.create(this.commandOptions ?? null);
proxy.commandOptions[key] = value;
proxy._commandOptions = Object.create(this._commandOptions ?? null);
proxy._commandOptions[key] = value;
return proxy;
}
/**
* Override the `flags` command option
* Override the `typeMapping` command option
*/
withFlags(flags) {
return this._commandOptionsProxy('flags', flags);
withTypeMapping(typeMapping) {
return this._commandOptionsProxy('typeMapping', typeMapping);
}
/**
* Override the `abortSignal` command option
*/
withAbortSignal(abortSignal) {
return this._commandOptionsProxy('abortSignal', abortSignal);
}
/**
* Override the `asap` command option to `true`

@@ -435,37 +287,29 @@ */

/**
* Override the `isolated` command option to `true`
* Create the "legacy" (v3/callback) interface
*/
isolated() {
return this._commandOptionsProxy('isolated', true);
legacy() {
return new legacy_mode_1.RedisLegacyClient(this);
}
/**
* Create `RedisClientPool` using this client as a prototype
*/
// pool() {
// return RedisClientPool.fromClient(
// this as unknown as RedisClientType<M, F, S, RESP>
// );
// }
duplicate(overrides) {
return new (Object.getPrototypeOf(this).constructor)({
...this._options,
commandOptions: this._commandOptions,
...overrides
});
}
async connect() {
await this._socket.connect();
this.self._isolationPool = (0, generic_pool_1.createPool)({
create: async () => {
const duplicate = this.duplicate({
isolationPoolOptions: undefined
}).on('error', err => this.emit('error', err));
await duplicate.connect();
return duplicate;
},
destroy: client => client.disconnect()
}, this._options?.isolationPoolOptions);
connect() {
return this._socket.connect();
}
// using `_` to avoid conflicts with the legacy mode
_sendCommand(args, options) {
sendCommand(args, options) {
if (!this._socket.isOpen) {
return Promise.reject(new errors_1.ClientClosedError());
}
else if (options?.isolated) {
return this.executeIsolated(isolatedClient => isolatedClient.sendCommand(args, {
...options,
isolated: false
}));
}
else if (!this._socket.isReady && this._options?.disableOfflineQueue) {

@@ -475,7 +319,7 @@ return Promise.reject(new errors_1.ClientOfflineError());

const promise = this._queue.addCommand(args, options);
this._tick();
this._scheduleWrite();
return promise;
}
async SELECT(db) {
await this._sendCommand(['SELECT', db.toString()]);
await this.sendCommand(['SELECT', db.toString()]);
this._selectedDB = db;

@@ -486,7 +330,6 @@ }

return Promise.resolve();
this._tick();
this._scheduleWrite();
return promise;
}
SUBSCRIBE(channels, listener, bufferMode) {
console.log('SUBSCRIBE', channels, listener, bufferMode, this._options?.RESP);
return this._pubSubCommand(this._queue.subscribe(pub_sub_1.PubSubType.CHANNELS, channels, listener, bufferMode));

@@ -518,59 +361,56 @@ }

}
QUIT() {
return this._socket.quit(async () => {
const quitPromise = this._queue.addCommand(['QUIT']);
this._tick();
const [reply] = await Promise.all([
quitPromise,
this._destroyIsolationPool()
]);
return reply;
_write() {
this._socket.write(this._queue.waitingToBeSent());
}
_scheduleWrite() {
if (!this.isReady || this._scheduledWrite)
return;
this._scheduledWrite = setImmediate(() => {
this._write();
this._scheduledWrite = undefined;
});
}
_tick(force = false) {
if (this._socket.writableNeedDrain || (!force && !this._socket.isReady)) {
return;
/**
* @internal
*/
executePipeline(commands) {
if (!this._socket.isOpen) {
return Promise.reject(new errors_1.ClientClosedError());
}
this._socket.cork();
while (!this._socket.writableNeedDrain) {
const args = this._queue.getCommandToSend();
if (args === undefined)
break;
this._socket.writeCommand(args);
}
}
executeIsolated(fn) {
return this._isolationPool ?
this._isolationPool.use(fn) :
Promise.reject(new errors_1.ClientClosedError());
}
_addMultiCommands(commands, chainId, flags) {
return Promise.all(commands.map(({ args }) => this._queue.addCommand(args, {
chainId,
flags
const promise = Promise.all(commands.map(({ args }) => this._queue.addCommand(args, {
typeMapping: this._commandOptions?.typeMapping
})));
this._scheduleWrite();
return promise;
}
MULTI() {
return new this.Multi(async (commands, selectedDB, chainId) => {
if (!this._socket.isOpen) {
return Promise.reject(new errors_1.ClientClosedError());
}
const flags = this.commandOptions?.flags, promise = chainId ?
// if `chainId` has a value, it's a `MULTI` (and not "pipeline") - need to add the `MULTI` and `EXEC` commands
Promise.all([
this._queue.addCommand(['MULTI'], { chainId }),
this._addMultiCommands(commands, chainId),
this._queue.addCommand(['EXEC'], { chainId, flags })
]) :
this._addMultiCommands(commands, undefined, flags);
this._tick();
const results = await promise;
if (selectedDB !== undefined) {
this._selectedDB = selectedDB;
}
return results;
/**
* @internal
*/
async executeMulti(commands, selectedDB) {
if (!this._socket.isOpen) {
return Promise.reject(new errors_1.ClientClosedError());
}
// self.#options?.legacyMode
);
const typeMapping = this._commandOptions?.typeMapping, chainId = Symbol('MULTI Chain'), promises = [
this._queue.addCommand(['MULTI'], { chainId }),
];
for (const { args } of commands) {
promises.push(this._queue.addCommand(args, {
chainId,
typeMapping
}));
}
promises.push(this._queue.addCommand(['EXEC'], { chainId }));
this._scheduleWrite();
const results = await Promise.all(promises), execResult = results[results.length - 1];
if (execResult === null) {
throw new errors_1.WatchError();
}
if (selectedDB !== undefined) {
this._selectedDB = selectedDB;
}
return execResult;
}
MULTI() {
return new this.Multi(this);
}
async *scanIterator(options) {

@@ -608,12 +448,48 @@ let cursor = options?.cursor ?? 0;

}
async disconnect() {
/**
* @deprecated use .close instead
*/
QUIT() {
return this._socket.quit(async () => {
clearTimeout(this._pingTimer);
const quitPromise = this._queue.addCommand(['QUIT']);
this._scheduleWrite();
return quitPromise;
});
}
/**
* @deprecated use .destroy instead
*/
disconnect() {
return Promise.resolve(this.destroy());
}
/**
* Close the client. Wait for pending commands.
*/
close() {
return new Promise(resolve => {
clearTimeout(this._pingTimer);
this._socket.close();
if (this._queue.isEmpty()) {
this._socket.destroySocket();
return resolve();
}
const maybeClose = () => {
if (!this._queue.isEmpty())
return;
this._socket.off('data', maybeClose);
this._socket.destroySocket();
resolve();
};
this._socket.on('data', maybeClose);
});
}
/**
* Destroy the client. Rejects all commands immediately.
*/
destroy() {
clearTimeout(this._pingTimer);
this._queue.flushAll(new errors_1.DisconnectsClientError());
this._socket.disconnect();
await this._destroyIsolationPool();
this._socket.destroy();
}
async _destroyIsolationPool() {
await this._isolationPool.drain();
await this._isolationPool.clear();
this.self._isolationPool = undefined;
}
ref() {

@@ -620,0 +496,0 @@ this._socket.ref();

import COMMANDS from '../commands';
import RedisMultiCommand, { RedisMultiQueuedCommand } from '../multi-command';
import { ReplyWithFlags, CommandReply, Command, CommanderConfig, RedisFunctions, RedisModules, RedisScripts, RespVersions, TransformReply, Flags, ReplyUnion } from '../RESP/types';
type CommandSignature<REPLIES extends Array<unknown>, C extends Command, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = (...args: Parameters<C['transformArguments']>) => RedisClientMultiCommandType<[
import { MULTI_REPLY, MultiReply, MultiReplyType } from '../multi-command';
import { ReplyWithTypeMapping, CommandReply, Command, CommandArguments, CommanderConfig, RedisFunctions, RedisModules, RedisScripts, RespVersions, TransformReply, TypeMapping } from '../RESP/types';
import { RedisClientType } from '.';
type CommandSignature<REPLIES extends Array<unknown>, C extends Command, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = (...args: Parameters<C['transformArguments']>) => RedisClientMultiCommandType<[
...REPLIES,
ReplyWithFlags<CommandReply<C, RESP>, FLAGS>
], M, F, S, RESP, FLAGS>;
type WithCommands<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = {
[P in keyof typeof COMMANDS]: CommandSignature<REPLIES, (typeof COMMANDS)[P], M, F, S, RESP, FLAGS>;
ReplyWithTypeMapping<CommandReply<C, RESP>, TYPE_MAPPING>
], M, F, S, RESP, TYPE_MAPPING>;
type WithCommands<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[P in keyof typeof COMMANDS]: CommandSignature<REPLIES, (typeof COMMANDS)[P], M, F, S, RESP, TYPE_MAPPING>;
};
type WithModules<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = {
type WithModules<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[P in keyof M]: {
[C in keyof M[P]]: CommandSignature<REPLIES, M[P][C], M, F, S, RESP, FLAGS>;
[C in keyof M[P]]: CommandSignature<REPLIES, M[P][C], M, F, S, RESP, TYPE_MAPPING>;
};
};
type WithFunctions<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = {
type WithFunctions<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[L in keyof F]: {
[C in keyof F[L]]: CommandSignature<REPLIES, F[L][C], M, F, S, RESP, FLAGS>;
[C in keyof F[L]]: CommandSignature<REPLIES, F[L][C], M, F, S, RESP, TYPE_MAPPING>;
};
};
type WithScripts<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = {
[P in keyof S]: CommandSignature<REPLIES, S[P], M, F, S, RESP, FLAGS>;
type WithScripts<REPLIES extends Array<unknown>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = {
[P in keyof S]: CommandSignature<REPLIES, S[P], M, F, S, RESP, TYPE_MAPPING>;
};
export type RedisClientMultiCommandType<REPLIES extends Array<any>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags> = (RedisClientMultiCommand<REPLIES> & WithCommands<REPLIES, M, F, S, RESP, FLAGS> & WithModules<REPLIES, M, F, S, RESP, FLAGS> & WithFunctions<REPLIES, M, F, S, RESP, FLAGS> & WithScripts<REPLIES, M, F, S, RESP, FLAGS>);
type MULTI_REPLY = {
GENERIC: 'generic';
TYPED: 'typed';
};
type MultiReply = MULTI_REPLY[keyof MULTI_REPLY];
type ReplyType<T extends MultiReply, REPLIES> = T extends MULTI_REPLY['TYPED'] ? REPLIES : Array<ReplyUnion>;
export type RedisClientMultiExecutor = (queue: Array<RedisMultiQueuedCommand>, selectedDB?: number, chainId?: symbol) => Promise<Array<unknown>>;
export default class RedisClientMultiCommand<REPLIES = []> extends RedisMultiCommand {
#private;
export type RedisClientMultiCommandType<REPLIES extends Array<any>, M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = (RedisClientMultiCommand<REPLIES> & WithCommands<REPLIES, M, F, S, RESP, TYPE_MAPPING> & WithModules<REPLIES, M, F, S, RESP, TYPE_MAPPING> & WithFunctions<REPLIES, M, F, S, RESP, TYPE_MAPPING> & WithScripts<REPLIES, M, F, S, RESP, TYPE_MAPPING>);
export default class RedisClientMultiCommand<REPLIES = []> {
private static _createCommand;
private static _createModuleCommand;
private static _createFunctionCommand;
private static _createScriptCommand;
static extend<M extends RedisModules = Record<string, never>, F extends RedisFunctions = Record<string, never>, S extends RedisScripts = Record<string, never>, RESP extends RespVersions = 2>(config?: CommanderConfig<M, F, S, RESP>): any;
constructor(executor: RedisClientMultiExecutor, legacyMode?: boolean);
private readonly _multi;
private readonly _client;
private _selectedDB?;
constructor(client: RedisClientType);
SELECT(db: number, transformReply?: TransformReply): this;
select: (db: number, transformReply?: TransformReply) => this;
exec<T extends MultiReply = MULTI_REPLY['GENERIC']>(execAsPipeline?: boolean): Promise<ReplyType<T, REPLIES>>;
EXEC: <T extends MultiReply = "generic">(execAsPipeline?: boolean) => Promise<ReplyType<T, REPLIES>>;
addCommand(args: CommandArguments, transformReply?: TransformReply): this;
exec<T extends MultiReply = MULTI_REPLY['GENERIC']>(execAsPipeline?: boolean): Promise<MultiReplyType<T, REPLIES>>;
EXEC: <T extends MultiReply = "generic">(execAsPipeline?: boolean) => Promise<MultiReplyType<T, REPLIES>>;
execTyped(execAsPipeline?: boolean): Promise<REPLIES>;
execAsPipeline<T extends MultiReply = MULTI_REPLY['GENERIC']>(): Promise<ReplyType<T, REPLIES>>;
execAsPipeline<T extends MultiReply = MULTI_REPLY['GENERIC']>(): Promise<MultiReplyType<T, REPLIES>>;
execAsPipelineTyped(): Promise<REPLIES>;
}
export {};
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _a, _RedisClientMultiCommand_createCommand, _RedisClientMultiCommand_createModuleCommand, _RedisClientMultiCommand_createFunctionCommand, _RedisClientMultiCommand_createScriptCommand, _RedisClientMultiCommand_executor, _RedisClientMultiCommand_selectedDB;
Object.defineProperty(exports, "__esModule", { value: true });
const commands_1 = require("../commands");
const multi_command_1 = require("../multi-command");
const commands_1 = __importDefault(require("../commands"));
const multi_command_1 = __importDefault(require("../multi-command"));
const commander_1 = require("../commander");
class RedisClientMultiCommand extends multi_command_1.default {
class RedisClientMultiCommand {
static _createCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return function (...args) {
return this.addCommand(command.transformArguments(...args), transformReply);
};
}
static _createModuleCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return function (...args) {
return this.self.addCommand(command.transformArguments(...args), transformReply);
};
}
static _createFunctionCommand(name, fn, resp) {
const prefix = (0, commander_1.functionArgumentsPrefix)(name, fn), transformReply = (0, commander_1.getTransformReply)(fn, resp);
return function (...args) {
const fnArgs = fn.transformArguments(...args), redisArgs = prefix.concat(fnArgs);
redisArgs.preserve = fnArgs.preserve;
return this.self.addCommand(redisArgs, transformReply);
};
}
static _createScriptCommand(script, resp) {
const transformReply = (0, commander_1.getTransformReply)(script, resp);
return function (...args) {
this._multi.addScript(script, script.transformArguments(...args), transformReply);
return this;
};
}
static extend(config) {

@@ -23,78 +41,28 @@ return (0, commander_1.attachConfig)({

commands: commands_1.default,
createCommand: __classPrivateFieldGet(RedisClientMultiCommand, _a, "m", _RedisClientMultiCommand_createCommand),
createModuleCommand: __classPrivateFieldGet(RedisClientMultiCommand, _a, "m", _RedisClientMultiCommand_createModuleCommand),
createFunctionCommand: __classPrivateFieldGet(RedisClientMultiCommand, _a, "m", _RedisClientMultiCommand_createFunctionCommand),
createScriptCommand: __classPrivateFieldGet(RedisClientMultiCommand, _a, "m", _RedisClientMultiCommand_createScriptCommand),
createCommand: RedisClientMultiCommand._createCommand,
createModuleCommand: RedisClientMultiCommand._createModuleCommand,
createFunctionCommand: RedisClientMultiCommand._createFunctionCommand,
createScriptCommand: RedisClientMultiCommand._createScriptCommand,
config
});
}
constructor(executor, legacyMode = false) {
super();
// readonly #multi = new RedisMultiCommand();
_RedisClientMultiCommand_executor.set(this, void 0);
// readonly v4: Record<string, any> = {};
_RedisClientMultiCommand_selectedDB.set(this, void 0);
Object.defineProperty(this, "select", {
enumerable: true,
configurable: true,
writable: true,
value: this.SELECT
});
Object.defineProperty(this, "EXEC", {
enumerable: true,
configurable: true,
writable: true,
value: this.exec
});
__classPrivateFieldSet(this, _RedisClientMultiCommand_executor, executor, "f");
// if (legacyMode) {
// this.#legacyMode();
// }
constructor(client) {
this._multi = new multi_command_1.default();
this.select = this.SELECT;
this.EXEC = this.exec;
this._client = client;
}
// #legacyMode(): void {
// this.v4.addCommand = this.addCommand.bind(this);
// (this as any).addCommand = (...args: Array<any>): this => {
// this.#multi.addCommand(transformLegacyCommandArguments(args));
// return this;
// };
// this.v4.exec = this.exec.bind(this);
// (this as any).exec = (callback?: (err: Error | null, replies?: Array<unknown>) => unknown): void => {
// this.v4.exec()
// .then((reply: Array<unknown>) => {
// if (!callback) return;
// callback(null, reply);
// })
// .catch((err: Error) => {
// if (!callback) {
// // this.emit('error', err);
// return;
// }
// callback(err);
// });
// };
// for (const [name, command] of Object.entries(COMMANDS as RedisCommands)) {
// this.#defineLegacyCommand(name, command);
// (this as any)[name.toLowerCase()] ??= (this as any)[name];
// }
// }
// #defineLegacyCommand(this: any, name: string, command?: RedisCommand): void {
// this.v4[name] = this[name].bind(this.v4);
// this[name] = command && command.TRANSFORM_LEGACY_REPLY && command.transformReply ?
// (...args: Array<unknown>) => {
// this.#multi.addCommand(
// [name, ...transformLegacyCommandArguments(args)],
// command.transformReply
// );
// return this;
// } :
// (...args: Array<unknown>) => this.addCommand(name, ...args);
// }
SELECT(db, transformReply) {
__classPrivateFieldSet(this, _RedisClientMultiCommand_selectedDB, db, "f");
return this.addCommand(['SELECT', db.toString()], transformReply);
this._selectedDB = db;
this._multi.addCommand(['SELECT', db.toString()], transformReply);
return this;
}
addCommand(args, transformReply) {
this._multi.addCommand(args, transformReply);
return this;
}
async exec(execAsPipeline = false) {
if (execAsPipeline)
return this.execAsPipeline();
return this.handleExecReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, "f").call(this, this.queue, __classPrivateFieldGet(this, _RedisClientMultiCommand_selectedDB, "f"), multi_command_1.default.generateChainId()));
return this._multi.transformReplies(await this._client.executeMulti(this._multi.queue, this._selectedDB));
}

@@ -105,5 +73,5 @@ execTyped(execAsPipeline = false) {

async execAsPipeline() {
if (this.queue.length === 0)
if (this._multi.queue.length === 0)
return [];
return this.transformReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, "f").call(this, this.queue, __classPrivateFieldGet(this, _RedisClientMultiCommand_selectedDB, "f")));
return this._multi.transformReplies(await this._client.executePipeline(this._multi.queue));
}

@@ -115,24 +83,1 @@ execAsPipelineTyped() {

exports.default = RedisClientMultiCommand;
_a = RedisClientMultiCommand, _RedisClientMultiCommand_executor = new WeakMap(), _RedisClientMultiCommand_selectedDB = new WeakMap(), _RedisClientMultiCommand_createCommand = function _RedisClientMultiCommand_createCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return function () {
return this.addCommand(command.transformArguments.apply(undefined, arguments), transformReply);
};
}, _RedisClientMultiCommand_createModuleCommand = function _RedisClientMultiCommand_createModuleCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return function () {
return this.self.addCommand(command.transformArguments.apply(undefined, arguments), transformReply);
};
}, _RedisClientMultiCommand_createFunctionCommand = function _RedisClientMultiCommand_createFunctionCommand(name, fn, resp) {
const prefix = (0, commander_1.functionArgumentsPrefix)(name, fn), transformReply = (0, commander_1.getTransformReply)(fn, resp);
return function () {
const fnArgs = fn.transformArguments.apply(undefined, arguments), args = prefix.concat(fnArgs);
args.preserve = fnArgs.preserve;
return this.self.addCommand(args, transformReply);
};
}, _RedisClientMultiCommand_createScriptCommand = function _RedisClientMultiCommand_createScriptCommand(script, resp) {
const transformReply = (0, commander_1.getTransformReply)(script, resp);
return function () {
return this.addScript(script, script.transformArguments.apply(undefined, arguments), transformReply);
};
};
/// <reference types="node" />
import { RedisArgument } from "../RESP/types";
import { RedisArgument } from '../RESP/types';
export declare enum PubSubType {

@@ -4,0 +4,0 @@ CHANNELS = "CHANNELS",

@@ -21,3 +21,3 @@ "use strict";

PubSubType["SHARDED"] = "SHARDED";
})(PubSubType = exports.PubSubType || (exports.PubSubType = {}));
})(PubSubType || (exports.PubSubType = PubSubType = {}));
const COMMANDS = {

@@ -24,0 +24,0 @@ [PubSubType.CHANNELS]: {

@@ -22,3 +22,3 @@ /// <reference types="node" />

/**
* When the socket closes unexpectedly (without calling `.quit()`/`.disconnect()`), the client uses `reconnectStrategy` to decide what to do. The following values are supported:
* When the socket closes unexpectedly (without calling `.close()`/`.destroy()`), the client uses `reconnectStrategy` to decide what to do. The following values are supported:
* 1. `false` -> do not reconnect, close the client and flush the command queue.

@@ -40,12 +40,26 @@ * 2. `number` -> wait for `X` milliseconds before reconnecting.

export default class RedisSocket extends EventEmitter {
#private;
private static _initiateOptions;
private static _isTlsSocket;
private readonly _initiator;
private readonly _options;
private _socket?;
private _isOpen;
get isOpen(): boolean;
private _isReady;
get isReady(): boolean;
get writableNeedDrain(): boolean;
private _isSocketUnrefed;
constructor(initiator: RedisSocketInitiator, options?: RedisSocketOptions);
private _reconnectStrategy;
private _shouldReconnect;
connect(): Promise<void>;
writeCommand(args: Array<RedisArgument>): void;
disconnect(): void;
private _connect;
private _createSocket;
private _createNetSocket;
private _createTlsSocket;
private _onSocketError;
write(iterator: IterableIterator<Array<RedisArgument>>): void;
quit<T>(fn: () => Promise<T>): Promise<T>;
cork(): void;
close(): void;
destroy(): void;
destroySocket(): void;
ref(): void;

@@ -52,0 +66,0 @@ unref(): void;

"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _RedisSocket_instances, _a, _RedisSocket_initiateOptions, _RedisSocket_isTlsSocket, _RedisSocket_initiator, _RedisSocket_options, _RedisSocket_socket, _RedisSocket_isOpen, _RedisSocket_isReady, _RedisSocket_writableNeedDrain, _RedisSocket_isSocketUnrefed, _RedisSocket_reconnectStrategy, _RedisSocket_shouldReconnect, _RedisSocket_connect, _RedisSocket_createSocket, _RedisSocket_createNetSocket, _RedisSocket_createTlsSocket, _RedisSocket_onSocketError, _RedisSocket_disconnect, _RedisSocket_isCorked;
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = require("events");
const net = require("net");
const tls = require("tls");
const net = __importStar(require("net"));
const tls = __importStar(require("tls"));
const errors_1 = require("../errors");
const utils_1 = require("../utils");
const promises_1 = require("timers/promises");
class RedisSocket extends events_1.EventEmitter {
static _initiateOptions(options) {
options ??= {};
if (!options.path) {
options.port ??= 6379;
options.host ??= 'localhost';
}
options.connectTimeout ??= 5000;
options.keepAlive ??= 5000;
options.noDelay ??= true;
return options;
}
static _isTlsSocket(options) {
return options.tls === true;
}
get isOpen() {
return __classPrivateFieldGet(this, _RedisSocket_isOpen, "f");
return this._isOpen;
}
get isReady() {
return __classPrivateFieldGet(this, _RedisSocket_isReady, "f");
return this._isReady;
}
get writableNeedDrain() {
return __classPrivateFieldGet(this, _RedisSocket_writableNeedDrain, "f");
}
constructor(initiator, options) {
super();
_RedisSocket_instances.add(this);
_RedisSocket_initiator.set(this, void 0);
_RedisSocket_options.set(this, void 0);
_RedisSocket_socket.set(this, void 0);
_RedisSocket_isOpen.set(this, false);
_RedisSocket_isReady.set(this, false);
// `writable.writableNeedDrain` was added in v15.2.0 and therefore can't be used
// https://nodejs.org/api/stream.html#stream_writable_writableneeddrain
_RedisSocket_writableNeedDrain.set(this, false);
_RedisSocket_isSocketUnrefed.set(this, false);
_RedisSocket_isCorked.set(this, false);
__classPrivateFieldSet(this, _RedisSocket_initiator, initiator, "f");
__classPrivateFieldSet(this, _RedisSocket_options, __classPrivateFieldGet(RedisSocket, _a, "m", _RedisSocket_initiateOptions).call(RedisSocket, options), "f");
this._isOpen = false;
this._isReady = false;
this._isSocketUnrefed = false;
this._initiator = initiator;
this._options = RedisSocket._initiateOptions(options);
}
_reconnectStrategy(retries, cause) {
if (this._options.reconnectStrategy === false) {
return false;
}
else if (typeof this._options.reconnectStrategy === 'number') {
return this._options.reconnectStrategy;
}
else if (this._options.reconnectStrategy) {
try {
const retryIn = this._options.reconnectStrategy(retries, cause);
if (retryIn !== false && !(retryIn instanceof Error) && typeof retryIn !== 'number') {
throw new TypeError(`Reconnect strategy should return \`false | Error | number\`, got ${retryIn} instead`);
}
return retryIn;
}
catch (err) {
this.emit('error', err);
}
}
return Math.min(retries * 50, 500);
}
_shouldReconnect(retries, cause) {
const retryIn = this._reconnectStrategy(retries, cause);
if (retryIn === false) {
this._isOpen = false;
this.emit('error', cause);
return cause;
}
else if (retryIn instanceof Error) {
this._isOpen = false;
this.emit('error', cause);
return new errors_1.ReconnectStrategyError(retryIn, cause);
}
return retryIn;
}
async connect() {
if (__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) {
if (this._isOpen) {
throw new Error('Socket already opened');
}
__classPrivateFieldSet(this, _RedisSocket_isOpen, true, "f");
return __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_connect).call(this);
this._isOpen = true;
return this._connect();
}
writeCommand(args) {
if (!__classPrivateFieldGet(this, _RedisSocket_socket, "f")) {
async _connect() {
let retries = 0;
do {
try {
this._socket = await this._createSocket();
this.emit('connect');
try {
await this._initiator();
}
catch (err) {
this._socket.destroy();
this._socket = undefined;
throw err;
}
this._isReady = true;
this.emit('ready');
}
catch (err) {
const retryIn = this._shouldReconnect(retries++, err);
if (typeof retryIn !== 'number') {
throw retryIn;
}
this.emit('error', err);
await (0, promises_1.setTimeout)(retryIn);
this.emit('reconnecting');
}
} while (this._isOpen && !this._isReady);
}
_createSocket() {
return new Promise((resolve, reject) => {
const { connectEvent, socket } = RedisSocket._isTlsSocket(this._options) ?
this._createTlsSocket() :
this._createNetSocket();
if (this._options.connectTimeout) {
socket.setTimeout(this._options.connectTimeout, () => socket.destroy(new errors_1.ConnectionTimeoutError()));
}
if (this._isSocketUnrefed) {
socket.unref();
}
socket
.setNoDelay(this._options.noDelay)
.once('error', reject)
.once(connectEvent, () => {
socket
.setTimeout(0)
// https://github.com/nodejs/node/issues/31663
.setKeepAlive(this._options.keepAlive !== false, this._options.keepAlive || 0)
.off('error', reject)
.once('error', (err) => this._onSocketError(err))
.once('close', hadError => {
if (!hadError && this._isOpen && this._socket === socket) {
this._onSocketError(new errors_1.SocketClosedUnexpectedlyError());
}
})
.on('drain', () => this.emit('drain'))
.on('data', data => this.emit('data', data));
resolve(socket);
});
});
}
_createNetSocket() {
return {
connectEvent: 'connect',
socket: net.connect(this._options) // TODO
};
}
_createTlsSocket() {
return {
connectEvent: 'secureConnect',
socket: tls.connect(this._options) // TODO
};
}
_onSocketError(err) {
this._isReady = false;
this.emit('error', err);
if (!this._isOpen || typeof this._shouldReconnect(0, err) !== 'number')
return;
this.emit('reconnecting');
this._connect().catch(() => {
// the error was already emitted, silently ignore it
});
}
write(iterator) {
if (!this._socket) {
throw new errors_1.ClientClosedError();
}
for (const toWrite of args) {
__classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, !__classPrivateFieldGet(this, _RedisSocket_socket, "f").write(toWrite), "f");
this._socket.cork();
for (const args of iterator) {
for (const toWrite of args) {
this._socket.write(toWrite);
}
if (this._socket.writableNeedDrain)
break;
}
this._socket.uncork();
}
disconnect() {
if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) {
throw new errors_1.ClientClosedError();
}
__classPrivateFieldSet(this, _RedisSocket_isOpen, false, "f");
__classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_disconnect).call(this);
}
async quit(fn) {
if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f")) {
if (!this._isOpen) {
throw new errors_1.ClientClosedError();
}
__classPrivateFieldSet(this, _RedisSocket_isOpen, false, "f");
this._isOpen = false;
const reply = await fn();
__classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_disconnect).call(this);
this.destroySocket();
return reply;
}
cork() {
if (!__classPrivateFieldGet(this, _RedisSocket_socket, "f") || __classPrivateFieldGet(this, _RedisSocket_isCorked, "f")) {
return;
close() {
if (!this._isOpen) {
throw new errors_1.ClientClosedError();
}
__classPrivateFieldGet(this, _RedisSocket_socket, "f").cork();
__classPrivateFieldSet(this, _RedisSocket_isCorked, true, "f");
queueMicrotask(() => {
__classPrivateFieldGet(this, _RedisSocket_socket, "f")?.uncork();
__classPrivateFieldSet(this, _RedisSocket_isCorked, false, "f");
});
this._isOpen = false;
}
destroy() {
if (!this._isOpen) {
throw new errors_1.ClientClosedError();
}
this._isOpen = false;
this.destroySocket();
}
destroySocket() {
this._isReady = false;
if (this._socket) {
this._socket.destroy();
this._socket = undefined;
}
this.emit('end');
}
ref() {
__classPrivateFieldSet(this, _RedisSocket_isSocketUnrefed, false, "f");
__classPrivateFieldGet(this, _RedisSocket_socket, "f")?.ref();
this._isSocketUnrefed = false;
this._socket?.ref();
}
unref() {
__classPrivateFieldSet(this, _RedisSocket_isSocketUnrefed, true, "f");
__classPrivateFieldGet(this, _RedisSocket_socket, "f")?.unref();
this._isSocketUnrefed = true;
this._socket?.unref();
}
}
exports.default = RedisSocket;
_a = RedisSocket, _RedisSocket_initiator = new WeakMap(), _RedisSocket_options = new WeakMap(), _RedisSocket_socket = new WeakMap(), _RedisSocket_isOpen = new WeakMap(), _RedisSocket_isReady = new WeakMap(), _RedisSocket_writableNeedDrain = new WeakMap(), _RedisSocket_isSocketUnrefed = new WeakMap(), _RedisSocket_isCorked = new WeakMap(), _RedisSocket_instances = new WeakSet(), _RedisSocket_initiateOptions = function _RedisSocket_initiateOptions(options) {
options ??= {};
if (!options.path) {
options.port ??= 6379;
options.host ??= 'localhost';
}
options.connectTimeout ??= 5000;
options.keepAlive ??= 5000;
options.noDelay ??= true;
return options;
}, _RedisSocket_isTlsSocket = function _RedisSocket_isTlsSocket(options) {
return options.tls === true;
}, _RedisSocket_reconnectStrategy = function _RedisSocket_reconnectStrategy(retries, cause) {
if (__classPrivateFieldGet(this, _RedisSocket_options, "f").reconnectStrategy === false) {
return false;
}
else if (typeof __classPrivateFieldGet(this, _RedisSocket_options, "f").reconnectStrategy === 'number') {
return __classPrivateFieldGet(this, _RedisSocket_options, "f").reconnectStrategy;
}
else if (__classPrivateFieldGet(this, _RedisSocket_options, "f").reconnectStrategy) {
try {
const retryIn = __classPrivateFieldGet(this, _RedisSocket_options, "f").reconnectStrategy(retries, cause);
if (retryIn !== false && !(retryIn instanceof Error) && typeof retryIn !== 'number') {
throw new TypeError(`Reconnect strategy should return \`false | Error | number\`, got ${retryIn} instead`);
}
return retryIn;
}
catch (err) {
this.emit('error', err);
}
}
return Math.min(retries * 50, 500);
}, _RedisSocket_shouldReconnect = function _RedisSocket_shouldReconnect(retries, cause) {
const retryIn = __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_reconnectStrategy).call(this, retries, cause);
if (retryIn === false) {
__classPrivateFieldSet(this, _RedisSocket_isOpen, false, "f");
this.emit('error', cause);
return cause;
}
else if (retryIn instanceof Error) {
__classPrivateFieldSet(this, _RedisSocket_isOpen, false, "f");
this.emit('error', cause);
return new errors_1.ReconnectStrategyError(retryIn, cause);
}
return retryIn;
}, _RedisSocket_connect = async function _RedisSocket_connect() {
let retries = 0;
do {
try {
__classPrivateFieldSet(this, _RedisSocket_socket, await __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_createSocket).call(this), "f");
__classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, "f");
this.emit('connect');
try {
await __classPrivateFieldGet(this, _RedisSocket_initiator, "f").call(this);
}
catch (err) {
__classPrivateFieldGet(this, _RedisSocket_socket, "f").destroy();
__classPrivateFieldSet(this, _RedisSocket_socket, undefined, "f");
throw err;
}
__classPrivateFieldSet(this, _RedisSocket_isReady, true, "f");
this.emit('ready');
}
catch (err) {
const retryIn = __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_shouldReconnect).call(this, retries++, err);
if (typeof retryIn !== 'number') {
throw retryIn;
}
this.emit('error', err);
await (0, utils_1.promiseTimeout)(retryIn);
this.emit('reconnecting');
}
} while (__classPrivateFieldGet(this, _RedisSocket_isOpen, "f") && !__classPrivateFieldGet(this, _RedisSocket_isReady, "f"));
}, _RedisSocket_createSocket = function _RedisSocket_createSocket() {
return new Promise((resolve, reject) => {
const { connectEvent, socket } = __classPrivateFieldGet(RedisSocket, _a, "m", _RedisSocket_isTlsSocket).call(RedisSocket, __classPrivateFieldGet(this, _RedisSocket_options, "f")) ?
__classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_createTlsSocket).call(this) :
__classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_createNetSocket).call(this);
if (__classPrivateFieldGet(this, _RedisSocket_options, "f").connectTimeout) {
socket.setTimeout(__classPrivateFieldGet(this, _RedisSocket_options, "f").connectTimeout, () => socket.destroy(new errors_1.ConnectionTimeoutError()));
}
if (__classPrivateFieldGet(this, _RedisSocket_isSocketUnrefed, "f")) {
socket.unref();
}
socket
.setNoDelay(__classPrivateFieldGet(this, _RedisSocket_options, "f").noDelay)
.once('error', reject)
.once(connectEvent, () => {
socket
.setTimeout(0)
// https://github.com/nodejs/node/issues/31663
.setKeepAlive(__classPrivateFieldGet(this, _RedisSocket_options, "f").keepAlive !== false, __classPrivateFieldGet(this, _RedisSocket_options, "f").keepAlive || 0)
.off('error', reject)
.once('error', (err) => __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_onSocketError).call(this, err))
.once('close', hadError => {
if (!hadError && __classPrivateFieldGet(this, _RedisSocket_isOpen, "f") && __classPrivateFieldGet(this, _RedisSocket_socket, "f") === socket) {
__classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_onSocketError).call(this, new errors_1.SocketClosedUnexpectedlyError());
}
})
.on('drain', () => {
__classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, "f");
this.emit('drain');
})
.on('data', data => this.emit('data', data));
resolve(socket);
});
});
}, _RedisSocket_createNetSocket = function _RedisSocket_createNetSocket() {
return {
connectEvent: 'connect',
socket: net.connect(__classPrivateFieldGet(this, _RedisSocket_options, "f")) // TODO
};
}, _RedisSocket_createTlsSocket = function _RedisSocket_createTlsSocket() {
return {
connectEvent: 'secureConnect',
socket: tls.connect(__classPrivateFieldGet(this, _RedisSocket_options, "f")) // TODO
};
}, _RedisSocket_onSocketError = function _RedisSocket_onSocketError(err) {
__classPrivateFieldSet(this, _RedisSocket_isReady, false, "f");
this.emit('error', err);
if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, "f") || typeof __classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_shouldReconnect).call(this, 0, err) !== 'number')
return;
this.emit('reconnecting');
__classPrivateFieldGet(this, _RedisSocket_instances, "m", _RedisSocket_connect).call(this).catch(() => {
// the error was already emitted, silently ignore it
});
}, _RedisSocket_disconnect = function _RedisSocket_disconnect() {
__classPrivateFieldSet(this, _RedisSocket_isReady, false, "f");
if (__classPrivateFieldGet(this, _RedisSocket_socket, "f")) {
__classPrivateFieldGet(this, _RedisSocket_socket, "f").destroy();
__classPrivateFieldSet(this, _RedisSocket_socket, undefined, "f");
}
this.emit('end');
};

@@ -21,2 +21,3 @@ /// <reference types="node" />

export interface ShardNode<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions> extends Node<M, F, S, RESP> {
id: string;
host: string;

@@ -64,4 +65,13 @@ port: number;

private _rediscover;
/**
* @deprecated Use `close` instead.
*/
quit(): Promise<void>;
/**
* @deprecated Use `destroy` instead.
*/
disconnect(): Promise<void>;
close(): Promise<void>;
destroy(): void;
private _clients;
private _destroy;

@@ -68,0 +78,0 @@ private _execOnNodeClient;

@@ -13,6 +13,9 @@ "use strict";

};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _RedisClusterSlots_instances, _RedisClusterSlots_runningRediscoverPromise, _RedisClusterSlots_initiateShardedPubSubClient;
Object.defineProperty(exports, "__esModule", { value: true });
const errors_1 = require("../errors");
const client_1 = require("../client");
const client_1 = __importDefault(require("../client"));
const util_1 = require("util");

@@ -31,69 +34,9 @@ const pub_sub_1 = require("../client/pub-sub");

_RedisClusterSlots_instances.add(this);
Object.defineProperty(this, "_options", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_clientFactory", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_emit", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "slots", {
enumerable: true,
configurable: true,
writable: true,
value: new Array(RedisClusterSlots._SLOTS)
});
Object.defineProperty(this, "shards", {
enumerable: true,
configurable: true,
writable: true,
value: new Array()
});
Object.defineProperty(this, "masters", {
enumerable: true,
configurable: true,
writable: true,
value: new Array()
});
Object.defineProperty(this, "replicas", {
enumerable: true,
configurable: true,
writable: true,
value: new Array()
});
Object.defineProperty(this, "nodeByAddress", {
enumerable: true,
configurable: true,
writable: true,
value: new Map()
});
Object.defineProperty(this, "pubSubNode", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_isOpen", {
enumerable: true,
configurable: true,
writable: true,
value: false
});
this.slots = new Array(RedisClusterSlots._SLOTS);
this.shards = new Array();
this.masters = new Array();
this.replicas = new Array();
this.nodeByAddress = new Map();
this._isOpen = false;
_RedisClusterSlots_runningRediscoverPromise.set(this, void 0);
Object.defineProperty(this, "_randomNodeIterator", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this._options = options;

@@ -201,3 +144,3 @@ this._clientFactory = client_1.default.factory(options);

finally {
await client.disconnect();
client.destroy();
}

@@ -232,4 +175,4 @@ }

}
_initiateSlotNode(slotAddress, readonly, eagerConnent, addressesInUse, promises) {
const address = `${slotAddress.host}:${slotAddress.port}`;
_initiateSlotNode(shard, readonly, eagerConnent, addressesInUse, promises) {
const address = `${shard.host}:${shard.port}`;
addressesInUse.add(address);

@@ -239,3 +182,3 @@ let node = this.nodeByAddress.get(address);

node = {
...slotAddress,
...shard,
address,

@@ -292,17 +235,36 @@ readonly,

}
/**
* @deprecated Use `close` instead.
*/
quit() {
return this._destroy(client => client.quit());
}
/**
* @deprecated Use `destroy` instead.
*/
disconnect() {
return this._destroy(client => client.disconnect());
}
async _destroy(fn) {
close() {
return this._destroy(client => client.close());
}
destroy() {
this._isOpen = false;
const promises = [];
for (const client of this._clients()) {
this._execOnNodeClient(client, client => client.destroy());
}
if (this.pubSubNode) {
this._execOnNodeClient(this.pubSubNode.client, client => client.destroy());
this.pubSubNode = undefined;
}
this._resetSlots();
this.nodeByAddress.clear();
}
*_clients() {
for (const { master, replicas } of this.shards) {
if (master.client) {
promises.push(this._execOnNodeClient(master.client, fn));
yield master.client;
}
if (master.pubSubClient) {
promises.push(this._execOnNodeClient(master.pubSubClient, fn));
yield master.pubSubClient;
}

@@ -312,3 +274,3 @@ if (replicas) {

if (client) {
promises.push(this._execOnNodeClient(client, fn));
yield client;
}

@@ -318,2 +280,9 @@ }

}
}
async _destroy(fn) {
this._isOpen = false;
const promises = [];
for (const client of this._clients()) {
promises.push(this._execOnNodeClient(client, fn));
}
if (this.pubSubNode) {

@@ -432,3 +401,3 @@ promises.push(this._execOnNodeClient(this.pubSubNode.client, fn));

if (!client.isPubSubActive) {
await client.disconnect();
client.destroy();
this.pubSubNode = undefined;

@@ -476,8 +445,3 @@ }

};
Object.defineProperty(RedisClusterSlots, "_SLOTS", {
enumerable: true,
configurable: true,
writable: true,
value: 16384
});
RedisClusterSlots._SLOTS = 16384;
exports.default = RedisClusterSlots;
/// <reference types="node" />
import { ClientCommandOptions, RedisClientOptions, RedisClientType } from '../client';
import { CommandArguments, CommanderConfig, CommandPolicies, CommandWithPoliciesSignature, Flags, RedisArgument, RedisFunctions, RedisModules, RedisScripts, ReplyUnion, RespVersions } from '../RESP/types';
import { RedisClientOptions } from '../client';
import { CommandOptions } from '../client/commands-queue';
import { Command, CommandArguments, CommanderConfig, CommandPolicies, CommandWithPoliciesSignature, TypeMapping, RedisArgument, RedisFunctions, RedisModules, RedisScripts, ReplyUnion, RespVersions } from '../RESP/types';
import COMMANDS from '../commands';
import { EventEmitter } from 'events';
import { NodeAddressMap, ShardNode } from './cluster-slots';
import { RedisClusterMultiCommandType } from './multi-command';
import { RedisMultiQueuedCommand } from '../multi-command';
import { PubSubListener } from '../client/pub-sub';
export type RedisClusterClientOptions = Omit<RedisClientOptions, 'modules' | 'functions' | 'scripts' | 'database' | 'RESP'>;
export interface RedisClusterOptions<M extends RedisModules = RedisModules, F extends RedisFunctions = RedisFunctions, S extends RedisScripts = RedisScripts, RESP extends RespVersions = RespVersions> extends CommanderConfig<M, F, S, RESP> {
interface ClusterCommander<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping, POLICIES extends CommandPolicies> extends CommanderConfig<M, F, S, RESP> {
commandOptions?: ClusterCommandOptions<TYPE_MAPPING, POLICIES>;
}
export type RedisClusterClientOptions = Omit<RedisClientOptions, keyof ClusterCommander<RedisModules, RedisFunctions, RedisScripts, RespVersions, TypeMapping, CommandPolicies>>;
export interface RedisClusterOptions<M extends RedisModules = RedisModules, F extends RedisFunctions = RedisFunctions, S extends RedisScripts = RedisScripts, RESP extends RespVersions = RespVersions, TYPE_MAPPING extends TypeMapping = TypeMapping, POLICIES extends CommandPolicies = CommandPolicies> extends ClusterCommander<M, F, S, RESP, TYPE_MAPPING, POLICIES> {
/**

@@ -39,11 +45,11 @@ * Should contain details for some of the cluster nodes that the client will use to discover

}
type WithCommands<RESP extends RespVersions, FLAGS extends Flags, POLICIES extends CommandPolicies> = {
[P in keyof typeof COMMANDS]: CommandWithPoliciesSignature<(typeof COMMANDS)[P], RESP, FLAGS, POLICIES>;
type WithCommands<RESP extends RespVersions, TYPE_MAPPING extends TypeMapping, POLICIES extends CommandPolicies> = {
[P in keyof typeof COMMANDS]: CommandWithPoliciesSignature<(typeof COMMANDS)[P], RESP, TYPE_MAPPING, POLICIES>;
};
export type RedisClusterType<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, FLAGS extends Flags = {}, POLICIES extends CommandPolicies = {}> = RedisCluster<M, F, S, RESP, FLAGS, POLICIES> & WithCommands<RESP, FLAGS, POLICIES>;
export interface ClusterCommandOptions extends ClientCommandOptions {
policies?: CommandPolicies;
export type RedisClusterType<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}, POLICIES extends CommandPolicies = {}> = RedisCluster<M, F, S, RESP, TYPE_MAPPING, POLICIES> & WithCommands<RESP, TYPE_MAPPING, POLICIES>;
export interface ClusterCommandOptions<TYPE_MAPPING extends TypeMapping = TypeMapping, POLICIES extends CommandPolicies = CommandPolicies> extends CommandOptions<TYPE_MAPPING> {
policies?: POLICIES;
}
export default class RedisCluster<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, FLAGS extends Flags, POLICIES extends CommandPolicies> extends EventEmitter {
private static _extractFirstKey;
export default class RedisCluster<M extends RedisModules, F extends RedisFunctions, S extends RedisScripts, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping, POLICIES extends CommandPolicies> extends EventEmitter {
static extractFirstKey<C extends Command>(command: C, args: Parameters<C['transformArguments']>, redisArgs: Array<RedisArgument>): RedisArgument | undefined;
private static _createCommand;

@@ -53,6 +59,7 @@ private static _createModuleCommand;

private static _createScriptCommand;
static factory<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2>(config?: CommanderConfig<M, F, S, RESP>): (options?: Omit<RedisClusterOptions, keyof Exclude<typeof config, undefined>>) => RedisClusterType<M, F, S, RESP, {}, {}>;
static create<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2>(options?: RedisClusterOptions<M, F, S, RESP>): RedisClusterType<M, F, S, RESP, {}, {}>;
static factory<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}, POLICIES extends CommandPolicies = {}>(config?: ClusterCommander<M, F, S, RESP, TYPE_MAPPING, POLICIES>): (options?: Omit<RedisClusterOptions, keyof Exclude<typeof config, undefined>>) => RedisClusterType<M, F, S, RESP, TYPE_MAPPING, POLICIES>;
static create<M extends RedisModules = {}, F extends RedisFunctions = {}, S extends RedisScripts = {}, RESP extends RespVersions = 2, TYPE_MAPPING extends TypeMapping = {}, POLICIES extends CommandPolicies = {}>(options?: RedisClusterOptions<M, F, S, RESP, TYPE_MAPPING, POLICIES>): RedisClusterType<M, F, S, RESP, TYPE_MAPPING, POLICIES>;
private readonly _options;
private readonly _slots;
private _commandOptions?;
/**

@@ -88,11 +95,11 @@ * An array of the cluster slots, each slot contain its `master` and `replicas`.

get isOpen(): boolean;
constructor(options: RedisClusterOptions<M, F, S, RESP>);
duplicate(overrides?: Partial<RedisClusterOptions<M, F, S>>): RedisClusterType<M, F, S>;
constructor(options: RedisClusterOptions<M, F, S, RESP, TYPE_MAPPING, POLICIES>);
duplicate<_M extends RedisModules = M, _F extends RedisFunctions = F, _S extends RedisScripts = S, _RESP extends RespVersions = RESP, _TYPE_MAPPING extends TypeMapping = TYPE_MAPPING>(overrides?: Partial<RedisClusterOptions<_M, _F, _S, _RESP, _TYPE_MAPPING>>): RedisClusterType<_M, _F, _S, _RESP, _TYPE_MAPPING, {}>;
connect(): Promise<void>;
withCommandOptions<T extends ClusterCommandOptions>(options: T): RedisClusterType<M, F, S, RESP, T["flags"] extends Flags ? T["flags"] : {}, T["policies"] extends CommandPolicies ? T["policies"] : {}>;
withCommandOptions<OPTIONS extends ClusterCommandOptions<TYPE_MAPPING, CommandPolicies>, TYPE_MAPPING extends TypeMapping, POLICIES extends CommandPolicies>(options: OPTIONS): RedisClusterType<M, F, S, RESP, TYPE_MAPPING extends TypeMapping ? TYPE_MAPPING : {}, POLICIES extends CommandPolicies ? POLICIES : {}>;
private _commandOptionsProxy;
/**
* Override the `flags` command option
* Override the `typeMapping` command option
*/
withFlags<FLAGS extends Flags>(flags: FLAGS): RedisClusterType<M, F, S, RESP, FLAGS extends Flags ? FLAGS : {}, POLICIES>;
withTypeMapping<TYPE_MAPPING extends TypeMapping>(typeMapping: TYPE_MAPPING): RedisClusterType<M, F, S, RESP, TYPE_MAPPING extends TypeMapping ? TYPE_MAPPING : {}, POLICIES>;
/**

@@ -102,4 +109,14 @@ * Override the `policies` command option

*/
withPolicies<POLICIES extends CommandPolicies>(policies: POLICIES): RedisClusterType<M, F, S, RESP, FLAGS, POLICIES extends CommandPolicies ? POLICIES : {}>;
withPolicies<POLICIES extends CommandPolicies>(policies: POLICIES): RedisClusterType<M, F, S, RESP, TYPE_MAPPING, POLICIES extends CommandPolicies ? POLICIES : {}>;
sendCommand<T = ReplyUnion>(firstKey: RedisArgument | undefined, isReadonly: boolean | undefined, args: CommandArguments, options?: ClusterCommandOptions, deafultPolicies?: CommandPolicies): Promise<T>;
/**
* @internal
*/
executePipeline(firstKey: RedisArgument | undefined, isReadonly: boolean | undefined, commands: Array<RedisMultiQueuedCommand>): Promise<unknown[]>;
/**
* @internal
*/
executeMulti(firstKey: RedisArgument | undefined, isReadonly: boolean | undefined, commands: Array<RedisMultiQueuedCommand>): Promise<unknown[]>;
MULTI(routing?: RedisArgument): RedisClusterMultiCommandType<[], M, F, S, RESP, TYPE_MAPPING>;
multi: (routing?: RedisArgument) => RedisClusterMultiCommandType<[], M, F, S, RESP, TYPE_MAPPING>;
SUBSCRIBE<T extends boolean = false>(channels: string | Array<string>, listener: PubSubListener<T>, bufferMode?: T): Promise<void>;

@@ -117,4 +134,13 @@ subscribe: <T extends boolean = false>(channels: string | Array<string>, listener: PubSubListener<T>, bufferMode?: T | undefined) => Promise<void>;

sUnsubscribe: <T extends boolean = false>(channels: string | Array<string>, listener: PubSubListener<T>, bufferMode?: T | undefined) => Promise<void>;
/**
* @deprecated Use `close` instead.
*/
quit(): Promise<void>;
/**
* @deprecated Use `destroy` instead.
*/
disconnect(): Promise<void>;
nodeClient(node: ShardNode<M, F, S, RESP>): RedisClientType<M, F, S, RESP> | Promise<RedisClientType<M, F, S, RESP>>;
close(): Promise<void>;
destroy(): void;
nodeClient(node: ShardNode<M, F, S, RESP>): import("../client").RedisClientType<M, F, S, RESP> | Promise<import("../client").RedisClientType<M, F, S, RESP>>;
/**

@@ -121,0 +147,0 @@ * Returns a random node from the cluster.

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const commands_1 = require("../commands");
const commands_1 = __importDefault(require("../commands"));
const events_1 = require("events");
const commander_1 = require("../commander");
const cluster_slots_1 = require("./cluster-slots");
const cluster_slots_1 = __importDefault(require("./cluster-slots"));
const multi_command_1 = __importDefault(require("./multi-command"));
const errors_1 = require("../errors");
class RedisCluster extends events_1.EventEmitter {
static _extractFirstKey(command, args, redisArgs) {
static extractFirstKey(command, args, redisArgs) {
if (command.FIRST_KEY_INDEX === undefined) {

@@ -20,6 +24,6 @@ return undefined;

const transformReply = (0, commander_1.getTransformReply)(command, resp);
return async function () {
const args = command.transformArguments.apply(undefined, arguments), firstKey = RedisCluster._extractFirstKey(command, arguments, args), reply = await this.sendCommand(firstKey, command.IS_READ_ONLY, args, this.commandOptions, command.POLICIES);
return async function (...args) {
const redisArgs = command.transformArguments(...args), firstKey = RedisCluster.extractFirstKey(command, args, redisArgs), reply = await this.sendCommand(firstKey, command.IS_READ_ONLY, redisArgs, this._commandOptions, command.POLICIES);
return transformReply ?
transformReply(reply, args.preserve) :
transformReply(reply, redisArgs.preserve) :
reply;

@@ -30,6 +34,6 @@ };

const transformReply = (0, commander_1.getTransformReply)(command, resp);
return async function () {
const args = command.transformArguments.apply(undefined, arguments), firstKey = RedisCluster._extractFirstKey(command, arguments, args), reply = await this.self.sendCommand(firstKey, command.IS_READ_ONLY, args, this.self.commandOptions, command.POLICIES);
return async function (...args) {
const redisArgs = command.transformArguments(...args), firstKey = RedisCluster.extractFirstKey(command, args, redisArgs), reply = await this.self.sendCommand(firstKey, command.IS_READ_ONLY, redisArgs, this.self._commandOptions, command.POLICIES);
return transformReply ?
transformReply(reply, args.preserve) :
transformReply(reply, redisArgs.preserve) :
reply;

@@ -40,4 +44,4 @@ };

const prefix = (0, commander_1.functionArgumentsPrefix)(name, fn), transformReply = (0, commander_1.getTransformReply)(fn, resp);
return async function () {
const fnArgs = fn.transformArguments.apply(undefined, arguments), args = prefix.concat(fnArgs), firstKey = RedisCluster._extractFirstKey(fn, arguments, args), reply = await this.self.sendCommand(firstKey, fn.IS_READ_ONLY, args, this.self.commandOptions, fn.POLICIES);
return async function (...args) {
const fnArgs = fn.transformArguments(...args), redisArgs = prefix.concat(fnArgs), firstKey = RedisCluster.extractFirstKey(fn, fnArgs, redisArgs), reply = await this.self.sendCommand(firstKey, fn.IS_READ_ONLY, redisArgs, this.self._commandOptions, fn.POLICIES);
return transformReply ?

@@ -50,4 +54,4 @@ transformReply(reply, fnArgs.preserve) :

const prefix = (0, commander_1.scriptArgumentsPrefix)(script), transformReply = (0, commander_1.getTransformReply)(script, resp);
return async function () {
const scriptArgs = script.transformArguments.apply(undefined, arguments), args = prefix.concat(scriptArgs), firstKey = RedisCluster._extractFirstKey(script, arguments, args), reply = await this.sendCommand(firstKey, script.IS_READ_ONLY, args, this.commandOptions, script.POLICIES);
return async function (...args) {
const scriptArgs = script.transformArguments(...args), redisArgs = prefix.concat(scriptArgs), firstKey = RedisCluster.extractFirstKey(script, scriptArgs, redisArgs), reply = await this.sendCommand(firstKey, script.IS_READ_ONLY, redisArgs, this._commandOptions, script.POLICIES);
return transformReply ?

@@ -68,3 +72,3 @@ transformReply(reply, scriptArgs.preserve) :

});
// Client.prototype.Multi = RedisClientMultiCommand.extend(config);
Cluster.prototype.Multi = multi_command_1.default.extend(config);
return (options) => {

@@ -120,3 +124,2 @@ // returning a proxy of the client to prevent the namespaces.self to leak between proxies

}
// readonly #Multi: InstantiableRedisClusterMultiCommandType<M, F, S>;
get isOpen() {

@@ -127,53 +130,14 @@ return this._slots.isOpen;

super();
Object.defineProperty(this, "_options", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_slots", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "subscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.SUBSCRIBE
});
Object.defineProperty(this, "unsubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.UNSUBSCRIBE
});
Object.defineProperty(this, "pSubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.PSUBSCRIBE
});
Object.defineProperty(this, "pUnsubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.PUNSUBSCRIBE
});
Object.defineProperty(this, "sSubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.SSUBSCRIBE
});
Object.defineProperty(this, "sUnsubscribe", {
enumerable: true,
configurable: true,
writable: true,
value: this.SUNSUBSCRIBE
});
this.multi = this.MULTI;
this.subscribe = this.SUBSCRIBE;
this.unsubscribe = this.UNSUBSCRIBE;
this.pSubscribe = this.PSUBSCRIBE;
this.pUnsubscribe = this.PUNSUBSCRIBE;
this.sSubscribe = this.SSUBSCRIBE;
this.sUnsubscribe = this.SUNSUBSCRIBE;
this._options = options;
this._slots = new cluster_slots_1.default(options, this.emit.bind(this));
// this.#Multi = RedisClusterMultiCommand.extend(options);
if (options?.commandOptions) {
this._commandOptions = options.commandOptions;
}
}

@@ -183,2 +147,3 @@ duplicate(overrides) {

...this._options,
commandOptions: this._commandOptions,
...overrides

@@ -192,3 +157,3 @@ });

const proxy = Object.create(this);
proxy.commandOptions = options;
proxy._commandOptions = options;
return proxy;

@@ -198,11 +163,11 @@ }

const proxy = Object.create(this);
proxy.commandOptions = Object.create(this.commandOptions ?? null);
proxy.commandOptions[key] = value;
proxy._commandOptions = Object.create(this._commandOptions ?? null);
proxy._commandOptions[key] = value;
return proxy;
}
/**
* Override the `flags` command option
* Override the `typeMapping` command option
*/
withFlags(flags) {
return this._commandOptionsProxy('flags', flags);
withTypeMapping(typeMapping) {
return this._commandOptionsProxy('typeMapping', typeMapping);
}

@@ -253,15 +218,19 @@ /**

}
// MULTI(routing?: RedisCommandArgument): RedisClusterMultiCommandType<M, F, S> {
// return new this.#Multi(
// (commands: Array<RedisMultiQueuedCommand>, firstKey?: RedisCommandArgument, chainId?: symbol) => {
// return this.#execute(
// firstKey,
// false,
// client => client.multiExecutor(commands, undefined, chainId)
// );
// },
// routing
// );
// }
// multi = this.MULTI;
/**
* @internal
*/
async executePipeline(firstKey, isReadonly, commands) {
const client = await this._slots.getClient(firstKey, isReadonly);
return client.executePipeline(commands);
}
/**
* @internal
*/
async executeMulti(firstKey, isReadonly, commands) {
const client = await this._slots.getClient(firstKey, isReadonly);
return client.executeMulti(commands);
}
MULTI(routing) {
return new this.Multi(this, routing);
}
async SUBSCRIBE(channels, listener, bufferMode) {

@@ -304,8 +273,20 @@ return (await this._slots.getPubSubClient())

}
// quit(): Promise<void> {
// return this.#slots.quit();
// }
/**
* @deprecated Use `close` instead.
*/
quit() {
return this._slots.quit();
}
/**
* @deprecated Use `destroy` instead.
*/
disconnect() {
return this._slots.disconnect();
}
close() {
return this._slots.close();
}
destroy() {
return this._slots.destroy();
}
nodeClient(node) {

@@ -312,0 +293,0 @@ return this._slots.nodeClient(node);

"use strict";
// import COMMANDS from './commands';
// import { RedisCommand, RedisCommandArgument, RedisCommandArguments, RedisCommandRawReply, RedisFunctions, RedisModules, RedisExtensions, RedisScript, RedisScripts, ExcludeMappedString, RedisFunction } from '../commands';
// import RedisMultiCommand, { RedisMultiQueuedCommand } from '../multi-command';
// import { attachCommands, attachExtensions } from '../commander';
// import RedisCluster from '.';
// type RedisClusterMultiCommandSignature<
// C extends RedisCommand,
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = (...args: Parameters<C['transformArguments']>) => RedisClusterMultiCommandType<M, F, S>;
// type WithCommands<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = {
// [P in keyof typeof COMMANDS]: RedisClusterMultiCommandSignature<(typeof COMMANDS)[P], M, F, S>;
// };
// type WithModules<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = {
// [P in keyof M as ExcludeMappedString<P>]: {
// [C in keyof M[P] as ExcludeMappedString<C>]: RedisClusterMultiCommandSignature<M[P][C], M, F, S>;
// };
// };
// type WithFunctions<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = {
// [P in keyof F as ExcludeMappedString<P>]: {
// [FF in keyof F[P] as ExcludeMappedString<FF>]: RedisClusterMultiCommandSignature<F[P][FF], M, F, S>;
// };
// };
// type WithScripts<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = {
// [P in keyof S as ExcludeMappedString<P>]: RedisClusterMultiCommandSignature<S[P], M, F, S>;
// };
// export type RedisClusterMultiCommandType<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = RedisClusterMultiCommand & WithCommands<M, F, S> & WithModules<M, F, S> & WithFunctions<M, F, S> & WithScripts<M, F, S>;
// export type InstantiableRedisClusterMultiCommandType<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// > = new (...args: ConstructorParameters<typeof RedisClusterMultiCommand>) => RedisClusterMultiCommandType<M, F, S>;
// export type RedisClusterMultiExecutor = (queue: Array<RedisMultiQueuedCommand>, firstKey?: RedisCommandArgument, chainId?: symbol) => Promise<Array<RedisCommandRawReply>>;
// export default class RedisClusterMultiCommand {
// readonly #multi = new RedisMultiCommand();
// readonly #executor: RedisClusterMultiExecutor;
// #firstKey: RedisCommandArgument | undefined;
// static extend<
// M extends RedisModules,
// F extends RedisFunctions,
// S extends RedisScripts
// >(extensions?: RedisExtensions<M, F, S>): InstantiableRedisClusterMultiCommandType<M, F, S> {
// return attachExtensions({
// BaseClass: RedisClusterMultiCommand,
// modulesExecutor: RedisClusterMultiCommand.prototype.commandsExecutor,
// modules: extensions?.modules,
// functionsExecutor: RedisClusterMultiCommand.prototype.functionsExecutor,
// functions: extensions?.functions,
// scriptsExecutor: RedisClusterMultiCommand.prototype.scriptsExecutor,
// scripts: extensions?.scripts
// });
// }
// constructor(executor: RedisClusterMultiExecutor, firstKey?: RedisCommandArgument) {
// this.#executor = executor;
// this.#firstKey = firstKey;
// }
// commandsExecutor(command: RedisCommand, args: Array<unknown>): this {
// const transformedArguments = command.transformArguments(...args);
// this.#firstKey ??= RedisCluster.extractFirstKey(command, args, transformedArguments);
// return this.addCommand(undefined, transformedArguments, command.transformReply);
// }
// addCommand(
// firstKey: RedisCommandArgument | undefined,
// args: RedisCommandArguments,
// transformReply?: RedisCommand['transformReply']
// ): this {
// this.#firstKey ??= firstKey;
// this.#multi.addCommand(args, transformReply);
// return this;
// }
// functionsExecutor(fn: RedisFunction, args: Array<unknown>, name: string): this {
// const transformedArguments = this.#multi.addFunction(name, fn, args);
// this.#firstKey ??= RedisCluster.extractFirstKey(fn, args, transformedArguments);
// return this;
// }
// scriptsExecutor(script: RedisScript, args: Array<unknown>): this {
// const transformedArguments = this.#multi.addScript(script, args);
// this.#firstKey ??= RedisCluster.extractFirstKey(script, args, transformedArguments);
// return this;
// }
// async exec(execAsPipeline = false): Promise<Array<RedisCommandRawReply>> {
// if (execAsPipeline) {
// return this.execAsPipeline();
// }
// return this.#multi.handleExecReplies(
// await this.#executor(this.#multi.queue, this.#firstKey, RedisMultiCommand.generateChainId())
// );
// }
// EXEC = this.exec;
// async execAsPipeline(): Promise<Array<RedisCommandRawReply>> {
// return this.#multi.transformReplies(
// await this.#executor(this.#multi.queue, this.#firstKey)
// );
// }
// }
// attachCommands({
// BaseClass: RedisClusterMultiCommand,
// commands: COMMANDS,
// executor: RedisClusterMultiCommand.prototype.commandsExecutor
// });
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const commands_1 = __importDefault(require("../commands"));
const multi_command_1 = __importDefault(require("../multi-command"));
const commander_1 = require("../commander");
const _1 = __importDefault(require("."));
class RedisClusterMultiCommand {
static _createCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return function (...args) {
const redisArgs = command.transformArguments(...args), firstKey = _1.default.extractFirstKey(command, args, redisArgs);
return this.addCommand(firstKey, command.IS_READ_ONLY, redisArgs, transformReply);
};
}
static _createModuleCommand(command, resp) {
const transformReply = (0, commander_1.getTransformReply)(command, resp);
return function (...args) {
const redisArgs = command.transformArguments(...args), firstKey = _1.default.extractFirstKey(command, args, redisArgs);
return this.self.addCommand(firstKey, command.IS_READ_ONLY, redisArgs, transformReply);
};
}
static _createFunctionCommand(name, fn, resp) {
const prefix = (0, commander_1.functionArgumentsPrefix)(name, fn), transformReply = (0, commander_1.getTransformReply)(fn, resp);
return function (...args) {
const fnArgs = fn.transformArguments(...args), redisArgs = prefix.concat(fnArgs), firstKey = _1.default.extractFirstKey(fn, args, fnArgs);
redisArgs.preserve = fnArgs.preserve;
return this.self.addCommand(firstKey, fn.IS_READ_ONLY, redisArgs, transformReply);
};
}
static _createScriptCommand(script, resp) {
const transformReply = (0, commander_1.getTransformReply)(script, resp);
return function (...args) {
const scriptArgs = script.transformArguments(...args);
this._setState(_1.default.extractFirstKey(script, args, scriptArgs), script.IS_READ_ONLY);
this._multi.addScript(script, scriptArgs, transformReply);
return this;
};
}
static extend(config) {
return (0, commander_1.attachConfig)({
BaseClass: RedisClusterMultiCommand,
commands: commands_1.default,
createCommand: RedisClusterMultiCommand._createCommand,
createModuleCommand: RedisClusterMultiCommand._createModuleCommand,
createFunctionCommand: RedisClusterMultiCommand._createFunctionCommand,
createScriptCommand: RedisClusterMultiCommand._createScriptCommand,
config
});
}
constructor(cluster, routing) {
this._multi = new multi_command_1.default();
this._isReadonly = true;
this.EXEC = this.exec;
this._cluster = cluster;
this._firstKey = routing;
}
_setState(firstKey, isReadonly) {
this._firstKey ??= firstKey;
this._isReadonly &&= isReadonly;
}
addCommand(firstKey, isReadonly, args, transformReply) {
this._setState(firstKey, isReadonly);
this._multi.addCommand(args, transformReply);
return this;
}
async exec(execAsPipeline = false) {
if (execAsPipeline)
return this.execAsPipeline();
return this._multi.transformReplies(await this._cluster.executeMulti(this._firstKey, this._isReadonly, this._multi.queue));
}
execTyped(execAsPipeline = false) {
return this.exec(execAsPipeline);
}
async execAsPipeline() {
if (this._multi.queue.length === 0)
return [];
return this._multi.transformReplies(await this._cluster.executePipeline(this._firstKey, this._isReadonly, this._multi.queue));
}
execAsPipelineTyped() {
return this.execAsPipeline();
}
}
exports.default = RedisClusterMultiCommand;

@@ -1,2 +0,1 @@

/// <reference types="node" />
import { RedisArgument, TuplesToMapReply, BlobStringReply, ArrayReply, Resp2Reply } from '../RESP/types';

@@ -51,139 +50,35 @@ type AclUser = TuplesToMapReply<[

readonly 2: (reply: Resp2Reply<AclUser>) => {
flags: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[] & {
flags: BlobStringReply[] & {
RESP_TYPE: 42;
DEFAULT: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[];
DEFAULT: BlobStringReply[];
TYPES: never;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[]>;
FLAG: import("../RESP/types").Flag<BlobStringReply[]>;
};
passwords: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[] & {
passwords: BlobStringReply[] & {
RESP_TYPE: 42;
DEFAULT: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[];
DEFAULT: BlobStringReply[];
TYPES: never;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[]>;
FLAG: import("../RESP/types").Flag<BlobStringReply[]>;
};
commands: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
keys: (((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[] & {
commands: BlobStringReply;
keys: BlobStringReply | (BlobStringReply[] & {
RESP_TYPE: 42;
DEFAULT: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[];
DEFAULT: BlobStringReply[];
TYPES: never;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[]>;
}) | ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
FLAG: import("../RESP/types").Flag<BlobStringReply[]>;
});
channels: (((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[] & {
channels: BlobStringReply | (BlobStringReply[] & {
RESP_TYPE: 42;
DEFAULT: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[];
DEFAULT: BlobStringReply[];
TYPES: never;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[]>;
}) | ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
FLAG: import("../RESP/types").Flag<BlobStringReply[]>;
});
selectors: {
commands: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
keys: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
channels: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
/** added in 6.2, changed to BlobStringReply in 7.0 */
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
commands: BlobStringReply;
keys: BlobStringReply;
channels: BlobStringReply;
}[];

@@ -190,0 +85,0 @@ };

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ACL_LOG_1 = require("./ACL_LOG");
const ACL_LOG_1 = __importDefault(require("./ACL_LOG"));
exports.default = {

@@ -5,0 +8,0 @@ FIRST_KEY_INDEX: undefined,

@@ -1,3 +0,2 @@

/// <reference types="node" />
import { Resp2Reply } from '../RESP/types';
import { DoubleReply, Resp2Reply } from '../RESP/types';
import { ArrayReply, BlobStringReply, NumberReply, TuplesToMapReply } from '../RESP/types';

@@ -27,3 +26,3 @@ export type AclLogReply = ArrayReply<TuplesToMapReply<[

BlobStringReply<'age-seconds'>,
BlobStringReply
DoubleReply
],

@@ -33,2 +32,17 @@ [

BlobStringReply
],
/** added in 7.0 */
[
BlobStringReply<'entry-id'>,
NumberReply
],
/** added in 7.0 */
[
BlobStringReply<'timestamp-created'>,
NumberReply
],
/** added in 7.0 */
[
BlobStringReply<'timestamp-last-updated'>,
NumberReply
]

@@ -42,1085 +56,13 @@ ]>>;

readonly 2: (reply: Resp2Reply<AclLogReply>) => {
count: number;
reason: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}] & {
RESP_TYPE: 42;
DEFAULT: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}];
TYPES: never;
FLAG: import("../RESP/types").Flag<[(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}]>;
};
context: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}] & {
RESP_TYPE: 42;
DEFAULT: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}];
TYPES: never;
FLAG: import("../RESP/types").Flag<[(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}]>;
};
object: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}] & {
RESP_TYPE: 42;
DEFAULT: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}];
TYPES: never;
FLAG: import("../RESP/types").Flag<[(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}]>;
};
username: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}] & {
RESP_TYPE: 42;
DEFAULT: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}];
TYPES: never;
FLAG: import("../RESP/types").Flag<[(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}]>;
};
count: NumberReply;
reason: BlobStringReply;
context: BlobStringReply;
object: BlobStringReply;
username: BlobStringReply;
'age-seconds': number;
'client-info': [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}] & {
RESP_TYPE: 42;
DEFAULT: [(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}];
TYPES: never;
FLAG: import("../RESP/types").Flag<[(Buffer | "count") & {
RESP_TYPE: 36;
DEFAULT: "count";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "count">;
}, (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
}, (Buffer | "reason") & {
RESP_TYPE: 36;
DEFAULT: "reason";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "reason">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "context") & {
RESP_TYPE: 36;
DEFAULT: "context";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "context">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, ("object" | Buffer) & {
RESP_TYPE: 36;
DEFAULT: "object";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<"object" | Buffer>;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "username") & {
RESP_TYPE: 36;
DEFAULT: "username";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "username">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "age-seconds") & {
RESP_TYPE: 36;
DEFAULT: "age-seconds";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "age-seconds">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}, (Buffer | "client-info") & {
RESP_TYPE: 36;
DEFAULT: "client-info";
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<Buffer | "client-info">;
}, (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
}]>;
};
};
'client-info': BlobStringReply;
'entry-id': NumberReply;
'timestamp-created': NumberReply;
'timestamp-last-updated': NumberReply;
}[];
readonly 3: () => AclLogReply;

@@ -1127,0 +69,0 @@ };

@@ -14,13 +14,16 @@ "use strict";

transformReply: {
2: (reply) => ({
count: Number(reply[1]),
reason: reply[3],
context: reply[5],
object: reply[7],
username: reply[9],
'age-seconds': Number(reply[11]),
'client-info': reply[13]
}),
2: (reply) => reply.map(item => ({
count: item[1],
reason: item[3],
context: item[5],
object: item[7],
username: item[9],
'age-seconds': Number(item[11]),
'client-info': item[13],
'entry-id': item[15],
'timestamp-created': item[17],
'timestamp-last-updated': item[19]
})),
3: undefined
}
};

@@ -7,5 +7,5 @@ "use strict";

transformArguments() {
return ['ACL', 'USERS'];
return ['ACL', 'WHOAMI'];
},
transformReply: undefined
};
import { SimpleStringReply } from '../RESP/types';
export interface BgSaveOptions {
SCHEDULE?: boolean;
}
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformArguments: (this: void, options?: BgSaveOptions) => string[];
readonly transformReply: () => SimpleStringReply;
};
export default _default;

@@ -6,6 +6,10 @@ "use strict";

IS_READ_ONLY: true,
transformArguments() {
return ['BGSAVE'];
transformArguments(options) {
const args = ['BGSAVE'];
if (options?.SCHEDULE) {
args.push('SCHEDULE');
}
return args;
},
transformReply: undefined
};

@@ -1,2 +0,3 @@

import { LMPopOptions, ListSide, RedisVariadicArgument } from './generic-transformers';
import { ListSide, RedisVariadicArgument } from './generic-transformers';
import { LMPopOptions } from './LMPOP';
declare const _default: {

@@ -3,0 +4,0 @@ readonly FIRST_KEY_INDEX: 3;

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
const LMPOP_1 = require("./LMPOP");
const LMPOP_1 = __importStar(require("./LMPOP"));
exports.default = {

@@ -9,5 +31,5 @@ FIRST_KEY_INDEX: 3,

transformArguments(timeout, keys, side, options) {
return (0, generic_transformers_1.transformLMPopArguments)(['BLMPOP', timeout.toString()], keys, side, options);
return (0, LMPOP_1.transformLMPopArguments)(['BLMPOP', timeout.toString()], keys, side, options);
},
transformReply: LMPOP_1.default.transformReply
};
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
const BLPOP_1 = require("./BLPOP");
const BLPOP_1 = __importDefault(require("./BLPOP"));
exports.default = {

@@ -6,0 +9,0 @@ FIRST_KEY_INDEX: 1,

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { SortedSetSide, transformZMPopArguments, ZMPopOptions } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 3;

@@ -5,0 +6,0 @@ // export function transformArguments(

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments, transformDoubleReply, ZMember } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -5,0 +6,0 @@ // export function transformArguments(

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -5,0 +6,0 @@ // export function transformArguments(

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, value: boolean) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(value) {

import { BlobStringReply, NullReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

import { NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

import { NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

@@ -55,2 +55,3 @@ import { VerbatimStringReply } from '../RESP/types';

declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -57,0 +58,0 @@ readonly transformArguments: (this: void) => string[];

@@ -5,2 +5,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -7,0 +8,0 @@ transformArguments() {

@@ -34,2 +34,3 @@ import { NumberReply } from '../RESP/types';

declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -36,0 +37,0 @@ readonly transformArguments: (this: void, filters: ClientKillFilter | Array<ClientKillFilter>) => string[];

@@ -13,2 +13,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -15,0 +16,0 @@ transformArguments(filters) {

@@ -13,2 +13,3 @@ import { RedisArgument, VerbatimStringReply } from '../RESP/types';

declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -15,0 +16,0 @@ readonly transformArguments: (this: void, filter?: ListFilter) => RedisArgument[];

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
const CLIENT_INFO_1 = require("./CLIENT_INFO");
const CLIENT_INFO_1 = __importDefault(require("./CLIENT_INFO"));
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -7,0 +11,0 @@ transformArguments(filter) {

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, value: boolean) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(value) {

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, timeout: number, mode?: 'WRITE' | 'ALL') => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(timeout, mode) {

import { RedisArgument, SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, name: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(name) {

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// interface CommonOptions {
// REDIRECT?: number;
// NOLOOP?: boolean;
// }
// interface BroadcastOptions {
// BCAST?: boolean;
// PREFIX?: RedisCommandArgument | Array<RedisCommandArgument>;
// }
// interface OptInOptions {
// OPTIN?: boolean;
// }
// interface OptOutOptions {
// OPTOUT?: boolean;
// }
// type ClientTrackingOptions = CommonOptions & (
// BroadcastOptions |
// OptInOptions |
// OptOutOptions
// );
// export function transformArguments<M extends boolean>(
// mode: M,
// options?: M extends true ? ClientTrackingOptions : undefined
// ): RedisCommandArguments {
// const args: RedisCommandArguments = [
// 'CLIENT',
// 'TRACKING',
// mode ? 'ON' : 'OFF'
// ];
// if (mode) {
// if (options?.REDIRECT) {
// args.push(
// 'REDIRECT',
// options.REDIRECT.toString()
// );
// }
// if (isBroadcast(options)) {
// args.push('BCAST');
// if (options?.PREFIX) {
// if (Array.isArray(options.PREFIX)) {
// for (const prefix of options.PREFIX) {
// args.push('PREFIX', prefix);
// }
// } else {
// args.push('PREFIX', options.PREFIX);
// }
// }
// } else if (isOptIn(options)) {
// args.push('OPTIN');
// } else if (isOptOut(options)) {
// args.push('OPTOUT');
// }
// if (options?.NOLOOP) {
// args.push('NOLOOP');
// }
// }
// return args;
// }
// function isBroadcast(options?: ClientTrackingOptions): options is BroadcastOptions {
// return (options as BroadcastOptions)?.BCAST === true;
// }
// function isOptIn(options?: ClientTrackingOptions): options is OptInOptions {
// return (options as OptInOptions)?.OPTIN === true;
// }
// function isOptOut(options?: ClientTrackingOptions): options is OptOutOptions {
// return (options as OptOutOptions)?.OPTOUT === true;
// }
// export declare function transformReply(): 'OK' | Buffer;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(mode, options) {
const args = [
'CLIENT',
'TRACKING',
mode ? 'ON' : 'OFF'
];
if (mode) {
if (options?.REDIRECT) {
args.push('REDIRECT', options.REDIRECT.toString());
}
if (isBroadcast(options)) {
args.push('BCAST');
if (options?.PREFIX) {
if (Array.isArray(options.PREFIX)) {
for (const prefix of options.PREFIX) {
args.push('PREFIX', prefix);
}
}
else {
args.push('PREFIX', options.PREFIX);
}
}
}
else if (isOptIn(options)) {
args.push('OPTIN');
}
else if (isOptOut(options)) {
args.push('OPTOUT');
}
if (options?.NOLOOP) {
args.push('NOLOOP');
}
}
return args;
},
transformReply: undefined
};
function isBroadcast(options) {
return options?.BCAST === true;
}
function isOptIn(options) {
return options?.OPTIN === true;
}
function isOptOut(options) {
return options?.OPTOUT === true;
}
"use strict";
// import { RedisCommandArguments } from '.';
// export function transformArguments(): RedisCommandArguments {
// return ['CLIENT', 'TRACKINGINFO'];
// }
// type RawReply = [
// 'flags',
// Array<string>,
// 'redirect',
// number,
// 'prefixes',
// Array<string>
// ];
// interface Reply {
// flags: Set<string>;
// redirect: number;
// prefixes: Array<string>;
// }
// export function transformReply(reply: RawReply): Reply {
// return {
// flags: new Set(reply[1]),
// redirect: reply[3],
// prefixes: reply[5]
// };
// }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['CLIENT', 'TRACKINGINFO'];
},
transformReply: {
2: (reply) => ({
flags: reply[1],
redirect: reply[3],
prefixes: reply[5]
}),
3: undefined
}
};
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, slots: number | Array<number>) => import("../RESP/types").CommandArguments;

@@ -5,2 +5,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -7,0 +8,0 @@ transformArguments(slots) {

import { SimpleStringReply } from '../RESP/types';
import { SlotRange } from './generic-transformers';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -5,0 +6,0 @@ readonly transformArguments: (this: void, ranges: SlotRange | Array<SlotRange>) => import("../RESP/types").CommandArguments;

@@ -5,2 +5,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -7,0 +8,0 @@ transformArguments(ranges) {

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

import { RedisArgument, NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, nodeId: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(nodeId) {

import { NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, slot: number) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(slot) {
return ['CLUSTER', 'COUNT-FAILURE-REPORTS', slot.toString()];
return ['CLUSTER', 'COUNTKEYSINSLOT', slot.toString()];
},
transformReply: undefined
};
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, slots: number | Array<number>) => import("../RESP/types").CommandArguments;

@@ -5,2 +5,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -7,0 +8,0 @@ transformArguments(slots) {

import { SimpleStringReply } from '../RESP/types';
import { SlotRange } from './generic-transformers';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -5,0 +6,0 @@ readonly transformArguments: (this: void, ranges: SlotRange | Array<SlotRange>) => import("../RESP/types").CommandArguments;

@@ -5,2 +5,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -7,0 +8,0 @@ transformArguments(ranges) {

@@ -6,8 +6,12 @@ import { SimpleStringReply } from '../RESP/types';

};
export type FailoverModes = typeof FAILOVER_MODES[keyof typeof FAILOVER_MODES];
export type FailoverMode = typeof FAILOVER_MODES[keyof typeof FAILOVER_MODES];
export interface ClusterFailoverOptions {
mode?: FailoverMode;
}
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, mode?: FailoverModes) => string[];
readonly transformArguments: (this: void, options?: ClusterFailoverOptions) => string[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -9,7 +9,8 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(mode) {
transformArguments(options) {
const args = ['CLUSTER', 'FAILOVER'];
if (mode) {
args.push(mode);
if (options?.mode) {
args.push(options.mode);
}

@@ -16,0 +17,0 @@ return args;

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

import { RedisArgument, SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, nodeId: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(nodeId) {

import { ArrayReply, BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, slot: number, count: number) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(slot, count) {

import { NumberReply, RedisArgument } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, key: RedisArgument) => RedisArgument[];

@@ -4,0 +6,0 @@ readonly transformReply: () => NumberReply;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(key) {

@@ -5,0 +7,0 @@ return ['CLUSTER', 'KEYSLOT', key];

@@ -1,25 +0,44 @@

export declare function transformArguments(): Array<string>;
type ClusterLinksRawReply = Array<[
'direction',
string,
'node',
string,
'createTime',
number,
'events',
string,
'send-buffer-allocated',
number,
'send-buffer-used',
number
]>;
type ClusterLinksReply = Array<{
direction: string;
node: string;
createTime: number;
events: string;
sendBufferAllocated: number;
sendBufferUsed: number;
}>;
export declare function transformReply(reply: ClusterLinksRawReply): ClusterLinksReply;
export {};
import { ArrayReply, TuplesToMapReply, BlobStringReply, NumberReply, Resp2Reply } from '../RESP/types';
type ClusterLinksReply = ArrayReply<TuplesToMapReply<[
[
BlobStringReply<'direction'>,
BlobStringReply
],
[
BlobStringReply<'node'>,
BlobStringReply
],
[
BlobStringReply<'create-time'>,
NumberReply
],
[
BlobStringReply<'events'>,
BlobStringReply
],
[
BlobStringReply<'send-buffer-allocated'>,
NumberReply
],
[
BlobStringReply<'send-buffer-used'>,
NumberReply
]
]>>;
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: {
readonly 2: (reply: Resp2Reply<ClusterLinksReply>) => {
direction: BlobStringReply;
node: BlobStringReply;
'create-time': NumberReply;
events: BlobStringReply;
'send-buffer-allocated': NumberReply;
'send-buffer-used': NumberReply;
}[];
readonly 3: () => ClusterLinksReply;
};
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformReply = exports.transformArguments = void 0;
function transformArguments() {
return ['CLUSTER', 'LINKS'];
}
exports.transformArguments = transformArguments;
function transformReply(reply) {
return reply.map(peerLink => ({
direction: peerLink[1],
node: peerLink[3],
createTime: Number(peerLink[5]),
events: peerLink[7],
sendBufferAllocated: Number(peerLink[9]),
sendBufferUsed: Number(peerLink[11])
}));
}
exports.transformReply = transformReply;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['CLUSTER', 'LINKS'];
},
transformReply: {
2: (reply) => reply.map(link => ({
direction: link[1],
node: link[3],
'create-time': link[5],
events: link[7],
'send-buffer-allocated': link[9],
'send-buffer-used': link[11]
})),
3: undefined
}
};
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, host: string, port: number) => string[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(host, port) {

@@ -5,0 +7,0 @@ return ['CLUSTER', 'MEET', host, port.toString()];

@@ -1,3 +0,5 @@

import { BlobStringReply } from "../RESP/types";
import { BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];

@@ -4,0 +6,0 @@ readonly transformReply: () => BlobStringReply;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {

@@ -5,0 +7,0 @@ return ['CLUSTER', 'MYID'];

@@ -12,3 +12,3 @@ "use strict";

RedisClusterNodeLinkStates["DISCONNECTED"] = "disconnected";
})(RedisClusterNodeLinkStates = exports.RedisClusterNodeLinkStates || (exports.RedisClusterNodeLinkStates = {}));
})(RedisClusterNodeLinkStates || (exports.RedisClusterNodeLinkStates = RedisClusterNodeLinkStates = {}));
function transformReply(reply) {

@@ -15,0 +15,0 @@ const lines = reply.split('\n');

import { RedisArgument, SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, nodeId: RedisArgument) => RedisArgument[];

@@ -4,0 +6,0 @@ readonly transformReply: () => SimpleStringReply;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(nodeId) {

@@ -5,0 +7,0 @@ return ['CLUSTER', 'REPLICATE', nodeId];

@@ -1,2 +0,11 @@

export declare function transformArguments(mode?: 'HARD' | 'SOFT'): Array<string>;
export declare function transformReply(): string;
import { SimpleStringReply } from '../RESP/types';
export interface ClusterResetOptions {
mode?: 'HARD' | 'SOFT';
}
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, options?: ClusterResetOptions) => string[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments(mode) {
const args = ['CLUSTER', 'RESET'];
if (mode) {
args.push(mode);
}
return args;
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(options) {
const args = ['CLUSTER', 'RESET'];
if (options?.mode) {
args.push(options.mode);
}
return args;
},
transformReply: undefined
};

@@ -1,2 +0,8 @@

export declare function transformArguments(): Array<string>;
export declare function transformReply(): 'OK';
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments() {
return ['CLUSTER', 'SAVECONFIG'];
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['CLUSTER', 'SAVECONFIG'];
},
transformReply: undefined
};

@@ -1,2 +0,8 @@

export declare function transformArguments(configEpoch: number): Array<string>;
export declare function transformReply(): 'OK';
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, configEpoch: number) => string[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments(configEpoch) {
return ['CLUSTER', 'SET-CONFIG-EPOCH', configEpoch.toString()];
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(configEpoch) {
return ['CLUSTER', 'SET-CONFIG-EPOCH', configEpoch.toString()];
},
transformReply: undefined
};

@@ -1,8 +0,15 @@

export declare enum ClusterSlotStates {
IMPORTING = "IMPORTING",
MIGRATING = "MIGRATING",
STABLE = "STABLE",
NODE = "NODE"
}
export declare function transformArguments(slot: number, state: ClusterSlotStates, nodeId?: string): Array<string>;
export declare function transformReply(): 'OK';
import { RedisArgument, SimpleStringReply } from '../RESP/types';
export declare const CLUSTER_SLOT_STATES: {
readonly IMPORTING: "IMPORTING";
readonly MIGRATING: "MIGRATING";
readonly STABLE: "STABLE";
readonly NODE: "NODE";
};
export type ClusterSlotState = typeof CLUSTER_SLOT_STATES[keyof typeof CLUSTER_SLOT_STATES];
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, slot: number, state: ClusterSlotState, nodeId?: RedisArgument) => RedisArgument[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.ClusterSlotStates = void 0;
var ClusterSlotStates;
(function (ClusterSlotStates) {
ClusterSlotStates["IMPORTING"] = "IMPORTING";
ClusterSlotStates["MIGRATING"] = "MIGRATING";
ClusterSlotStates["STABLE"] = "STABLE";
ClusterSlotStates["NODE"] = "NODE";
})(ClusterSlotStates = exports.ClusterSlotStates || (exports.ClusterSlotStates = {}));
function transformArguments(slot, state, nodeId) {
const args = ['CLUSTER', 'SETSLOT', slot.toString(), state];
if (nodeId) {
args.push(nodeId);
}
return args;
}
exports.transformArguments = transformArguments;
exports.CLUSTER_SLOT_STATES = void 0;
exports.CLUSTER_SLOT_STATES = {
IMPORTING: 'IMPORTING',
MIGRATING: 'MIGRATING',
STABLE: 'STABLE',
NODE: 'NODE'
};
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(slot, state, nodeId) {
const args = ['CLUSTER', 'SETSLOT', slot.toString(), state];
if (nodeId) {
args.push(nodeId);
}
return args;
},
transformReply: undefined
};

@@ -15,2 +15,3 @@ import { NumberReply, ArrayReply, BlobStringReply } from '../RESP/types';

declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -17,0 +18,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

"use strict";
// import { RedisCommandArguments } from '.';
// export const IS_READ_ONLY = true;
// export function transformArguments(): RedisCommandArguments {
// return ['COMMAND', 'COUNT'];
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['COMMAND', 'COUNT'];
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const IS_READ_ONLY = true;
// export function transformArguments(args: Array<RedisCommandArgument>): RedisCommandArguments {
// return ['COMMAND', 'GETKEYS', ...args];
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(args) {
return ['COMMAND', 'GETKEYS', ...args];
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const IS_READ_ONLY = true;

@@ -4,0 +5,0 @@ // export function transformArguments(args: Array<RedisCommandArgument>): RedisCommandArguments {

"use strict";
// import { RedisCommandArguments } from '.';
// import { CommandRawReply, CommandReply, transformCommandReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const IS_READ_ONLY = true;

@@ -5,0 +6,0 @@ // export function transformArguments(commands: Array<string>): RedisCommandArguments {

"use strict";
// import { RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const IS_READ_ONLY = true;

@@ -4,0 +5,0 @@ // export enum FilterBy {

"use strict";
// import { RedisCommandArguments } from '.';
// import { CommandRawReply, CommandReply, transformCommandReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const IS_READ_ONLY = true;

@@ -5,0 +6,0 @@ // export function transformArguments(): RedisCommandArguments {

@@ -1,8 +0,12 @@

import { RedisArgument } from '../RESP/types';
import { transformTuplesReply } from './generic-transformers';
import { MapReply, BlobStringReply } from '../RESP/types';
import { RedisVariadicArgument, transformTuplesReply } from './generic-transformers';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, parameter: RedisArgument) => RedisArgument[];
readonly transformReply: typeof transformTuplesReply;
readonly transformArguments: (this: void, parameters: RedisVariadicArgument) => import("../RESP/types").CommandArguments;
readonly transformReply: {
readonly 2: typeof transformTuplesReply;
readonly 3: () => MapReply<BlobStringReply, BlobStringReply>;
};
};
export default _default;

@@ -5,7 +5,11 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(parameter) {
return ['CONFIG', 'GET', parameter];
transformArguments(parameters) {
return (0, generic_transformers_1.pushVariadicArguments)(['CONFIG', 'GET'], parameters);
},
transformReply: generic_transformers_1.transformTuplesReply
transformReply: {
2: generic_transformers_1.transformTuplesReply,
3: undefined
}
};
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];

@@ -4,0 +6,0 @@ readonly transformReply: () => SimpleStringReply;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {

@@ -5,0 +7,0 @@ return ['CONFIG', 'RESETSTAT'];

import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];

@@ -4,0 +6,0 @@ readonly transformReply: () => SimpleStringReply;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {

@@ -5,0 +7,0 @@ return ['CONFIG', 'REWRITE'];

@@ -5,2 +5,4 @@ import { SimpleStringReply, RedisArgument } from '../RESP/types';

declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, ...[parameterOrConfig, value]: SingleParameter | MultipleParameters) => RedisArgument[];

@@ -7,0 +9,0 @@ readonly transformReply: () => SimpleStringReply;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(...[parameterOrConfig, value]) {
const args = ['CONFIG', 'SET'];
if (typeof parameterOrConfig === 'string' || Buffer.isBuffer(parameterOrConfig)) {
if (typeof parameterOrConfig === 'string' || parameterOrConfig instanceof Buffer) {
args.push(parameterOrConfig, value);

@@ -8,0 +10,0 @@ }

@@ -8,2 +8,3 @@ import { RedisArgument, NumberReply } from '../RESP/types';

readonly FIRST_KEY_INDEX: 1;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, source: RedisArgument, destination: RedisArgument, options?: CopyCommandOptions) => RedisArgument[];

@@ -10,0 +11,0 @@ readonly transformReply: () => NumberReply;

@@ -5,2 +5,3 @@ "use strict";

FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(source, destination, options) {

@@ -7,0 +8,0 @@ const args = ['COPY', source, destination];

import { NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

@@ -6,5 +6,5 @@ "use strict";

transformArguments(key, decrement) {
return ['DECR', key, decrement.toString()];
return ['DECRBY', key, decrement.toString()];
},
transformReply: undefined
};

@@ -5,2 +5,3 @@ import { NumberReply } from '../RESP/types';

readonly FIRST_KEY_INDEX: 1;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, keys: RedisVariadicArgument) => import("../RESP/types").CommandArguments;

@@ -7,0 +8,0 @@ readonly transformReply: () => NumberReply;

@@ -6,2 +6,3 @@ "use strict";

FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(keys) {

@@ -8,0 +9,0 @@ return (0, generic_transformers_1.pushVariadicArguments)(['DEL'], keys);

import { RedisArgument, BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, message: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(message) {

@@ -1,4 +0,7 @@

import { evalFirstKeyIndex, EvalOptions } from './generic-transformers';
export declare const FIRST_KEY_INDEX: typeof evalFirstKeyIndex;
export declare const IS_READ_ONLY = true;
export declare function transformArguments(script: string, options?: EvalOptions): Array<string>;
declare const _default: {
readonly FIRST_KEY_INDEX: (this: void, _: any, options?: import("./EVAL").EvalOptions | undefined) => import("../RESP/types").RedisArgument | undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (script: import("../RESP/types").RedisArgument, options?: import("./EVAL").EvalOptions | undefined) => import("../RESP/types").RedisArgument[];
readonly transformReply: () => import("../RESP/types").ReplyUnion;
};
export default _default;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
const generic_transformers_1 = require("./generic-transformers");
exports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;
exports.IS_READ_ONLY = true;
function transformArguments(script, options) {
return (0, generic_transformers_1.pushEvalArguments)(['EVAL_RO', script], options);
}
exports.transformArguments = transformArguments;
const EVAL_1 = __importStar(require("./EVAL"));
exports.default = {
FIRST_KEY_INDEX: EVAL_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: true,
transformArguments: EVAL_1.transformEvalArguments.bind(undefined, 'EVAL_RO'),
transformReply: EVAL_1.default.transformReply
};

@@ -1,3 +0,13 @@

import { evalFirstKeyIndex, EvalOptions } from './generic-transformers';
export declare const FIRST_KEY_INDEX: typeof evalFirstKeyIndex;
export declare function transformArguments(script: string, options?: EvalOptions): Array<string>;
import { RedisArgument, ReplyUnion } from '../RESP/types';
export interface EvalOptions {
keys?: Array<RedisArgument>;
arguments?: Array<RedisArgument>;
}
export declare function transformEvalArguments(command: RedisArgument, script: RedisArgument, options?: EvalOptions): RedisArgument[];
declare const _default: {
readonly FIRST_KEY_INDEX: (this: void, _: any, options?: EvalOptions) => RedisArgument | undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (script: RedisArgument, options?: EvalOptions | undefined) => RedisArgument[];
readonly transformReply: () => ReplyUnion;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
const generic_transformers_1 = require("./generic-transformers");
exports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;
function transformArguments(script, options) {
return (0, generic_transformers_1.pushEvalArguments)(['EVAL', script], options);
exports.transformEvalArguments = void 0;
function transformEvalArguments(command, script, options) {
const args = [command, script];
if (options?.keys) {
args.push(options.keys.length.toString(), ...options.keys);
}
else {
args.push('0');
}
if (options?.arguments) {
args.push(...options.arguments);
}
return args;
}
exports.transformArguments = transformArguments;
exports.transformEvalArguments = transformEvalArguments;
exports.default = {
FIRST_KEY_INDEX: (_, options) => options?.keys?.[0],
IS_READ_ONLY: false,
transformArguments: transformEvalArguments.bind(undefined, 'EVAL'),
transformReply: undefined
};

@@ -1,4 +0,7 @@

import { evalFirstKeyIndex, EvalOptions } from './generic-transformers';
export declare const FIRST_KEY_INDEX: typeof evalFirstKeyIndex;
export declare const IS_READ_ONLY = true;
export declare function transformArguments(sha1: string, options?: EvalOptions): Array<string>;
declare const _default: {
readonly FIRST_KEY_INDEX: (this: void, _: any, options?: import("./EVAL").EvalOptions | undefined) => import("../RESP/types").RedisArgument | undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (script: import("../RESP/types").RedisArgument, options?: import("./EVAL").EvalOptions | undefined) => import("../RESP/types").RedisArgument[];
readonly transformReply: () => import("../RESP/types").ReplyUnion;
};
export default _default;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
const generic_transformers_1 = require("./generic-transformers");
exports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;
exports.IS_READ_ONLY = true;
function transformArguments(sha1, options) {
return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA_RO', sha1], options);
}
exports.transformArguments = transformArguments;
const EVAL_1 = __importStar(require("./EVAL"));
exports.default = {
FIRST_KEY_INDEX: EVAL_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: true,
transformArguments: EVAL_1.transformEvalArguments.bind(undefined, 'EVALSHA_RO'),
transformReply: EVAL_1.default.transformReply
};

@@ -1,3 +0,7 @@

import { evalFirstKeyIndex, EvalOptions } from './generic-transformers';
export declare const FIRST_KEY_INDEX: typeof evalFirstKeyIndex;
export declare function transformArguments(sha1: string, options?: EvalOptions): Array<string>;
declare const _default: {
readonly FIRST_KEY_INDEX: (this: void, _: any, options?: import("./EVAL").EvalOptions | undefined) => import("../RESP/types").RedisArgument | undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (script: import("../RESP/types").RedisArgument, options?: import("./EVAL").EvalOptions | undefined) => import("../RESP/types").RedisArgument[];
readonly transformReply: () => import("../RESP/types").ReplyUnion;
};
export default _default;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
const generic_transformers_1 = require("./generic-transformers");
exports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;
function transformArguments(sha1, options) {
return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA', sha1], options);
}
exports.transformArguments = transformArguments;
const EVAL_1 = __importStar(require("./EVAL"));
exports.default = {
FIRST_KEY_INDEX: EVAL_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: false,
transformArguments: EVAL_1.transformEvalArguments.bind(undefined, 'EVALSHA'),
transformReply: EVAL_1.default.transformReply
};

@@ -8,3 +8,3 @@ "use strict";

transformArguments(key, timestamp, mode) {
const args = ['EXPIRE', key, (0, generic_transformers_1.transformEXAT)(timestamp)];
const args = ['EXPIREAT', key, (0, generic_transformers_1.transformEXAT)(timestamp)];
if (mode) {

@@ -11,0 +11,0 @@ args.push(mode);

@@ -1,4 +0,8 @@

import { evalFirstKeyIndex, EvalOptions } from './generic-transformers';
export declare const FIRST_KEY_INDEX: typeof evalFirstKeyIndex;
export declare const IS_READ_ONLY = true;
export declare function transformArguments(fn: string, options?: EvalOptions): Array<string>;
import { EvalOptions } from './EVAL';
declare const _default: {
readonly FIRST_KEY_INDEX: (this: void, _: any, options?: EvalOptions | undefined) => import("../RESP/types").RedisArgument | undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (script: import("../RESP/types").RedisArgument, options?: EvalOptions | undefined) => import("../RESP/types").RedisArgument[];
readonly transformReply: () => import("../RESP/types").ReplyUnion;
};
export default _default;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
const generic_transformers_1 = require("./generic-transformers");
exports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;
exports.IS_READ_ONLY = true;
function transformArguments(fn, options) {
return (0, generic_transformers_1.pushEvalArguments)(['FCALL_RO', fn], options);
}
exports.transformArguments = transformArguments;
const EVAL_1 = __importStar(require("./EVAL"));
exports.default = {
FIRST_KEY_INDEX: EVAL_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: false,
transformArguments: EVAL_1.transformEvalArguments.bind(undefined, 'FCALL_RO'),
transformReply: EVAL_1.default.transformReply
};

@@ -1,3 +0,8 @@

import { evalFirstKeyIndex, EvalOptions } from './generic-transformers';
export declare const FIRST_KEY_INDEX: typeof evalFirstKeyIndex;
export declare function transformArguments(fn: string, options?: EvalOptions): Array<string>;
import { EvalOptions } from './EVAL';
declare const _default: {
readonly FIRST_KEY_INDEX: (this: void, _: any, options?: EvalOptions | undefined) => import("../RESP/types").RedisArgument | undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (script: import("../RESP/types").RedisArgument, options?: EvalOptions | undefined) => import("../RESP/types").RedisArgument[];
readonly transformReply: () => import("../RESP/types").ReplyUnion;
};
export default _default;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
const generic_transformers_1 = require("./generic-transformers");
exports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;
function transformArguments(fn, options) {
return (0, generic_transformers_1.pushEvalArguments)(['FCALL', fn], options);
}
exports.transformArguments = transformArguments;
const EVAL_1 = __importStar(require("./EVAL"));
exports.default = {
FIRST_KEY_INDEX: EVAL_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: false,
transformArguments: EVAL_1.transformEvalArguments.bind(undefined, 'FCALL'),
transformReply: EVAL_1.default.transformReply
};

@@ -6,7 +6,9 @@ import { SimpleStringReply } from '../RESP/types';

};
export type RedisFlushModes = typeof REDIS_FLUSH_MODES[keyof typeof REDIS_FLUSH_MODES];
export type RedisFlushMode = typeof REDIS_FLUSH_MODES[keyof typeof REDIS_FLUSH_MODES];
declare const _default: {
readonly transformArguments: (this: void, mode?: RedisFlushModes) => string[];
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, mode?: RedisFlushMode) => string[];
readonly transformReply: () => SimpleStringReply;
};
export default _default;

@@ -9,2 +9,4 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(mode) {

@@ -11,0 +13,0 @@ const args = ['FLUSHALL'];

import { SimpleStringReply } from '../RESP/types';
import { RedisFlushModes } from './FLUSHALL';
import { RedisFlushMode } from './FLUSHALL';
declare const _default: {
readonly transformArguments: (this: void, mode?: RedisFlushModes) => string[];
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, mode?: RedisFlushMode) => string[];
readonly transformReply: () => SimpleStringReply;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(mode) {

@@ -5,0 +7,0 @@ const args = ['FLUSHDB'];

import { RedisArgument, SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, library: RedisArgument) => RedisArgument[];

@@ -6,0 +6,0 @@ readonly transformReply: () => SimpleStringReply;

@@ -5,3 +5,3 @@ "use strict";

FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
IS_READ_ONLY: false,
transformArguments(library) {

@@ -8,0 +8,0 @@ return ['FUNCTION', 'DELETE', library];

import { SimpleStringReply } from '../RESP/types';
import { RedisFlushModes } from './FLUSHALL';
import { RedisFlushMode } from './FLUSHALL';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, mode?: RedisFlushModes) => string[];
readonly transformReply: () => SimpleStringReply;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, mode?: RedisFlushMode) => string[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -5,3 +5,3 @@ "use strict";

FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
IS_READ_ONLY: false,
transformArguments(mode) {

@@ -8,0 +8,0 @@ const args = ['FUNCTION', 'FLUSH'];

"use strict";
// import { RedisCommandArguments } from '.';
// import { transformArguments as transformFunctionListArguments } from './FUNCTION_LIST';
// import { FunctionListItemReply, FunctionListRawItemReply, transformFunctionListItemReply } from './generic-transformers';
// export function transformArguments(pattern?: string): RedisCommandArguments {
// const args = transformFunctionListArguments(pattern);
// args.push('WITHCODE');
// return args;
// }
// type FunctionListWithCodeRawItemReply = [
// ...FunctionListRawItemReply,
// 'library_code',
// string
// ];
// interface FunctionListWithCodeItemReply extends FunctionListItemReply {
// libraryCode: string;
// }
// export function transformReply(reply: Array<FunctionListWithCodeRawItemReply>): Array<FunctionListWithCodeItemReply> {
// return reply.map(library => ({
// ...transformFunctionListItemReply(library as unknown as FunctionListRawItemReply),
// libraryCode: library[7]
// }));
// }
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const FUNCTION_LIST_1 = __importDefault(require("./FUNCTION_LIST"));
exports.default = {
FIRST_KEY_INDEX: FUNCTION_LIST_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: FUNCTION_LIST_1.default.IS_READ_ONLY,
transformArguments(...args) {
const redisArgs = FUNCTION_LIST_1.default.transformArguments(...args);
redisArgs.push('WITHCODE');
return redisArgs;
},
transformReply: {
2: (reply) => {
return reply.map((library) => ({
library_name: library[1],
engine: library[3],
functions: library[5].map((fn) => ({
name: fn[1],
description: fn[3],
flags: fn[5]
})),
library_code: library[7]
}));
},
3: undefined
}
};
"use strict";
// import { RedisCommandArguments } from '.';
// import { FunctionListItemReply, FunctionListRawItemReply, transformFunctionListItemReply } from './generic-transformers';
// export function transformArguments(pattern?: string): RedisCommandArguments {
// const args = ['FUNCTION', 'LIST'];
// if (pattern) {
// args.push(pattern);
// }
// return args;
// }
// export function transformReply(reply: Array<FunctionListRawItemReply>): Array<FunctionListItemReply> {
// return reply.map(transformFunctionListItemReply);
// }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(options) {
const args = ['FUNCTION', 'LIST'];
if (options?.LIBRARYNAME) {
args.push('LIBRARYNAME', options.LIBRARYNAME);
}
return args;
},
transformReply: {
2: (reply) => {
return reply.map(library => ({
library_name: library[1],
engine: library[3],
functions: library[5].map(fn => ({
name: fn[1],
description: fn[3],
flags: fn[5]
}))
}));
},
3: undefined
}
};
"use strict";
// import { RedisCommandArguments } from '.';
// interface FunctionLoadOptions {
// REPLACE?: boolean;
// }
// export function transformArguments(
// code: string,
// options?: FunctionLoadOptions
// ): RedisCommandArguments {
// const args = ['FUNCTION', 'LOAD'];
// if (options?.REPLACE) {
// args.push('REPLACE');
// }
// args.push(code);
// return args;
// }
// export declare function transformReply(): string;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(code, options) {
const args = ['FUNCTION', 'LOAD'];
if (options?.REPLACE) {
args.push('REPLACE');
}
args.push(code);
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export function transformArguments(
// dump: RedisCommandArgument,
// mode?: 'FLUSH' | 'APPEND' | 'REPLACE'
// ): RedisCommandArguments {
// const args = ['FUNCTION', 'RESTORE', dump];
// if (mode) {
// args.push(mode);
// }
// return args;
// }
// export declare function transformReply(): 'OK';
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(dump, options) {
const args = ['FUNCTION', 'RESTORE', dump];
if (options?.mode) {
args.push(options.mode);
}
return args;
},
transformReply: undefined
};
"use strict";
// // import { RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// // export function transformArguments(): RedisCommandArguments {

@@ -4,0 +5,0 @@ // // return ['FUNCTION', 'STATS'];

@@ -1,8 +0,13 @@

import { ArrayReply, BlobStringReply, CommandArguments, DoubleReply, NullReply, RedisArgument } from '../RESP/types';
import { ArrayReply, BlobStringReply, CommandArguments, DoubleReply, NullReply, RedisArgument, TuplesReply } from '../RESP/types';
export type BitValue = 0 | 1;
export declare function transformDoubleReply(reply: BlobStringReply): number;
export declare function transformNullableDoubleReply(reply: BlobStringReply | NullReply): number | null;
export declare function transformArrayNullableDoubleReply(reply: Array<BlobStringReply | NullReply>): Array<number | null>;
export declare function transformDoubleArgument(num: number): string;
export declare function transformStringDoubleArgument(num: RedisArgument | number): RedisArgument;
export declare const transformDoubleReply: {
2: (reply: BlobStringReply) => number;
3: () => DoubleReply;
};
export declare const transformNullableDoubleReply: {
2: (reply: BlobStringReply | NullReply) => number | null;
3: () => DoubleReply | NullReply;
};
export declare function transformTuplesReply(reply: ArrayReply<BlobStringReply>): Record<string, BlobStringReply>;

@@ -20,8 +25,7 @@ export interface StreamMessageReply {

export declare function transformStreamsMessagesReply(reply: Array<any> | null): StreamsMessagesReply | null;
export interface ZMember {
export interface SortedSetMember {
value: RedisArgument;
score: number;
value: RedisArgument;
}
export declare function transformSortedSetMemberNullReply(reply: [BlobStringReply, BlobStringReply] | []): ZMember | null;
export declare function transformSortedSetMemberReply(reply: [BlobStringReply, BlobStringReply]): ZMember;
export type SortedSetSide = 'MIN' | 'MAX';
export declare const transformSortedSetReply: {

@@ -32,3 +36,3 @@ 2: (reply: ArrayReply<BlobStringReply>) => {

}[];
3: (reply: ArrayReply<[BlobStringReply, DoubleReply]>) => {
3: (reply: ArrayReply<TuplesReply<[BlobStringReply, DoubleReply]>>) => {
value: BlobStringReply;

@@ -38,56 +42,3 @@ score: DoubleReply;

};
export declare function transformSortedSetWithScoresReply(reply: ArrayReply<BlobStringReply>): Array<ZMember>;
export type ListSide = 'LEFT' | 'RIGHT';
export type SortedSetSide = 'MIN' | 'MAX';
export interface LMPopOptions {
COUNT?: number;
}
export declare function transformLMPopArguments(args: CommandArguments, keys: RedisVariadicArgument, side: ListSide, options?: LMPopOptions): CommandArguments;
type GeoCountArgument = number | {
value: number;
ANY?: true;
};
export declare function pushGeoCountArgument(args: CommandArguments, count: GeoCountArgument | undefined): CommandArguments;
export type GeoUnits = 'm' | 'km' | 'mi' | 'ft';
export interface GeoCoordinates {
longitude: RedisArgument | number;
latitude: RedisArgument | number;
}
type GeoSearchFromMember = string;
export type GeoSearchFrom = GeoSearchFromMember | GeoCoordinates;
interface GeoSearchByRadius {
radius: number;
unit: GeoUnits;
}
interface GeoSearchByBox {
width: number;
height: number;
unit: GeoUnits;
}
export type GeoSearchBy = GeoSearchByRadius | GeoSearchByBox;
export interface GeoSearchOptions {
SORT?: 'ASC' | 'DESC';
COUNT?: GeoCountArgument;
}
export declare function pushGeoSearchArguments(args: CommandArguments, key: RedisArgument, from: GeoSearchFrom, by: GeoSearchBy, options?: GeoSearchOptions): CommandArguments;
export declare function pushGeoRadiusArguments(args: CommandArguments, key: RedisArgument, from: GeoSearchFrom, radius: number, unit: GeoUnits, options?: GeoSearchOptions): CommandArguments;
export interface GeoRadiusStoreOptions extends GeoSearchOptions {
STOREDIST?: boolean;
}
export declare function pushGeoRadiusStoreArguments(args: CommandArguments, key: RedisArgument, from: GeoSearchFrom, radius: number, unit: GeoUnits, destination: RedisArgument, options?: GeoRadiusStoreOptions): CommandArguments;
export declare enum GeoReplyWith {
DISTANCE = "WITHDIST",
HASH = "WITHHASH",
COORDINATES = "WITHCOORD"
}
export interface GeoReplyWithMember {
member: string;
distance?: number;
hash?: string;
coordinates?: {
longitude: string;
latitude: string;
};
}
export declare function transformGeoMembersWithReply(reply: Array<Array<any>>, replyWith: Array<GeoReplyWith>): Array<GeoReplyWithMember>;
export declare function transformEXAT(EXAT: number | Date): string;

@@ -209,2 +160,8 @@ export declare function transformPXAT(PXAT: number | Date): string;

export declare function transformRangeReply([start, end]: RawRangeReply): RangeReply;
export {};
export type ZKeyAndWeight = {
key: RedisArgument;
weight: number;
};
export type ZVariadicKeys<T> = T | [T, ...Array<T>];
export type ZKeys = ZVariadicKeys<RedisArgument> | ZVariadicKeys<ZKeyAndWeight>;
export declare function pushZKeysArguments(args: CommandArguments, keys: ZKeys): CommandArguments;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformRangeReply = exports.pushSlotRangesArguments = exports.transformFunctionListItemReply = exports.RedisFunctionFlags = exports.transformCommandReply = exports.CommandCategories = exports.CommandFlags = exports.pushOptionalVariadicArgument = exports.pushVariadicArgument = exports.pushVariadicNumberArguments = exports.pushVariadicArguments = exports.pushEvalArguments = exports.evalFirstKeyIndex = exports.transformPXAT = exports.transformEXAT = exports.transformGeoMembersWithReply = exports.GeoReplyWith = exports.pushGeoRadiusStoreArguments = exports.pushGeoRadiusArguments = exports.pushGeoSearchArguments = exports.pushGeoCountArgument = exports.transformLMPopArguments = exports.transformSortedSetWithScoresReply = exports.transformSortedSetReply = exports.transformSortedSetMemberReply = exports.transformSortedSetMemberNullReply = exports.transformStreamsMessagesReply = exports.transformStreamMessagesReply = exports.transformTuplesReply = exports.transformStringDoubleArgument = exports.transformDoubleArgument = exports.transformArrayNullableDoubleReply = exports.transformNullableDoubleReply = exports.transformDoubleReply = void 0;
function transformDoubleReply(reply) {
switch (reply.toString()) {
case '+inf':
return Infinity;
case '-inf':
return -Infinity;
default:
return Number(reply);
}
}
exports.transformDoubleReply = transformDoubleReply;
function transformNullableDoubleReply(reply) {
if (reply === null)
return null;
return transformDoubleReply(reply);
}
exports.transformNullableDoubleReply = transformNullableDoubleReply;
function transformArrayNullableDoubleReply(reply) {
return reply.map(transformNullableDoubleReply);
}
exports.transformArrayNullableDoubleReply = transformArrayNullableDoubleReply;
exports.pushZKeysArguments = exports.transformRangeReply = exports.pushSlotRangesArguments = exports.transformFunctionListItemReply = exports.RedisFunctionFlags = exports.transformCommandReply = exports.CommandCategories = exports.CommandFlags = exports.pushOptionalVariadicArgument = exports.pushVariadicArgument = exports.pushVariadicNumberArguments = exports.pushVariadicArguments = exports.pushEvalArguments = exports.evalFirstKeyIndex = exports.transformPXAT = exports.transformEXAT = exports.transformSortedSetReply = exports.transformStreamsMessagesReply = exports.transformStreamMessagesReply = exports.transformTuplesReply = exports.transformNullableDoubleReply = exports.transformDoubleReply = exports.transformStringDoubleArgument = exports.transformDoubleArgument = void 0;
function transformDoubleArgument(num) {

@@ -42,2 +21,23 @@ switch (num) {

exports.transformStringDoubleArgument = transformStringDoubleArgument;
exports.transformDoubleReply = {
2: (reply) => {
switch (reply.toString()) {
case '+inf':
return Infinity;
case '-inf':
return -Infinity;
default:
return Number(reply);
}
},
3: undefined
};
exports.transformNullableDoubleReply = {
2: (reply) => {
if (reply === null)
return null;
return exports.transformDoubleReply[2](reply);
},
3: undefined
};
function transformTuplesReply(reply) {

@@ -71,15 +71,2 @@ const message = Object.create(null);

exports.transformStreamsMessagesReply = transformStreamsMessagesReply;
function transformSortedSetMemberNullReply(reply) {
if (!reply.length)
return null;
return transformSortedSetMemberReply(reply);
}
exports.transformSortedSetMemberNullReply = transformSortedSetMemberNullReply;
function transformSortedSetMemberReply(reply) {
return {
value: reply[0],
score: transformDoubleReply(reply[1])
};
}
exports.transformSortedSetMemberReply = transformSortedSetMemberReply;
exports.transformSortedSetReply = {

@@ -91,3 +78,3 @@ 2: (reply) => {

value: reply[i],
score: transformDoubleReply(reply[i + 1])
score: exports.transformDoubleReply[2](reply[i + 1])
});

@@ -104,115 +91,2 @@ }

};
function transformSortedSetWithScoresReply(reply) {
const members = [];
for (let i = 0; i < reply.length; i += 2) {
members.push({
value: reply[i],
score: transformDoubleReply(reply[i + 1])
});
}
return members;
}
exports.transformSortedSetWithScoresReply = transformSortedSetWithScoresReply;
function transformLMPopArguments(args, keys, side, options) {
pushVariadicArgument(args, keys);
args.push(side);
if (options?.COUNT) {
args.push('COUNT', options.COUNT.toString());
}
return args;
}
exports.transformLMPopArguments = transformLMPopArguments;
function pushGeoCountArgument(args, count) {
if (typeof count === 'number') {
args.push('COUNT', count.toString());
}
else if (count) {
args.push('COUNT', count.value.toString());
if (count.ANY) {
args.push('ANY');
}
}
return args;
}
exports.pushGeoCountArgument = pushGeoCountArgument;
function pushGeoSearchArguments(args, key, from, by, options) {
args.push(key);
if (typeof from === 'string') {
args.push('FROMMEMBER', from);
}
else {
args.push('FROMLONLAT', from.longitude.toString(), from.latitude.toString());
}
if ('radius' in by) {
args.push('BYRADIUS', by.radius.toString());
}
else {
args.push('BYBOX', by.width.toString(), by.height.toString());
}
args.push(by.unit);
if (options?.SORT) {
args.push(options.SORT);
}
pushGeoCountArgument(args, options?.COUNT);
return args;
}
exports.pushGeoSearchArguments = pushGeoSearchArguments;
function pushGeoRadiusArguments(args, key, from, radius, unit, options) {
args.push(key);
if (typeof from === 'string') {
args.push(from);
}
else {
args.push(from.longitude.toString(), from.latitude.toString());
}
args.push(radius.toString(), unit);
if (options?.SORT) {
args.push(options.SORT);
}
pushGeoCountArgument(args, options?.COUNT);
return args;
}
exports.pushGeoRadiusArguments = pushGeoRadiusArguments;
function pushGeoRadiusStoreArguments(args, key, from, radius, unit, destination, options) {
pushGeoRadiusArguments(args, key, from, radius, unit, options);
if (options?.STOREDIST) {
args.push('STOREDIST', destination);
}
else {
args.push('STORE', destination);
}
return args;
}
exports.pushGeoRadiusStoreArguments = pushGeoRadiusStoreArguments;
var GeoReplyWith;
(function (GeoReplyWith) {
GeoReplyWith["DISTANCE"] = "WITHDIST";
GeoReplyWith["HASH"] = "WITHHASH";
GeoReplyWith["COORDINATES"] = "WITHCOORD";
})(GeoReplyWith = exports.GeoReplyWith || (exports.GeoReplyWith = {}));
function transformGeoMembersWithReply(reply, replyWith) {
const replyWithSet = new Set(replyWith);
let index = 0;
const distanceIndex = replyWithSet.has(GeoReplyWith.DISTANCE) && ++index, hashIndex = replyWithSet.has(GeoReplyWith.HASH) && ++index, coordinatesIndex = replyWithSet.has(GeoReplyWith.COORDINATES) && ++index;
return reply.map(member => {
const transformedMember = {
member: member[0]
};
if (distanceIndex) {
transformedMember.distance = member[distanceIndex];
}
if (hashIndex) {
transformedMember.hash = member[hashIndex];
}
if (coordinatesIndex) {
const [longitude, latitude] = member[coordinatesIndex];
transformedMember.coordinates = {
longitude,
latitude
};
}
return transformedMember;
});
}
exports.transformGeoMembersWithReply = transformGeoMembersWithReply;
function transformEXAT(EXAT) {

@@ -299,3 +173,3 @@ return (typeof EXAT === 'number' ? EXAT : Math.floor(EXAT.getTime() / 1000)).toString();

CommandFlags["MOVABLEKEYS"] = "movablekeys"; // keys have no pre-determined position. You must discover keys yourself.
})(CommandFlags = exports.CommandFlags || (exports.CommandFlags = {}));
})(CommandFlags || (exports.CommandFlags = CommandFlags = {}));
var CommandCategories;

@@ -324,3 +198,3 @@ (function (CommandCategories) {

CommandCategories["SCRIPTING"] = "@scripting";
})(CommandCategories = exports.CommandCategories || (exports.CommandCategories = {}));
})(CommandCategories || (exports.CommandCategories = CommandCategories = {}));
function transformCommandReply([name, arity, flags, firstKeyIndex, lastKeyIndex, step, categories]) {

@@ -344,3 +218,3 @@ return {

RedisFunctionFlags["NO_CLUSTER"] = "no-cluster";
})(RedisFunctionFlags = exports.RedisFunctionFlags || (exports.RedisFunctionFlags = {}));
})(RedisFunctionFlags || (exports.RedisFunctionFlags = RedisFunctionFlags = {}));
function transformFunctionListItemReply(reply) {

@@ -380,1 +254,37 @@ return {

exports.transformRangeReply = transformRangeReply;
function pushZKeysArguments(args, keys) {
if (Array.isArray(keys)) {
args.push(keys.length.toString());
if (keys.length) {
if (isPlainKeys(keys)) {
args = args.concat(keys);
}
else {
const start = args.length;
args[start + keys.length] = 'WEIGHTS';
for (let i = 0; i < keys.length; i++) {
const index = start + i;
args[index] = keys[i].key;
args[index + 1 + keys.length] = transformDoubleArgument(keys[i].weight);
}
}
}
}
else {
args.push('1');
if (isPlainKey(keys)) {
args.push(keys);
}
else {
args.push(keys.key, 'WEIGHTS', transformDoubleArgument(keys.weight));
}
}
return args;
}
exports.pushZKeysArguments = pushZKeysArguments;
function isPlainKey(key) {
return typeof key === 'string' || key instanceof Buffer;
}
function isPlainKeys(keys) {
return isPlainKey(keys[0]);
}
import { RedisArgument, NumberReply } from '../RESP/types';
import { GeoCoordinates } from './generic-transformers';
interface GeoMember extends GeoCoordinates {
import { GeoCoordinates } from './GEOSEARCH';
export interface GeoMember extends GeoCoordinates {
member: RedisArgument;
}
interface GeoAddOptions {
condition: 'NX' | 'XX';
export interface GeoAddOptions {
condition?: 'NX' | 'XX';
/**

@@ -9,0 +9,0 @@ * @deprecated Use `{ condition: 'NX' }` instead.

import { RedisArgument, BlobStringReply, NullReply } from '../RESP/types';
import { GeoUnits } from './generic-transformers';
import { GeoUnits } from './GEOSEARCH';
declare const _default: {

@@ -4,0 +4,0 @@ readonly FIRST_KEY_INDEX: 1;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoReplyWith, GeoSearchOptions, GeoCoordinates, GeoUnits } from './generic-transformers';
// import { transformArguments as transformGeoRadiusRoArguments } from './GEORADIUS_RO';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEORADIUS_RO';
// export function transformArguments(
// key: RedisCommandArgument,
// coordinates: GeoCoordinates,
// radius: number,
// unit: GeoUnits,
// replyWith: Array<GeoReplyWith>,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// const args: RedisCommandArguments = transformGeoRadiusRoArguments(
// key,
// coordinates,
// radius,
// unit,
// options
// );
// args.push(...replyWith);
// args.preserve = replyWith;
// return args;
// }
// export { transformGeoMembersWithReply as transformReply } from './generic-transformers';
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const GEORADIUS_WITH_1 = __importStar(require("./GEORADIUS_WITH"));
exports.default = {
FIRST_KEY_INDEX: GEORADIUS_WITH_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: true,
transformArguments: GEORADIUS_WITH_1.transformGeoRadiusWithArguments.bind(undefined, 'GEORADIUS_RO'),
transformReply: GEORADIUS_WITH_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchOptions, GeoCoordinates, pushGeoRadiusArguments, GeoUnits } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export function transformArguments(
// key: RedisCommandArgument,
// coordinates: GeoCoordinates,
// radius: number,
// unit: GeoUnits,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// return pushGeoRadiusArguments(
// ['GEORADIUS_RO'],
// key,
// coordinates,
// radius,
// unit,
// options
// );
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const GEORADIUS_1 = __importStar(require("./GEORADIUS"));
exports.default = {
FIRST_KEY_INDEX: GEORADIUS_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: true,
transformArguments: GEORADIUS_1.transformGeoRadiusArguments.bind(undefined, 'GEORADIUS_RO'),
transformReply: GEORADIUS_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoReplyWith, GeoSearchOptions, GeoCoordinates, GeoUnits } from './generic-transformers';
// import { transformArguments as transformGeoRadiusArguments } from './GEORADIUS';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEORADIUS';
// export function transformArguments(
// key: RedisCommandArgument,
// coordinates: GeoCoordinates,
// radius: number,
// unit: GeoUnits,
// replyWith: Array<GeoReplyWith>,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// const args: RedisCommandArguments = transformGeoRadiusArguments(
// key,
// coordinates,
// radius,
// unit,
// options
// );
// args.push(...replyWith);
// args.preserve = replyWith;
// return args;
// }
// export { transformGeoMembersWithReply as transformReply } from './generic-transformers';
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformGeoRadiusWithArguments = void 0;
const GEORADIUS_1 = __importStar(require("./GEORADIUS"));
const GEOSEARCH_WITH_1 = __importDefault(require("./GEOSEARCH_WITH"));
function transformGeoRadiusWithArguments(command, key, from, radius, unit, replyWith, options) {
const args = (0, GEORADIUS_1.transformGeoRadiusArguments)(command, key, from, radius, unit, options);
args.push(...replyWith);
args.preserve = replyWith;
return args;
}
exports.transformGeoRadiusWithArguments = transformGeoRadiusWithArguments;
exports.default = {
FIRST_KEY_INDEX: GEORADIUS_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: GEORADIUS_1.default.IS_READ_ONLY,
transformArguments: transformGeoRadiusWithArguments.bind(undefined, 'GEORADIUS'),
transformReply: GEOSEARCH_WITH_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchOptions, GeoCoordinates, pushGeoRadiusArguments, GeoUnits } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export function transformArguments(
// key: RedisCommandArgument,
// coordinates: GeoCoordinates,
// radius: number,
// unit: GeoUnits,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// return pushGeoRadiusArguments(
// ['GEORADIUS'],
// key,
// coordinates,
// radius,
// unit,
// options
// );
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformGeoRadiusArguments = void 0;
const GEOSEARCH_1 = require("./GEOSEARCH");
function transformGeoRadiusArguments(command, key, from, radius, unit, options) {
const args = [
command,
key,
from.longitude.toString(),
from.latitude.toString(),
radius.toString(),
unit
];
(0, GEOSEARCH_1.pushGeoSearchOptions)(args, options);
return args;
}
exports.transformGeoRadiusArguments = transformGeoRadiusArguments;
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments: transformGeoRadiusArguments.bind(undefined, 'GEORADIUS'),
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoReplyWith, GeoSearchOptions, GeoUnits } from './generic-transformers';
// import { transformArguments as geoRadiusTransformArguments } from './GEORADIUSBYMEMBER_RO';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEORADIUSBYMEMBER_RO';
// export function transformArguments(
// key: RedisCommandArgument,
// member: string,
// radius: number,
// unit: GeoUnits,
// replyWith: Array<GeoReplyWith>,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// const args: RedisCommandArguments = geoRadiusTransformArguments(
// key,
// member,
// radius,
// unit,
// options
// );
// args.push(...replyWith);
// args.preserve = replyWith;
// return args;
// }
// export { transformGeoMembersWithReply as transformReply } from './generic-transformers';
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const GEORADIUSBYMEMBER_WITH_1 = __importStar(require("./GEORADIUSBYMEMBER_WITH"));
exports.default = {
FIRST_KEY_INDEX: GEORADIUSBYMEMBER_WITH_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: true,
transformArguments: GEORADIUSBYMEMBER_WITH_1.transformGeoRadiusByMemberWithArguments.bind(undefined, 'GEORADIUSBYMEMBER_RO'),
transformReply: GEORADIUSBYMEMBER_WITH_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchOptions, pushGeoRadiusArguments, GeoUnits } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export function transformArguments(
// key: RedisCommandArgument,
// member: string,
// radius: number,
// unit: GeoUnits,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// return pushGeoRadiusArguments(
// ['GEORADIUSBYMEMBER_RO'],
// key,
// member,
// radius,
// unit,
// options
// );
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const GEORADIUSBYMEMBER_1 = __importStar(require("./GEORADIUSBYMEMBER"));
exports.default = {
FIRST_KEY_INDEX: GEORADIUSBYMEMBER_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: true,
transformArguments: GEORADIUSBYMEMBER_1.transformGeoRadiusByMemberArguments.bind(undefined, 'GEORADIUSBYMEMBER_RO'),
transformReply: GEORADIUSBYMEMBER_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoReplyWith, GeoSearchOptions, GeoUnits } from './generic-transformers';
// import { transformArguments as transformGeoRadiusArguments } from './GEORADIUSBYMEMBER';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEORADIUSBYMEMBER';
// export function transformArguments(
// key: RedisCommandArgument,
// member: string,
// radius: number,
// unit: GeoUnits,
// replyWith: Array<GeoReplyWith>,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// const args: RedisCommandArguments = transformGeoRadiusArguments(
// key,
// member,
// radius,
// unit,
// options
// );
// args.push(...replyWith);
// args.preserve = replyWith;
// return args;
// }
// export { transformGeoMembersWithReply as transformReply } from './generic-transformers';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformGeoRadiusByMemberWithArguments = void 0;
const GEORADIUSBYMEMBER_1 = __importDefault(require("./GEORADIUSBYMEMBER"));
const GEOSEARCH_1 = require("./GEOSEARCH");
const GEOSEARCH_WITH_1 = __importDefault(require("./GEOSEARCH_WITH"));
function transformGeoRadiusByMemberWithArguments(command, key, from, radius, unit, replyWith, options) {
const args = [
command,
key,
from,
radius.toString(),
unit
];
(0, GEOSEARCH_1.pushGeoSearchOptions)(args, options);
args.push(...replyWith);
args.preserve = replyWith;
return args;
}
exports.transformGeoRadiusByMemberWithArguments = transformGeoRadiusByMemberWithArguments;
exports.default = {
FIRST_KEY_INDEX: GEORADIUSBYMEMBER_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: GEORADIUSBYMEMBER_1.default.IS_READ_ONLY,
transformArguments: transformGeoRadiusByMemberWithArguments.bind(undefined, 'GEORADIUSBYMEMBER'),
transformReply: GEOSEARCH_WITH_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchOptions, pushGeoRadiusArguments, GeoUnits } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export function transformArguments(
// key: RedisCommandArgument,
// member: string,
// radius: number,
// unit: GeoUnits,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// return pushGeoRadiusArguments(
// ['GEORADIUSBYMEMBER'],
// key,
// member,
// radius,
// unit,
// options
// );
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformGeoRadiusByMemberArguments = void 0;
const GEOSEARCH_1 = require("./GEOSEARCH");
function transformGeoRadiusByMemberArguments(command, key, from, radius, unit, options) {
const args = [
command,
key,
from,
radius.toString(),
unit
];
(0, GEOSEARCH_1.pushGeoSearchOptions)(args, options);
return args;
}
exports.transformGeoRadiusByMemberArguments = transformGeoRadiusByMemberArguments;
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments: transformGeoRadiusByMemberArguments.bind(undefined, 'GEORADIUSBYMEMBER'),
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchFrom, GeoSearchBy, GeoReplyWith, GeoSearchOptions } from './generic-transformers';
// import { transformArguments as geoSearchTransformArguments } from './GEOSEARCH';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEOSEARCH';
// export function transformArguments(
// key: RedisCommandArgument,
// from: GeoSearchFrom,
// by: GeoSearchBy,
// replyWith: Array<GeoReplyWith>,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// const args: RedisCommandArguments = geoSearchTransformArguments(key, from, by, options);
// args.push(...replyWith);
// args.preserve = replyWith;
// return args;
// }
// export { transformGeoMembersWithReply as transformReply } from './generic-transformers';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GEO_REPLY_WITH = void 0;
const GEOSEARCH_1 = __importDefault(require("./GEOSEARCH"));
exports.GEO_REPLY_WITH = {
DISTANCE: 'WITHDIST',
HASH: 'WITHHASH',
COORDINATES: 'WITHCOORD'
};
exports.default = {
FIRST_KEY_INDEX: GEOSEARCH_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: GEOSEARCH_1.default.IS_READ_ONLY,
transformArguments(key, from, by, replyWith, options) {
const args = GEOSEARCH_1.default.transformArguments(key, from, by, options);
args.push(...replyWith);
args.preserve = replyWith;
return args;
},
transformReply(reply, replyWith) {
const replyWithSet = new Set(replyWith);
let index = 0;
const distanceIndex = replyWithSet.has(exports.GEO_REPLY_WITH.DISTANCE) && ++index, hashIndex = replyWithSet.has(exports.GEO_REPLY_WITH.HASH) && ++index, coordinatesIndex = replyWithSet.has(exports.GEO_REPLY_WITH.COORDINATES) && ++index;
return reply.map(raw => {
const item = {
member: raw[0]
};
if (distanceIndex) {
item.distance = raw[distanceIndex];
}
if (hashIndex) {
item.hash = raw[hashIndex];
}
if (coordinatesIndex) {
const [longitude, latitude] = raw[coordinatesIndex];
item.coordinates = {
longitude,
latitude
};
}
return item;
});
}
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchFrom, GeoSearchBy, GeoSearchOptions, pushGeoSearchArguments } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export function transformArguments(
// key: RedisCommandArgument,
// from: GeoSearchFrom,
// by: GeoSearchBy,
// options?: GeoSearchOptions
// ): RedisCommandArguments {
// return pushGeoSearchArguments(['GEOSEARCH'], key, from, by, options);
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pushGeoSearchOptions = exports.pushGeoSearchArguments = void 0;
function pushGeoSearchArguments(args, key, from, by, options) {
args.push(key);
if (typeof from === 'string' || from instanceof Buffer) {
args.push('FROMMEMBER', from);
}
else {
args.push('FROMLONLAT', from.longitude.toString(), from.latitude.toString());
}
if ('radius' in by) {
args.push('BYRADIUS', by.radius.toString(), by.unit);
}
else {
args.push('BYBOX', by.width.toString(), by.height.toString(), by.unit);
}
pushGeoSearchOptions(args, options);
return args;
}
exports.pushGeoSearchArguments = pushGeoSearchArguments;
function pushGeoSearchOptions(args, options) {
if (options?.SORT) {
args.push(options.SORT);
}
if (options?.COUNT) {
if (typeof options.COUNT === 'number') {
args.push('COUNT', options.COUNT.toString());
}
else {
args.push('COUNT', options.COUNT.value.toString());
if (options.COUNT.ANY) {
args.push('ANY');
}
}
}
}
exports.pushGeoSearchOptions = pushGeoSearchOptions;
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: true,
transformArguments(key, from, by, options) {
return pushGeoSearchArguments(['GEOSEARCH'], key, from, by, options);
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { GeoSearchFrom, GeoSearchBy, GeoSearchOptions, pushGeoSearchArguments } from './generic-transformers';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './GEOSEARCH';
// interface GeoSearchStoreOptions extends GeoSearchOptions {
// STOREDIST?: true;
// }
// export function transformArguments(
// destination: RedisCommandArgument,
// source: RedisCommandArgument,
// from: GeoSearchFrom,
// by: GeoSearchBy,
// options?: GeoSearchStoreOptions
// ): RedisCommandArguments {
// const args = pushGeoSearchArguments(
// ['GEOSEARCHSTORE', destination],
// source,
// from,
// by,
// options
// );
// if (options?.STOREDIST) {
// args.push('STOREDIST');
// }
// return args;
// }
// export function transformReply(reply: number): number {
// if (typeof reply !== 'number') {
// throw new TypeError(`https://github.com/redis/redis/issues/9261`);
// }
// return reply;
// }
Object.defineProperty(exports, "__esModule", { value: true });
const GEOSEARCH_1 = require("./GEOSEARCH");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(destination, source, from, by, options) {
const args = (0, GEOSEARCH_1.pushGeoSearchArguments)(['GEOSEARCHSTORE', destination], source, from, by, options);
if (options?.STOREDIST) {
args.push('STOREDIST');
}
return args;
},
transformReply: undefined
};
import { RedisArgument, BlobStringReply, NullReply } from '../RESP/types';
export type GetExModes = {
export type GetExOptions = {
type: 'EX' | 'PX';
value: number;
} | {
type: 'EXAT' | 'PXAT';
value: number | Date;
} | {
type: 'PERSIST';
} | {
/**
* @deprecated Use `{ type: 'EX', value: number }` instead.
*/
EX: number;
} | {
/**
* @deprecated Use `{ type: 'PX', value: number }` instead.
*/
PX: number;
} | {
/**
* @deprecated Use `{ type: 'EXAT', value: number | Date }` instead.
*/
EXAT: number | Date;
} | {
/**
* @deprecated Use `{ type: 'PXAT', value: number | Date }` instead.
*/
PXAT: number | Date;
} | {
/**
* @deprecated Use `{ type: 'PERSIST' }` instead.
*/
PERSIST: true;

@@ -16,5 +39,5 @@ };

readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, key: RedisArgument, mode: GetExModes) => RedisArgument[];
readonly transformArguments: (this: void, key: RedisArgument, options: GetExOptions) => RedisArgument[];
readonly transformReply: () => BlobStringReply | NullReply;
};
export default _default;

@@ -7,19 +7,36 @@ "use strict";

IS_READ_ONLY: true,
transformArguments(key, mode) {
transformArguments(key, options) {
const args = ['GETEX', key];
if ('EX' in mode) {
args.push('EX', mode.EX.toString());
if ('type' in options) {
switch (options.type) {
case 'EX':
case 'PX':
args.push(options.type, options.value.toString());
break;
case 'EXAT':
case 'PXAT':
args.push(options.type, (0, generic_transformers_1.transformEXAT)(options.value));
break;
case 'PERSIST':
args.push('PERSIST');
break;
}
}
else if ('PX' in mode) {
args.push('PX', mode.PX.toString());
else {
if ('EX' in options) {
args.push('EX', options.EX.toString());
}
else if ('PX' in options) {
args.push('PX', options.PX.toString());
}
else if ('EXAT' in options) {
args.push('EXAT', (0, generic_transformers_1.transformEXAT)(options.EXAT));
}
else if ('PXAT' in options) {
args.push('PXAT', (0, generic_transformers_1.transformPXAT)(options.PXAT));
}
else { // PERSIST
args.push('PERSIST');
}
}
else if ('EXAT' in mode) {
args.push('EXAT', (0, generic_transformers_1.transformEXAT)(mode.EXAT));
}
else if ('PXAT' in mode) {
args.push('PXAT', (0, generic_transformers_1.transformPXAT)(mode.PXAT));
}
else { // PERSIST
args.push('PERSIST');
}
return args;

@@ -26,0 +43,0 @@ },

@@ -1,4 +0,4 @@

/// <reference types="node" />
import { RedisArgument, ArrayReply, BlobStringReply, NumberReply, Resp2Reply, RespVersions, TuplesToMapReply } from '../RESP/types';
export interface HelloOptions {
protover?: RespVersions;
AUTH?: {

@@ -41,61 +41,16 @@ username: RedisArgument;

declare const _default: {
readonly transformArguments: (this: void, protoover: RespVersions, options?: HelloOptions) => RedisArgument[];
readonly transformArguments: (this: void, protover?: RespVersions, options?: HelloOptions) => RedisArgument[];
readonly transformReply: {
readonly 2: (reply: Resp2Reply<HelloReply>) => {
server: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
version: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
proto: (RespVersions | "2" | "3") & {
RESP_TYPE: 58;
DEFAULT: RespVersions;
TYPES: "2" | "3";
FLAG: import("../RESP/types").Flag<RespVersions | "2" | "3">;
};
id: (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
};
mode: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
role: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
modules: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[] & {
server: BlobStringReply;
version: BlobStringReply;
proto: NumberReply<RespVersions>;
id: NumberReply;
mode: BlobStringReply;
role: BlobStringReply;
modules: BlobStringReply[] & {
RESP_TYPE: 42;
DEFAULT: ((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[];
DEFAULT: BlobStringReply[];
TYPES: never;
FLAG: import("../RESP/types").Flag<((string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
})[]>;
FLAG: import("../RESP/types").Flag<BlobStringReply[]>;
};

@@ -102,0 +57,0 @@ };

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
transformArguments(protoover, options) {
const args = ['HELLO', protoover.toString()];
if (options?.AUTH) {
args.push('AUTH', options.AUTH.username, options.AUTH.password);
transformArguments(protover, options) {
const args = ['HELLO'];
if (protover) {
args.push(protover.toString());
if (options?.AUTH) {
args.push('AUTH', options.AUTH.username, options.AUTH.password);
}
if (options?.SETNAME) {
args.push('SETNAME', options.SETNAME);
}
}
if (options?.SETNAME) {
args.push('SETNAME', options.SETNAME);
}
return args;

@@ -13,0 +16,0 @@ },

@@ -8,5 +8,5 @@ "use strict";

transformArguments(key, fields) {
return (0, generic_transformers_1.pushVariadicArguments)(['HMGET'], fields);
return (0, generic_transformers_1.pushVariadicArguments)(['HMGET', key], fields);
},
transformReply: undefined
};

@@ -7,3 +7,3 @@ "use strict";

const args = ['HSET', key];
if (typeof value === 'string' || typeof value === 'number' || Buffer.isBuffer(value)) {
if (typeof value === 'string' || typeof value === 'number' || value instanceof Buffer) {
args.push(convertValue(value), convertValue(fieldValue));

@@ -10,0 +10,0 @@ }

@@ -7,5 +7,5 @@ "use strict";

transformArguments(key, field) {
return ['HSETLEN', key, field];
return ['HSTRLEN', key, field];
},
transformReply: undefined
};
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ACL_CAT_1 = require("./ACL_CAT");
const ACL_DRYRUN_1 = require("./ACL_DRYRUN");
const ACL_GENPASS_1 = require("./ACL_GENPASS");
const ACL_GETUSER_1 = require("./ACL_GETUSER");
const ACL_LIST_1 = require("./ACL_LIST");
const ACL_LOAD_1 = require("./ACL_LOAD");
const ACL_LOG_RESET_1 = require("./ACL_LOG_RESET");
const ACL_LOG_1 = require("./ACL_LOG");
const ACL_SAVE_1 = require("./ACL_SAVE");
const ACL_SETUSER_1 = require("./ACL_SETUSER");
const ACL_USERS_1 = require("./ACL_USERS");
const ACL_WHOAMI_1 = require("./ACL_WHOAMI");
const APPEND_1 = require("./APPEND");
const ASKING_1 = require("./ASKING");
const AUTH_1 = require("./AUTH");
const BGREWRITEAOF_1 = require("./BGREWRITEAOF");
const BGSAVE_1 = require("./BGSAVE");
const BITCOUNT_1 = require("./BITCOUNT");
const BITFIELD_RO_1 = require("./BITFIELD_RO");
const BITFIELD_1 = require("./BITFIELD");
const BITOP_1 = require("./BITOP");
const BITPOS_1 = require("./BITPOS");
const BLMOVE_1 = require("./BLMOVE");
const BLMPOP_1 = require("./BLMPOP");
const BLPOP_1 = require("./BLPOP");
const BRPOP_1 = require("./BRPOP");
const BRPOPLPUSH_1 = require("./BRPOPLPUSH");
const CLIENT_CACHING_1 = require("./CLIENT_CACHING");
const CLIENT_GETNAME_1 = require("./CLIENT_GETNAME");
const CLIENT_GETREDIR_1 = require("./CLIENT_GETREDIR");
const CLIENT_ID_1 = require("./CLIENT_ID");
const CLIENT_INFO_1 = require("./CLIENT_INFO");
const CLIENT_KILL_1 = require("./CLIENT_KILL");
const CLIENT_LIST_1 = require("./CLIENT_LIST");
const CLIENT_NO_EVICT_1 = require("./CLIENT_NO-EVICT");
const CLIENT_PAUSE_1 = require("./CLIENT_PAUSE");
const CLIENT_SETNAME_1 = require("./CLIENT_SETNAME");
const CLUSTER_ADDSLOTS_1 = require("./CLUSTER_ADDSLOTS");
const CLUSTER_SLOTS_1 = require("./CLUSTER_SLOTS");
const CLUSTER_MEET_1 = require("./CLUSTER_MEET");
const CLUSTER_MYID_1 = require("./CLUSTER_MYID");
const CLUSTER_REPLICATE_1 = require("./CLUSTER_REPLICATE");
const DECR_1 = require("./DECR");
const DECRBY_1 = require("./DECRBY");
const GET_1 = require("./GET");
const GETDEL_1 = require("./GETDEL");
const GETEX_1 = require("./GETEX");
const GETRANGE_1 = require("./GETRANGE");
const GETSET_1 = require("./GETSET");
const FLUSHALL_1 = require("./FLUSHALL");
const HDEL_1 = require("./HDEL");
const HEXISTS_1 = require("./HEXISTS");
const HGET_1 = require("./HGET");
const HGETALL_1 = require("./HGETALL");
const HINCRBY_1 = require("./HINCRBY");
const HINCRBYFLOAT_1 = require("./HINCRBYFLOAT");
const HKEYS_1 = require("./HKEYS");
const HLEN_1 = require("./HLEN");
const HMGET_1 = require("./HMGET");
const HRANDFIELD_COUNT_WITHVALUES_1 = require("./HRANDFIELD_COUNT_WITHVALUES");
const HRANDFIELD_COUNT_1 = require("./HRANDFIELD_COUNT");
const HRANDFIELD_1 = require("./HRANDFIELD");
const HSCAN_1 = require("./HSCAN");
const HSET_1 = require("./HSET");
const HSETNX_1 = require("./HSETNX");
const HSTRLEN_1 = require("./HSTRLEN");
const HVALS_1 = require("./HVALS");
const INCR_1 = require("./INCR");
const INCRBY_1 = require("./INCRBY");
const INCRBYFLOAT_1 = require("./INCRBYFLOAT");
const INFO_1 = require("./INFO");
// import LCS_IDX_WITHMATCHLEN from './LCS_IDX_WITHMATCHLEN';
// import LCS_IDX from './LCS_IDX';
const LCS_LEN_1 = require("./LCS_LEN");
const LCS_1 = require("./LCS");
const LINDEX_1 = require("./LINDEX");
const LINSERT_1 = require("./LINSERT");
const LLEN_1 = require("./LLEN");
const LMOVE_1 = require("./LMOVE");
const LMPOP_1 = require("./LMPOP");
const LPOP_COUNT_1 = require("./LPOP_COUNT");
const LPOP_1 = require("./LPOP");
const LPOS_COUNT_1 = require("./LPOS_COUNT");
const LPOS_1 = require("./LPOS");
const LPUSH_1 = require("./LPUSH");
const LPUSHX_1 = require("./LPUSHX");
const LRANGE_1 = require("./LRANGE");
const LREM_1 = require("./LREM");
const LSET_1 = require("./LSET");
const LTRIM_1 = require("./LTRIM");
const MGET_1 = require("./MGET");
const MSET_1 = require("./MSET");
const MSETNX_1 = require("./MSETNX");
const PFADD_1 = require("./PFADD");
const PFCOUNT_1 = require("./PFCOUNT");
const PFMERGE_1 = require("./PFMERGE");
const PING_1 = require("./PING");
const PSETEX_1 = require("./PSETEX");
const RENAME_1 = require("./RENAME");
const RENAMENX_1 = require("./RENAMENX");
const RPOP_COUNT_1 = require("./RPOP_COUNT");
const RPOP_1 = require("./RPOP");
const RPOPLPUSH_1 = require("./RPOPLPUSH");
const RPUSH_1 = require("./RPUSH");
const RPUSHX_1 = require("./RPUSHX");
const SADD_1 = require("./SADD");
const SCAN_1 = require("./SCAN");
const SCARD_1 = require("./SCARD");
const SDIFF_1 = require("./SDIFF");
const SDIFFSTORE_1 = require("./SDIFFSTORE");
const SET_1 = require("./SET");
const SETBIT_1 = require("./SETBIT");
const SETEX_1 = require("./SETEX");
const SETNX_1 = require("./SETNX");
const SETRANGE_1 = require("./SETRANGE");
const SINTER_1 = require("./SINTER");
const SINTERCARD_1 = require("./SINTERCARD");
const SINTERSTORE_1 = require("./SINTERSTORE");
const SISMEMBER_1 = require("./SISMEMBER");
const SMEMBERS_1 = require("./SMEMBERS");
const SMISMEMBER_1 = require("./SMISMEMBER");
const SORT_RO_1 = require("./SORT_RO");
const SORT_STORE_1 = require("./SORT_STORE");
const SORT_1 = require("./SORT");
const SPUBLISH_1 = require("./SPUBLISH");
const SRANDMEMBER_COUNT_1 = require("./SRANDMEMBER_COUNT");
const SRANDMEMBER_1 = require("./SRANDMEMBER");
const SREM_1 = require("./SREM");
const SSCAN_1 = require("./SSCAN");
const STRLEN_1 = require("./STRLEN");
const TOUCH_1 = require("./TOUCH");
const TTL_1 = require("./TTL");
const TYPE_1 = require("./TYPE");
const UNLINK_1 = require("./UNLINK");
const UNWATCH_1 = require("./UNWATCH");
const WAIT_1 = require("./WAIT");
const WATCH_1 = require("./WATCH");
const XLEN_1 = require("./XLEN");
const ZADD_1 = require("./ZADD");
const ZCARD_1 = require("./ZCARD");
const ZCOUNT_1 = require("./ZCOUNT");
const ZDIFF_WITHSCORES_1 = require("./ZDIFF_WITHSCORES");
const ZDIFF_1 = require("./ZDIFF");
const ZDIFFSTORE_1 = require("./ZDIFFSTORE");
const ZINCRBY_1 = require("./ZINCRBY");
const ZINTER_WITHSCORES_1 = require("./ZINTER_WITHSCORES");
const ZINTER_1 = require("./ZINTER");
const ZINTERCARD_1 = require("./ZINTERCARD");
const ZINTERSTORE_1 = require("./ZINTERSTORE");
const ZLEXCOUNT_1 = require("./ZLEXCOUNT");
const ZMSCORE_1 = require("./ZMSCORE");
const ZRANDMEMBER_COUNT_WITHSCORES_1 = require("./ZRANDMEMBER_COUNT_WITHSCORES");
const ZRANDMEMBER_COUNT_1 = require("./ZRANDMEMBER_COUNT");
const ZRANDMEMBER_1 = require("./ZRANDMEMBER");
const ZRANGE_1 = require("./ZRANGE");
const ZRANK_1 = require("./ZRANK");
const ZREM_1 = require("./ZREM");
const ZREVRANK_1 = require("./ZREVRANK");
const ZSCAN_1 = require("./ZSCAN");
const ZSCORE_1 = require("./ZSCORE");
const ACL_CAT_1 = __importDefault(require("./ACL_CAT"));
const ACL_DELUSER_1 = __importDefault(require("./ACL_DELUSER"));
const ACL_DRYRUN_1 = __importDefault(require("./ACL_DRYRUN"));
const ACL_GENPASS_1 = __importDefault(require("./ACL_GENPASS"));
const ACL_GETUSER_1 = __importDefault(require("./ACL_GETUSER"));
const ACL_LIST_1 = __importDefault(require("./ACL_LIST"));
const ACL_LOAD_1 = __importDefault(require("./ACL_LOAD"));
const ACL_LOG_RESET_1 = __importDefault(require("./ACL_LOG_RESET"));
const ACL_LOG_1 = __importDefault(require("./ACL_LOG"));
const ACL_SAVE_1 = __importDefault(require("./ACL_SAVE"));
const ACL_SETUSER_1 = __importDefault(require("./ACL_SETUSER"));
const ACL_USERS_1 = __importDefault(require("./ACL_USERS"));
const ACL_WHOAMI_1 = __importDefault(require("./ACL_WHOAMI"));
const APPEND_1 = __importDefault(require("./APPEND"));
const ASKING_1 = __importDefault(require("./ASKING"));
const AUTH_1 = __importDefault(require("./AUTH"));
const BGREWRITEAOF_1 = __importDefault(require("./BGREWRITEAOF"));
const BGSAVE_1 = __importDefault(require("./BGSAVE"));
const BITCOUNT_1 = __importDefault(require("./BITCOUNT"));
const BITFIELD_RO_1 = __importDefault(require("./BITFIELD_RO"));
const BITFIELD_1 = __importDefault(require("./BITFIELD"));
const BITOP_1 = __importDefault(require("./BITOP"));
const BITPOS_1 = __importDefault(require("./BITPOS"));
const BLMOVE_1 = __importDefault(require("./BLMOVE"));
const BLMPOP_1 = __importDefault(require("./BLMPOP"));
const BLPOP_1 = __importDefault(require("./BLPOP"));
const BRPOP_1 = __importDefault(require("./BRPOP"));
const BRPOPLPUSH_1 = __importDefault(require("./BRPOPLPUSH"));
const CLIENT_CACHING_1 = __importDefault(require("./CLIENT_CACHING"));
const CLIENT_GETNAME_1 = __importDefault(require("./CLIENT_GETNAME"));
const CLIENT_GETREDIR_1 = __importDefault(require("./CLIENT_GETREDIR"));
const CLIENT_ID_1 = __importDefault(require("./CLIENT_ID"));
const CLIENT_INFO_1 = __importDefault(require("./CLIENT_INFO"));
const CLIENT_KILL_1 = __importDefault(require("./CLIENT_KILL"));
const CLIENT_LIST_1 = __importDefault(require("./CLIENT_LIST"));
const CLIENT_NO_EVICT_1 = __importDefault(require("./CLIENT_NO-EVICT"));
const CLIENT_PAUSE_1 = __importDefault(require("./CLIENT_PAUSE"));
const CLIENT_SETNAME_1 = __importDefault(require("./CLIENT_SETNAME"));
const CLIENT_TRACKING_1 = __importDefault(require("./CLIENT_TRACKING"));
const CLIENT_TRACKINGINFO_1 = __importDefault(require("./CLIENT_TRACKINGINFO"));
const CLIENT_UNPAUSE_1 = __importDefault(require("./CLIENT_UNPAUSE"));
const CLUSTER_ADDSLOTS_1 = __importDefault(require("./CLUSTER_ADDSLOTS"));
const CLUSTER_ADDSLOTSRANGE_1 = __importDefault(require("./CLUSTER_ADDSLOTSRANGE"));
const CLUSTER_BUMPEPOCH_1 = __importDefault(require("./CLUSTER_BUMPEPOCH"));
const CLUSTER_COUNT_FAILURE_REPORTS_1 = __importDefault(require("./CLUSTER_COUNT-FAILURE-REPORTS"));
const CLUSTER_COUNTKEYSINSLOT_1 = __importDefault(require("./CLUSTER_COUNTKEYSINSLOT"));
const CLUSTER_DELSLOTS_1 = __importDefault(require("./CLUSTER_DELSLOTS"));
const CLUSTER_DELSLOTSRANGE_1 = __importDefault(require("./CLUSTER_DELSLOTSRANGE"));
const CLUSTER_FAILOVER_1 = __importDefault(require("./CLUSTER_FAILOVER"));
const CLUSTER_FLUSHSLOTS_1 = __importDefault(require("./CLUSTER_FLUSHSLOTS"));
const CLUSTER_FORGET_1 = __importDefault(require("./CLUSTER_FORGET"));
const CLUSTER_GETKEYSINSLOT_1 = __importDefault(require("./CLUSTER_GETKEYSINSLOT"));
// import CLUSTER_INFO from './CLUSTER_INFO';
const CLUSTER_KEYSLOT_1 = __importDefault(require("./CLUSTER_KEYSLOT"));
const CLUSTER_LINKS_1 = __importDefault(require("./CLUSTER_LINKS"));
const CLUSTER_MEET_1 = __importDefault(require("./CLUSTER_MEET"));
const CLUSTER_MYID_1 = __importDefault(require("./CLUSTER_MYID"));
// import CLUSTER_NODES from './CLUSTER_NODES';
// import CLUSTER_REPLICAS from './CLUSTER_REPLICAS';
const CLUSTER_REPLICATE_1 = __importDefault(require("./CLUSTER_REPLICATE"));
const CLUSTER_RESET_1 = __importDefault(require("./CLUSTER_RESET"));
const CLUSTER_SAVECONFIG_1 = __importDefault(require("./CLUSTER_SAVECONFIG"));
const CLUSTER_SET_CONFIG_EPOCH_1 = __importDefault(require("./CLUSTER_SET-CONFIG-EPOCH"));
const CLUSTER_SETSLOT_1 = __importDefault(require("./CLUSTER_SETSLOT"));
const CLUSTER_SLOTS_1 = __importDefault(require("./CLUSTER_SLOTS"));
const CONFIG_GET_1 = __importDefault(require("./CONFIG_GET"));
const CONFIG_RESETSTAT_1 = __importDefault(require("./CONFIG_RESETSTAT"));
const CONFIG_REWRITE_1 = __importDefault(require("./CONFIG_REWRITE"));
const CONFIG_SET_1 = __importDefault(require("./CONFIG_SET"));
const COPY_1 = __importDefault(require("./COPY"));
const DBSIZE_1 = __importDefault(require("./DBSIZE"));
const DECR_1 = __importDefault(require("./DECR"));
const DECRBY_1 = __importDefault(require("./DECRBY"));
const DEL_1 = __importDefault(require("./DEL"));
const DUMP_1 = __importDefault(require("./DUMP"));
const ECHO_1 = __importDefault(require("./ECHO"));
const EVAL_RO_1 = __importDefault(require("./EVAL_RO"));
const EVAL_1 = __importDefault(require("./EVAL"));
const EVALSHA_RO_1 = __importDefault(require("./EVALSHA_RO"));
const EVALSHA_1 = __importDefault(require("./EVALSHA"));
const GEOADD_1 = __importDefault(require("./GEOADD"));
const GEODIST_1 = __importDefault(require("./GEODIST"));
const GEOHASH_1 = __importDefault(require("./GEOHASH"));
const GEOPOS_1 = __importDefault(require("./GEOPOS"));
const GEORADIUS_RO_WITH_1 = __importDefault(require("./GEORADIUS_RO_WITH"));
const GEORADIUS_RO_1 = __importDefault(require("./GEORADIUS_RO"));
const GEORADIUS_STORE_1 = __importDefault(require("./GEORADIUS_STORE"));
const GEORADIUS_WITH_1 = __importDefault(require("./GEORADIUS_WITH"));
const GEORADIUS_1 = __importDefault(require("./GEORADIUS"));
const GEORADIUSBYMEMBER_RO_WITH_1 = __importDefault(require("./GEORADIUSBYMEMBER_RO_WITH"));
const GEORADIUSBYMEMBER_RO_1 = __importDefault(require("./GEORADIUSBYMEMBER_RO"));
const GEORADIUSBYMEMBER_STORE_1 = __importDefault(require("./GEORADIUSBYMEMBER_STORE"));
const GEORADIUSBYMEMBER_WITH_1 = __importDefault(require("./GEORADIUSBYMEMBER_WITH"));
const GEORADIUSBYMEMBER_1 = __importDefault(require("./GEORADIUSBYMEMBER"));
const GEOSEARCH_WITH_1 = __importDefault(require("./GEOSEARCH_WITH"));
const GEOSEARCH_1 = __importDefault(require("./GEOSEARCH"));
const GEOSEARCHSTORE_1 = __importDefault(require("./GEOSEARCHSTORE"));
const GET_1 = __importDefault(require("./GET"));
const GETBIT_1 = __importDefault(require("./GETBIT"));
const GETDEL_1 = __importDefault(require("./GETDEL"));
const GETEX_1 = __importDefault(require("./GETEX"));
const GETRANGE_1 = __importDefault(require("./GETRANGE"));
const GETSET_1 = __importDefault(require("./GETSET"));
const EXISTS_1 = __importDefault(require("./EXISTS"));
const EXPIRE_1 = __importDefault(require("./EXPIRE"));
const EXPIREAT_1 = __importDefault(require("./EXPIREAT"));
const EXPIRETIME_1 = __importDefault(require("./EXPIRETIME"));
const FLUSHALL_1 = __importDefault(require("./FLUSHALL"));
const FLUSHDB_1 = __importDefault(require("./FLUSHDB"));
const FCALL_1 = __importDefault(require("./FCALL"));
const FCALL_RO_1 = __importDefault(require("./FCALL_RO"));
const FUNCTION_DELETE_1 = __importDefault(require("./FUNCTION_DELETE"));
const FUNCTION_DUMP_1 = __importDefault(require("./FUNCTION_DUMP"));
const FUNCTION_FLUSH_1 = __importDefault(require("./FUNCTION_FLUSH"));
const FUNCTION_KILL_1 = __importDefault(require("./FUNCTION_KILL"));
const FUNCTION_LIST_WITHCODE_1 = __importDefault(require("./FUNCTION_LIST_WITHCODE"));
const FUNCTION_LIST_1 = __importDefault(require("./FUNCTION_LIST"));
const FUNCTION_LOAD_1 = __importDefault(require("./FUNCTION_LOAD"));
const FUNCTION_RESTORE_1 = __importDefault(require("./FUNCTION_RESTORE"));
// import FUNCTION_STATS from './FUNCTION_STATS';
const HDEL_1 = __importDefault(require("./HDEL"));
const HELLO_1 = __importDefault(require("./HELLO"));
const HEXISTS_1 = __importDefault(require("./HEXISTS"));
const HGET_1 = __importDefault(require("./HGET"));
const HGETALL_1 = __importDefault(require("./HGETALL"));
const HINCRBY_1 = __importDefault(require("./HINCRBY"));
const HINCRBYFLOAT_1 = __importDefault(require("./HINCRBYFLOAT"));
const HKEYS_1 = __importDefault(require("./HKEYS"));
const HLEN_1 = __importDefault(require("./HLEN"));
const HMGET_1 = __importDefault(require("./HMGET"));
const HRANDFIELD_COUNT_WITHVALUES_1 = __importDefault(require("./HRANDFIELD_COUNT_WITHVALUES"));
const HRANDFIELD_COUNT_1 = __importDefault(require("./HRANDFIELD_COUNT"));
const HRANDFIELD_1 = __importDefault(require("./HRANDFIELD"));
const HSCAN_1 = __importDefault(require("./HSCAN"));
const HSET_1 = __importDefault(require("./HSET"));
const HSETNX_1 = __importDefault(require("./HSETNX"));
const HSTRLEN_1 = __importDefault(require("./HSTRLEN"));
const HVALS_1 = __importDefault(require("./HVALS"));
const INCR_1 = __importDefault(require("./INCR"));
const INCRBY_1 = __importDefault(require("./INCRBY"));
const INCRBYFLOAT_1 = __importDefault(require("./INCRBYFLOAT"));
const INFO_1 = __importDefault(require("./INFO"));
const KEYS_1 = __importDefault(require("./KEYS"));
const LASTSAVE_1 = __importDefault(require("./LASTSAVE"));
const LATENCY_DOCTOR_1 = __importDefault(require("./LATENCY_DOCTOR"));
const LATENCY_GRAPH_1 = __importDefault(require("./LATENCY_GRAPH"));
const LATENCY_LATEST_1 = __importDefault(require("./LATENCY_LATEST"));
const LCS_IDX_WITHMATCHLEN_1 = __importDefault(require("./LCS_IDX_WITHMATCHLEN"));
const LCS_IDX_1 = __importDefault(require("./LCS_IDX"));
const LCS_LEN_1 = __importDefault(require("./LCS_LEN"));
const LCS_1 = __importDefault(require("./LCS"));
const LINDEX_1 = __importDefault(require("./LINDEX"));
const LINSERT_1 = __importDefault(require("./LINSERT"));
const LLEN_1 = __importDefault(require("./LLEN"));
const LMOVE_1 = __importDefault(require("./LMOVE"));
const LMPOP_1 = __importDefault(require("./LMPOP"));
const LOLWUT_1 = __importDefault(require("./LOLWUT"));
const LPOP_COUNT_1 = __importDefault(require("./LPOP_COUNT"));
const LPOP_1 = __importDefault(require("./LPOP"));
const LPOS_COUNT_1 = __importDefault(require("./LPOS_COUNT"));
const LPOS_1 = __importDefault(require("./LPOS"));
const LPUSH_1 = __importDefault(require("./LPUSH"));
const LPUSHX_1 = __importDefault(require("./LPUSHX"));
const LRANGE_1 = __importDefault(require("./LRANGE"));
const LREM_1 = __importDefault(require("./LREM"));
const LSET_1 = __importDefault(require("./LSET"));
const LTRIM_1 = __importDefault(require("./LTRIM"));
const MEMORY_DOCTOR_1 = __importDefault(require("./MEMORY_DOCTOR"));
const MEMORY_MALLOC_STATS_1 = __importDefault(require("./MEMORY_MALLOC-STATS"));
const MEMORY_PURGE_1 = __importDefault(require("./MEMORY_PURGE"));
const MEMORY_STATS_1 = __importDefault(require("./MEMORY_STATS"));
const MEMORY_USAGE_1 = __importDefault(require("./MEMORY_USAGE"));
const MGET_1 = __importDefault(require("./MGET"));
const MODULE_LIST_1 = __importDefault(require("./MODULE_LIST"));
const MODULE_LOAD_1 = __importDefault(require("./MODULE_LOAD"));
const MODULE_UNLOAD_1 = __importDefault(require("./MODULE_UNLOAD"));
const MOVE_1 = __importDefault(require("./MOVE"));
const MSET_1 = __importDefault(require("./MSET"));
const MSETNX_1 = __importDefault(require("./MSETNX"));
const OBJECT_ENCODING_1 = __importDefault(require("./OBJECT_ENCODING"));
const OBJECT_FREQ_1 = __importDefault(require("./OBJECT_FREQ"));
const OBJECT_IDLETIME_1 = __importDefault(require("./OBJECT_IDLETIME"));
const OBJECT_REFCOUNT_1 = __importDefault(require("./OBJECT_REFCOUNT"));
const PERSIST_1 = __importDefault(require("./PERSIST"));
const PEXPIRE_1 = __importDefault(require("./PEXPIRE"));
const PEXPIREAT_1 = __importDefault(require("./PEXPIREAT"));
const PEXPIRETIME_1 = __importDefault(require("./PEXPIRETIME"));
const PFADD_1 = __importDefault(require("./PFADD"));
const PFCOUNT_1 = __importDefault(require("./PFCOUNT"));
const PFMERGE_1 = __importDefault(require("./PFMERGE"));
const PING_1 = __importDefault(require("./PING"));
const PSETEX_1 = __importDefault(require("./PSETEX"));
const PTTL_1 = __importDefault(require("./PTTL"));
const PUBLISH_1 = __importDefault(require("./PUBLISH"));
const PUBSUB_CHANNELS_1 = __importDefault(require("./PUBSUB_CHANNELS"));
const PUBSUB_NUMPAT_1 = __importDefault(require("./PUBSUB_NUMPAT"));
const PUBSUB_NUMSUB_1 = __importDefault(require("./PUBSUB_NUMSUB"));
const PUBSUB_SHARDCHANNELS_1 = __importDefault(require("./PUBSUB_SHARDCHANNELS"));
const RANDOMKEY_1 = __importDefault(require("./RANDOMKEY"));
const READONLY_1 = __importDefault(require("./READONLY"));
const RENAME_1 = __importDefault(require("./RENAME"));
const RENAMENX_1 = __importDefault(require("./RENAMENX"));
const ROLE_1 = __importDefault(require("./ROLE"));
const RPOP_COUNT_1 = __importDefault(require("./RPOP_COUNT"));
const RPOP_1 = __importDefault(require("./RPOP"));
const RPOPLPUSH_1 = __importDefault(require("./RPOPLPUSH"));
const RPUSH_1 = __importDefault(require("./RPUSH"));
const RPUSHX_1 = __importDefault(require("./RPUSHX"));
const SADD_1 = __importDefault(require("./SADD"));
const SCAN_1 = __importDefault(require("./SCAN"));
const SCARD_1 = __importDefault(require("./SCARD"));
const SCRIPT_DEBUG_1 = __importDefault(require("./SCRIPT_DEBUG"));
const SCRIPT_EXISTS_1 = __importDefault(require("./SCRIPT_EXISTS"));
const SCRIPT_FLUSH_1 = __importDefault(require("./SCRIPT_FLUSH"));
const SCRIPT_KILL_1 = __importDefault(require("./SCRIPT_KILL"));
const SCRIPT_LOAD_1 = __importDefault(require("./SCRIPT_LOAD"));
const SDIFF_1 = __importDefault(require("./SDIFF"));
const SDIFFSTORE_1 = __importDefault(require("./SDIFFSTORE"));
const SET_1 = __importDefault(require("./SET"));
const SETBIT_1 = __importDefault(require("./SETBIT"));
const SETEX_1 = __importDefault(require("./SETEX"));
const SETNX_1 = __importDefault(require("./SETNX"));
const SETRANGE_1 = __importDefault(require("./SETRANGE"));
const SINTER_1 = __importDefault(require("./SINTER"));
const SINTERCARD_1 = __importDefault(require("./SINTERCARD"));
const SINTERSTORE_1 = __importDefault(require("./SINTERSTORE"));
const SISMEMBER_1 = __importDefault(require("./SISMEMBER"));
const SMEMBERS_1 = __importDefault(require("./SMEMBERS"));
const SMISMEMBER_1 = __importDefault(require("./SMISMEMBER"));
const SMOVE_1 = __importDefault(require("./SMOVE"));
const SORT_RO_1 = __importDefault(require("./SORT_RO"));
const SORT_STORE_1 = __importDefault(require("./SORT_STORE"));
const SORT_1 = __importDefault(require("./SORT"));
const SPOP_COUNT_1 = __importDefault(require("./SPOP_COUNT"));
const SPOP_1 = __importDefault(require("./SPOP"));
const SPUBLISH_1 = __importDefault(require("./SPUBLISH"));
const SRANDMEMBER_COUNT_1 = __importDefault(require("./SRANDMEMBER_COUNT"));
const SRANDMEMBER_1 = __importDefault(require("./SRANDMEMBER"));
const SREM_1 = __importDefault(require("./SREM"));
const SSCAN_1 = __importDefault(require("./SSCAN"));
const STRLEN_1 = __importDefault(require("./STRLEN"));
const SUNION_1 = __importDefault(require("./SUNION"));
const SUNIONSTORE_1 = __importDefault(require("./SUNIONSTORE"));
const SWAPDB_1 = __importDefault(require("./SWAPDB"));
const TIME_1 = __importDefault(require("./TIME"));
const TOUCH_1 = __importDefault(require("./TOUCH"));
const TTL_1 = __importDefault(require("./TTL"));
const TYPE_1 = __importDefault(require("./TYPE"));
const UNLINK_1 = __importDefault(require("./UNLINK"));
const UNWATCH_1 = __importDefault(require("./UNWATCH"));
const WAIT_1 = __importDefault(require("./WAIT"));
const WATCH_1 = __importDefault(require("./WATCH"));
const XACK_1 = __importDefault(require("./XACK"));
const XADD_NOMKSTREAM_1 = __importDefault(require("./XADD_NOMKSTREAM"));
const XADD_1 = __importDefault(require("./XADD"));
const XDEL_1 = __importDefault(require("./XDEL"));
const XSETID_1 = __importDefault(require("./XSETID"));
const XTRIM_1 = __importDefault(require("./XTRIM"));
const XLEN_1 = __importDefault(require("./XLEN"));
const ZADD_INCR_1 = __importDefault(require("./ZADD_INCR"));
const ZADD_1 = __importDefault(require("./ZADD"));
const ZCARD_1 = __importDefault(require("./ZCARD"));
const ZCOUNT_1 = __importDefault(require("./ZCOUNT"));
const ZDIFF_WITHSCORES_1 = __importDefault(require("./ZDIFF_WITHSCORES"));
const ZDIFF_1 = __importDefault(require("./ZDIFF"));
const ZDIFFSTORE_1 = __importDefault(require("./ZDIFFSTORE"));
const ZINCRBY_1 = __importDefault(require("./ZINCRBY"));
const ZINTER_WITHSCORES_1 = __importDefault(require("./ZINTER_WITHSCORES"));
const ZINTER_1 = __importDefault(require("./ZINTER"));
const ZINTERCARD_1 = __importDefault(require("./ZINTERCARD"));
const ZINTERSTORE_1 = __importDefault(require("./ZINTERSTORE"));
const ZLEXCOUNT_1 = __importDefault(require("./ZLEXCOUNT"));
const ZMPOP_1 = __importDefault(require("./ZMPOP"));
const ZMSCORE_1 = __importDefault(require("./ZMSCORE"));
const ZPOPMAX_COUNT_1 = __importDefault(require("./ZPOPMAX_COUNT"));
const ZPOPMAX_1 = __importDefault(require("./ZPOPMAX"));
const ZPOPMIN_COUNT_1 = __importDefault(require("./ZPOPMIN_COUNT"));
const ZPOPMIN_1 = __importDefault(require("./ZPOPMIN"));
const ZRANDMEMBER_COUNT_WITHSCORES_1 = __importDefault(require("./ZRANDMEMBER_COUNT_WITHSCORES"));
const ZRANDMEMBER_COUNT_1 = __importDefault(require("./ZRANDMEMBER_COUNT"));
const ZRANDMEMBER_1 = __importDefault(require("./ZRANDMEMBER"));
const ZRANGE_WITHSCORES_1 = __importDefault(require("./ZRANGE_WITHSCORES"));
const ZRANGE_1 = __importDefault(require("./ZRANGE"));
const ZRANGEBYLEX_1 = __importDefault(require("./ZRANGEBYLEX"));
const ZRANGEBYSCORE_WITHSCORES_1 = __importDefault(require("./ZRANGEBYSCORE_WITHSCORES"));
const ZRANGEBYSCORE_1 = __importDefault(require("./ZRANGEBYSCORE"));
const ZRANGESTORE_1 = __importDefault(require("./ZRANGESTORE"));
const ZREMRANGEBYSCORE_1 = __importDefault(require("./ZREMRANGEBYSCORE"));
const ZRANK_WITHSCORE_1 = __importDefault(require("./ZRANK_WITHSCORE"));
const ZRANK_1 = __importDefault(require("./ZRANK"));
const ZREM_1 = __importDefault(require("./ZREM"));
const ZREMRANGEBYLEX_1 = __importDefault(require("./ZREMRANGEBYLEX"));
const ZREMRANGEBYRANK_1 = __importDefault(require("./ZREMRANGEBYRANK"));
const ZREVRANK_1 = __importDefault(require("./ZREVRANK"));
const ZSCAN_1 = __importDefault(require("./ZSCAN"));
const ZSCORE_1 = __importDefault(require("./ZSCORE"));
const ZUNION_WITHSCORES_1 = __importDefault(require("./ZUNION_WITHSCORES"));
const ZUNION_1 = __importDefault(require("./ZUNION"));
const ZUNIONSTORE_1 = __importDefault(require("./ZUNIONSTORE"));
exports.default = {
ACL_CAT: ACL_CAT_1.default,
aclCat: ACL_CAT_1.default,
ACL_DELUSER: ACL_DELUSER_1.default,
aclDelUser: ACL_DELUSER_1.default,
ACL_DRYRUN: ACL_DRYRUN_1.default,

@@ -238,6 +382,36 @@ aclDryRun: ACL_DRYRUN_1.default,

clientSetName: CLIENT_SETNAME_1.default,
CLIENT_TRACKING: CLIENT_TRACKING_1.default,
clientTracking: CLIENT_TRACKING_1.default,
CLIENT_TRACKINGINFO: CLIENT_TRACKINGINFO_1.default,
clientTrackingInfo: CLIENT_TRACKINGINFO_1.default,
CLIENT_UNPAUSE: CLIENT_UNPAUSE_1.default,
clientUnpause: CLIENT_UNPAUSE_1.default,
CLUSTER_ADDSLOTS: CLUSTER_ADDSLOTS_1.default,
clusterAddSlots: CLUSTER_ADDSLOTS_1.default,
CLUSTER_SLOTS: CLUSTER_SLOTS_1.default,
clusterSlots: CLUSTER_SLOTS_1.default,
CLUSTER_ADDSLOTSRANGE: CLUSTER_ADDSLOTSRANGE_1.default,
clusterAddSlotsRange: CLUSTER_ADDSLOTSRANGE_1.default,
CLUSTER_BUMPEPOCH: CLUSTER_BUMPEPOCH_1.default,
clusterBumpEpoch: CLUSTER_BUMPEPOCH_1.default,
'CLUSTER_COUNT-FAILURE-REPORTS': CLUSTER_COUNT_FAILURE_REPORTS_1.default,
clusterCountFailureReports: CLUSTER_COUNT_FAILURE_REPORTS_1.default,
CLUSTER_COUNTKEYSINSLOT: CLUSTER_COUNTKEYSINSLOT_1.default,
clusterCountKeysInSlot: CLUSTER_COUNTKEYSINSLOT_1.default,
CLUSTER_DELSLOTS: CLUSTER_DELSLOTS_1.default,
clusterDelSlots: CLUSTER_DELSLOTS_1.default,
CLUSTER_DELSLOTSRANGE: CLUSTER_DELSLOTSRANGE_1.default,
clusterDelSlotsRange: CLUSTER_DELSLOTSRANGE_1.default,
CLUSTER_FAILOVER: CLUSTER_FAILOVER_1.default,
clusterFailover: CLUSTER_FAILOVER_1.default,
CLUSTER_FLUSHSLOTS: CLUSTER_FLUSHSLOTS_1.default,
clusterFlushSlots: CLUSTER_FLUSHSLOTS_1.default,
CLUSTER_FORGET: CLUSTER_FORGET_1.default,
clusterForget: CLUSTER_FORGET_1.default,
CLUSTER_GETKEYSINSLOT: CLUSTER_GETKEYSINSLOT_1.default,
clusterGetKeysInSlot: CLUSTER_GETKEYSINSLOT_1.default,
// CLUSTER_INFO,
// clusterInfo: CLUSTER_INFO,
CLUSTER_KEYSLOT: CLUSTER_KEYSLOT_1.default,
clusterKeySlot: CLUSTER_KEYSLOT_1.default,
CLUSTER_LINKS: CLUSTER_LINKS_1.default,
clusterLinks: CLUSTER_LINKS_1.default,
CLUSTER_MEET: CLUSTER_MEET_1.default,

@@ -247,4 +421,30 @@ clusterMeet: CLUSTER_MEET_1.default,

clusterMyId: CLUSTER_MYID_1.default,
// CLUSTER_NODES,
// clusterNodes: CLUSTER_NODES,
// CLUSTER_REPLICAS,
// clusterReplicas: CLUSTER_REPLICAS,
CLUSTER_REPLICATE: CLUSTER_REPLICATE_1.default,
clusterReplicate: CLUSTER_REPLICATE_1.default,
CLUSTER_RESET: CLUSTER_RESET_1.default,
clusterReset: CLUSTER_RESET_1.default,
CLUSTER_SAVECONFIG: CLUSTER_SAVECONFIG_1.default,
clusterSaveConfig: CLUSTER_SAVECONFIG_1.default,
'CLUSTER_SET-CONFIG-EPOCH': CLUSTER_SET_CONFIG_EPOCH_1.default,
clusterSetConfigEpoch: CLUSTER_SET_CONFIG_EPOCH_1.default,
CLUSTER_SETSLOT: CLUSTER_SETSLOT_1.default,
clusterSetSlot: CLUSTER_SETSLOT_1.default,
CLUSTER_SLOTS: CLUSTER_SLOTS_1.default,
clusterSlots: CLUSTER_SLOTS_1.default,
CONFIG_GET: CONFIG_GET_1.default,
configGet: CONFIG_GET_1.default,
CONFIG_RESETASTAT: CONFIG_RESETSTAT_1.default,
configResetStat: CONFIG_RESETSTAT_1.default,
CONFIG_REWRITE: CONFIG_REWRITE_1.default,
configRewrite: CONFIG_REWRITE_1.default,
CONFIG_SET: CONFIG_SET_1.default,
configSet: CONFIG_SET_1.default,
COPY: COPY_1.default,
copy: COPY_1.default,
DBSIZE: DBSIZE_1.default,
dbSize: DBSIZE_1.default,
DECR: DECR_1.default,

@@ -254,4 +454,88 @@ decr: DECR_1.default,

decrBy: DECRBY_1.default,
DEL: DEL_1.default,
del: DEL_1.default,
DUMP: DUMP_1.default,
dump: DUMP_1.default,
ECHO: ECHO_1.default,
echo: ECHO_1.default,
EVAL_RO: EVAL_RO_1.default,
evalRo: EVAL_RO_1.default,
EVAL: EVAL_1.default,
eval: EVAL_1.default,
EVALSHA_RO: EVALSHA_RO_1.default,
evalShaRo: EVALSHA_RO_1.default,
EVALSHA: EVALSHA_1.default,
evalSha: EVALSHA_1.default,
EXISTS: EXISTS_1.default,
exists: EXISTS_1.default,
EXPIRE: EXPIRE_1.default,
expire: EXPIRE_1.default,
EXPIREAT: EXPIREAT_1.default,
expireAt: EXPIREAT_1.default,
EXPIRETIME: EXPIRETIME_1.default,
expireTime: EXPIRETIME_1.default,
FLUSHALL: FLUSHALL_1.default,
flushAll: FLUSHALL_1.default,
FLUSHDB: FLUSHDB_1.default,
flushDb: FLUSHDB_1.default,
FCALL: FCALL_1.default,
fCall: FCALL_1.default,
FCALL_RO: FCALL_RO_1.default,
fCallRo: FCALL_RO_1.default,
FUNCTION_DELETE: FUNCTION_DELETE_1.default,
functionDelete: FUNCTION_DELETE_1.default,
FUNCTION_DUMP: FUNCTION_DUMP_1.default,
functionDump: FUNCTION_DUMP_1.default,
FUNCTION_FLUSH: FUNCTION_FLUSH_1.default,
functionFlush: FUNCTION_FLUSH_1.default,
FUNCTION_KILL: FUNCTION_KILL_1.default,
functionKill: FUNCTION_KILL_1.default,
FUNCTION_LIST_WITHCODE: FUNCTION_LIST_WITHCODE_1.default,
functionListWithCode: FUNCTION_LIST_WITHCODE_1.default,
FUNCTION_LIST: FUNCTION_LIST_1.default,
functionList: FUNCTION_LIST_1.default,
FUNCTION_LOAD: FUNCTION_LOAD_1.default,
functionLoad: FUNCTION_LOAD_1.default,
FUNCTION_RESTORE: FUNCTION_RESTORE_1.default,
functionRestore: FUNCTION_RESTORE_1.default,
// FUNCTION_STATS,
// functionStats: FUNCTION_STATS,
GEOADD: GEOADD_1.default,
geoAdd: GEOADD_1.default,
GEODIST: GEODIST_1.default,
geoDist: GEODIST_1.default,
GEOHASH: GEOHASH_1.default,
geoHash: GEOHASH_1.default,
GEOPOS: GEOPOS_1.default,
geoPos: GEOPOS_1.default,
GEORADIUS_RO_WITH: GEORADIUS_RO_WITH_1.default,
geoRadiusRoWith: GEORADIUS_RO_WITH_1.default,
GEORADIUS_RO: GEORADIUS_RO_1.default,
geoRadiusRo: GEORADIUS_RO_1.default,
GEORADIUS_STORE: GEORADIUS_STORE_1.default,
geoRadiusStore: GEORADIUS_STORE_1.default,
GEORADIUS_WITH: GEORADIUS_WITH_1.default,
geoRadiusWith: GEORADIUS_WITH_1.default,
GEORADIUS: GEORADIUS_1.default,
geoRadius: GEORADIUS_1.default,
GEORADIUSBYMEMBER_RO_WITH: GEORADIUSBYMEMBER_RO_WITH_1.default,
geoRadiusByMemberRoWith: GEORADIUSBYMEMBER_RO_WITH_1.default,
GEORADIUSBYMEMBER_RO: GEORADIUSBYMEMBER_RO_1.default,
geoRadiusByMemberRo: GEORADIUSBYMEMBER_RO_1.default,
GEORADIUSBYMEMBER_STORE: GEORADIUSBYMEMBER_STORE_1.default,
geoRadiusByMemberStore: GEORADIUSBYMEMBER_STORE_1.default,
GEORADIUSBYMEMBER_WITH: GEORADIUSBYMEMBER_WITH_1.default,
geoRadiusByMemberWith: GEORADIUSBYMEMBER_WITH_1.default,
GEORADIUSBYMEMBER: GEORADIUSBYMEMBER_1.default,
geoRadiusByMember: GEORADIUSBYMEMBER_1.default,
GEOSEARCH_WITH: GEOSEARCH_WITH_1.default,
geoSearchWith: GEOSEARCH_WITH_1.default,
GEOSEARCH: GEOSEARCH_1.default,
geoSearch: GEOSEARCH_1.default,
GEOSEARCHSTORE: GEOSEARCHSTORE_1.default,
geoSearchStore: GEOSEARCHSTORE_1.default,
GET: GET_1.default,
get: GET_1.default,
GETBIT: GETBIT_1.default,
getBit: GETBIT_1.default,
GETDEL: GETDEL_1.default,

@@ -265,6 +549,6 @@ getDel: GETDEL_1.default,

getSet: GETSET_1.default,
FLUSHALL: FLUSHALL_1.default,
flushAll: FLUSHALL_1.default,
HDEL: HDEL_1.default,
hDel: HDEL_1.default,
HELLO: HELLO_1.default,
hello: HELLO_1.default,
HEXISTS: HEXISTS_1.default,

@@ -285,3 +569,3 @@ hExists: HEXISTS_1.default,

HMGET: HMGET_1.default,
hMGet: HMGET_1.default,
hmGet: HMGET_1.default,
HRANDFIELD_COUNT_WITHVALUES: HRANDFIELD_COUNT_WITHVALUES_1.default,

@@ -298,3 +582,3 @@ hRandFieldCountWithValues: HRANDFIELD_COUNT_WITHVALUES_1.default,

HSETNX: HSETNX_1.default,
hSetNx: HSETNX_1.default,
hSetNX: HSETNX_1.default,
HSTRLEN: HSTRLEN_1.default,

@@ -312,4 +596,16 @@ hStrLen: HSTRLEN_1.default,

info: INFO_1.default,
// LCS_IDX_WITHMATCHLEN,
// LCS_IDX,
KEYS: KEYS_1.default,
keys: KEYS_1.default,
LASTSAVE: LASTSAVE_1.default,
lastSave: LASTSAVE_1.default,
LATENCY_DOCTOR: LATENCY_DOCTOR_1.default,
latencyDoctor: LATENCY_DOCTOR_1.default,
LATENCY_GRAPH: LATENCY_GRAPH_1.default,
latencyGraph: LATENCY_GRAPH_1.default,
LATENCY_LATEST: LATENCY_LATEST_1.default,
latencyLatest: LATENCY_LATEST_1.default,
LCS_IDX_WITHMATCHLEN: LCS_IDX_WITHMATCHLEN_1.default,
lcsIdxWithMatchLen: LCS_IDX_WITHMATCHLEN_1.default,
LCS_IDX: LCS_IDX_1.default,
lcsIdx: LCS_IDX_1.default,
LCS_LEN: LCS_LEN_1.default,

@@ -329,2 +625,3 @@ lcsLen: LCS_LEN_1.default,

lmPop: LMPOP_1.default,
LOLWUT: LOLWUT_1.default,
LPOP_COUNT: LPOP_COUNT_1.default,

@@ -350,8 +647,42 @@ lPopCount: LPOP_COUNT_1.default,

lTrim: LTRIM_1.default,
MEMORY_DOCTOR: MEMORY_DOCTOR_1.default,
memoryDoctor: MEMORY_DOCTOR_1.default,
'MEMORY_MALLOC-STATS': MEMORY_MALLOC_STATS_1.default,
memoryMallocStats: MEMORY_MALLOC_STATS_1.default,
MEMORY_PURGE: MEMORY_PURGE_1.default,
memoryPurge: MEMORY_PURGE_1.default,
MEMORY_STATS: MEMORY_STATS_1.default,
memoryStats: MEMORY_STATS_1.default,
MEMORY_USAGE: MEMORY_USAGE_1.default,
memoryUsage: MEMORY_USAGE_1.default,
MGET: MGET_1.default,
mGet: MGET_1.default,
MODULE_LIST: MODULE_LIST_1.default,
moduleList: MODULE_LIST_1.default,
MODULE_LOAD: MODULE_LOAD_1.default,
moduleLoad: MODULE_LOAD_1.default,
MODULE_UNLOAD: MODULE_UNLOAD_1.default,
moduleUnload: MODULE_UNLOAD_1.default,
MOVE: MOVE_1.default,
move: MOVE_1.default,
MSET: MSET_1.default,
mSet: MSET_1.default,
MSETNX: MSETNX_1.default,
mSetNx: MSETNX_1.default,
mSetNX: MSETNX_1.default,
OBJECT_ENCODING: OBJECT_ENCODING_1.default,
objectEncoding: OBJECT_ENCODING_1.default,
OBJECT_FREQ: OBJECT_FREQ_1.default,
objectFreq: OBJECT_FREQ_1.default,
OBJECT_IDLETIME: OBJECT_IDLETIME_1.default,
objectIdleTime: OBJECT_IDLETIME_1.default,
OBJECT_REFCOUNT: OBJECT_REFCOUNT_1.default,
objectRefCount: OBJECT_REFCOUNT_1.default,
PERSIST: PERSIST_1.default,
persist: PERSIST_1.default,
PEXPIRE: PEXPIRE_1.default,
pExpire: PEXPIRE_1.default,
PEXPIREAT: PEXPIREAT_1.default,
pExpireAt: PEXPIREAT_1.default,
PEXPIRETIME: PEXPIRETIME_1.default,
pExpireTime: PEXPIRETIME_1.default,
PFADD: PFADD_1.default,

@@ -370,2 +701,18 @@ pfAdd: PFADD_1.default,

pSetEx: PSETEX_1.default,
PTTL: PTTL_1.default,
pTTL: PTTL_1.default,
PUBLISH: PUBLISH_1.default,
publish: PUBLISH_1.default,
PUBSUB_CHANNELS: PUBSUB_CHANNELS_1.default,
pubSubChannels: PUBSUB_CHANNELS_1.default,
PUBSUB_NUMPAT: PUBSUB_NUMPAT_1.default,
pubSubNumPat: PUBSUB_NUMPAT_1.default,
PUBSUB_NUMSUB: PUBSUB_NUMSUB_1.default,
pubSubNumSub: PUBSUB_NUMSUB_1.default,
PUBSUB_SHARDCHANNELS: PUBSUB_SHARDCHANNELS_1.default,
pubSubShardChannels: PUBSUB_SHARDCHANNELS_1.default,
RANDOMKEY: RANDOMKEY_1.default,
randomKey: RANDOMKEY_1.default,
READONLY: READONLY_1.default,
readonly: READONLY_1.default,
RENAME: RENAME_1.default,

@@ -377,2 +724,4 @@ rename: RENAME_1.default,

rPopCount: RPOP_COUNT_1.default,
ROLE: ROLE_1.default,
role: ROLE_1.default,
RPOP: RPOP_1.default,

@@ -392,2 +741,12 @@ rPop: RPOP_1.default,

sCard: SCARD_1.default,
SCRIPT_DEBUG: SCRIPT_DEBUG_1.default,
scriptDebug: SCRIPT_DEBUG_1.default,
SCRIPT_EXISTS: SCRIPT_EXISTS_1.default,
scriptExists: SCRIPT_EXISTS_1.default,
SCRIPT_FLUSH: SCRIPT_FLUSH_1.default,
scriptFlush: SCRIPT_FLUSH_1.default,
SCRIPT_KILL: SCRIPT_KILL_1.default,
scriptKill: SCRIPT_KILL_1.default,
SCRIPT_LOAD: SCRIPT_LOAD_1.default,
scriptLoad: SCRIPT_LOAD_1.default,
SDIFF: SDIFF_1.default,

@@ -419,2 +778,4 @@ sDiff: SDIFF_1.default,

smIsMember: SMISMEMBER_1.default,
SMOVE: SMOVE_1.default,
sMove: SMOVE_1.default,
SORT_RO: SORT_RO_1.default,

@@ -426,2 +787,6 @@ sortRo: SORT_RO_1.default,

sort: SORT_1.default,
SPOP_COUNT: SPOP_COUNT_1.default,
sPopCount: SPOP_COUNT_1.default,
SPOP: SPOP_1.default,
sPop: SPOP_1.default,
SPUBLISH: SPUBLISH_1.default,

@@ -439,2 +804,10 @@ sPublish: SPUBLISH_1.default,

strLen: STRLEN_1.default,
SUNION: SUNION_1.default,
sUnion: SUNION_1.default,
SUNIONSTORE: SUNIONSTORE_1.default,
sUnionStore: SUNIONSTORE_1.default,
SWAPDB: SWAPDB_1.default,
swapDb: SWAPDB_1.default,
TIME: TIME_1.default,
time: TIME_1.default,
TOUCH: TOUCH_1.default,

@@ -454,4 +827,18 @@ touch: TOUCH_1.default,

watch: WATCH_1.default,
XACK: XACK_1.default,
xAck: XACK_1.default,
XADD_NOMKSTREAM: XADD_NOMKSTREAM_1.default,
xAddNoMkStream: XADD_NOMKSTREAM_1.default,
XADD: XADD_1.default,
xAdd: XADD_1.default,
XDEL: XDEL_1.default,
xDel: XDEL_1.default,
XSETID: XSETID_1.default,
xSetId: XSETID_1.default,
XTRIM: XTRIM_1.default,
xTrim: XTRIM_1.default,
XLEN: XLEN_1.default,
xLen: XLEN_1.default,
ZADD_INCR: ZADD_INCR_1.default,
zAddIncr: ZADD_INCR_1.default,
ZADD: ZADD_1.default,

@@ -481,4 +868,14 @@ zAdd: ZADD_1.default,

zLexCount: ZLEXCOUNT_1.default,
ZMPOP: ZMPOP_1.default,
zmPop: ZMPOP_1.default,
ZMSCORE: ZMSCORE_1.default,
zmScore: ZMSCORE_1.default,
ZPOPMAX_COUNT: ZPOPMAX_COUNT_1.default,
zPopMaxCount: ZPOPMAX_COUNT_1.default,
ZPOPMAX: ZPOPMAX_1.default,
zPopMax: ZPOPMAX_1.default,
ZPOPMIN_COUNT: ZPOPMIN_COUNT_1.default,
zPopMinCount: ZPOPMIN_COUNT_1.default,
ZPOPMIN: ZPOPMIN_1.default,
zPopMin: ZPOPMIN_1.default,
ZRANDMEMBER_COUNT_WITHSCORES: ZRANDMEMBER_COUNT_WITHSCORES_1.default,

@@ -490,4 +887,16 @@ zRandMemberCountWithScores: ZRANDMEMBER_COUNT_WITHSCORES_1.default,

zRandMember: ZRANDMEMBER_1.default,
ZRANGE_WITHSCORES: ZRANGE_WITHSCORES_1.default,
zRangeWithScores: ZRANGE_WITHSCORES_1.default,
ZRANGE: ZRANGE_1.default,
zRange: ZRANGE_1.default,
ZRANGEBYLEX: ZRANGEBYLEX_1.default,
zRangeByLex: ZRANGEBYLEX_1.default,
ZRANGEBYSCORE_WITHSCORES: ZRANGEBYSCORE_WITHSCORES_1.default,
zRangeByScoreWithScores: ZRANGEBYSCORE_WITHSCORES_1.default,
ZRANGEBYSCORE: ZRANGEBYSCORE_1.default,
zRangeByScore: ZRANGEBYSCORE_1.default,
ZRANGESTORE: ZRANGESTORE_1.default,
zRangeStore: ZRANGESTORE_1.default,
ZRANK_WITHSCORE: ZRANK_WITHSCORE_1.default,
zRankWithScore: ZRANK_WITHSCORE_1.default,
ZRANK: ZRANK_1.default,

@@ -497,2 +906,8 @@ zRank: ZRANK_1.default,

zRem: ZREM_1.default,
ZREMRANGEBYLEX: ZREMRANGEBYLEX_1.default,
zRemRangeByLex: ZREMRANGEBYLEX_1.default,
ZREMRANGEBYRANK: ZREMRANGEBYRANK_1.default,
zRemRangeByRank: ZREMRANGEBYRANK_1.default,
ZREMRANGEBYSCORE: ZREMRANGEBYSCORE_1.default,
zRemRangeByScore: ZREMRANGEBYSCORE_1.default,
ZREVRANK: ZREVRANK_1.default,

@@ -503,3 +918,9 @@ zRevRank: ZREVRANK_1.default,

ZSCORE: ZSCORE_1.default,
zScore: ZSCORE_1.default
zScore: ZSCORE_1.default,
ZUNION_WITHSCORES: ZUNION_WITHSCORES_1.default,
zUnionWithScores: ZUNION_WITHSCORES_1.default,
ZUNION: ZUNION_1.default,
zUnion: ZUNION_1.default,
ZUNIONSTORE: ZUNIONSTORE_1.default,
zUnionStore: ZUNIONSTORE_1.default
};
import { RedisArgument, VerbatimStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, section?: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(section) {

import { RedisArgument, ArrayReply, BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, pattern: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(pattern) {

@@ -1,3 +0,8 @@

export declare const IS_READ_ONLY = true;
export declare function transformArguments(): Array<string>;
export declare function transformReply(reply: number): Date;
import { NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: () => NumberReply;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;
exports.IS_READ_ONLY = true;
function transformArguments() {
return ['LASTSAVE'];
}
exports.transformArguments = transformArguments;
function transformReply(reply) {
return new Date(reply);
}
exports.transformReply = transformReply;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['LASTSAVE'];
},
transformReply: undefined
};

@@ -1,2 +0,8 @@

export declare function transformArguments(): Array<string>;
export declare function transformReply(): string;
import { BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: () => BlobStringReply;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments() {
return ['LATENCY', 'DOCTOR'];
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['LATENCY', 'DOCTOR'];
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArguments } from '.';
// export type EventType =
// 'active-defrag-cycle'
// | 'aof-fsync-always'
// | 'aof-stat'
// | 'aof-rewrite-diff-write'
// | 'aof-rename'
// | 'aof-write'
// | 'aof-write-active-child'
// | 'aof-write-alone'
// | 'aof-write-pending-fsync'
// | 'command'
// | 'expire-cycle'
// | 'eviction-cycle'
// | 'eviction-del'
// | 'fast-command'
// | 'fork'
// | 'rdb-unlink-temp-file';
// export function transformArguments(event: EventType): RedisCommandArguments {
// return ['LATENCY', 'GRAPH', event];
// }
// export declare function transformReply(): string;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LATENCY_EVENTS = void 0;
exports.LATENCY_EVENTS = {
ACTIVE_DEFRAG_CYCLE: 'active-defrag-cycle',
AOF_FSYNC_ALWAYS: 'aof-fsync-always',
AOF_STAT: 'aof-stat',
AOF_REWRITE_DIFF_WRITE: 'aof-rewrite-diff-write',
AOF_RENAME: 'aof-rename',
AOF_WRITE: 'aof-write',
AOF_WRITE_ACTIVE_CHILD: 'aof-write-active-child',
AOF_WRITE_ALONE: 'aof-write-alone',
AOF_WRITE_PENDING_FSYNC: 'aof-write-pending-fsync',
COMMAND: 'command',
EXPIRE_CYCLE: 'expire-cycle',
EVICTION_CYCLE: 'eviction-cycle',
EVICTION_DEL: 'eviction-del',
FAST_COMMAND: 'fast-command',
FORK: 'fork',
RDB_UNLINK_TEMP_FILE: 'rdb-unlink-temp-file'
};
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments(event) {
return ['LATENCY', 'GRAPH', event];
},
transformReply: undefined
};
"use strict";
// import { RedisArgument, TuplesToMapReply, BlobStringReply, ArrayReply, NumberReply, Resp2Reply, Command, TuplesReply } from '../RESP/types';
// import LCS from './LCS';
// import { LcsIdxRange } from './LCS_IDX';
// interface LcsIdxOptions {
// MINMATCHLEN?: number;
// }
// export type LcsIdxWithMatchLenMatches = ArrayReply<
// TuplesReply<[
// key1: LcsIdxRange,
// key2: LcsIdxRange,
// len: NumberReply
// ]>
// >;
// export type LcsIdxReply = TuplesToMapReply<[
// [BlobStringReply<'matches'>, LcsIdxWithMatchLenMatches],
// [BlobStringReply<'len'>, NumberReply]
// ]>;
// export default {
// FIRST_KEY_INDEX: LCS.FIRST_KEY_INDEX,
// IS_READ_ONLY: LCS.IS_READ_ONLY,
// transformArguments(
// key1: RedisArgument,
// key2: RedisArgument,
// options?: LcsIdxOptions
// ) {
// const args = LCS.transformArguments(key1, key2);
// if (options?.MINMATCHLEN) {
// args.push('MINMATCHLEN', options.MINMATCHLEN.toString());
// }
// args.push('WITHMATCHLEN');
// return args;
// },
// transformReply: {
// 2: (reply: Resp2Reply<LcsIdxReply>) => ({
// matches: reply[1],
// len: reply[2]
// }),
// 3: undefined as unknown as () => LcsIdxReply
// }
// } as const satisfies Command;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const LCS_IDX_1 = __importDefault(require("./LCS_IDX"));
exports.default = {
FIRST_KEY_INDEX: LCS_IDX_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: LCS_IDX_1.default.IS_READ_ONLY,
transformArguments(key1, key2, options) {
const args = LCS_IDX_1.default.transformArguments(key1, key2);
args.push('WITHMATCHLEN');
return args;
},
transformReply: {
2: (reply) => ({
matches: reply[1],
len: reply[3]
}),
3: undefined
}
};
"use strict";
// import { RedisArgument, TuplesToMapReply, BlobStringReply, ArrayReply, NumberReply, Resp2Reply, Command, TuplesReply } from '../RESP/types';
// import LCS from './LCS';
// export interface LcsIdxOptions {
// MINMATCHLEN?: number;
// }
// export type LcsIdxRange = TuplesReply<[
// start: NumberReply,
// end: NumberReply
// ]>;
// export type LcsIdxMatches = ArrayReply<
// TuplesReply<[
// key1: LcsIdxRange,
// key2: LcsIdxRange
// ]>
// >;
// export type LcsIdxReply = TuplesToMapReply<[
// [BlobStringReply<'matches'>, LcsIdxMatches],
// [BlobStringReply<'len'>, NumberReply]
// ]>;
// export default {
// FIRST_KEY_INDEX: LCS.FIRST_KEY_INDEX,
// IS_READ_ONLY: LCS.IS_READ_ONLY,
// transformArguments(
// key1: RedisArgument,
// key2: RedisArgument,
// options?: LcsIdxOptions
// ) {
// const args = LCS.transformArguments(key1, key2);
// if (options?.MINMATCHLEN) {
// args.push('MINMATCHLEN', options.MINMATCHLEN.toString());
// }
// return args;
// },
// transformReply: {
// 2: (reply: Resp2Reply<LcsIdxReply>) => ({
// matches: reply[1],
// len: reply[2]
// }),
// 3: undefined as unknown as () => LcsIdxReply
// }
// } as const satisfies Command;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const LCS_1 = __importDefault(require("./LCS"));
exports.default = {
FIRST_KEY_INDEX: LCS_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: LCS_1.default.IS_READ_ONLY,
transformArguments(key1, key2, options) {
const args = LCS_1.default.transformArguments(key1, key2);
args.push('IDX');
if (options?.MINMATCHLEN) {
args.push('MINMATCHLEN', options.MINMATCHLEN.toString());
}
return args;
},
transformReply: {
2: (reply) => ({
matches: reply[1],
len: reply[3]
}),
3: undefined
}
};
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const LCS_1 = require("./LCS");
const LCS_1 = __importDefault(require("./LCS"));
exports.default = {

@@ -5,0 +8,0 @@ FIRST_KEY_INDEX: LCS_1.default.FIRST_KEY_INDEX,

@@ -6,2 +6,3 @@ /// <reference types="node" />

readonly FIRST_KEY_INDEX: 1;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, source: RedisArgument, destination: RedisArgument, sourceSide: ListSide, destinationSide: ListSide) => (string | Buffer)[];

@@ -8,0 +9,0 @@ readonly transformReply: () => BlobStringReply | NullReply;

@@ -5,2 +5,3 @@ "use strict";

FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(source, destination, sourceSide, destinationSide) {

@@ -7,0 +8,0 @@ return [

@@ -1,6 +0,11 @@

import { NullReply, TuplesReply, BlobStringReply } from '../RESP/types';
import { LMPopOptions, ListSide, RedisVariadicArgument } from './generic-transformers';
import { CommandArguments, NullReply, TuplesReply, BlobStringReply } from '../RESP/types';
import { ListSide, RedisVariadicArgument } from './generic-transformers';
export interface LMPopOptions {
COUNT?: number;
}
export declare function transformLMPopArguments(args: CommandArguments, keys: RedisVariadicArgument, side: ListSide, options?: LMPopOptions): CommandArguments;
declare const _default: {
readonly FIRST_KEY_INDEX: 2;
readonly transformArguments: (this: void, keys: RedisVariadicArgument, side: ListSide, options?: LMPopOptions) => import("../RESP/types").CommandArguments;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, keys: RedisVariadicArgument, side: ListSide, options?: LMPopOptions) => CommandArguments;
readonly transformReply: () => NullReply | TuplesReply<[

@@ -7,0 +12,0 @@ key: BlobStringReply,

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformLMPopArguments = void 0;
const generic_transformers_1 = require("./generic-transformers");
function transformLMPopArguments(args, keys, side, options) {
(0, generic_transformers_1.pushVariadicArgument)(args, keys);
args.push(side);
if (options?.COUNT) {
args.push('COUNT', options.COUNT.toString());
}
return args;
}
exports.transformLMPopArguments = transformLMPopArguments;
exports.default = {
FIRST_KEY_INDEX: 2,
IS_READ_ONLY: false,
transformArguments(keys, side, options) {
return (0, generic_transformers_1.transformLMPopArguments)(['LMPOP'], keys, side, options);
return transformLMPopArguments(['LMPOP'], keys, side, options);
},
transformReply: undefined
};
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const LPOS_1 = require("./LPOS");
const LPOS_1 = __importDefault(require("./LPOS"));
exports.default = {

@@ -5,0 +8,0 @@ FIRST_KEY_INDEX: LPOS_1.default.FIRST_KEY_INDEX,

@@ -6,4 +6,4 @@ import { RedisArgument, SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void, key: RedisArgument, index: number, element: RedisArgument) => RedisArgument[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -8,3 +8,3 @@ "use strict";

return [
'LREM',
'LSET',
key,

@@ -11,0 +11,0 @@ index.toString(),

@@ -5,4 +5,4 @@ import { RedisArgument, SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void, key: RedisArgument, start: number, stop: number) => RedisArgument[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -7,3 +7,3 @@ "use strict";

return [
'LREM',
'LTRIM',
key,

@@ -10,0 +10,0 @@ start.toString(),

@@ -1,2 +0,8 @@

export declare function transformArguments(): Array<string>;
export declare function transformReply(): string;
import { BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: () => BlobStringReply;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments() {
return ['MEMORY', 'DOCTOR'];
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['MEMORY', 'DOCTOR'];
},
transformReply: undefined
};

@@ -1,2 +0,8 @@

export declare function transformArguments(): Array<string>;
export declare function transformReply(): string;
import { BlobStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: () => BlobStringReply;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments() {
return ['MEMORY', 'MALLOC-STATS'];
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['MEMORY', 'MALLOC-STATS'];
},
transformReply: undefined
};

@@ -1,2 +0,8 @@

export declare function transformArguments(): Array<string>;
export declare function transformReply(): string;
import { SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void) => string[];
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = void 0;
function transformArguments() {
return ['MEMORY', 'PURGE'];
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments() {
return ['MEMORY', 'PURGE'];
},
transformReply: undefined
};

@@ -1,36 +0,149 @@

export declare function transformArguments(): Array<string>;
interface MemoryStatsReply {
peakAllocated: number;
totalAllocated: number;
startupAllocated: number;
replicationBacklog: number;
clientsReplicas: number;
clientsNormal: number;
aofBuffer: number;
luaCaches: number;
overheadTotal: number;
keysCount: number;
keysBytesPerKey: number;
datasetBytes: number;
datasetPercentage: number;
peakPercentage: number;
allocatorAllocated?: number;
allocatorActive?: number;
allocatorResident?: number;
allocatorFragmentationRatio?: number;
allocatorFragmentationBytes?: number;
allocatorRssRatio?: number;
allocatorRssBytes?: number;
rssOverheadRatio?: number;
rssOverheadBytes?: number;
fragmentation?: number;
fragmentationBytes: number;
db: {
[key: number]: {
overheadHashtableMain: number;
overheadHashtableExpires: number;
import { TuplesToMapReply, BlobStringReply, NumberReply, DoubleReply } from '../RESP/types';
export type MemoryStatsReply = TuplesToMapReply<[
[
BlobStringReply<'peak.allocated'>,
NumberReply
],
[
BlobStringReply<'total.allocated'>,
NumberReply
],
[
BlobStringReply<'startup.allocated'>,
NumberReply
],
[
BlobStringReply<'replication.backlog'>,
NumberReply
],
[
BlobStringReply<'clients.slaves'>,
NumberReply
],
[
BlobStringReply<'clients.normal'>,
NumberReply
],
[
BlobStringReply<'cluster.links'>,
NumberReply
],
[
BlobStringReply<'aof.buffer'>,
NumberReply
],
[
BlobStringReply<'lua.caches'>,
NumberReply
],
[
BlobStringReply<'functions.caches'>,
NumberReply
],
[
BlobStringReply<'overhead.total'>,
NumberReply
],
[
BlobStringReply<'keys.count'>,
NumberReply
],
[
BlobStringReply<'keys.bytes-per-key'>,
NumberReply
],
[
BlobStringReply<'dataset.bytes'>,
NumberReply
],
[
BlobStringReply<'dataset.percentage'>,
DoubleReply
],
[
BlobStringReply<'peak.percentage'>,
DoubleReply
],
[
BlobStringReply<'allocator.allocated'>,
NumberReply
],
[
BlobStringReply<'allocator.active'>,
NumberReply
],
[
BlobStringReply<'allocator.resident'>,
NumberReply
],
[
BlobStringReply<'allocator-fragmentation.ratio'>,
DoubleReply
],
[
BlobStringReply<'allocator-fragmentation.bytes'>,
NumberReply
],
[
BlobStringReply<'allocator-rss.ratio'>,
DoubleReply
],
[
BlobStringReply<'allocator-rss.bytes'>,
NumberReply
],
[
BlobStringReply<'rss-overhead.ratio'>,
DoubleReply
],
[
BlobStringReply<'rss-overhead.bytes'>,
NumberReply
],
[
BlobStringReply<'fragmentation'>,
DoubleReply
],
[
BlobStringReply<'fragmentation.bytes'>,
NumberReply
]
]>;
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void) => string[];
readonly transformReply: {
readonly 2: (rawReply: Array<BlobStringReply | NumberReply>) => {
"peak.allocated": NumberReply;
"total.allocated": NumberReply;
"startup.allocated": NumberReply;
"replication.backlog": NumberReply;
"clients.slaves": NumberReply;
"clients.normal": NumberReply;
"cluster.links": NumberReply;
"aof.buffer": NumberReply;
"lua.caches": NumberReply;
"functions.caches": NumberReply;
"overhead.total": NumberReply;
"keys.count": NumberReply;
"keys.bytes-per-key": NumberReply;
"dataset.bytes": NumberReply;
"dataset.percentage": DoubleReply;
"peak.percentage": DoubleReply;
"allocator.allocated": NumberReply;
"allocator.active": NumberReply;
"allocator.resident": NumberReply;
"allocator-fragmentation.ratio": DoubleReply;
"allocator-fragmentation.bytes": NumberReply;
"allocator-rss.ratio": DoubleReply;
"allocator-rss.bytes": NumberReply;
"rss-overhead.ratio": DoubleReply;
"rss-overhead.bytes": NumberReply;
fragmentation: DoubleReply;
"fragmentation.bytes": NumberReply;
};
readonly 3: () => MemoryStatsReply;
};
}
export declare function transformReply(rawReply: Array<string | number | Array<string | number>>): MemoryStatsReply;
export {};
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformReply = exports.transformArguments = void 0;
function transformArguments() {
return ['MEMORY', 'STATS'];
}
exports.transformArguments = transformArguments;
const FIELDS_MAPPING = {
'peak.allocated': 'peakAllocated',
'total.allocated': 'totalAllocated',
'startup.allocated': 'startupAllocated',
'replication.backlog': 'replicationBacklog',
'clients.slaves': 'clientsReplicas',
'clients.normal': 'clientsNormal',
'aof.buffer': 'aofBuffer',
'lua.caches': 'luaCaches',
'overhead.total': 'overheadTotal',
'keys.count': 'keysCount',
'keys.bytes-per-key': 'keysBytesPerKey',
'dataset.bytes': 'datasetBytes',
'dataset.percentage': 'datasetPercentage',
'peak.percentage': 'peakPercentage',
'allocator.allocated': 'allocatorAllocated',
'allocator.active': 'allocatorActive',
'allocator.resident': 'allocatorResident',
'allocator-fragmentation.ratio': 'allocatorFragmentationRatio',
'allocator-fragmentation.bytes': 'allocatorFragmentationBytes',
'allocator-rss.ratio': 'allocatorRssRatio',
'allocator-rss.bytes': 'allocatorRssBytes',
'rss-overhead.ratio': 'rssOverheadRatio',
'rss-overhead.bytes': 'rssOverheadBytes',
'fragmentation': 'fragmentation',
'fragmentation.bytes': 'fragmentationBytes'
}, DB_FIELDS_MAPPING = {
'overhead.hashtable.main': 'overheadHashtableMain',
'overhead.hashtable.expires': 'overheadHashtableExpires'
};
function transformReply(rawReply) {
const reply = {
db: {}
};
for (let i = 0; i < rawReply.length; i += 2) {
const key = rawReply[i];
if (key.startsWith('db.')) {
const dbTuples = rawReply[i + 1], db = {};
for (let j = 0; j < dbTuples.length; j += 2) {
db[DB_FIELDS_MAPPING[dbTuples[j]]] = dbTuples[j + 1];
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['MEMORY', 'STATS'];
},
transformReply: {
2: (rawReply) => {
const reply = {};
let i = 0;
while (i < rawReply.length) {
const key = rawReply[i++];
reply[key] = rawReply[i++];
}
reply.db[key.substring(3)] = db;
continue;
}
reply[FIELDS_MAPPING[key]] = Number(rawReply[i + 1]);
return reply;
},
3: undefined
}
return reply;
}
exports.transformReply = transformReply;
};

@@ -1,8 +0,11 @@

export declare const FIRST_KEY_INDEX = 1;
export declare const IS_READ_ONLY = true;
interface MemoryUsageOptions {
import { NumberReply, NullReply, RedisArgument } from '../RESP/types';
export interface MemoryUsageOptions {
SAMPLES?: number;
}
export declare function transformArguments(key: string, options?: MemoryUsageOptions): Array<string>;
export declare function transformReply(): number | null;
export {};
declare const _default: {
readonly FIRST_KEY_INDEX: 1;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, key: RedisArgument, options?: MemoryUsageOptions) => RedisArgument[];
readonly transformReply: () => NumberReply | NullReply;
};
export default _default;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
exports.FIRST_KEY_INDEX = 1;
exports.IS_READ_ONLY = true;
function transformArguments(key, options) {
const args = ['MEMORY', 'USAGE', key];
if (options?.SAMPLES) {
args.push('SAMPLES', options.SAMPLES.toString());
}
return args;
}
exports.transformArguments = transformArguments;
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: true,
transformArguments(key, options) {
const args = ['MEMORY', 'USAGE', key];
if (options?.SAMPLES) {
args.push('SAMPLES', options.SAMPLES.toString());
}
return args;
},
transformReply: undefined
};

@@ -1,2 +0,1 @@

/// <reference types="node" />
import { ArrayReply, BlobStringReply, NumberReply, Resp2Reply, TuplesToMapReply } from '../RESP/types';

@@ -9,3 +8,3 @@ export type ModuleListReply = ArrayReply<TuplesToMapReply<[

[
BlobStringReply<'version'>,
BlobStringReply<'ver'>,
NumberReply

@@ -20,14 +19,4 @@ ]

readonly 2: (reply: Resp2Reply<ModuleListReply>) => {
name: (string | Buffer) & {
RESP_TYPE: 36;
DEFAULT: string;
TYPES: Buffer;
FLAG: import("../RESP/types").Flag<string | Buffer>;
};
version: (number | `${number}`) & {
RESP_TYPE: 58;
DEFAULT: number;
TYPES: `${number}`;
FLAG: import("../RESP/types").Flag<number | `${number}`>;
};
name: BlobStringReply;
ver: NumberReply;
}[];

@@ -34,0 +23,0 @@ readonly 3: () => ModuleListReply;

@@ -13,3 +13,3 @@ "use strict";

name: module[1],
version: module[3]
ver: module[3]
}));

@@ -16,0 +16,0 @@ },

@@ -6,4 +6,4 @@ import { RedisArgument, SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void, path: RedisArgument, moduleArguments?: Array<RedisArgument>) => RedisArgument[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -6,4 +6,4 @@ import { RedisArgument, SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void, name: RedisArgument) => RedisArgument[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -7,5 +7,5 @@ "use strict";

transformArguments(key) {
return ['PEXPIREAT', key];
return ['PEXPIRETIME', key];
},
transformReply: undefined
};

@@ -1,2 +0,2 @@

import { RedisArgument, ArrayReply, BlobStringReply } from '../RESP/types';
import { RedisArgument, NumberReply } from '../RESP/types';
import { RedisVariadicArgument } from './generic-transformers';

@@ -7,4 +7,4 @@ declare const _default: {

readonly transformArguments: (this: void, key: RedisArgument, element?: RedisVariadicArgument) => RedisArgument[];
readonly transformReply: () => ArrayReply<BlobStringReply>;
readonly transformReply: () => NumberReply;
};
export default _default;
import { RedisArgument, SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, message?: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(message) {

@@ -7,3 +7,3 @@ "use strict";

transformArguments(pattern) {
const args = ['PUBSUB', 'bb'];
const args = ['PUBSUB', 'SHARDCHANNELS'];
if (pattern) {

@@ -10,0 +10,0 @@ args.push(pattern);

import { NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void) => string[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments() {

import { RedisArgument, SimpleStringReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, key: RedisArgument, newKey: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(key, newKey) {

import { RedisArgument, NumberReply } from '../RESP/types';
declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -4,0 +5,0 @@ readonly transformArguments: (this: void, key: RedisArgument, newKey: RedisArgument) => RedisArgument[];

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -5,0 +6,0 @@ transformArguments(key, newKey) {

@@ -5,3 +5,3 @@ import { ArrayReply, BlobStringReply, NumberReply } from '../RESP/types';

replicationOffest: NumberReply,
replicas: ArrayReply<[host: BlobStringReply, port: NumberReply, replicationOffest: NumberReply]>
replicas: ArrayReply<[host: BlobStringReply, port: BlobStringReply, replicationOffest: BlobStringReply]>
];

@@ -29,4 +29,4 @@ type SlaveRole = [

host: BlobStringReply;
port: NumberReply;
replicationOffest: NumberReply;
port: number;
replicationOffest: number;
}[];

@@ -43,3 +43,3 @@ master?: undefined;

};
state: BlobStringReply<"connect" | "connected" | "connecting" | "sync">;
state: BlobStringReply<"connect" | "connecting" | "sync" | "connected">;
dataReceived: NumberReply;

@@ -46,0 +46,0 @@ replicationOffest?: undefined;

@@ -18,4 +18,4 @@ "use strict";

host,
port,
replicationOffest,
port: Number(port),
replicationOffest: Number(replicationOffest)
})),

@@ -30,3 +30,3 @@ };

host: masterHost,
port: masterPort,
port: masterPort
},

@@ -41,3 +41,3 @@ state,

role,
masterNames,
masterNames
};

@@ -44,0 +44,0 @@ }

@@ -1,2 +0,2 @@

import { CommandArguments, RedisArgument, BlobStringReply, ArrayReply } from '../RESP/types';
import { RedisArgument, CommandArguments, BlobStringReply, ArrayReply } from '../RESP/types';
export interface ScanCommonOptions {

@@ -11,2 +11,3 @@ MATCH?: string;

declare const _default: {
readonly FIRST_KEY_INDEX: undefined;
readonly IS_READ_ONLY: true;

@@ -13,0 +14,0 @@ readonly transformArguments: (this: void, cursor: number, options?: ScanOptions) => CommandArguments;

@@ -16,2 +16,3 @@ "use strict";

exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,

@@ -18,0 +19,0 @@ transformArguments(cursor, options) {

@@ -6,4 +6,4 @@ import { SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void, mode: 'YES' | 'SYNC' | 'NO') => string[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -6,4 +6,4 @@ import { SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void, mode?: 'ASYNC' | 'SYNC') => string[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;

@@ -6,4 +6,4 @@ import { SimpleStringReply } from '../RESP/types';

readonly transformArguments: (this: void) => string[];
readonly transformReply: () => SimpleStringReply;
readonly transformReply: () => SimpleStringReply<'OK'>;
};
export default _default;
"use strict";
// export function transformArguments(mode?: 'NOSAVE' | 'SAVE'): Array<string> {
// const args = ['SHUTDOWN'];
// if (mode) {
// args.push(mode);
// }
// return args;
// }
// export declare function transformReply(): void;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(options) {
const args = ['SHUTDOWN'];
if (options?.mode) {
args.push(options.mode);
}
if (options?.NOW) {
args.push('NOW');
}
if (options?.FORCE) {
args.push('FORCE');
}
if (options?.ABORT) {
args.push('ABORT');
}
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// source: RedisCommandArgument,
// destination: RedisCommandArgument,
// member: RedisCommandArgument
// ): RedisCommandArguments {
// return ['SMOVE', source, destination, member];
// }
// export { transformBooleanReply as transformReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(source, destination, member) {
return ['SMOVE', source, destination, member];
},
transformReply: undefined
};
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const SORT_1 = require("./SORT");
const SORT_1 = __importStar(require("./SORT"));
exports.default = {

@@ -5,0 +28,0 @@ FIRST_KEY_INDEX: SORT_1.default.FIRST_KEY_INDEX,

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const SORT_1 = require("./SORT");
const SORT_1 = __importDefault(require("./SORT"));
exports.default = {

@@ -5,0 +8,0 @@ FIRST_KEY_INDEX: 1,

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// key: RedisCommandArgument,
// count?: number
// ): RedisCommandArguments {
// const args = ['SPOP', key];
// if (typeof count === 'number') {
// args.push(count.toString());
// }
// return args;
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key) {
return ['SPOP', key];
},
transformReply: undefined
};
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const SRANDMEMBER_1 = require("./SRANDMEMBER");
const SRANDMEMBER_1 = __importDefault(require("./SRANDMEMBER"));
exports.default = {

@@ -5,0 +8,0 @@ FIRST_KEY_INDEX: SRANDMEMBER_1.default.FIRST_KEY_INDEX,

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export function transformArguments(
// keys: RedisCommandArgument | Array<RedisCommandArgument>
// ): RedisCommandArguments {
// return pushVariadicArguments(['SUNION'], keys);
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: true,
transformArguments(keys) {
return (0, generic_transformers_1.pushVariadicArguments)(['SUNION'], keys);
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// destination: RedisCommandArgument,
// keys: RedisCommandArgument | Array<RedisCommandArgument>
// ): RedisCommandArguments {
// return pushVariadicArguments(['SUNIONSTORE', destination], keys);
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(destination, keys) {
return (0, generic_transformers_1.pushVariadicArguments)(['SUNIONSTORE', destination], keys);
},
transformReply: undefined
};
"use strict";
// export function transformArguments(index1: number, index2: number): Array<string> {
// return ['SWAPDB', index1.toString(), index2.toString()];
// }
// export declare function transformReply(): string;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(index1, index2) {
return ['SWAPDB', index1.toString(), index2.toString()];
},
transformReply: undefined
};
"use strict";
// export function transformArguments(): Array<string> {
// return ['TIME'];
// }
// interface TimeReply extends Date {
// microseconds: number;
// }
// export function transformReply(reply: [string, string]): TimeReply {
// const seconds = Number(reply[0]),
// microseconds = Number(reply[1]),
// d: Partial<TimeReply> = new Date(seconds * 1000 + microseconds / 1000);
// d.microseconds = microseconds;
// return d as TimeReply;
// }
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: true,
transformArguments() {
return ['TIME'];
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// key: RedisCommandArgument,
// group: RedisCommandArgument,
// id: RedisCommandArgument | Array<RedisCommandArgument>
// ): RedisCommandArguments {
// return pushVariadicArguments(['XACK', key, group], id);
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, group, id) {
return (0, generic_transformers_1.pushVariadicArguments)(['XACK', key, group], id);
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// interface XAddOptions {
// NOMKSTREAM?: true;
// TRIM?: {
// strategy?: 'MAXLEN' | 'MINID';
// strategyModifier?: '=' | '~';
// threshold: number;
// limit?: number;
// };
// }
// export function transformArguments(
// key: RedisCommandArgument,
// id: RedisCommandArgument,
// message: Record<string, RedisCommandArgument>,
// options?: XAddOptions
// ): RedisCommandArguments {
// const args = ['XADD', key];
// if (options?.NOMKSTREAM) {
// args.push('NOMKSTREAM');
// }
// if (options?.TRIM) {
// if (options.TRIM.strategy) {
// args.push(options.TRIM.strategy);
// }
// if (options.TRIM.strategyModifier) {
// args.push(options.TRIM.strategyModifier);
// }
// args.push(options.TRIM.threshold.toString());
// if (options.TRIM.limit) {
// args.push('LIMIT', options.TRIM.limit.toString());
// }
// }
// args.push(id);
// for (const [key, value] of Object.entries(message)) {
// args.push(key, value);
// }
// return args;
// }
// export declare function transformReply(): string;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pushXAddArguments = void 0;
function pushXAddArguments(args, id, message, options) {
if (options?.TRIM) {
if (options.TRIM.strategy) {
args.push(options.TRIM.strategy);
}
if (options.TRIM.strategyModifier) {
args.push(options.TRIM.strategyModifier);
}
args.push(options.TRIM.threshold.toString());
if (options.TRIM.limit) {
args.push('LIMIT', options.TRIM.limit.toString());
}
}
args.push(id);
for (const [key, value] of Object.entries(message)) {
args.push(key, value);
}
return args;
}
exports.pushXAddArguments = pushXAddArguments;
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, id, message, options) {
return pushXAddArguments(['XADD', key], id, message, options);
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformArguments as transformXAutoClaimArguments } from './XAUTOCLAIM';
Object.defineProperty(exports, "__esModule", { value: true });
// export { FIRST_KEY_INDEX } from './XAUTOCLAIM';

@@ -5,0 +6,0 @@ // export function transformArguments(...args: Parameters<typeof transformXAutoClaimArguments>): RedisCommandArguments {

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { StreamMessagesReply, transformStreamMessagesReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -5,0 +6,0 @@ // export interface XAutoClaimOptions {

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformArguments as transformXClaimArguments } from './XCLAIM';
Object.defineProperty(exports, "__esModule", { value: true });
// export { FIRST_KEY_INDEX } from './XCLAIM';

@@ -5,0 +6,0 @@ // export function transformArguments(...args: Parameters<typeof transformXClaimArguments>): RedisCommandArguments {

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -5,0 +6,0 @@ // export interface XClaimOptions {

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArguments } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// key: RedisCommandArgument,
// id: RedisCommandArgument | Array<RedisCommandArgument>
// ): RedisCommandArguments {
// return pushVariadicArguments(['XDEL', key], id);
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, id) {
return (0, generic_transformers_1.pushVariadicArguments)(['XDEL', key], id);
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -4,0 +5,0 @@ // interface XGroupCreateOptions {

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -4,0 +5,0 @@ // export function transformArguments(

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -4,0 +5,0 @@ // export function transformArguments(

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -4,0 +5,0 @@ // export function transformArguments(

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -4,0 +5,0 @@ // export function transformArguments(

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -15,2 +16,3 @@ // export const IS_READ_ONLY = true;

// idle: number;
// inactive: number;
// }>;

@@ -21,4 +23,5 @@ // export function transformReply(rawReply: Array<any>): XInfoConsumersReply {

// pending: consumer[3],
// idle: consumer[5]
// idle: consumer[5],
// inactive: consumer[7]
// }));
// }
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -4,0 +5,0 @@ // export const IS_READ_ONLY = true;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { StreamMessageReply, transformTuplesReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 2;

@@ -5,0 +6,0 @@ // export const IS_READ_ONLY = true;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -4,0 +5,0 @@ // export const IS_READ_ONLY = true;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -4,0 +5,0 @@ // export const IS_READ_ONLY = true;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -4,0 +5,0 @@ // export const IS_READ_ONLY = true;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = (streams: Array<XReadStream> | XReadStream): RedisCommandArgument => {

@@ -4,0 +5,0 @@ // return Array.isArray(streams) ? streams[0].key : streams.key;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export interface XReadGroupStream {

@@ -4,0 +5,0 @@ // key: RedisCommandArgument;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
Object.defineProperty(exports, "__esModule", { value: true });
// export const FIRST_KEY_INDEX = 1;

@@ -4,0 +5,0 @@ // export const IS_READ_ONLY = true;

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// interface XSetIdOptions {
// ENTRIESADDED?: number;
// MAXDELETEDID?: RedisCommandArgument;
// }
// export function transformArguments(
// key: RedisCommandArgument,
// lastId: RedisCommandArgument,
// options?: XSetIdOptions
// ): RedisCommandArguments {
// const args = ['XSETID', key, lastId];
// if (options?.ENTRIESADDED) {
// args.push('ENTRIESADDED', options.ENTRIESADDED.toString());
// }
// if (options?.MAXDELETEDID) {
// args.push('MAXDELETEDID', options.MAXDELETEDID);
// }
// return args;
// }
// export declare function transformReply(): 'OK';
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, lastId, options) {
const args = ['XSETID', key, lastId];
if (options?.ENTRIESADDED) {
args.push('ENTRIESADDED', options.ENTRIESADDED.toString());
}
if (options?.MAXDELETEDID) {
args.push('MAXDELETEDID', options.MAXDELETEDID);
}
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// interface XTrimOptions {
// strategyModifier?: '=' | '~';
// LIMIT?: number;
// }
// export function transformArguments(
// key: RedisCommandArgument,
// strategy: 'MAXLEN' | 'MINID',
// threshold: number,
// options?: XTrimOptions
// ): RedisCommandArguments {
// const args = ['XTRIM', key, strategy];
// if (options?.strategyModifier) {
// args.push(options.strategyModifier);
// }
// args.push(threshold.toString());
// if (options?.LIMIT) {
// args.push('LIMIT', options.LIMIT.toString());
// }
// return args;
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, strategy, threshold, options) {
const args = ['XTRIM', key, strategy];
if (options?.strategyModifier) {
args.push(options.strategyModifier);
}
args.push(threshold.toString());
if (options?.LIMIT) {
args.push('LIMIT', options.LIMIT.toString());
}
return args;
},
transformReply: undefined
};

@@ -1,3 +0,3 @@

import { RedisArgument, NumberReply, DoubleReply } from '../RESP/types';
import { ZMember, transformDoubleReply } from './generic-transformers';
import { RedisArgument } from '../RESP/types';
import { SortedSetMember } from './generic-transformers';
export interface ZAddOptions {

@@ -23,12 +23,12 @@ condition?: 'NX' | 'XX';

CH?: boolean;
INCR?: boolean;
}
declare const _default: {
readonly FIRST_KEY_INDEX: 1;
readonly transformArguments: (this: void, key: RedisArgument, members: ZMember | Array<ZMember>, options?: ZAddOptions) => RedisArgument[];
readonly transformArguments: (this: void, key: RedisArgument, members: SortedSetMember | Array<SortedSetMember>, options?: ZAddOptions) => RedisArgument[];
readonly transformReply: {
readonly 2: typeof transformDoubleReply;
readonly 3: () => NumberReply | DoubleReply;
2: (reply: import("../RESP/types").BlobStringReply) => number;
3: () => import("../RESP/types").DoubleReply;
};
};
export default _default;
export declare function pushMembers(args: Array<RedisArgument>, members: SortedSetMember | Array<SortedSetMember>): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.pushMembers = void 0;
const generic_transformers_1 = require("./generic-transformers");

@@ -29,22 +30,20 @@ exports.default = {

}
if (options?.INCR) {
args.push('INCR');
}
if (Array.isArray(members)) {
for (const member of members) {
pushMember(args, member);
}
}
else {
pushMember(args, members);
}
pushMembers(args, members);
return args;
},
transformReply: {
2: generic_transformers_1.transformDoubleReply,
3: undefined
transformReply: generic_transformers_1.transformDoubleReply
};
function pushMembers(args, members) {
if (Array.isArray(members)) {
for (const member of members) {
pushMember(args, member);
}
}
};
else {
pushMember(args, members);
}
}
exports.pushMembers = pushMembers;
function pushMember(args, member) {
args.push((0, generic_transformers_1.transformDoubleArgument)(member.score), member.value);
}

@@ -1,16 +0,16 @@

import { ArrayReply, BlobStringReply, NumberReply } from '../RESP/types';
import ZDIFF from './ZDIFF';
import { transformSortedSetWithScoresReply } from './generic-transformers';
declare const _default: {
readonly FIRST_KEY_INDEX: 2;
readonly IS_READ_ONLY: true;
readonly transformArguments: (this: void, keys: Parameters<typeof ZDIFF.transformArguments>[0]) => import("../RESP/types").CommandArguments;
readonly transformArguments: (this: void, keys: import("./generic-transformers").RedisVariadicArgument) => import("../RESP/types").CommandArguments;
readonly transformReply: {
readonly 2: typeof transformSortedSetWithScoresReply;
readonly 3: (reply: ArrayReply<[BlobStringReply, NumberReply]>) => {
value: BlobStringReply;
score: NumberReply;
2: (reply: import("../RESP/types").ArrayReply<import("../RESP/types").BlobStringReply>) => {
value: import("../RESP/types").BlobStringReply;
score: number;
}[];
3: (reply: import("../RESP/types").ArrayReply<import("../RESP/types").TuplesReply<[import("../RESP/types").BlobStringReply, import("../RESP/types").DoubleReply]>>) => {
value: import("../RESP/types").BlobStringReply;
score: import("../RESP/types").DoubleReply;
}[];
};
};
export default _default;
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZDIFF_1 = require("./ZDIFF");
const ZDIFF_1 = __importDefault(require("./ZDIFF"));
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 2,
IS_READ_ONLY: true,
transformArguments(keys) {
const args = ZDIFF_1.default.transformArguments(keys);
args.push('WITHSCORES');
return args;
FIRST_KEY_INDEX: ZDIFF_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: ZDIFF_1.default.IS_READ_ONLY,
transformArguments(...args) {
const redisArgs = ZDIFF_1.default.transformArguments(...args);
redisArgs.push('WITHSCORES');
return redisArgs;
},
transformReply: {
2: generic_transformers_1.transformSortedSetWithScoresReply,
3: (reply) => {
return reply.map(([value, score]) => ({ value, score }));
}
}
transformReply: generic_transformers_1.transformSortedSetReply
};
import { RedisArgument, DoubleReply } from '../RESP/types';
import { transformDoubleReply } from './generic-transformers';
declare const _default: {

@@ -7,6 +6,6 @@ readonly FIRST_KEY_INDEX: 1;

readonly transformReply: {
readonly 2: typeof transformDoubleReply;
readonly 3: () => DoubleReply;
2: (reply: import("../RESP/types").BlobStringReply) => number;
3: () => DoubleReply;
};
};
export default _default;

@@ -14,6 +14,3 @@ "use strict";

},
transformReply: {
2: generic_transformers_1.transformDoubleReply,
3: undefined
}
transformReply: generic_transformers_1.transformDoubleReply
};

@@ -1,3 +0,1 @@

import { ArrayReply, BlobStringReply, DoubleReply } from '../RESP/types';
import { transformSortedSetWithScoresReply } from './generic-transformers';
declare const _default: {

@@ -8,9 +6,12 @@ readonly FIRST_KEY_INDEX: 2;

readonly transformReply: {
readonly 2: typeof transformSortedSetWithScoresReply;
readonly 3: (reply: ArrayReply<[BlobStringReply, DoubleReply]>) => {
member: BlobStringReply;
score: DoubleReply;
2: (reply: import("../RESP/types").ArrayReply<import("../RESP/types").BlobStringReply>) => {
value: import("../RESP/types").BlobStringReply;
score: number;
}[];
3: (reply: import("../RESP/types").ArrayReply<import("../RESP/types").TuplesReply<[import("../RESP/types").BlobStringReply, import("../RESP/types").DoubleReply]>>) => {
value: import("../RESP/types").BlobStringReply;
score: import("../RESP/types").DoubleReply;
}[];
};
};
export default _default;
"use strict";
// import { RedisCommandArguments } from '.';
// import { transformArguments as transformZInterArguments } from './ZINTER';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZINTER_1 = require("./ZINTER");
const ZINTER_1 = __importDefault(require("./ZINTER"));
const generic_transformers_1 = require("./generic-transformers");

@@ -15,11 +16,3 @@ exports.default = {

},
transformReply: {
2: generic_transformers_1.transformSortedSetWithScoresReply,
3: (reply) => {
return reply.map(([member, score]) => ({
member,
score
}));
}
}
transformReply: generic_transformers_1.transformSortedSetReply
};
import { RedisArgument, ArrayReply, BlobStringReply } from '../RESP/types';
import { ZKeys } from './generic-transformers';
export type ZInterKeyAndWeight = {

@@ -10,3 +11,3 @@ key: RedisArgument;

}
export declare function pushZInterArguments(args: Array<RedisArgument>, keys: ZInterKeys<RedisArgument> | ZInterKeys<ZInterKeyAndWeight>, options?: ZInterOptions): RedisArgument[];
export declare function pushZInterArguments(args: Array<RedisArgument>, keys: ZKeys, options?: ZInterOptions): RedisArgument[];
declare const _default: {

@@ -13,0 +14,0 @@ readonly FIRST_KEY_INDEX: 2;

@@ -6,28 +6,3 @@ "use strict";

function pushZInterArguments(args, keys, options) {
if (Array.isArray(keys)) {
args.push(keys.length.toString());
if (keys.length) {
if (isPlainKeys(keys)) {
args = args.concat(keys);
}
else {
const start = args.length;
args[start + keys.length] = 'WEIGHTS';
for (let i = 0; i < keys.length; i++) {
const index = start + i;
args[index] = keys[i].key;
args[index + 1 + keys.length] = (0, generic_transformers_1.transformDoubleArgument)(keys[i].weight);
}
}
}
}
else {
args.push('1');
if (isPlainKey(keys)) {
args.push(keys);
}
else {
args.push(keys.key, 'WEIGHTS', (0, generic_transformers_1.transformDoubleArgument)(keys.weight));
}
}
args = (0, generic_transformers_1.pushZKeysArguments)(args, keys);
if (options?.AGGREGATE) {

@@ -39,8 +14,2 @@ args.push('AGGREGATE', options.AGGREGATE);

exports.pushZInterArguments = pushZInterArguments;
function isPlainKey(key) {
return typeof key === 'string' || Buffer.isBuffer(key);
}
function isPlainKeys(keys) {
return isPlainKey(keys[0]);
}
exports.default = {

@@ -47,0 +16,0 @@ FIRST_KEY_INDEX: 2,

import { RedisArgument, NumberReply } from '../RESP/types';
import { ZInterKeyAndWeight, ZInterKeys, ZInterOptions } from './ZINTER';
import { ZInterOptions } from './ZINTER';
import { ZKeys } from './generic-transformers';
declare const _default: {
readonly FIRST_KEY_INDEX: 1;
readonly transformArguments: (this: void, destination: RedisArgument, keys: ZInterKeys<RedisArgument> | ZInterKeys<ZInterKeyAndWeight>, options?: ZInterOptions) => RedisArgument[];
readonly IS_READ_ONLY: false;
readonly transformArguments: (this: void, destination: RedisArgument, keys: ZKeys, options?: ZInterOptions) => RedisArgument[];
readonly transformReply: () => NumberReply;
};
export default _default;

@@ -6,2 +6,3 @@ "use strict";

FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(destination, keys, options) {

@@ -8,0 +9,0 @@ return (0, ZINTER_1.pushZInterArguments)(['ZINTERSTORE', destination], keys, options);

"use strict";
// import { NullReply, TuplesReply, BlobStringReply, DoubleReply, ArrayReply, Resp2Reply, Command, RedisArgument } from '../RESP/types';
// import { pushVariadicArgument, RedisVariadicArgument, SortedSetSide } from './generic-transformers';
// export interface ZMPopOptions {
// COUNT?: number;
// }
// export type ZMPopRawReply = NullReply | TuplesReply<[
// key: BlobStringReply,
// elements: ArrayReply<TuplesReply<[
// member: BlobStringReply,
// score: DoubleReply
// ]>>
// ]>;
// export function pushZMPopArguments(
// args: Array<RedisArgument>,
// keys: RedisVariadicArgument,
// side: SortedSetSide,
// options: ZMPopOptions
// )
// export default {
// FIRST_KEY_INDEX: 2,
// IS_READ_ONLY: false,
// transformArguments(
// keys: RedisVariadicArgument,
// side: SortedSetSide,
// options?: ZMPopOptions
// ) {
// const args = pushVariadicArgument(['ZMPOP'], keys);
// args.push(side);
// if (options?.COUNT) {
// args.push('COUNT', options.COUNT.toString());
// }
// return args;
// },
// transformReply: {
// 2: (reply: Resp2Reply<ZMPopRawReply>) => {
// return reply === null ? null : {
// key: reply[0],
// elements: reply[1].map(([member, score]) => ({
// member,
// score: Number(score)
// }))
// };
// },
// 3: (reply: ZMPopRawReply) => {
// return reply === null ? null : {
// key: reply[0],
// elements: reply[1].map(([member, score]) => ({
// member,
// score
// }))
// };
// },
// }
// } as const satisfies Command;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 2,
IS_READ_ONLY: false,
transformArguments(keys, side, options) {
const args = (0, generic_transformers_1.pushVariadicArgument)(['ZMPOP'], keys);
args.push(side);
if (options?.COUNT) {
args.push('COUNT', options.COUNT.toString());
}
return args;
},
transformReply: {
2: (reply) => {
return reply === null ? null : {
key: reply[0],
members: reply[1].map(([value, score]) => ({
value,
score: Number(score)
}))
};
},
3: (reply) => {
return reply === null ? null : {
key: reply[0],
members: generic_transformers_1.transformSortedSetReply[3](reply[1])
};
},
}
};

@@ -12,3 +12,3 @@ "use strict";

2: (reply) => {
return reply.map(score => score === null ? null : Number(score));
return reply.map(generic_transformers_1.transformNullableDoubleReply[2]);
},

@@ -15,0 +15,0 @@ 3: undefined

"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformArguments as transformZPopMaxArguments } from './ZPOPMAX';
// export { FIRST_KEY_INDEX } from './ZPOPMAX';
// export function transformArguments(
// key: RedisCommandArgument,
// count: number
// ): RedisCommandArguments {
// return [
// ...transformZPopMaxArguments(key),
// count.toString()
// ];
// }
// export { transformSortedSetWithScoresReply as transformReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(key, count) {
return ['ZPOPMAX', key, count.toString()];
},
transformReply: generic_transformers_1.transformSortedSetReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(key: RedisCommandArgument): RedisCommandArguments {
// return [
// 'ZPOPMAX',
// key
// ];
// }
// export { transformSortedSetMemberNullReply as transformReply } from './generic-transformers';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZPOPMIN_1 = __importDefault(require("./ZPOPMIN"));
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key) {
return ['ZPOPMAX', key];
},
transformReply: ZPOPMIN_1.default.transformReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformArguments as transformZPopMinArguments } from './ZPOPMIN';
// export { FIRST_KEY_INDEX } from './ZPOPMIN';
// export function transformArguments(
// key: RedisCommandArgument,
// count: number
// ): RedisCommandArguments {
// return [
// ...transformZPopMinArguments(key),
// count.toString()
// ];
// }
// export { transformSortedSetWithScoresReply as transformReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: undefined,
IS_READ_ONLY: false,
transformArguments(key, count) {
return ['ZPOPMIN', key, count.toString()];
},
transformReply: generic_transformers_1.transformSortedSetReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(key: RedisCommandArgument): RedisCommandArguments {
// return [
// 'ZPOPMIN',
// key
// ];
// }
// export { transformSortedSetMemberNullReply as transformReply } from './generic-transformers';
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key) {
return ['ZPOPMIN', key];
},
transformReply: {
2: (reply) => {
if (reply.length === 0)
return null;
return {
value: reply[0],
score: Number(reply[1])
};
},
3: (reply) => {
if (reply.length === 0)
return null;
return {
value: reply[0],
score: reply[1]
};
}
}
};

@@ -11,3 +11,3 @@ import { RedisArgument } from '../RESP/types';

}[];
3: (reply: import("../RESP/types").ArrayReply<[import("../RESP/types").BlobStringReply, import("../RESP/types").DoubleReply]>) => {
3: (reply: import("../RESP/types").ArrayReply<import("../RESP/types").TuplesReply<[import("../RESP/types").BlobStringReply, import("../RESP/types").DoubleReply]>>) => {
value: import("../RESP/types").BlobStringReply;

@@ -14,0 +14,0 @@ score: import("../RESP/types").DoubleReply;

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZRANDMEMBER_COUNT_1 = require("./ZRANDMEMBER_COUNT");
const ZRANDMEMBER_COUNT_1 = __importDefault(require("./ZRANDMEMBER_COUNT"));
const generic_transformers_1 = require("./generic-transformers");

@@ -5,0 +8,0 @@ exports.default = {

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZRANDMEMBER_1 = require("./ZRANDMEMBER");
const ZRANDMEMBER_1 = __importDefault(require("./ZRANDMEMBER"));
exports.default = {

@@ -5,0 +8,0 @@ FIRST_KEY_INDEX: ZRANDMEMBER_1.default.FIRST_KEY_INDEX,

"use strict";
// import { RedisCommandArguments } from '.';
// import { transformArguments as transformZRangeArguments } from './ZRANGE';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANGE';
// export function transformArguments(...args: Parameters<typeof transformZRangeArguments>): RedisCommandArguments {
// return [
// ...transformZRangeArguments(...args),
// 'WITHSCORES'
// ];
// }
// export { transformSortedSetWithScoresReply as transformReply } from './generic-transformers';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZRANGE_1 = __importDefault(require("./ZRANGE"));
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: ZRANGE_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: ZRANGE_1.default.IS_READ_ONLY,
transformArguments(...args) {
const redisArgs = ZRANGE_1.default.transformArguments(...args);
redisArgs.push('WITHSCORES');
return redisArgs;
},
transformReply: generic_transformers_1.transformSortedSetReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformStringDoubleArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export interface ZRangeByLexOptions {
// LIMIT?: {
// offset: number;
// count: number;
// };
// }
// export function transformArguments(
// key: RedisCommandArgument,
// min: RedisCommandArgument,
// max: RedisCommandArgument,
// options?: ZRangeByLexOptions
// ): RedisCommandArguments {
// const args = [
// 'ZRANGEBYLEX',
// key,
// transformStringDoubleArgument(min),
// transformStringDoubleArgument(max)
// ];
// if (options?.LIMIT) {
// args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());
// }
// return args;
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: true,
transformArguments(key, min, max, options) {
const args = [
'ZRANGEBYLEX',
key,
(0, generic_transformers_1.transformStringDoubleArgument)(min),
(0, generic_transformers_1.transformStringDoubleArgument)(max)
];
if (options?.LIMIT) {
args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());
}
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { ZRangeByScoreOptions, transformArguments as transformZRangeByScoreArguments } from './ZRANGEBYSCORE';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZRANGEBYSCORE';
// export function transformArguments(
// key: RedisCommandArgument,
// min: string | number,
// max: string | number,
// options?: ZRangeByScoreOptions
// ): RedisCommandArguments {
// return [
// ...transformZRangeByScoreArguments(key, min, max, options),
// 'WITHSCORES'
// ];
// }
// export { transformSortedSetWithScoresReply as transformReply } from './generic-transformers';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZRANGEBYSCORE_1 = __importDefault(require("./ZRANGEBYSCORE"));
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: ZRANGEBYSCORE_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: ZRANGEBYSCORE_1.default.IS_READ_ONLY,
transformArguments(...args) {
const redisArgs = ZRANGEBYSCORE_1.default.transformArguments(...args);
redisArgs.push('WITHSCORES');
return redisArgs;
},
transformReply: generic_transformers_1.transformSortedSetReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformStringDoubleArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export const IS_READ_ONLY = true;
// export interface ZRangeByScoreOptions {
// LIMIT?: {
// offset: number;
// count: number;
// };
// }
// export function transformArguments(
// key: RedisCommandArgument,
// min: string | number,
// max: string | number,
// options?: ZRangeByScoreOptions
// ): RedisCommandArguments {
// const args = [
// 'ZRANGEBYSCORE',
// key,
// transformStringDoubleArgument(min),
// transformStringDoubleArgument(max)
// ];
// if (options?.LIMIT) {
// args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());
// }
// return args;
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: true,
transformArguments(key, min, max, options) {
const args = [
'ZRANGEBYSCORE',
key,
(0, generic_transformers_1.transformStringDoubleArgument)(min),
(0, generic_transformers_1.transformStringDoubleArgument)(max)
];
if (options?.LIMIT) {
args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());
}
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformStringDoubleArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// interface ZRangeStoreOptions {
// BY?: 'SCORE' | 'LEX';
// REV?: true;
// LIMIT?: {
// offset: number;
// count: number;
// };
// WITHSCORES?: true;
// }
// export function transformArguments(
// dst: RedisCommandArgument,
// src: RedisCommandArgument,
// min: RedisCommandArgument | number,
// max: RedisCommandArgument | number,
// options?: ZRangeStoreOptions
// ): RedisCommandArguments {
// const args = [
// 'ZRANGESTORE',
// dst,
// src,
// transformStringDoubleArgument(min),
// transformStringDoubleArgument(max)
// ];
// switch (options?.BY) {
// case 'SCORE':
// args.push('BYSCORE');
// break;
// case 'LEX':
// args.push('BYLEX');
// break;
// }
// if (options?.REV) {
// args.push('REV');
// }
// if (options?.LIMIT) {
// args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());
// }
// if (options?.WITHSCORES) {
// args.push('WITHSCORES');
// }
// return args;
// }
// export function transformReply(reply: number): number {
// if (typeof reply !== 'number') {
// throw new TypeError(`Upgrade to Redis 6.2.5 and up (https://github.com/redis/redis/pull/9089)`);
// }
// return reply;
// }
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(destination, source, min, max, options) {
const args = [
'ZRANGESTORE',
destination,
source,
(0, generic_transformers_1.transformStringDoubleArgument)(min),
(0, generic_transformers_1.transformStringDoubleArgument)(max)
];
switch (options?.BY) {
case 'SCORE':
args.push('BYSCORE');
break;
case 'LEX':
args.push('BYLEX');
break;
}
if (options?.REV) {
args.push('REV');
}
if (options?.LIMIT) {
args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());
}
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformStringDoubleArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// key: RedisCommandArgument,
// min: RedisCommandArgument | number,
// max: RedisCommandArgument | number
// ): RedisCommandArguments {
// return [
// 'ZREMRANGEBYLEX',
// key,
// transformStringDoubleArgument(min),
// transformStringDoubleArgument(max)
// ];
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, min, max) {
return [
'ZREMRANGEBYLEX',
key,
(0, generic_transformers_1.transformStringDoubleArgument)(min),
(0, generic_transformers_1.transformStringDoubleArgument)(max)
];
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// key: RedisCommandArgument,
// start: number,
// stop: number
// ): RedisCommandArguments {
// return ['ZREMRANGEBYRANK', key, start.toString(), stop.toString()];
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, start, stop) {
return ['ZREMRANGEBYRANK', key, start.toString(), stop.toString()];
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { transformStringDoubleArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// export function transformArguments(
// key: RedisCommandArgument,
// min: RedisCommandArgument | number,
// max: RedisCommandArgument | number,
// ): RedisCommandArguments {
// return [
// 'ZREMRANGEBYSCORE',
// key,
// transformStringDoubleArgument(min),
// transformStringDoubleArgument(max)
// ];
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(key, min, max) {
return [
'ZREMRANGEBYSCORE',
key,
(0, generic_transformers_1.transformStringDoubleArgument)(min),
(0, generic_transformers_1.transformStringDoubleArgument)(max)
];
},
transformReply: undefined
};

@@ -1,2 +0,2 @@

import { RedisArgument, BlobStringReply } from '../RESP/types';
import { RedisArgument, ArrayReply, BlobStringReply } from '../RESP/types';
import { ScanCommonOptions } from './SCAN';

@@ -11,3 +11,3 @@ export interface HScanEntry {

readonly transformArguments: (this: void, key: RedisArgument, cursor: number, options?: ScanCommonOptions) => import("../RESP/types").CommandArguments;
readonly transformReply: (this: void, [cursor, rawMembers]: [BlobStringReply, Array<BlobStringReply>]) => {
readonly transformReply: (this: void, [cursor, rawMembers]: [BlobStringReply, ArrayReply<BlobStringReply>]) => {
cursor: number;

@@ -14,0 +14,0 @@ members: {

@@ -12,15 +12,7 @@ "use strict";

transformReply([cursor, rawMembers]) {
const members = [];
let i = 0;
while (i < rawMembers.length) {
members.push({
value: rawMembers[i++],
score: (0, generic_transformers_1.transformDoubleReply)(rawMembers[i++])
});
}
return {
cursor: Number(cursor),
members
members: generic_transformers_1.transformSortedSetReply[2](rawMembers)
};
}
};

@@ -1,3 +0,2 @@

import { DoubleReply, NullReply, RedisArgument } from '../RESP/types';
import { transformNullableDoubleReply } from './generic-transformers';
import { RedisArgument } from '../RESP/types';
declare const _default: {

@@ -8,6 +7,6 @@ readonly FIRST_KEY_INDEX: 1;

readonly transformReply: {
readonly 2: typeof transformNullableDoubleReply;
readonly 3: () => DoubleReply | NullReply;
2: (reply: import("../RESP/types").BlobStringReply) => number | null;
3: () => import("../RESP/types").DoubleReply;
};
};
export default _default;

@@ -10,6 +10,3 @@ "use strict";

},
transformReply: {
2: generic_transformers_1.transformNullableDoubleReply,
3: undefined
}
transformReply: generic_transformers_1.transformNullableDoubleReply
};
"use strict";
// import { RedisCommandArguments } from '.';
// import { transformArguments as transformZUnionArguments } from './ZUNION';
// export { FIRST_KEY_INDEX, IS_READ_ONLY } from './ZUNION';
// export function transformArguments(...args: Parameters<typeof transformZUnionArguments>): RedisCommandArguments {
// return [
// ...transformZUnionArguments(...args),
// 'WITHSCORES'
// ];
// }
// export { transformSortedSetWithScoresReply as transformReply } from './generic-transformers';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ZUNION_1 = __importDefault(require("./ZUNION"));
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: ZUNION_1.default.FIRST_KEY_INDEX,
IS_READ_ONLY: ZUNION_1.default.IS_READ_ONLY,
transformArguments(...args) {
const redisArgs = ZUNION_1.default.transformArguments(...args);
redisArgs.push('WITHSCORES');
return redisArgs;
},
transformReply: generic_transformers_1.transformSortedSetReply
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 2;
// export const IS_READ_ONLY = true;
// interface ZUnionOptions {
// WEIGHTS?: Array<number>;
// AGGREGATE?: 'SUM' | 'MIN' | 'MAX';
// }
// export function transformArguments(
// keys: Array<RedisCommandArgument> | RedisCommandArgument,
// options?: ZUnionOptions
// ): RedisCommandArguments {
// const args = pushVariadicArgument(['ZUNION'], keys);
// if (options?.WEIGHTS) {
// args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));
// }
// if (options?.AGGREGATE) {
// args.push('AGGREGATE', options.AGGREGATE);
// }
// return args;
// }
// export declare function transformReply(): Array<RedisCommandArgument>;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 2,
IS_READ_ONLY: true,
transformArguments(keys, options) {
const args = (0, generic_transformers_1.pushZKeysArguments)(['ZUNION'], keys);
if (options?.AGGREGATE) {
args.push('AGGREGATE', options.AGGREGATE);
}
return args;
},
transformReply: undefined
};
"use strict";
// import { RedisCommandArgument, RedisCommandArguments } from '.';
// import { pushVariadicArgument } from './generic-transformers';
// export const FIRST_KEY_INDEX = 1;
// interface ZUnionOptions {
// WEIGHTS?: Array<number>;
// AGGREGATE?: 'SUM' | 'MIN' | 'MAX';
// }
// export function transformArguments(
// destination: RedisCommandArgument,
// keys: Array<RedisCommandArgument> | RedisCommandArgument,
// options?: ZUnionOptions
// ): RedisCommandArguments {
// const args = pushVariadicArgument(['ZUNIONSTORE', destination], keys);
// if (options?.WEIGHTS) {
// args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));
// }
// if (options?.AGGREGATE) {
// args.push('AGGREGATE', options.AGGREGATE);
// }
// return args;
// }
// export declare function transformReply(): number;
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false,
transformArguments(destination, keys, options) {
const args = (0, generic_transformers_1.pushZKeysArguments)(['ZUNIONSTORE', destination], keys);
if (options?.AGGREGATE) {
args.push('AGGREGATE', options.AGGREGATE);
}
return args;
},
transformReply: undefined
};

@@ -55,14 +55,2 @@ "use strict";

super(originalError.message);
Object.defineProperty(this, "originalError", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "socketError", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.originalError = originalError;

@@ -69,0 +57,0 @@ this.socketError = socketError;

import { CommandArguments, RedisScript, TransformReply } from './RESP/types';
export type MULTI_REPLY = {
GENERIC: 'generic';
TYPED: 'typed';
};
export type MultiReply = MULTI_REPLY[keyof MULTI_REPLY];
export type MultiReplyType<T extends MultiReply, REPLIES> = T extends MULTI_REPLY['TYPED'] ? REPLIES : Array<unknown>;
export interface RedisMultiQueuedCommand {

@@ -7,9 +13,7 @@ args: CommandArguments;

export default class RedisMultiCommand {
static generateChainId(): symbol;
readonly queue: Array<RedisMultiQueuedCommand>;
readonly scriptsInUse: Set<string>;
addCommand(args: CommandArguments, transformReply?: TransformReply): this;
addScript(script: RedisScript, args: CommandArguments, transformReply?: TransformReply): this;
handleExecReplies(rawReplies: Array<unknown>): Array<unknown>;
addCommand(args: CommandArguments, transformReply?: TransformReply): void;
addScript(script: RedisScript, args: CommandArguments, transformReply?: TransformReply): void;
transformReplies(rawReplies: Array<unknown>): Array<unknown>;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const errors_1 = require("./errors");
class RedisMultiCommand {
constructor() {
Object.defineProperty(this, "queue", {
enumerable: true,
configurable: true,
writable: true,
value: []
});
Object.defineProperty(this, "scriptsInUse", {
enumerable: true,
configurable: true,
writable: true,
value: new Set()
});
this.queue = [];
this.scriptsInUse = new Set();
}
static generateChainId() {
return Symbol('RedisMultiCommand Chain Id');
}
addCommand(args, transformReply) {

@@ -27,6 +13,6 @@ this.queue.push({

});
return this;
}
addScript(script, args, transformReply) {
const redisArgs = [];
redisArgs.preserve = args.preserve;
if (this.scriptsInUse.has(script.SHA1)) {

@@ -43,12 +29,4 @@ redisArgs.push('EVALSHA', script.SHA1);

redisArgs.push(...args);
redisArgs.preserve = args.preserve;
return this.addCommand(redisArgs, transformReply);
this.addCommand(redisArgs, transformReply);
}
handleExecReplies(rawReplies) {
const execReply = rawReplies[rawReplies.length - 1];
if (execReply === null) {
throw new errors_1.WatchError();
}
return this.transformReplies(execReply);
}
transformReplies(rawReplies) {

@@ -55,0 +33,0 @@ return rawReplies.map((reply, i) => {

/// <reference types="node" />
import { ErrorReply } from '../errors';
import { Flags } from './types';
import { TypeMapping } from './types';
export declare const RESP_TYPES: {

@@ -20,3 +20,3 @@ readonly NULL: 95;

};
export declare const PUSH_FLAGS: {
export declare const PUSH_TYPE_MAPPING: {
36: BufferConstructor;

@@ -28,6 +28,6 @@ };

onPush(push: Array<any>): unknown;
getFlags(): Flags;
getTypeMapping(): TypeMapping;
}
export declare class Decoder {
private _config;
private readonly _config;
private _cursor;

@@ -34,0 +34,0 @@ private _next;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Decoder = exports.PUSH_FLAGS = exports.RESP_TYPES = void 0;
exports.Decoder = exports.PUSH_TYPE_MAPPING = exports.RESP_TYPES = void 0;
// @ts-nocheck

@@ -36,3 +36,3 @@ const verbatim_string_1 = require("./verbatim-string");

};
exports.PUSH_FLAGS = {
exports.PUSH_TYPE_MAPPING = {
[exports.RESP_TYPES.BLOB_STRING]: Buffer

@@ -42,20 +42,3 @@ };

constructor(config) {
Object.defineProperty(this, "_config", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "_cursor", {
enumerable: true,
configurable: true,
writable: true,
value: 0
});
Object.defineProperty(this, "_next", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this._cursor = 0;
this._config = config;

@@ -104,11 +87,11 @@ }

case exports.RESP_TYPES.BIG_NUMBER:
return this._handleDecodedValue(this._config.onReply, this._decodeBigNumber(this._config.getFlags()[exports.RESP_TYPES.BIG_NUMBER], chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeBigNumber(this._config.getTypeMapping()[exports.RESP_TYPES.BIG_NUMBER], chunk));
case exports.RESP_TYPES.DOUBLE:
return this._handleDecodedValue(this._config.onReply, this._decodeDouble(this._config.getFlags()[exports.RESP_TYPES.DOUBLE], chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeDouble(this._config.getTypeMapping()[exports.RESP_TYPES.DOUBLE], chunk));
case exports.RESP_TYPES.SIMPLE_STRING:
return this._handleDecodedValue(this._config.onReply, this._decodeSimpleString(this._config.getFlags()[exports.RESP_TYPES.SIMPLE_STRING], chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeSimpleString(this._config.getTypeMapping()[exports.RESP_TYPES.SIMPLE_STRING], chunk));
case exports.RESP_TYPES.BLOB_STRING:
return this._handleDecodedValue(this._config.onReply, this._decodeBlobString(this._config.getFlags()[exports.RESP_TYPES.BLOB_STRING], chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeBlobString(this._config.getTypeMapping()[exports.RESP_TYPES.BLOB_STRING], chunk));
case exports.RESP_TYPES.VERBATIM_STRING:
return this._handleDecodedValue(this._config.onReply, this._decodeVerbatimString(this._config.getFlags()[exports.RESP_TYPES.VERBATIM_STRING], chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeVerbatimString(this._config.getTypeMapping()[exports.RESP_TYPES.VERBATIM_STRING], chunk));
case exports.RESP_TYPES.SIMPLE_ERROR:

@@ -119,9 +102,11 @@ return this._handleDecodedValue(this._config.onErrorReply, this._decodeSimpleError(chunk));

case exports.RESP_TYPES.ARRAY:
return this._handleDecodedValue(this._config.onReply, this._decodeArray(this._config.getFlags(), chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeArray(this._config.getTypeMapping(), chunk));
case exports.RESP_TYPES.SET:
return this._handleDecodedValue(this._config.onReply, this._decodeSet(this._config.getFlags(), chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeSet(this._config.getTypeMapping(), chunk));
case exports.RESP_TYPES.MAP:
return this._handleDecodedValue(this._config.onReply, this._decodeMap(this._config.getFlags(), chunk));
return this._handleDecodedValue(this._config.onReply, this._decodeMap(this._config.getTypeMapping(), chunk));
case exports.RESP_TYPES.PUSH:
return this._handleDecodedValue(this._config.onPush, this._decodeArray(exports.PUSH_FLAGS, chunk));
return this._handleDecodedValue(this._config.onPush, this._decodeArray(exports.PUSH_TYPE_MAPPING, chunk));
default:
throw new Error(`Unknown RESP type ${type} "${String.fromCharCode(type)}"`);
}

@@ -185,4 +170,4 @@ }

}
_decodeBigNumber(flag, chunk) {
if (flag === String) {
_decodeBigNumber(type, chunk) {
if (type === String) {
return this._decodeSimpleString(String, chunk);

@@ -224,4 +209,4 @@ }

}
_decodeDouble(flag, chunk) {
if (flag === String) {
_decodeDouble(type, chunk) {
if (type === String) {
return this._decodeSimpleString(String, chunk);

@@ -336,24 +321,24 @@ }

}
_decodeSimpleString(flag, chunk) {
_decodeSimpleString(type, chunk) {
const start = this._cursor, crlfIndex = this._findCRLF(chunk, start);
if (crlfIndex === -1) {
return this._continueDecodeSimpleString.bind(this, [chunk.subarray(start)], flag);
return this._continueDecodeSimpleString.bind(this, [chunk.subarray(start)], type);
}
const slice = chunk.subarray(start, crlfIndex);
return flag === Buffer ?
return type === Buffer ?
slice :
slice.toString();
}
_continueDecodeSimpleString(chunks, flag, chunk) {
_continueDecodeSimpleString(chunks, type, chunk) {
const start = this._cursor, crlfIndex = this._findCRLF(chunk, start);
if (crlfIndex === -1) {
chunks.push(chunk.subarray(start));
return this._continueDecodeSimpleString.bind(this, chunks, flag);
return this._continueDecodeSimpleString.bind(this, chunks, type);
}
chunks.push(chunk.subarray(start, crlfIndex));
return flag === Buffer ?
return type === Buffer ?
Buffer.concat(chunks) :
chunks.join('');
}
_decodeBlobString(flag, chunk) {
_decodeBlobString(type, chunk) {
// RESP 2 bulk string null

@@ -367,20 +352,20 @@ // https://github.com/redis/redis-specifications/blob/master/protocol/RESP2.md#resp-bulk-strings

if (typeof length === 'function') {
return this._continueDecodeBlobStringLength.bind(this, length, flag);
return this._continueDecodeBlobStringLength.bind(this, length, type);
}
else if (this._cursor >= chunk.length) {
return this._decodeBlobStringWithLength.bind(this, length, flag);
return this._decodeBlobStringWithLength.bind(this, length, type);
}
return this._decodeBlobStringWithLength(length, flag, chunk);
return this._decodeBlobStringWithLength(length, type, chunk);
}
_continueDecodeBlobStringLength(lengthCb, flag, chunk) {
_continueDecodeBlobStringLength(lengthCb, type, chunk) {
const length = lengthCb(chunk);
if (typeof length === 'function') {
return this._continueDecodeBlobStringLength.bind(this, length, flag);
return this._continueDecodeBlobStringLength.bind(this, length, type);
}
else if (this._cursor >= chunk.length) {
return this._decodeBlobStringWithLength.bind(this, length, flag);
return this._decodeBlobStringWithLength.bind(this, length, type);
}
return this._decodeBlobStringWithLength(length, flag, chunk);
return this._decodeBlobStringWithLength(length, type, chunk);
}
_decodeStringWithLength(length, skip, flag, chunk) {
_decodeStringWithLength(length, skip, type, chunk) {
const end = this._cursor + length;

@@ -390,11 +375,11 @@ if (end >= chunk.length) {

this._cursor = chunk.length;
return this._continueDecodeStringWithLength.bind(this, length - slice.length, [slice], skip, flag);
return this._continueDecodeStringWithLength.bind(this, length - slice.length, [slice], skip, type);
}
const slice = chunk.subarray(this._cursor, end);
this._cursor = end + skip;
return flag === Buffer ?
return type === Buffer ?
slice :
slice.toString();
}
_continueDecodeStringWithLength(length, chunks, skip, flag, chunk) {
_continueDecodeStringWithLength(length, chunks, skip, type, chunk) {
const end = this._cursor + length;

@@ -405,25 +390,25 @@ if (end >= chunk.length) {

this._cursor = chunk.length;
return this._continueDecodeStringWithLength.bind(this, length - slice.length, chunks, flag);
return this._continueDecodeStringWithLength.bind(this, length - slice.length, chunks, skip, type);
}
chunks.push(chunk.subarray(this._cursor, end));
this._cursor = end + skip;
return flag === Buffer ?
return type === Buffer ?
Buffer.concat(chunks) :
chunks.join('');
}
_decodeBlobStringWithLength(length, flag, chunk) {
return this._decodeStringWithLength(length, 2, flag, chunk);
_decodeBlobStringWithLength(length, type, chunk) {
return this._decodeStringWithLength(length, 2, type, chunk);
}
_decodeVerbatimString(flag, chunk) {
return this._continueDecodeVerbatimStringLength(this._decodeUnsingedNumber.bind(this, 0), flag, chunk);
_decodeVerbatimString(type, chunk) {
return this._continueDecodeVerbatimStringLength(this._decodeUnsingedNumber.bind(this, 0), type, chunk);
}
_continueDecodeVerbatimStringLength(lengthCb, flag, chunk) {
_continueDecodeVerbatimStringLength(lengthCb, type, chunk) {
const length = lengthCb(chunk);
return typeof length === 'function' ?
this._continueDecodeVerbatimStringLength.bind(this, length, flag) :
this._decodeVerbatimStringWithLength(length, flag, chunk);
this._continueDecodeVerbatimStringLength.bind(this, length, type) :
this._decodeVerbatimStringWithLength(length, type, chunk);
}
_decodeVerbatimStringWithLength(length, flag, chunk) {
_decodeVerbatimStringWithLength(length, type, chunk) {
const stringLength = length - 4; // skip <format>:
if (flag === verbatim_string_1.VerbatimString) {
if (type === verbatim_string_1.VerbatimString) {
return this._decodeVerbatimStringFormat(stringLength, chunk);

@@ -433,4 +418,4 @@ }

return this._cursor >= chunk.length ?
this._decodeBlobStringWithLength.bind(this, stringLength, flag) :
this._decodeBlobStringWithLength(stringLength, flag, chunk);
this._decodeBlobStringWithLength.bind(this, stringLength, type) :
this._decodeBlobStringWithLength(stringLength, type, chunk);
}

@@ -479,9 +464,9 @@ _decodeVerbatimStringFormat(stringLength, chunk) {

}
_decodeNestedType(flags, chunk) {
_decodeNestedType(typeMapping, chunk) {
const type = chunk[this._cursor];
return ++this._cursor === chunk.length ?
this._decodeNestedTypeValue.bind(this, type, flags) :
this._decodeNestedTypeValue(type, flags, chunk);
this._decodeNestedTypeValue.bind(this, type, typeMapping) :
this._decodeNestedTypeValue(type, typeMapping, chunk);
}
_decodeNestedTypeValue(type, flags, chunk) {
_decodeNestedTypeValue(type, typeMapping, chunk) {
switch (type) {

@@ -495,11 +480,11 @@ case exports.RESP_TYPES.NULL:

case exports.RESP_TYPES.BIG_NUMBER:
return this._decodeBigNumber(flags[exports.RESP_TYPES.BIG_NUMBER], chunk);
return this._decodeBigNumber(typeMapping[exports.RESP_TYPES.BIG_NUMBER], chunk);
case exports.RESP_TYPES.DOUBLE:
return this._decodeDouble(flags[exports.RESP_TYPES.DOUBLE], chunk);
return this._decodeDouble(typeMapping[exports.RESP_TYPES.DOUBLE], chunk);
case exports.RESP_TYPES.SIMPLE_STRING:
return this._decodeSimpleString(flags[exports.RESP_TYPES.SIMPLE_STRING], chunk);
return this._decodeSimpleString(typeMapping[exports.RESP_TYPES.SIMPLE_STRING], chunk);
case exports.RESP_TYPES.BLOB_STRING:
return this._decodeBlobString(flags[exports.RESP_TYPES.BLOB_STRING], chunk);
return this._decodeBlobString(typeMapping[exports.RESP_TYPES.BLOB_STRING], chunk);
case exports.RESP_TYPES.VERBATIM_STRING:
return this._decodeVerbatimString(flags[exports.RESP_TYPES.VERBATIM_STRING], chunk);
return this._decodeVerbatimString(typeMapping[exports.RESP_TYPES.VERBATIM_STRING], chunk);
case exports.RESP_TYPES.SIMPLE_ERROR:

@@ -510,10 +495,12 @@ return this._decodeSimpleError(chunk);

case exports.RESP_TYPES.ARRAY:
return this._decodeArray(flags, chunk);
return this._decodeArray(typeMapping, chunk);
case exports.RESP_TYPES.SET:
return this._decodeSet(flags, chunk);
return this._decodeSet(typeMapping, chunk);
case exports.RESP_TYPES.MAP:
return this._decodeMap(flags, chunk);
return this._decodeMap(typeMapping, chunk);
default:
throw new Error(`Unknown RESP type ${type} "${String.fromCharCode(type)}"`);
}
}
_decodeArray(flags, chunk) {
_decodeArray(typeMapping, chunk) {
// RESP 2 null

@@ -525,20 +512,20 @@ // https://github.com/redis/redis-specifications/blob/master/protocol/RESP2.md#resp-arrays

}
return this._decodeArrayWithLength(this._decodeUnsingedNumber(0, chunk), flags, chunk);
return this._decodeArrayWithLength(this._decodeUnsingedNumber(0, chunk), typeMapping, chunk);
}
_decodeArrayWithLength(length, flags, chunk) {
_decodeArrayWithLength(length, typeMapping, chunk) {
return typeof length === 'function' ?
this._continueDecodeArrayLength.bind(this, length, flags) :
this._decodeArrayItems(new Array(length), 0, flags, chunk);
this._continueDecodeArrayLength.bind(this, length, typeMapping) :
this._decodeArrayItems(new Array(length), 0, typeMapping, chunk);
}
_continueDecodeArrayLength(lengthCb, flags, chunk) {
return this._decodeArrayWithLength(lengthCb(chunk), flags, chunk);
_continueDecodeArrayLength(lengthCb, typeMapping, chunk) {
return this._decodeArrayWithLength(lengthCb(chunk), typeMapping, chunk);
}
_decodeArrayItems(array, filled, flags, chunk) {
_decodeArrayItems(array, filled, typeMapping, chunk) {
for (let i = filled; i < array.length; i++) {
if (this._cursor >= chunk.length) {
return this._decodeArrayItems.bind(this, array, i, flags);
return this._decodeArrayItems.bind(this, array, i, typeMapping);
}
const item = this._decodeNestedType(flags, chunk);
const item = this._decodeNestedType(typeMapping, chunk);
if (typeof item === 'function') {
return this._continueDecodeArrayItems.bind(this, array, i, item, flags);
return this._continueDecodeArrayItems.bind(this, array, i, item, typeMapping);
}

@@ -549,37 +536,37 @@ array[i] = item;

}
_continueDecodeArrayItems(array, filled, itemCb, flags, chunk) {
_continueDecodeArrayItems(array, filled, itemCb, typeMapping, chunk) {
const item = itemCb(chunk);
if (typeof item === 'function') {
return this._continueDecodeArrayItems.bind(this, array, filled, item, flags);
return this._continueDecodeArrayItems.bind(this, array, filled, item, typeMapping);
}
array[filled++] = item;
return this._decodeArrayItems(array, filled, flags, chunk);
return this._decodeArrayItems(array, filled, typeMapping, chunk);
}
_decodeSet(flags, chunk) {
_decodeSet(typeMapping, chunk) {
const length = this._decodeUnsingedNumber(0, chunk);
if (typeof length === 'function') {
return this._continueDecodeSetLength.bind(this, length, flags);
return this._continueDecodeSetLength.bind(this, length, typeMapping);
}
return this._decodeSetItems(length, flags, chunk);
return this._decodeSetItems(length, typeMapping, chunk);
}
_continueDecodeSetLength(lengthCb, flags, chunk) {
_continueDecodeSetLength(lengthCb, typeMapping, chunk) {
const length = lengthCb(chunk);
return typeof length === 'function' ?
this._continueDecodeSetLength.bind(this, length, flags) :
this._decodeSetItems(length, flags, chunk);
this._continueDecodeSetLength.bind(this, length, typeMapping) :
this._decodeSetItems(length, typeMapping, chunk);
}
_decodeSetItems(length, flags, chunk) {
return flags[exports.RESP_TYPES.SET] === Set ?
this._decodeSetAsSet(new Set(), length, flags, chunk) :
this._decodeArrayItems(new Array(length), 0, flags, chunk);
_decodeSetItems(length, typeMapping, chunk) {
return typeMapping[exports.RESP_TYPES.SET] === Set ?
this._decodeSetAsSet(new Set(), length, typeMapping, chunk) :
this._decodeArrayItems(new Array(length), 0, typeMapping, chunk);
}
_decodeSetAsSet(set, remaining, flags, chunk) {
_decodeSetAsSet(set, remaining, typeMapping, chunk) {
// using `remaining` instead of `length` & `set.size` to make it work even if the set contains duplicates
while (remaining > 0) {
if (this._cursor >= chunk.length) {
return this._decodeSetAsSet.bind(this, set, remaining, flags);
return this._decodeSetAsSet.bind(this, set, remaining, typeMapping);
}
const item = this._decodeNestedType(flags, chunk);
const item = this._decodeNestedType(typeMapping, chunk);
if (typeof item === 'function') {
return this._continueDecodeSetAsSet.bind(this, set, remaining, item, flags);
return this._continueDecodeSetAsSet.bind(this, set, remaining, item, typeMapping);
}

@@ -591,49 +578,49 @@ set.add(item);

}
_continueDecodeSetAsSet(set, remaining, itemCb, flags, chunk) {
_continueDecodeSetAsSet(set, remaining, itemCb, typeMapping, chunk) {
const item = itemCb(chunk);
if (typeof item === 'function') {
return this._continueDecodeSetAsSet.bind(this, set, remaining, item, flags);
return this._continueDecodeSetAsSet.bind(this, set, remaining, item, typeMapping);
}
set.add(item);
return this._decodeSetAsSet(set, remaining - 1, flags, chunk);
return this._decodeSetAsSet(set, remaining - 1, typeMapping, chunk);
}
_decodeMap(flags, chunk) {
_decodeMap(typeMapping, chunk) {
const length = this._decodeUnsingedNumber(0, chunk);
if (typeof length === 'function') {
return this._continueDecodeMapLength.bind(this, length, flags);
return this._continueDecodeMapLength.bind(this, length, typeMapping);
}
return this._decodeMapItems(length, flags, chunk);
return this._decodeMapItems(length, typeMapping, chunk);
}
_continueDecodeMapLength(lengthCb, flags, chunk) {
_continueDecodeMapLength(lengthCb, typeMapping, chunk) {
const length = lengthCb(chunk);
return typeof length === 'function' ?
this._continueDecodeMapLength.bind(this, length, flags) :
this._decodeMapItems(length, flags, chunk);
this._continueDecodeMapLength.bind(this, length, typeMapping) :
this._decodeMapItems(length, typeMapping, chunk);
}
_decodeMapItems(length, flags, chunk) {
switch (flags[exports.RESP_TYPES.MAP]) {
_decodeMapItems(length, typeMapping, chunk) {
switch (typeMapping[exports.RESP_TYPES.MAP]) {
case Map:
return this._decodeMapAsMap(new Map(), length, flags, chunk);
return this._decodeMapAsMap(new Map(), length, typeMapping, chunk);
case Array:
return this._decodeArrayItems(new Array(length * 2), 0, flags, chunk);
return this._decodeArrayItems(new Array(length * 2), 0, typeMapping, chunk);
default:
return this._decodeMapAsObject(Object.create(null), length, flags, chunk);
return this._decodeMapAsObject(Object.create(null), length, typeMapping, chunk);
}
}
_decodeMapAsMap(map, remaining, flags, chunk) {
_decodeMapAsMap(map, remaining, typeMapping, chunk) {
// using `remaining` instead of `length` & `map.size` to make it work even if the map contains duplicate keys
while (remaining > 0) {
if (this._cursor >= chunk.length) {
return this._decodeMapAsMap.bind(this, map, remaining, flags);
return this._decodeMapAsMap.bind(this, map, remaining, typeMapping);
}
const key = this._decodeMapKey(flags, chunk);
const key = this._decodeMapKey(typeMapping, chunk);
if (typeof key === 'function') {
return this._continueDecodeMapKey.bind(this, map, remaining, key, flags);
return this._continueDecodeMapKey.bind(this, map, remaining, key, typeMapping);
}
if (this._cursor >= chunk.length) {
return this._continueDecodeMapValue.bind(this, map, remaining, key, this._decodeNestedType.bind(this, flags), flags);
return this._continueDecodeMapValue.bind(this, map, remaining, key, this._decodeNestedType.bind(this, typeMapping), typeMapping);
}
const value = this._decodeNestedType(flags, chunk);
const value = this._decodeNestedType(typeMapping, chunk);
if (typeof value === 'function') {
return this._continueDecodeMapValue.bind(this, map, remaining, key, value, flags);
return this._continueDecodeMapValue.bind(this, map, remaining, key, value, typeMapping);
}

@@ -645,9 +632,9 @@ map.set(key, value);

}
_decodeMapKey(flags, chunk) {
_decodeMapKey(typeMapping, chunk) {
const type = chunk[this._cursor];
return ++this._cursor === chunk.length ?
this._decodeMapKeyValue.bind(this, type, flags) :
this._decodeMapKeyValue(type, flags, chunk);
this._decodeMapKeyValue.bind(this, type, typeMapping) :
this._decodeMapKeyValue(type, typeMapping, chunk);
}
_decodeMapKeyValue(type, flags, chunk) {
_decodeMapKeyValue(type, typeMapping, chunk) {
switch (type) {

@@ -661,43 +648,43 @@ // decode simple string map key as string (and not as buffer)

default:
return this._decodeNestedTypeValue(type, flags, chunk);
return this._decodeNestedTypeValue(type, typeMapping, chunk);
}
}
_continueDecodeMapKey(map, remaining, keyCb, flags, chunk) {
_continueDecodeMapKey(map, remaining, keyCb, typeMapping, chunk) {
const key = keyCb(chunk);
if (typeof key === 'function') {
return this._continueDecodeMapKey.bind(this, map, remaining, key, flags);
return this._continueDecodeMapKey.bind(this, map, remaining, key, typeMapping);
}
if (this._cursor >= chunk.length) {
return this._continueDecodeMapValue.bind(this, map, remaining, key, this._decodeNestedType.bind(this, flags), flags);
return this._continueDecodeMapValue.bind(this, map, remaining, key, this._decodeNestedType.bind(this, typeMapping), typeMapping);
}
const value = this._decodeNestedType(flags, chunk);
const value = this._decodeNestedType(typeMapping, chunk);
if (typeof value === 'function') {
return this._continueDecodeMapValue.bind(this, map, remaining, key, value, flags);
return this._continueDecodeMapValue.bind(this, map, remaining, key, value, typeMapping);
}
map.set(key, value);
return this._decodeMapAsMap(map, remaining - 1, flags, chunk);
return this._decodeMapAsMap(map, remaining - 1, typeMapping, chunk);
}
_continueDecodeMapValue(map, remaining, key, valueCb, flags, chunk) {
_continueDecodeMapValue(map, remaining, key, valueCb, typeMapping, chunk) {
const value = valueCb(chunk);
if (typeof value === 'function') {
return this._continueDecodeMapValue.bind(this, map, remaining, key, value, flags);
return this._continueDecodeMapValue.bind(this, map, remaining, key, value, typeMapping);
}
map.set(key, value);
return this._decodeMapAsMap(map, remaining - 1, flags, chunk);
return this._decodeMapAsMap(map, remaining - 1, typeMapping, chunk);
}
_decodeMapAsObject(object, remaining, flags, chunk) {
_decodeMapAsObject(object, remaining, typeMapping, chunk) {
while (remaining > 0) {
if (this._cursor >= chunk.length) {
return this._decodeMapAsObject.bind(this, object, remaining, flags);
return this._decodeMapAsObject.bind(this, object, remaining, typeMapping);
}
const key = this._decodeMapKey(flags, chunk);
const key = this._decodeMapKey(typeMapping, chunk);
if (typeof key === 'function') {
return this._continueDecodeMapAsObjectKey.bind(this, object, remaining, key, flags);
return this._continueDecodeMapAsObjectKey.bind(this, object, remaining, key, typeMapping);
}
if (this._cursor >= chunk.length) {
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, this._decodeNestedType.bind(this, flags), flags);
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, this._decodeNestedType.bind(this, typeMapping), typeMapping);
}
const value = this._decodeNestedType(flags, chunk);
const value = this._decodeNestedType(typeMapping, chunk);
if (typeof value === 'function') {
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, value, flags);
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, value, typeMapping);
}

@@ -709,39 +696,34 @@ object[key] = value;

}
_continueDecodeMapAsObjectKey(object, remaining, keyCb, flags, chunk) {
_continueDecodeMapAsObjectKey(object, remaining, keyCb, typeMapping, chunk) {
const key = keyCb(chunk);
if (typeof key === 'function') {
return this._continueDecodeMapAsObjectKey.bind(this, object, remaining, key, flags);
return this._continueDecodeMapAsObjectKey.bind(this, object, remaining, key, typeMapping);
}
if (this._cursor >= chunk.length) {
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, this._decodeNestedType.bind(this, flags), flags);
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, this._decodeNestedType.bind(this, typeMapping), typeMapping);
}
const value = this._decodeNestedType(flags, chunk);
const value = this._decodeNestedType(typeMapping, chunk);
if (typeof value === 'function') {
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, value, flags);
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, value, typeMapping);
}
object[key] = value;
return this._decodeMapAsObject(object, remaining - 1, flags, chunk);
return this._decodeMapAsObject(object, remaining - 1, typeMapping, chunk);
}
_continueDecodeMapAsObjectValue(object, remaining, key, valueCb, flags, chunk) {
_continueDecodeMapAsObjectValue(object, remaining, key, valueCb, typeMapping, chunk) {
const value = valueCb(chunk);
if (typeof value === 'function') {
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, value, flags);
return this._continueDecodeMapAsObjectValue.bind(this, object, remaining, key, value, typeMapping);
}
object[key] = value;
return this._decodeMapAsObject(object, remaining - 1, flags, chunk);
return this._decodeMapAsObject(object, remaining - 1, typeMapping, chunk);
}
}
exports.Decoder = Decoder;
// Precalculated multipliers for decimal points to improve performance
// "A Number only keeps about 17 decimal places of precision"
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
Object.defineProperty(Decoder, "_DOUBLE_DECIMAL_MULTIPLIERS", {
enumerable: true,
configurable: true,
writable: true,
value: [
0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001,
1e-7, 1e-8, 1e-9, 1e-10, 1e-11, 1e-12,
1e-13, 1e-14, 1e-15, 1e-16, 1e-17
]
});
exports.Decoder = Decoder;
// "... about 15 to 17 decimal places ..."
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number#:~:text=about%2015%20to%2017%20decimal%20places
Decoder._DOUBLE_DECIMAL_MULTIPLIERS = [
1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6,
1e-7, 1e-8, 1e-9, 1e-10, 1e-11, 1e-12,
1e-13, 1e-14, 1e-15, 1e-16, 1e-17
];

@@ -1,2 +0,2 @@

import { RedisArgument } from "./types";
import { RedisArgument } from './types';
export default function encodeCommand(args: Array<RedisArgument>): Array<RedisArgument>;

@@ -41,14 +41,14 @@ /// <reference types="node" />

}, Map<ReplyUnion, ReplyUnion> | Array<ReplyUnion | ReplyUnion>>;
export type Reply = ReplyWithFlags<ReplyUnion, {}>;
export type Reply = ReplyWithTypeMapping<ReplyUnion, {}>;
export type Flag<T> = ((...args: any) => T) | (new (...args: any) => T);
type RespTypeUnion<T> = T extends RespType<RespTypes, unknown, unknown, infer FLAG_TYPES> ? FLAG_TYPES : never;
export type Flags = {
export type TypeMapping = {
[P in RespTypes]?: Flag<RespTypeUnion<Extract<ReplyUnion, RespType<P, any, any, any>>>>;
};
type MapKey<T, FLAGS extends Flags> = ReplyWithFlags<T, FLAGS & {
type MapKey<T, TYPE_MAPPING extends TypeMapping> = ReplyWithTypeMapping<T, TYPE_MAPPING & {
[RESP_TYPES.SIMPLE_STRING]: StringConstructor;
[RESP_TYPES.BLOB_STRING]: StringConstructor;
}>;
export type ReplyWithFlags<REPLY, FLAGS extends Flags> = (REPLY extends RespType<infer RESP_TYPE, infer DEFAULT, infer TYPES, unknown> ? FLAGS[RESP_TYPE] extends Flag<infer T> ? ReplyWithFlags<Extract<DEFAULT | TYPES, T>, FLAGS> : ReplyWithFlags<DEFAULT, FLAGS> : (REPLY extends Array<infer T> ? Array<ReplyWithFlags<T, FLAGS>> : REPLY extends Set<infer T> ? Set<ReplyWithFlags<T, FLAGS>> : REPLY extends Map<infer K, infer V> ? Map<MapKey<K, FLAGS>, ReplyWithFlags<V, FLAGS>> : REPLY extends Date ? REPLY : REPLY extends Buffer ? REPLY : REPLY extends Record<PropertyKey, any> ? {
[P in keyof REPLY]: ReplyWithFlags<REPLY[P], FLAGS>;
export type ReplyWithTypeMapping<REPLY, TYPE_MAPPING extends TypeMapping> = (REPLY extends RespType<infer RESP_TYPE, infer DEFAULT, infer TYPES, unknown> ? TYPE_MAPPING[RESP_TYPE] extends Flag<infer T> ? ReplyWithTypeMapping<Extract<DEFAULT | TYPES, T>, TYPE_MAPPING> : ReplyWithTypeMapping<DEFAULT, TYPE_MAPPING> : (REPLY extends Array<infer T> ? Array<ReplyWithTypeMapping<T, TYPE_MAPPING>> : REPLY extends Set<infer T> ? Set<ReplyWithTypeMapping<T, TYPE_MAPPING>> : REPLY extends Map<infer K, infer V> ? Map<MapKey<K, TYPE_MAPPING>, ReplyWithTypeMapping<V, TYPE_MAPPING>> : REPLY extends Date ? REPLY : REPLY extends Buffer ? REPLY : REPLY extends Record<PropertyKey, any> ? {
[P in keyof REPLY]: ReplyWithTypeMapping<REPLY[P], TYPE_MAPPING>;
} : REPLY));

@@ -129,9 +129,9 @@ export type TransformReply = (this: void, reply: any, preserve?: any) => any;

] : T extends Array<infer ITEM> ? Array<Resp2Reply<ITEM>> : never);
export type Resp2Reply<RESP3REPLY> = (RESP3REPLY extends RespType<infer RESP_TYPE, infer DEFAULT, infer TYPES, unknown> ? RESP_TYPE extends RESP_TYPES['DOUBLE'] ? BlobStringReply : RESP_TYPE extends RESP_TYPES['ARRAY'] | RESP_TYPES['SET'] ? RespType<RESP_TYPE, Resp2Array<DEFAULT>> : RESP_TYPE extends RESP_TYPES['MAP'] ? RespType<RESP_TYPES['ARRAY'], Resp2Array<Extract<TYPES, Array<any>>>> : RespType<RESP_TYPE, DEFAULT, TYPES> : RESP3REPLY);
export type Resp2Reply<RESP3REPLY> = (RESP3REPLY extends RespType<infer RESP_TYPE, infer DEFAULT, infer TYPES, unknown> ? RESP_TYPE extends RESP_TYPES['DOUBLE'] ? BlobStringReply : RESP_TYPE extends RESP_TYPES['ARRAY'] | RESP_TYPES['SET'] ? RespType<RESP_TYPE, Resp2Array<DEFAULT>> : RESP_TYPE extends RESP_TYPES['MAP'] ? RespType<RESP_TYPES['ARRAY'], Resp2Array<Extract<TYPES, Array<any>>>> : RESP3REPLY : RESP3REPLY);
export type RespVersions = 2 | 3;
export type CommandReply<COMMAND extends Command, RESP extends RespVersions> = (COMMAND['transformReply'] extends (...args: any) => infer T ? T : COMMAND['transformReply'] extends Record<RESP, (...args: any) => infer T> ? T : Reply);
export type CommandSignature<COMMAND extends Command, RESP extends RespVersions, FLAGS extends Flags> = (...args: Parameters<COMMAND['transformArguments']>) => Promise<ReplyWithFlags<CommandReply<COMMAND, RESP>, FLAGS>>;
export type CommandWithPoliciesSignature<COMMAND extends Command, RESP extends RespVersions, FLAGS extends Flags, POLICIES extends CommandPolicies> = (...args: Parameters<COMMAND['transformArguments']>) => Promise<ReplyWithPolicy<ReplyWithFlags<CommandReply<COMMAND, RESP>, FLAGS>, MergePolicies<COMMAND, POLICIES>>>;
export type CommandSignature<COMMAND extends Command, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping> = (...args: Parameters<COMMAND['transformArguments']>) => Promise<ReplyWithTypeMapping<CommandReply<COMMAND, RESP>, TYPE_MAPPING>>;
export type CommandWithPoliciesSignature<COMMAND extends Command, RESP extends RespVersions, TYPE_MAPPING extends TypeMapping, POLICIES extends CommandPolicies> = (...args: Parameters<COMMAND['transformArguments']>) => Promise<ReplyWithPolicy<ReplyWithTypeMapping<CommandReply<COMMAND, RESP>, TYPE_MAPPING>, MergePolicies<COMMAND, POLICIES>>>;
export type MergePolicies<COMMAND extends Command, POLICIES extends CommandPolicies> = Omit<COMMAND['POLICIES'], keyof POLICIES> & POLICIES;
type ReplyWithPolicy<REPLY, POLICIES extends CommandPolicies> = (POLICIES['request'] extends REQUEST_POLICIES['SPECIAL'] ? never : POLICIES['request'] extends null | undefined ? REPLY : unknown extends POLICIES['request'] ? REPLY : POLICIES['response'] extends RESPONSE_POLICIES['SPECIAL'] ? never : POLICIES['response'] extends RESPONSE_POLICIES['ALL_SUCCEEDED' | 'ONE_SUCCEEDED' | 'LOGICAL_AND'] ? REPLY : Array<REPLY>);
export {};

@@ -37,33 +37,1 @@ "use strict";

};
const SAME = {
transformArguments(key) {
return ['GET', key];
},
transformReply: () => 'default'
};
// type SAME_RESP2 = CommandReply<typeof SAME, 2>;
// type SAME_COMMAND_RESP2 = CommandSignuture<typeof SAME, 2>;
// type SAME_RESP3 = CommandReply<typeof SAME, 3>;
// type SAME_COMMAND_RESP3 = CommandSignuture<typeof SAME, 3>;
// interface Test {
// /**
// * This is a test
// */
// a: 'a';
// }
// const DIFFERENT = {
// transformArguments(key: string): Array<string> {
// return ['GET', key];
// },
// transformReply: {
// 2: () => null as any as Test,
// 3: () => '3' as const
// }
// } satisfies Command;
// type DIFFERENT_RESP2 = CommandReply<typeof DIFFERENT, 2>;
// type DIFFERENT_COMMAND_RESP2 = CommandSignuture<typeof DIFFERENT, 2>;
// type DIFFERENT_RESP3 = CommandReply<typeof DIFFERENT, 3>;
// type DIFFERENT_COMMAND_RESP3 = CommandSignuture<typeof DIFFERENT, 3>;
// const a = null as any as DIFFERENT_COMMAND_RESP2;
// const b = await a('a');
// b.a

@@ -7,10 +7,5 @@ "use strict";

super(value);
Object.defineProperty(this, "format", {
enumerable: true,
configurable: true,
writable: true,
value: format
});
this.format = format;
}
}
exports.VerbatimString = VerbatimString;
{
"name": "@redis/client",
"version": "2.0.0-next.1",
"version": "2.0.0-next.2",
"license": "MIT",

@@ -8,34 +8,19 @@ "main": "./dist/index.js",

"files": [
"dist/"
"dist/",
"!dist/tsconfig.tsbuildinfo"
],
"scripts": {
"test": "nyc -r text-summary -r lcov mocha -r source-map-support/register -r ts-node/register './lib/**/*.spec.ts'",
"build": "tsc",
"lint": "eslint ./*.ts ./lib/**/*.ts",
"documentation": "typedoc"
"test": "nyc -r text-summary -r lcov mocha -r source-map-support/register -r ts-node/register './lib/**/*.spec.ts'"
},
"dependencies": {
"cluster-key-slot": "1.1.2",
"generic-pool": "3.9.0",
"yallist": "4.0.0"
"generic-pool": "3.9.0"
},
"devDependencies": {
"@istanbuljs/nyc-config-typescript": "^1.0.2",
"@redis/test-utils": "*",
"@types/node": "^18.16.1",
"@types/sinon": "^10.0.14",
"@types/yallist": "^4.0.1",
"@typescript-eslint/eslint-plugin": "^5.59.1",
"@typescript-eslint/parser": "^5.59.1",
"eslint": "^8.39.0",
"nyc": "^15.1.0",
"release-it": "^15.10.1",
"sinon": "^15.0.4",
"source-map-support": "^0.5.21",
"ts-node": "^10.9.1",
"typedoc": "^0.24.6",
"typescript": "^5.0.4"
"@types/sinon": "^10.0.15",
"sinon": "^15.2.0"
},
"engines": {
"node": ">=14"
"node": ">=16"
},

@@ -42,0 +27,0 @@ "repository": {

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc