diff --git a/packages/client/lib/commands/COMMAND_INFO.spec.ts b/packages/client/lib/commands/COMMAND_INFO.spec.ts index 3b2672dcb6..8e02409001 100644 --- a/packages/client/lib/commands/COMMAND_INFO.spec.ts +++ b/packages/client/lib/commands/COMMAND_INFO.spec.ts @@ -30,7 +30,18 @@ describe('COMMAND INFO', () => { ); }); - testUtils.testWithClient('client.commandInfo', async client => { - assertPingCommand((await client.commandInfo(['PING']))[0]); - }, GLOBAL.SERVERS.OPEN); + describe('client.commandInfo', () => { + testUtils.testWithClient('PING', async client => { + assertPingCommand((await client.commandInfo(['PING']))[0]); + }, GLOBAL.SERVERS.OPEN); + + testUtils.testWithClient('DOSE_NOT_EXISTS', async client => { + assert.deepEqual( + await client.commandInfo(['DOSE_NOT_EXISTS']), + [null] + ); + }, GLOBAL.SERVERS.OPEN); + }); + + }); diff --git a/packages/client/lib/commands/HSET.ts b/packages/client/lib/commands/HSET.ts index 4c60b91ad8..f7c56c5768 100644 --- a/packages/client/lib/commands/HSET.ts +++ b/packages/client/lib/commands/HSET.ts @@ -23,7 +23,7 @@ export function transformArguments(...[ key, value, fieldValue ]: SingleFieldArg pushMap(args, value); } else if (Array.isArray(value)) { pushTuples(args, value); - } else if (typeof value === 'object' && value !== null) { + } else { pushObject(args, value); } diff --git a/packages/client/lib/commands/ZCOUNT.ts b/packages/client/lib/commands/ZCOUNT.ts index a18ba0fd79..83a0710fa1 100644 --- a/packages/client/lib/commands/ZCOUNT.ts +++ b/packages/client/lib/commands/ZCOUNT.ts @@ -1,15 +1,15 @@ -import { transformArgumentNumberInfinity } from './generic-transformers'; +import { transformArgumentStringNumberInfinity } from './generic-transformers'; export const FIRST_KEY_INDEX = 1; export const IS_READ_ONLY = true; -export function transformArguments(key: string, min: number, max: number): Array { +export function transformArguments(key: string, min: string | number, max: string | number): Array { return [ 'ZCOUNT', key, - transformArgumentNumberInfinity(min), - transformArgumentNumberInfinity(max) + transformArgumentStringNumberInfinity(min), + transformArgumentStringNumberInfinity(max) ]; } diff --git a/packages/client/lib/commands/ZRANGE.spec.ts b/packages/client/lib/commands/ZRANGE.spec.ts index 03687c2ba9..a280aff003 100644 --- a/packages/client/lib/commands/ZRANGE.spec.ts +++ b/packages/client/lib/commands/ZRANGE.spec.ts @@ -11,13 +11,6 @@ describe('ZRANGE', () => { ); }); - it('using strings', () => { - assert.deepEqual( - transformArguments('src', '0', '1'), - ['ZRANGE', 'src', '0', '1'] - ); - }); - it('with BYSCORE', () => { assert.deepEqual( transformArguments('src', 0, 1, { diff --git a/packages/client/lib/commands/ZRANGE.ts b/packages/client/lib/commands/ZRANGE.ts index 391c5ca893..3d30e0f8dd 100644 --- a/packages/client/lib/commands/ZRANGE.ts +++ b/packages/client/lib/commands/ZRANGE.ts @@ -1,4 +1,4 @@ -import { transformArgumentNumberInfinity } from './generic-transformers'; +import { transformArgumentStringNumberInfinity } from './generic-transformers'; export const FIRST_KEY_INDEX = 1; @@ -17,8 +17,8 @@ export function transformArguments(key: string, min: string | number, max: strin const args = [ 'ZRANGE', key, - typeof min === 'string' ? min : transformArgumentNumberInfinity(min), - typeof max === 'string' ? max : transformArgumentNumberInfinity(max) + transformArgumentStringNumberInfinity(min), + transformArgumentStringNumberInfinity(max) ]; switch (options?.BY) { diff --git a/packages/client/lib/commands/ZRANGEBYLEX.ts b/packages/client/lib/commands/ZRANGEBYLEX.ts index 7e2e7613b0..214d796da0 100644 --- a/packages/client/lib/commands/ZRANGEBYLEX.ts +++ b/packages/client/lib/commands/ZRANGEBYLEX.ts @@ -1,5 +1,5 @@ import { RedisCommandArguments } from '.'; -import { transformArgumentNumberInfinity } from './generic-transformers'; +import { transformArgumentStringNumberInfinity } from './generic-transformers'; export const FIRST_KEY_INDEX = 1; @@ -21,8 +21,8 @@ export function transformArguments( const args = [ 'ZRANGEBYLEX', key, - typeof min === 'string' ? min : transformArgumentNumberInfinity(min), - typeof max === 'string' ? max : transformArgumentNumberInfinity(max) + transformArgumentStringNumberInfinity(min), + transformArgumentStringNumberInfinity(max) ]; if (options?.LIMIT) { diff --git a/packages/client/lib/commands/ZRANGEBYSCORE.ts b/packages/client/lib/commands/ZRANGEBYSCORE.ts index 48dd8a415c..f6097fad58 100644 --- a/packages/client/lib/commands/ZRANGEBYSCORE.ts +++ b/packages/client/lib/commands/ZRANGEBYSCORE.ts @@ -1,5 +1,5 @@ import { RedisCommandArguments } from '.'; -import { transformArgumentNumberInfinity } from './generic-transformers'; +import { transformArgumentStringNumberInfinity } from './generic-transformers'; export const FIRST_KEY_INDEX = 1; @@ -21,8 +21,8 @@ export function transformArguments( const args = [ 'ZRANGEBYSCORE', key, - typeof min === 'string' ? min : transformArgumentNumberInfinity(min), - typeof max === 'string' ? max : transformArgumentNumberInfinity(max) + transformArgumentStringNumberInfinity(min), + transformArgumentStringNumberInfinity(max) ]; if (options?.LIMIT) { diff --git a/packages/client/lib/commands/ZRANGESTORE.ts b/packages/client/lib/commands/ZRANGESTORE.ts index 6ad7566166..c76afe6102 100644 --- a/packages/client/lib/commands/ZRANGESTORE.ts +++ b/packages/client/lib/commands/ZRANGESTORE.ts @@ -1,4 +1,4 @@ -import { transformArgumentNumberInfinity } from './generic-transformers'; +import { transformArgumentStringNumberInfinity } from './generic-transformers'; export const FIRST_KEY_INDEX = 1; @@ -12,13 +12,19 @@ interface ZRangeStoreOptions { WITHSCORES?: true; } -export function transformArguments(dst: string, src: string, min: number, max: number, options?: ZRangeStoreOptions): Array { +export function transformArguments( + dst: string, + src: string, + min: string | number, + max: string | number, + options?: ZRangeStoreOptions +): Array { const args = [ 'ZRANGESTORE', dst, src, - transformArgumentNumberInfinity(min), - transformArgumentNumberInfinity(max) + transformArgumentStringNumberInfinity(min), + transformArgumentStringNumberInfinity(max) ]; switch (options?.BY) { diff --git a/packages/client/lib/commands/generic-transformers.spec.ts b/packages/client/lib/commands/generic-transformers.spec.ts index 887d8720de..fa5c508613 100644 --- a/packages/client/lib/commands/generic-transformers.spec.ts +++ b/packages/client/lib/commands/generic-transformers.spec.ts @@ -7,6 +7,7 @@ import { transformReplyNumberInfinityArray, transformReplyNumberInfinityNull, transformArgumentNumberInfinity, + transformArgumentStringNumberInfinity, transformReplyTuples, transformReplyStreamMessages, transformReplyStreamsMessages, @@ -175,6 +176,22 @@ describe('Generic Transformers', () => { }); }); + describe('transformArgumentStringNumberInfinity', () => { + it("'0.5'", () => { + assert.equal( + transformArgumentStringNumberInfinity('0.5'), + '0.5' + ); + }); + + it('0.5', () => { + assert.equal( + transformArgumentStringNumberInfinity(0.5), + '0.5' + ); + }); + }); + it('transformReplyTuples', () => { assert.deepEqual( transformReplyTuples(['key1', 'value1', 'key2', 'value2']), diff --git a/packages/client/lib/commands/generic-transformers.ts b/packages/client/lib/commands/generic-transformers.ts index a531e86b43..3075636e75 100644 --- a/packages/client/lib/commands/generic-transformers.ts +++ b/packages/client/lib/commands/generic-transformers.ts @@ -69,6 +69,12 @@ export function transformArgumentNumberInfinity(num: number): string { } } +export function transformArgumentStringNumberInfinity(num: string | number): string { + if (typeof num === 'string') return num; + + return transformArgumentNumberInfinity(num); +} + export interface TuplesObject { [field: string]: string; }