lib/actions.js
"use strict";
/* Copyright © 2014-2022 Richard Rodger and other contributors, MIT License. */
Object.defineProperty(exports, "__esModule", { value: true });
exports.addActions = void 0;
const legacy_1 = require("./legacy");
function addActions(instance) {
instance.stats = make_action_seneca_stats(instance.private$);
// Add builtin actions.
instance
.add('sys:seneca,on:point', on_point);
// TODO: complete merge of v4prep
// .add('role:transport,cmd:listen', action_listen)
// .add('role:transport,cmd:client', action_client)
// LEGACY
instance.add({ role: 'seneca', cmd: 'ping' }, cmd_ping);
instance.add({ role: 'seneca', cmd: 'stats' }, instance.stats);
instance.add({ role: 'seneca', cmd: 'close' }, action_seneca_close);
instance.add({ role: 'seneca', info: 'fatal' }, action_seneca_fatal);
instance.add({ role: 'seneca', get: 'options' }, action_options_get);
}
exports.addActions = addActions;
function on_point(msg, reply) {
reply();
}
function cmd_ping(_msg, reply) {
let ping = this.ping();
reply(ping);
}
function action_seneca_fatal(_msg, reply) {
reply();
}
function action_seneca_close(_msg, reply) {
this.emit('close');
reply();
}
function make_action_seneca_stats(private$) {
return function action_seneca_stats(msg, reply) {
msg = msg || {};
var stats;
// TODO: review - this is sort of breaking the "type" of the stats result
if (private$.stats.actmap[msg.pattern]) {
stats = private$.stats.actmap[msg.pattern];
stats.time = private$.timestats.calculate(msg.pattern);
}
else {
stats = Object.assign({}, private$.stats);
stats.now = new Date();
stats.uptime = stats.now - stats.start;
stats.now = new Date(stats.now).toISOString();
stats.start = new Date(stats.start).toISOString();
var summary = null == msg.summary || true === msg.summary;
if (summary) {
stats.actmap = void 0;
}
else {
Object.keys(private$.stats.actmap).forEach((p) => {
private$.stats.actmap[p].time = private$.timestats.calculate(p);
});
}
}
if (reply) {
reply(stats);
}
return stats;
};
}
function action_options_get(msg, reply) {
var options = this.options();
var base = msg.base || null;
var top = base ? options[base] || {} : options;
var val = msg.key ? top[msg.key] : top;
reply(legacy_1.Legacy.copydata(val));
}
//# sourceMappingURL=actions.js.map