UNPKG

@orpc/client

Version:

<div align="center"> <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" /> </div>

72 lines (67 loc) 2.09 kB
import { ClientPeer } from '@orpc/standard-server-peer'; import '@orpc/shared'; import { c as StandardRPCLink } from '../../shared/client.DKmRtVO2.mjs'; import '@orpc/standard-server'; import '../../shared/client.txdq_i5V.mjs'; function postMessagePortMessage(port, data) { port.postMessage(data); } function onMessagePortMessage(port, callback) { if ("addEventListener" in port) { port.addEventListener("message", (event) => { callback(event.data); }); } else if ("on" in port) { port.on("message", (event) => { callback(event?.data); }); } else if ("onMessage" in port) { port.onMessage.addListener((data) => { callback(data); }); } else { throw new Error("Cannot find a addEventListener/on/onMessage method on the port"); } } function onMessagePortClose(port, callback) { if ("addEventListener" in port) { port.addEventListener("close", async () => { callback(); }); } else if ("on" in port) { port.on("close", async () => { callback(); }); } else if ("onDisconnect" in port) { port.onDisconnect.addListener(() => { callback(); }); } else { throw new Error("Cannot find a addEventListener/on/onDisconnect method on the port"); } } class LinkMessagePortClient { peer; constructor(options) { this.peer = new ClientPeer((message) => { return postMessagePortMessage(options.port, message); }); onMessagePortMessage(options.port, async (message) => { await this.peer.message(message); }); onMessagePortClose(options.port, () => { this.peer.close(); }); } async call(request, _options, _path, _input) { const response = await this.peer.request(request); return { ...response, body: () => Promise.resolve(response.body) }; } } class RPCLink extends StandardRPCLink { constructor(options) { const linkClient = new LinkMessagePortClient(options); super(linkClient, { ...options, url: "orpc:/" }); } } export { LinkMessagePortClient, RPCLink, onMessagePortClose, onMessagePortMessage, postMessagePortMessage };