UNPKG

message-port-api

Version:

A simple package that allows you to simplify the use of `MessagePort API` more easily (Worker, IFrame...)

39 lines (36 loc) 1.96 kB
interface Sender { addEventListener: (name: "message", handler: (event: MessageEvent<unknown>) => void) => void; removeEventListener: (name: "message", handler: (event: MessageEvent<unknown>) => void) => void; } interface Receiver { postMessage: (data: any, targetOrigin?: string | WindowPostMessageOptions) => void; } interface IRequest { id: string; name: string; arguments: unknown[]; } interface IResponseResult { id: string; name: string; result: unknown; } interface IResponseError { id: string; name: string; error: string; } interface Receive { <Controllers extends Record<string, (...args: any[]) => any>>(controllers: Controllers, targetOrigin?: string): Controllers; <Controllers extends Record<string, (...args: any[]) => any>>(controllers: Controllers, optionsTargetOrigin?: WindowPostMessageOptions): Controllers; cancel(): void; } declare function useReceive(sender: Sender & Receiver, receiver?: Receiver): Receive; declare function useReceive(sender: Sender, receiver: Receiver): Receive; interface Send { <Controllers extends Record<string, (...args: any[]) => any>, Name extends keyof Controllers = keyof Controllers>(name: Name, args: Controllers[Name] extends (...args: infer A) => any ? A : unknown[], targetOrigin?: string): Promise<Awaited<ReturnType<Controllers[Name]>>>; <Controllers extends Record<string, (...args: any[]) => any>, Name extends keyof Controllers = keyof Controllers>(name: Name, args: Controllers[Name] extends (...args: infer A) => any ? A : unknown[], postMessageOptions?: WindowPostMessageOptions): Promise<Awaited<ReturnType<Controllers[Name]>>>; } declare function useSend(sender: Sender & Receiver, receiver?: Receiver, timeout?: false | number): Send; declare function useSend(sender: Sender, receiver: Receiver, timeout?: false | number): Send; export { IRequest, IResponseError, IResponseResult, Receiver, Sender, useReceive, useSend };