UNPKG

@orpc/server

Version:

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

58 lines (54 loc) 2.87 kB
import { SupportedMessagePort } from '@orpc/client/message-port'; import { Value, Promisable, MaybeOptionalOptions } from '@orpc/shared'; import { DecodedResponseMessage } from '@orpc/standard-server-peer'; import { C as Context, R as Router } from '../../shared/server.qKsRrdxW.js'; import { f as StandardHandler } from '../../shared/server.7cEtMB30.js'; import { HandleStandardServerPeerMessageOptions } from '../standard-peer/index.js'; import { S as StandardRPCHandlerOptions } from '../../shared/server.yoEB3Fx4.js'; import '@orpc/client'; import '@orpc/contract'; import '@orpc/standard-server'; import '../../shared/server.EfTOZ2Q7.js'; import '@orpc/client/standard'; import '../../shared/server.ChyoA9XY.js'; interface MessagePortHandlerOptions<_T extends Context> { /** * By default, oRPC serializes request/response messages to string/binary data before sending over message port. * If needed, you can define the this option to utilize full power of [MessagePort: postMessage() method](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage), * such as transferring ownership of objects to the other side or support unserializable objects like `OffscreenCanvas`. * * @remarks * - return null | undefined to disable this feature * * @warning Make sure your message port supports `transfer` before using this feature. * @example * ```ts * experimental_transfer: (message, port) => { * const transfer = deepFindTransferableObjects(message) // implement your own logic * return transfer.length ? transfer : null // only enable when needed * } * ``` * * @see {@link https://orpc.dev/docs/adapters/message-port#transfer Message Port Transfer Docs} */ experimental_transfer?: Value<Promisable<object[] | null | undefined>, [message: DecodedResponseMessage, port: SupportedMessagePort]>; } declare class MessagePortHandler<T extends Context> { private readonly standardHandler; private readonly transfer; constructor(standardHandler: StandardHandler<T>, options?: NoInfer<MessagePortHandlerOptions<T>>); upgrade(port: SupportedMessagePort, ...rest: MaybeOptionalOptions<HandleStandardServerPeerMessageOptions<T>>): void; } interface RPCHandlerOptions<T extends Context> extends StandardRPCHandlerOptions<T>, MessagePortHandlerOptions<T> { } /** * RPC Handler for common message port implementations. * * @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs} * @see {@link https://orpc.dev/docs/adapters/message-port Message Port Adapter Docs} */ declare class RPCHandler<T extends Context> extends MessagePortHandler<T> { constructor(router: Router<any, T>, options?: NoInfer<RPCHandlerOptions<T>>); } export { MessagePortHandler, RPCHandler }; export type { MessagePortHandlerOptions, RPCHandlerOptions };