UNPKG

trpc-browser

Version:

tRPC adapters and links for everywhere in the browser

39 lines 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relay = void 0; // can relay messages between two links const trpcMessage_1 = require("../shared/trpcMessage"); function relay(window, port, windowPostOrigin) { function relayToWindow(message) { if (message.relayed) return; const relayedMessage = Object.assign(Object.assign({}, message), { relayed: true }); window.postMessage(relayedMessage, { targetOrigin: windowPostOrigin, }); } function relayToPort(message) { if (message.relayed) return; const relayedMessage = Object.assign(Object.assign({}, message), { relayed: true }); port.postMessage(relayedMessage); } const onWindowMessage = (event) => { if (!(0, trpcMessage_1.isTRPCMessage)(event.data)) return; relayToPort(event.data); }; const onPortMessage = (message) => { if (!(0, trpcMessage_1.isTRPCMessage)(message)) return; relayToWindow(message); }; window.addEventListener('message', onWindowMessage); port.onMessage.addListener(onPortMessage); return () => { window.removeEventListener('message', onWindowMessage); port.onMessage.removeListener(onPortMessage); }; } exports.relay = relay; //# sourceMappingURL=index.js.map