@orpc/client
Version:
<div align="center"> <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" /> </div>
60 lines (55 loc) • 2.9 kB
TypeScript
import { StandardRequest, StandardLazyResponse } from '@orpc/standard-server';
import { a as ClientContext, b as ClientOptions } from '../../shared/client.4TS_0JaO.js';
import { f as StandardLinkClient } from '../../shared/client.C0KbSWlC.js';
import { f as StandardRPCLinkOptions, g as StandardRPCLink } from '../../shared/client.7UM0t5o-.js';
import '@orpc/shared';
/**
* The message port used by electron in main process
*/
interface MessagePortMainLike {
on: <T extends string>(event: T, callback: (event?: {
data: any;
}) => void) => void;
postMessage: (data: any) => void;
}
/**
* The message port used by browser extension
*/
interface BrowserPortLike {
onMessage: {
addListener: (callback: (data: any) => void) => void;
};
onDisconnect: {
addListener: (callback: () => void) => void;
};
postMessage: (data: any) => void;
}
type SupportedMessagePort = Pick<MessagePort, 'addEventListener' | 'postMessage'> | MessagePortMainLike | BrowserPortLike;
/**
* Message port can support [The structured clone algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
*/
type SupportedMessagePortData = string | ArrayBufferLike;
declare function postMessagePortMessage(port: SupportedMessagePort, data: SupportedMessagePortData): void;
declare function onMessagePortMessage(port: SupportedMessagePort, callback: (data: SupportedMessagePortData) => void): void;
declare function onMessagePortClose(port: SupportedMessagePort, callback: () => void): void;
interface experimental_LinkMessagePortClientOptions {
port: SupportedMessagePort;
}
declare class experimental_LinkMessagePortClient<T extends ClientContext> implements StandardLinkClient<T> {
private readonly peer;
constructor(options: experimental_LinkMessagePortClientOptions);
call(request: StandardRequest, _options: ClientOptions<T>, _path: readonly string[], _input: unknown): Promise<StandardLazyResponse>;
}
interface experimental_RPCLinkOptions<T extends ClientContext> extends Omit<StandardRPCLinkOptions<T>, 'url' | 'headers' | 'method' | 'fallbackMethod' | 'maxUrlLength'>, experimental_LinkMessagePortClientOptions {
}
/**
* The RPC Link for common message port implementations.
*
* @see {@link https://orpc.unnoq.com/docs/client/rpc-link RPC Link Docs}
* @see {@link https://orpc.unnoq.com/docs/adapters/message-port Message Port Adapter Docs}
*/
declare class experimental_RPCLink<T extends ClientContext> extends StandardRPCLink<T> {
constructor(options: experimental_RPCLinkOptions<T>);
}
export { experimental_LinkMessagePortClient, experimental_RPCLink, onMessagePortClose, onMessagePortMessage, postMessagePortMessage };
export type { BrowserPortLike, MessagePortMainLike, SupportedMessagePort, SupportedMessagePortData, experimental_LinkMessagePortClientOptions, experimental_RPCLinkOptions };