1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-04 15:02:09 +03:00

fix legacy mode resp encoder (#2118)

* fix legacy mode resp encoder

* Update encoder.ts
This commit is contained in:
Leibale Eidelman
2022-05-11 14:20:26 -04:00
committed by GitHub
parent 94dbcc847b
commit 3ec17e31b3
2 changed files with 12 additions and 10 deletions

View File

@@ -5,23 +5,21 @@ const CRLF = '\r\n';
export default function encodeCommand(args: RedisCommandArguments): Array<RedisCommandArgument> { export default function encodeCommand(args: RedisCommandArguments): Array<RedisCommandArgument> {
const toWrite: Array<RedisCommandArgument> = []; const toWrite: Array<RedisCommandArgument> = [];
let strings = `*${args.length}${CRLF}`; let strings = '*' + args.length + CRLF;
for (let i = 0; i < args.length; i++) { for (let i = 0; i < args.length; i++) {
const arg = args[i]; const arg = args[i];
if (typeof arg === 'string') { if (typeof arg === 'string') {
const byteLength = Buffer.byteLength(arg); strings += '$' + Buffer.byteLength(arg) + CRLF + arg + CRLF;
strings += `$${byteLength}${CRLF}`;
strings += arg;
} else if (arg instanceof Buffer) { } else if (arg instanceof Buffer) {
toWrite.push(`${strings}$${arg.length}${CRLF}`); toWrite.push(
strings = ''; strings + '$' + arg.length.toString() + CRLF,
toWrite.push(arg); arg
);
strings = CRLF;
} else { } else {
throw new TypeError('Invalid argument type'); throw new TypeError('Invalid argument type');
} }
strings += CRLF;
} }
toWrite.push(strings); toWrite.push(strings);

View File

@@ -123,7 +123,11 @@ export function transformCommandArguments<T>(
} }
export function transformLegacyCommandArguments(args: Array<any>): Array<any> { export function transformLegacyCommandArguments(args: Array<any>): Array<any> {
return args.flat().map(x => x?.toString?.()); return args.flat().map(arg => {
return typeof arg === 'number' || arg instanceof Date ?
arg.toString() :
arg;
});
} }
export function transformCommandReply<C extends RedisCommand>( export function transformCommandReply<C extends RedisCommand>(