UNPKG

@actorize/core

Version:

Actorize helps building scalable js apps with a messaging system

64 lines 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRouter = exports.createNetworkInterface = void 0; const createNetworkInterface = () => { const callbacks = []; let localCallback = () => { }; return { sendLocal: (msg) => { localCallback(msg); }, sendOutbound: (msg) => { callbacks.forEach((cb) => { cb(msg); }); }, handleLocalIncomingMessages: (cb) => { callbacks.push(cb); }, setLocalCallback: (cb) => { localCallback = cb; }, }; }; exports.createNetworkInterface = createNetworkInterface; const createRouter = (args) => { const interfaces = []; Object.keys(args.domains).forEach((key) => { const i = args.domains[key]; // prevent duplication if (interfaces.indexOf(i) === -1) { interfaces.push(i); } }); const handleIncomingMessage = (msg, store) => { if (msg.domain === args.ownDomain) { store.pushMessage(msg.payload.recipient, msg.payload.payload, msg.payload.sender); return true; } if (!args.domains[msg.domain]) { return false; } const senderParts = msg.payload.sender.split('.'); const isLocalSender = senderParts.length === 1; let { sender } = msg.payload; if (isLocalSender) { sender = `${args.ownDomain}.${sender}`; } args.domains[msg.domain].sendOutbound({ ...msg, payload: { ...msg.payload, sender, }, }); return true; }; return { handleIncomingMessage, interfaces, ownDomain: args.ownDomain, }; }; exports.createRouter = createRouter; //# sourceMappingURL=network.js.map