1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-13 10:02:24 +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,56 +1,87 @@
import { RedisCommandArguments } from '.';
// // import { RedisCommandArguments } from '.';
export function transformArguments(): RedisCommandArguments {
return ['FUNCTION', 'STATS'];
}
// // export function transformArguments(): RedisCommandArguments {
// // return ['FUNCTION', 'STATS'];
// // }
type FunctionStatsRawReply = [
'running_script',
null | [
'name',
string,
'command',
string,
'duration_ms',
number
],
'engines',
Array<any> // "flat tuples" (there is no way to type that)
// ...[string, [
// 'libraries_count',
// number,
// 'functions_count',
// number
// ]]
];
// // type FunctionStatsRawReply = [
// // 'running_script',
// // null | [
// // 'name',
// // string,
// // 'command',
// // string,
// // 'duration_ms',
// // number
// // ],
// // 'engines',
// // Array<any> // "flat tuples" (there is no way to type that)
// // // ...[string, [
// // // 'libraries_count',
// // // number,
// // // 'functions_count',
// // // number
// // // ]]
// // ];
interface FunctionStatsReply {
runningScript: null | {
name: string;
command: string;
durationMs: number;
};
engines: Record<string, {
librariesCount: number;
functionsCount: number;
}>;
}
// // interface FunctionStatsReply {
// // runningScript: null | {
// // name: string;
// // command: string;
// // durationMs: number;
// // };
// // engines: Record<string, {
// // librariesCount: number;
// // functionsCount: number;
// // }>;
// // }
export function transformReply(reply: FunctionStatsRawReply): FunctionStatsReply {
const engines = Object.create(null);
for (let i = 0; i < reply[3].length; i++) {
engines[reply[3][i]] = {
librariesCount: reply[3][++i][1],
functionsCount: reply[3][i][3]
};
}
// // export function transformReply(reply: FunctionStatsRawReply): FunctionStatsReply {
// // const engines = Object.create(null);
// // for (let i = 0; i < reply[3].length; i++) {
// // engines[reply[3][i]] = {
// // librariesCount: reply[3][++i][1],
// // functionsCount: reply[3][i][3]
// // };
// // }
return {
runningScript: reply[1] === null ? null : {
name: reply[1][1],
command: reply[1][3],
durationMs: reply[1][5]
},
engines
};
}
// // return {
// // runningScript: reply[1] === null ? null : {
// // name: reply[1][1],
// // command: reply[1][3],
// // durationMs: reply[1][5]
// // },
// // engines
// // };
// // }
// // #!LUA name=math \n redis.register_function{ function_name = "square", callback = function(keys, args) return args[1] * args[1] end, flags = { "no-writes" } }
// import { Command, TuplesToMapReply, BlobStringReply, NullReply, NumberReply, MapReply } from '../RESP/types';
// type FunctionStatsReply = TuplesToMapReply<[
// [BlobStringReply<'running_script'>, NullReply | TuplesToMapReply<[
// [BlobStringReply<'name'>, BlobStringReply],
// [BlobStringReply<'command'>, BlobStringReply],
// [BlobStringReply<'duration_ms'>, NumberReply]
// ]>],
// [BlobStringReply<'engines'>, MapReply<BlobStringReply, TuplesToMapReply<[
// [BlobStringReply<'libraries_count'>, NumberReply],
// [BlobStringReply<'functions_count'>, NumberReply]
// ]>>]
// ]>;
// export default {
// IS_READ_ONLY: true,
// FIRST_KEY_INDEX: undefined,
// transformArguments() {
// return ['FUNCTION', 'STATS'];
// },
// transformReply: {
// 2: (reply) => {
// },
// 3: undefined as unknown as () =>
// }
// } as const satisfies Command;