post-me
Version:
Use web Workers and other Windows through a simple Promise API
52 lines (51 loc) • 2.5 kB
TypeScript
import { IdType, KeyType, MARKER } from './common';
export declare enum MessageType {
HandshakeRequest = "handshake-request",
HandshakeResponse = "handshake-response",
Call = "call",
Response = "response",
Error = "error",
Event = "event",
Callback = "callback"
}
export interface Message<T extends MessageType> {
type: typeof MARKER;
action: T;
sessionId: IdType;
}
export interface HandshakeRequestMessage extends Message<MessageType.HandshakeRequest> {
}
export interface HandshakeResponseMessage extends Message<MessageType.HandshakeResponse> {
}
export interface CallMessage<A extends Array<any>> extends Message<MessageType.Call> {
requestId: IdType;
methodName: KeyType;
args: A;
}
export interface ResponseMessage<R> extends Message<MessageType.Response> {
requestId: IdType;
result?: R;
error?: string;
}
export interface CallbackMessage<A extends Array<any>> extends Message<MessageType.Callback> {
requestId: IdType;
callbackId: IdType;
args: A;
}
export interface EventMessage<P> extends Message<MessageType.Event> {
eventName: KeyType;
payload: P;
}
export declare function createHandshakeRequestMessage(sessionId: IdType): HandshakeRequestMessage;
export declare function createHandshakeResponseMessage(sessionId: IdType): HandshakeResponseMessage;
export declare function createCallMessage<A extends Array<any>>(sessionId: IdType, requestId: IdType, methodName: KeyType, args: A): CallMessage<A>;
export declare function createResponsMessage<R>(sessionId: IdType, requestId: IdType, result: R, error?: string): ResponseMessage<R>;
export declare function createCallbackMessage<A extends Array<any>>(sessionId: IdType, requestId: IdType, callbackId: IdType, args: A): CallbackMessage<A>;
export declare function createEventMessage<P>(sessionId: IdType, eventName: KeyType, payload: P): EventMessage<P>;
export declare function isMessage(m: any): m is Message<any>;
export declare function isHandshakeRequestMessage(m: Message<any>): m is HandshakeRequestMessage;
export declare function isHandshakeResponseMessage(m: Message<any>): m is HandshakeResponseMessage;
export declare function isCallMessage(m: Message<any>): m is CallMessage<any[]>;
export declare function isResponseMessage(m: Message<any>): m is ResponseMessage<any>;
export declare function isCallbackMessage(m: Message<any>): m is CallbackMessage<any>;
export declare function isEventMessage(m: Message<any>): m is EventMessage<any>;