1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-19 07:02:06 +03:00
* wip

* Worked on phrasing etc for v5 doc changes.

* Removed quite repetition of 'Rather'

* Update v4-to-v5.md

* Update v4-to-v5.md

* Update v4-to-v5.md

* WIP

* WIP

* clean SET command

* some more commands, multi.exec<'typed'>

* "typed" multi

* WIP

* upgrade deps

* wip

* wip

* fix #2469

* wip

* npm update

* wip

* wip

* wip

* wip

* some tests

* tests.yml

* wip

* wip

* merge master into v5

* some more commands

* some more commands

* WIP

* Release client@2.0.0-next.1

---------

Co-authored-by: Simon Prickett <simon@redislabs.com>
This commit is contained in:
Leibale Eidelman
2023-04-30 11:18:46 -04:00
committed by GitHub
parent 3273c8540d
commit b4bb68d8ab
540 changed files with 20282 additions and 17587 deletions

View File

@@ -1,89 +1,115 @@
export const IS_READ_ONLY = true;
export function transformArguments(): Array<string> {
return ['CLIENT', 'INFO'];
}
import { Command, VerbatimStringReply } from '../RESP/types';
export interface ClientInfoReply {
id: number;
addr: string;
laddr?: string; // 6.2
fd: number;
name: string;
age: number;
idle: number;
flags: string;
db: number;
sub: number;
psub: number;
ssub?: number; // 7.0.3
multi: number;
qbuf: number;
qbufFree: number;
argvMem?: number; // 6.0
multiMem?: number; // 7.0
obl: number;
oll: number;
omem: number;
totMem?: number; // 6.0
events: string;
cmd: string;
user?: string; // 6.0
redir?: number; // 6.2
resp?: number; // 7.0
id: number;
addr: string;
/**
* available since 6.2
*/
laddr?: string;
fd: number;
name: string;
age: number;
idle: number;
flags: string;
db: number;
sub: number;
psub: number;
/**
* available since 7.0.3
*/
ssub?: number;
multi: number;
qbuf: number;
qbufFree: number;
/**
* available since 6.0
*/
argvMem?: number;
/**
* available since 7.0
*/
multiMem?: number;
obl: number;
oll: number;
omem: number;
/**
* available since 6.0
*/
totMem?: number;
events: string;
cmd: string;
/**
* available since 6.0
*/
user?: string;
/**
* available since 6.2
*/
redir?: number;
/**
* available since 7.0
*/
resp?: number;
}
const CLIENT_INFO_REGEX = /([^\s=]+)=([^\s]*)/g;
export function transformReply(rawReply: string): ClientInfoReply {
export default {
IS_READ_ONLY: true,
transformArguments() {
return ['CLIENT', 'INFO']
},
transformReply(rawReply: VerbatimStringReply) {
const map: Record<string, string> = {};
for (const item of rawReply.matchAll(CLIENT_INFO_REGEX)) {
map[item[1]] = item[2];
for (const item of rawReply.toString().matchAll(CLIENT_INFO_REGEX)) {
map[item[1]] = item[2];
}
const reply: ClientInfoReply = {
id: Number(map.id),
addr: map.addr,
fd: Number(map.fd),
name: map.name,
age: Number(map.age),
idle: Number(map.idle),
flags: map.flags,
db: Number(map.db),
sub: Number(map.sub),
psub: Number(map.psub),
multi: Number(map.multi),
qbuf: Number(map.qbuf),
qbufFree: Number(map['qbuf-free']),
argvMem: Number(map['argv-mem']),
obl: Number(map.obl),
oll: Number(map.oll),
omem: Number(map.omem),
totMem: Number(map['tot-mem']),
events: map.events,
cmd: map.cmd,
user: map.user
id: Number(map.id),
addr: map.addr,
fd: Number(map.fd),
name: map.name,
age: Number(map.age),
idle: Number(map.idle),
flags: map.flags,
db: Number(map.db),
sub: Number(map.sub),
psub: Number(map.psub),
multi: Number(map.multi),
qbuf: Number(map.qbuf),
qbufFree: Number(map['qbuf-free']),
argvMem: Number(map['argv-mem']),
obl: Number(map.obl),
oll: Number(map.oll),
omem: Number(map.omem),
totMem: Number(map['tot-mem']),
events: map.events,
cmd: map.cmd,
user: map.user
};
if (map.laddr !== undefined) {
reply.laddr = map.laddr;
reply.laddr = map.laddr;
}
if (map.redir !== undefined) {
reply.redir = Number(map.redir);
reply.redir = Number(map.redir);
}
if (map.ssub !== undefined) {
reply.ssub = Number(map.ssub);
reply.ssub = Number(map.ssub);
}
if (map['multi-mem'] !== undefined) {
reply.multiMem = Number(map['multi-mem']);
reply.multiMem = Number(map['multi-mem']);
}
if (map.resp !== undefined) {
reply.resp = Number(map.resp);
reply.resp = Number(map.resp);
}
return reply;
}
}
} as const satisfies Command;