You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
V5 bringing RESP3, Sentinel and TypeMapping to node-redis
RESP3 Support - Some commands responses in RESP3 aren't stable yet and therefore return an "untyped" ReplyUnion. Sentinel TypeMapping Correctly types Multi commands Note: some API changes to be further documented in v4-to-v5.md
This commit is contained in:
28
packages/client/lib/RESP/encoder.ts
Normal file
28
packages/client/lib/RESP/encoder.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { RedisArgument } from './types';
|
||||
|
||||
const CRLF = '\r\n';
|
||||
|
||||
export default function encodeCommand(args: Array<RedisArgument>): Array<RedisArgument> {
|
||||
const toWrite: Array<RedisArgument> = [];
|
||||
|
||||
let strings = '*' + args.length + CRLF;
|
||||
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const arg = args[i];
|
||||
if (typeof arg === 'string') {
|
||||
strings += '$' + Buffer.byteLength(arg) + CRLF + arg + CRLF;
|
||||
} else if (arg instanceof Buffer) {
|
||||
toWrite.push(
|
||||
strings + '$' + arg.length.toString() + CRLF,
|
||||
arg
|
||||
);
|
||||
strings = CRLF;
|
||||
} else {
|
||||
throw new TypeError(`"arguments[${i}]" must be of type "string | Buffer", got ${typeof arg} instead.`);
|
||||
}
|
||||
}
|
||||
|
||||
toWrite.push(strings);
|
||||
|
||||
return toWrite;
|
||||
}
|
Reference in New Issue
Block a user