@orpc/server
Version:
<div align="center"> <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" /> </div>
40 lines (36 loc) • 1.3 kB
JavaScript
import { postMessagePortMessage, onMessagePortMessage, onMessagePortClose } from '@orpc/client/message-port';
import { resolveMaybeOptionalOptions } from '@orpc/shared';
import { ServerPeer } from '@orpc/standard-server-peer';
import { c as createServerPeerHandleRequestFn } from '../../shared/server.UVMTOWrk.mjs';
import '@orpc/client';
import '@orpc/standard-server';
import '@orpc/contract';
import { b as StandardRPCHandler } from '../../shared/server.CYRYFTxo.mjs';
import '@orpc/client/standard';
import '../../shared/server.DZ5BIITo.mjs';
import '../../shared/server.B_fj3X5m.mjs';
class MessagePortHandler {
constructor(standardHandler) {
this.standardHandler = standardHandler;
}
upgrade(port, ...rest) {
const peer = new ServerPeer((message) => {
return postMessagePortMessage(port, message);
});
onMessagePortMessage(port, async (message) => {
await peer.message(
message,
createServerPeerHandleRequestFn(this.standardHandler, resolveMaybeOptionalOptions(rest))
);
});
onMessagePortClose(port, () => {
peer.close();
});
}
}
class RPCHandler extends MessagePortHandler {
constructor(router, options = {}) {
super(new StandardRPCHandler(router, options));
}
}
export { MessagePortHandler, RPCHandler };