zookeeper-commands
Version:
A node.js client to run ZooKeeper Commands the four letter words.
161 lines • 5.33 kB
JavaScript
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
var os = require("os");
var stat_1 = require("./stat");
var qsutil = require("./qsutil");
var nodeify_ts_1 = require("nodeify-ts");
var Netcat = require('node-netcat');
__export(require("./client"));
var extractResult = function (result) {
var extracterArray = [
{
re: /ruok/,
run: function (resultp) {
resultp.ok = resultp.raw === 'imok';
return resultp;
},
},
{
re: /stat/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
stat_1.default(resultp.lines, resultp.json);
return resultp;
},
},
{
re: /conf/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
qsutil.array2json(resultp.lines, resultp.json);
return resultp;
},
},
{
re: /cons/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
stat_1.default(resultp.lines, resultp.json);
return resultp;
},
},
{
re: /dump/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
return resultp;
},
},
{
re: /envi/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
qsutil.array2json(resultp.lines, resultp.json);
return resultp;
},
},
{
re: /srvr/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
qsutil.array2json2(resultp.lines, resultp.json);
return resultp;
},
},
{
re: /wchs/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
qsutil.array2json2(resultp.lines, resultp.json);
return resultp;
},
},
{
re: /mntr/,
run: function (resultp) {
resultp.lines = resultp.raw.split(os.EOL);
resultp.json = {};
qsutil.array2json3(resultp.lines, resultp.json);
return resultp;
},
},
];
extracterArray.forEach(function (extracter) {
var re = extracter.re;
var str = result.command;
var m;
if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
return extracter.run(result);
}
});
return result;
};
var Zookeeper = (function () {
function Zookeeper(options) {
if (options === void 0) { options = new Options(); }
this.options = options;
}
Zookeeper.prototype.command = function (command, callback) {
var zookeeper = this;
var promise = Promise.resolve().then(function () {
if (!command || command.length !== 4) {
throw new Error("Each command must be\n composed of four letters https://zookeeper.apache.org/doc/r3.4.6/zookeeperAdmin.html#sc_zkCommands");
}
var options = {
read_encoding: 'utf8',
timeout: zookeeper.options.timeout_ms ? zookeeper.options.timeout_ms : 60000,
};
return new Promise(function (resolve, reject) {
var client = Netcat.client(zookeeper.options.port, zookeeper.options.host, options);
client.on('open', function () {
client.send(command);
});
client.on('data', function (data) {
var response = data.toString('utf8');
resolve(response);
});
client.on('error', function (err) {
console.log(err);
reject(err);
});
client.on('close', function () {
});
client.start();
});
}).then(function (data) {
var result = {
command: command,
raw: data,
};
return extractResult(result);
});
return nodeify_ts_1.default(promise, callback);
};
return Zookeeper;
}());
exports.Zookeeper = Zookeeper;
var Options = (function () {
function Options(host, port, timeout_ms) {
if (host === void 0) { host = 'localhost'; }
if (port === void 0) { port = 2181; }
if (timeout_ms === void 0) { timeout_ms = 1000; }
this.host = host;
this.port = port;
this.timeout_ms = timeout_ms;
}
return Options;
}());
exports.Options = Options;
//# sourceMappingURL=index.js.map
;