UNPKG

@distributed-functions/core

Version:
125 lines 10.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InMemoryTransport = exports.InMemoryTransportName = void 0; const call_handler_1 = require("./call-handler"); const errors_1 = require("./errors"); const event_handler_1 = require("./event-handler"); const transport_1 = require("./transport"); exports.InMemoryTransportName = 'InMemoryTransport'; const InMemoryTransport = (props = {}) => { var _a, _b, _c; const ctx = () => { return props.ctx ? props.ctx() : {}; }; const { callsToPublish, eventsToPublish } = props; // # Logger let logger = (_a = props.logger) !== null && _a !== void 0 ? _a : { info: console.log, error: console.error, warn: console.warn, child: () => { return console; } }; if (logger.child) { logger = logger.child({ dfTransport: exports.InMemoryTransportName }); } // # Subscribe maps let callSubscribersMap = {}; let eventSubscribersMap = {}; // # PUBLISH CALL const publishCall = async (callRequest, _, assignedCalls, // # This needed to send other here some assignedCalls from external Transport assignedEvents) => { const callSubscriber = callSubscribersMap[callRequest.name]; if (!callSubscriber) { throw new errors_1.CallSubscriberNotFoundError(callRequest.name); } return callSubscriber.run(callRequest, ctx(), { call: assignedCalls !== null && assignedCalls !== void 0 ? assignedCalls : (0, transport_1.bindTransportToCalls)(publishCall, callSubscriber.callsToPublish || {}), event: assignedEvents !== null && assignedEvents !== void 0 ? assignedEvents : (0, transport_1.bindTransportToEvents)(publishEvent, callSubscriber.eventsToPublish || {}) }); }; const transportAssignedCalls = (0, transport_1.bindTransportToCalls)(publishCall, (_b = props.callsToPublish) !== null && _b !== void 0 ? _b : {}); // # PUBLISH EVENTS const publishEvent = async (event, _, assignedCalls, // # This needed to send other here some assignedCalls from external Transport assignedEvents) => { const eventSubscriberList = eventSubscribersMap[event.name]; if (!eventSubscriberList) { throw new errors_1.EventSubscriberNotFoundError(event.name); } eventSubscriberList.map(async (eventSubscriber) => { await eventSubscriber.run(event, ctx(), { call: assignedCalls !== null && assignedCalls !== void 0 ? assignedCalls : (0, transport_1.bindTransportToCalls)(publishCall, eventSubscriber.callsToPublish || {}), event: assignedEvents !== null && assignedEvents !== void 0 ? assignedEvents : (0, transport_1.bindTransportToEvents)(publishEvent, eventSubscriber.eventsToPublish || {}) }); }); }; // eslint-disable-next-line @typescript-eslint/no-unused-vars const transportAssignedEvents = (0, transport_1.bindTransportToEvents)(publishEvent, (_c = props.eventsToPublish) !== null && _c !== void 0 ? _c : {}); return { // # INIT init: async () => { return; }, stop: async () => { return; }, restart: async () => { return; }, destroy: async () => { callSubscribersMap = {}; eventSubscribersMap = {}; }, ctx, // UTILS checkCallHandlerExist: (callName) => { return !!callSubscribersMap[callName]; }, getCallSub: (callName) => { return callSubscribersMap[callName]; }, // # CALL call: Object.assign({ publish: publishCall, subscribe: async (call, run, options) => { callSubscribersMap[call.name] = (0, call_handler_1.CallHandler)({ run, call, parallel: options === null || options === void 0 ? void 0 : options.parallel, callsToPublish, eventsToPublish }); }, subscribeHandler: async (callHandler) => { callSubscribersMap[callHandler.call.name] = callHandler; return; } }, transportAssignedCalls), // # EVENT event: Object.assign({ publish: publishEvent, subscribe: async (event, run, options) => { const es = eventSubscribersMap[event.eventName]; const eventHandler = (0, event_handler_1.EventHandler)({ event, run, parallel: options === null || options === void 0 ? void 0 : options.parallel, persistent: options === null || options === void 0 ? void 0 : options.persistent }); if (es) { es.push(eventHandler); } else { eventSubscribersMap[event.eventName] = [eventHandler]; } }, subscribeHandler: async (eventHandler) => { const es = eventSubscribersMap[eventHandler.event.eventName]; if (es) { es.push(eventHandler); } else { eventSubscribersMap[eventHandler.event.eventName] = [eventHandler]; } return; } }, transportAssignedEvents) }; }; exports.InMemoryTransport = InMemoryTransport; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LWluLW1lbW9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90cmFuc3BvcnQtaW4tbWVtb3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlEQUE0RDtBQUM1RCxxQ0FBb0Y7QUFFcEYsbURBQWlGO0FBR2pGLDJDQUFvRjtBQUV2RSxRQUFBLHFCQUFxQixHQUFHLG1CQUFtQixDQUFBO0FBV2pELE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsUUFLSSxFQUFFLEVBQzBCLEVBQUU7O0lBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRTtRQUNmLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBRSxFQUFVLENBQUE7SUFDOUMsQ0FBQyxDQUFBO0lBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFakQsV0FBVztJQUNYLElBQUksTUFBTSxHQUFXLE1BQUEsS0FBSyxDQUFDLE1BQU0sbUNBQUk7UUFDbkMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHO1FBQ2pCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNWLE9BQU8sT0FBTyxDQUFBO1FBQ2hCLENBQUM7S0FDRixDQUFBO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ3BCLFdBQVcsRUFBRSw2QkFBcUI7U0FDbkMsQ0FBQyxDQUFBO0tBQ0g7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxrQkFBa0IsR0FBb0QsRUFBRSxDQUFBO0lBQzVFLElBQUksbUJBQW1CLEdBQTRELEVBQUUsQ0FBQTtJQUVyRixpQkFBaUI7SUFFakIsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUN2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