SAP-BTP-Spielwiese/app1/node_modules/ioredis/built/ScanStream.js
Markus Rettig 775ac7b58c completed step 3 from the tutorial
you must login with an BTP account in order to see the app
2024-02-08 16:13:36 +01:00

52 lines
1.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const stream_1 = require("stream");
/**
* Convenient class to convert the process of scaning keys to a readable stream.
*
* @export
* @class ScanStream
* @extends {Readable}
*/
class ScanStream extends stream_1.Readable {
constructor(opt) {
super(opt);
this.opt = opt;
this._redisCursor = "0";
this._redisDrained = false;
}
_read() {
if (this._redisDrained) {
this.push(null);
return;
}
const args = [this._redisCursor];
if (this.opt.key) {
args.unshift(this.opt.key);
}
if (this.opt.match) {
args.push("MATCH", this.opt.match);
}
if (this.opt.type) {
args.push("TYPE", this.opt.type);
}
if (this.opt.count) {
args.push("COUNT", String(this.opt.count));
}
this.opt.redis[this.opt.command](args, (err, res) => {
if (err) {
this.emit("error", err);
return;
}
this._redisCursor = res[0] instanceof Buffer ? res[0].toString() : res[0];
if (this._redisCursor === "0") {
this._redisDrained = true;
}
this.push(res[1]);
});
}
close() {
this._redisDrained = true;
}
}
exports.default = ScanStream;