extremum-cli
Version:
Extremum CLI
207 lines (206 loc) • 9.22 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var commander_1 = require("commander");
var chalk_1 = __importDefault(require("chalk"));
var extremum_client_1 = __importDefault(require("../extremum-client"));
var helpers_1 = require("../helpers");
var listExchanges = function () {
return (0, extremum_client_1.default)().management.signals.exchanges.list(helpers_1.LIST_OPTIONS);
};
var getExchange = function (exchangeId) {
return (0, extremum_client_1.default)().management.signals.exchanges.get(exchangeId);
};
var listSubscriptions = function (cmd) {
return cmd.exchange
? (0, extremum_client_1.default)().signals.subscriptions.listForExchange(cmd.exchange, helpers_1.LIST_OPTIONS)
: (0, extremum_client_1.default)().signals.subscriptions.list(helpers_1.LIST_OPTIONS);
};
var getSubscription = function (subscriptionId) {
return (0, extremum_client_1.default)().signals.subscriptions.get(subscriptionId);
};
var sendSignal = function (exchangeId, cmd) {
var body = {
kind: cmd.kind,
exchange: exchangeId,
source: cmd.source,
};
if (cmd.destination) {
Object.assign(body, { destination: cmd.destination });
}
if (cmd.xid) {
Object.assign(body, { xid: cmd.xid });
}
if (cmd.timestamp) {
Object.assign(body, { sent: { timestamp: cmd.timestamp } });
}
if (cmd.frame) {
if (cmd.timestamp) {
Object.assign(body, {
sent: { timestamp: cmd.timestamp, frame: cmd.frame },
});
}
else {
console.log(chalk_1.default.red('error: missing required option --timestamp <timestamp>'));
return;
}
}
if (cmd.data) {
Object.assign(body, { data: cmd.data });
}
if (cmd.uuid) {
Object.assign(body, { peer: { uuid: cmd.uuid } });
}
if (cmd.peer_xid) {
if (cmd.uuid) {
Object.assign(body, { peer: { uuid: cmd.uuid, xid: cmd.xid } });
}
else {
console.log(chalk_1.default.red('error: missing required option --uuid <uuid>'));
return;
}
}
return (0, extremum_client_1.default)().signals.send(body);
};
var pollSignals = function (subscriptionId) { return __awaiter(void 0, void 0, void 0, function () {
var unreadSignals;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, (0, extremum_client_1.default)().signals.poll(subscriptionId, 10)];
case 1:
unreadSignals = _a.sent();
if (!(unreadSignals.length > 0)) return [3 /*break*/, 3];
return [4 /*yield*/, (0, extremum_client_1.default)().signals.removeAll(subscriptionId, unreadSignals.map(function (signal) { return signal.handle || ''; }))];
case 2:
_a.sent();
_a.label = 3;
case 3: return [2 /*return*/];
}
});
}); };
var removeSignal = function (subscriptionId, signalId) {
return (0, extremum_client_1.default)().signals.remove(subscriptionId, signalId);
};
var removeAll = function (subscriptionId, receiptHandles) {
return (0, extremum_client_1.default)().signals.removeAll(subscriptionId, receiptHandles.split(','));
};
var subscribeToExchange = function (exchangeId, cmd) {
var type = cmd.type;
if (type === 'rest') {
var body = {
destination: cmd.destination,
function: cmd.function,
};
return (0, extremum_client_1.default)().signals.subscribe(exchangeId, cmd.type, body);
}
else {
return (0, extremum_client_1.default)().signals.subscribe(exchangeId, cmd.type);
}
};
var unsubscribeFromExchange = function (cmd) {
var type = cmd.type;
if (type === 'rest') {
return (0, extremum_client_1.default)().signals.unsubscribe(type, cmd.id);
}
else {
return (0, extremum_client_1.default)().signals.unsubscribe(type);
}
};
var signals = new commander_1.Command('signals').description('send and receive signals');
signals
.command('send <exchange-id>')
.option('--source <source-actor>', 'signal sender ID')
.option('--kind <kind>', 'signal kind', 'regular')
.option('--destination <destination-actor>', 'signal receiver ID')
.option('--xid <xid>', 'transaction ID')
.option('--timestamp <timestamp>', 'sender timestamp')
.option('--frame <frame>', 'sender frame')
.option('--data <data>', 'signal data')
.option('--peer-uuid <uuid>', 'peer signal UUID')
.option('--peer-xid <peer-xid>', 'peer signal transaction ID')
.description('send a signal')
.action((0, helpers_1.actionRunner)(sendSignal));
signals
.command('poll <subscription-id>')
.description('poll unread signals')
.action((0, helpers_1.actionRunner)(pollSignals));
signals
.command('remove')
.requiredOption('--subscription <id>')
.requiredOption('--signal <id>')
.description("remove a signal from a subscriber's queue")
.action((0, helpers_1.actionRunner)(removeSignal));
signals
.command('remove all <subscription-id>')
.requiredOption('--handles <handles>')
.description("remove all signals from a subscriber's queue")
.action((0, helpers_1.actionRunner)(removeAll));
signals
.command('subscribe <exchange-id>')
.option('--type <sub-type>', 'Type of subscription. Default: rest.', 'rest')
.option('--function <function>')
.option('--destination <destination>')
.description('subscribe to a signal exchange')
.action((0, helpers_1.actionRunner)(subscribeToExchange));
signals
.command('unsubscribe')
.option('--id <subscription-id>')
.option('--type <sub-type>', 'Type of subscription. Default: rest.', 'rest')
.description('unsubscribe from a signal exchange')
.action((0, helpers_1.actionRunner)(unsubscribeFromExchange));
signals
.command('ls-subscriptions')
.option('--exchange <exchange-id>')
.description('list signal subscriptions')
.action((0, helpers_1.actionRunner)(listSubscriptions));
signals
.command('subscription <sub-id>')
.description('get subscription metadata')
.action((0, helpers_1.actionRunner)(getSubscription));
signals
.command('ls-exchanges')
.description('list signal exchanges')
.action((0, helpers_1.actionRunner)(listExchanges));
signals
.command('exchange <exchange-id>')
.description('get exchange metadata')
.action((0, helpers_1.actionRunner)(getExchange));
exports.default = signals;