@distributed-functions/core
Version:
Distributed Functions for TypeScript
125 lines • 10.9 kB
JavaScript
;
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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