resolve-local-event-broker
Version:
The reSolve framework's event broker for applications on a local machine.
33 lines (26 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _constants = require("../constants");
const operationTypesMap = new Map([[_constants.PrivateOperationType.PUSH_NOTIFICATIONS, 'pushNotificationAndGetSubscriptions'], [_constants.PrivateOperationType.PULL_NOTIFICATIONS, 'pullNotificationsAsBatchForSubscriber'], [_constants.PrivateOperationType.RESUME_SUBSCRIBER, 'resumeSubscriber'], [_constants.PrivateOperationType.ACKNOWLEDGE_BATCH, 'acknowledgeBatch'], [_constants.PrivateOperationType.FINALIZE_BATCH, 'finalizeAndReportBatch'], [_constants.PrivateOperationType.REQUEST_TIMEOUT, 'requestTimeout'], [_constants.PrivateOperationType.DELIVER_BATCH, 'deliverBatchForSubscriber'], [_constants.PublicOperationType.PUBLISH, 'publish'], [_constants.PublicOperationType.SUBSCRIBE, 'subscribe'], [_constants.PublicOperationType.RESUBSCRIBE, 'resubscribe'], [_constants.PublicOperationType.UNSUBSCRIBE, 'unsubscribe'], [_constants.PublicOperationType.ACKNOWLEDGE, 'acknowledge'], [_constants.PublicOperationType.STATUS, 'status'], [_constants.PublicOperationType.RESUME, 'resume'], [_constants.PublicOperationType.PAUSE, 'pause'], [_constants.PublicOperationType.RESET, 'reset'], [_constants.PublicOperationType.READ, 'read']]);
const invokeOperation = async (pool, laziness, {
type,
payload
}, timeout) => {
const methodName = operationTypesMap.get(type);
if (methodName == null) {
throw new Error(`Invalid invoke operation type "${type}" with payload: ${JSON.stringify(payload)}`);
}
if (laziness === _constants.LazinessStrategy.EAGER) {
pool.multiplexAsync(pool[methodName].bind(pool), pool, payload);
} else if (laziness === _constants.LazinessStrategy.LAZY && !isNaN(+timeout) && +timeout > 0) {
setTimeout(pool.multiplexAsync.bind(pool, pool[methodName].bind(pool), pool, payload), +timeout);
} else {
throw new Error(`Invalid invoke operation type "${type}" with payload: ${JSON.stringify(payload)}`);
}
};
var _default = invokeOperation;
exports.default = _default;
//# sourceMappingURL=invoke-operation.js.map