Files
micro-service-api/node_modules/@redis/client/dist/lib/commands/XINFO_STREAM.js

67 lines
2.3 KiB
JavaScript
Raw Normal View History

2025-11-11 12:36:06 +07:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const generic_transformers_1 = require("./generic-transformers");
exports.default = {
IS_READ_ONLY: true,
/**
* Constructs the XINFO STREAM command to get detailed information about a stream
*
* @param parser - The command parser
* @param key - The stream key
* @returns Detailed information about the stream including its length, structure, and entries
* @see https://redis.io/commands/xinfo-stream/
*/
parseCommand(parser, key) {
parser.push('XINFO', 'STREAM');
parser.pushKey(key);
},
transformReply: {
// TODO: is there a "type safe" way to do it?
2(reply) {
const parsedReply = {};
for (let i = 0; i < reply.length; i += 2) {
switch (reply[i]) {
case 'first-entry':
case 'last-entry':
parsedReply[reply[i]] = transformEntry(reply[i + 1]);
break;
default:
parsedReply[reply[i]] = reply[i + 1];
break;
}
}
return parsedReply;
},
3(reply) {
if (reply instanceof Map) {
reply.set('first-entry', transformEntry(reply.get('first-entry')));
reply.set('last-entry', transformEntry(reply.get('last-entry')));
}
else if (reply instanceof Array) {
reply[17] = transformEntry(reply[17]);
reply[19] = transformEntry(reply[19]);
}
else {
reply['first-entry'] = transformEntry(reply['first-entry']);
reply['last-entry'] = transformEntry(reply['last-entry']);
}
return reply;
}
}
};
/**
* Transforms a raw stream entry into a structured object
*
* @param entry - Raw entry from Redis
* @returns Structured object with id and message, or null if entry is null
*/
function transformEntry(entry) {
if ((0, generic_transformers_1.isNullReply)(entry))
return entry;
const [id, message] = entry;
return {
id,
message: (0, generic_transformers_1.transformTuplesReply)(message)
};
}
//# sourceMappingURL=XINFO_STREAM.js.map