UNPKG

@ont-community/window-post-message-proxy

Version:

A library used in place of the native window.postMessage which when used on both the sending and receiving windows allow for a nicer asynchronouse promise messaging between the windows

98 lines (97 loc) 3.18 kB
/*! @ont-community/window-post-message-proxy v0.2.14 | (c) 2016 Microsoft Corporation MIT */ export interface ITrackingProperties { id: string; source: string; target?: string; } export interface IAddTrackingProperties { <T>(message: T, trackingProperties: ITrackingProperties): T; } export interface IGetTrackingProperties { (message: any): ITrackingProperties; } export interface IProcessTrackingProperties { addTrackingProperties: IAddTrackingProperties; getTrackingProperties: IGetTrackingProperties; } export interface IIsErrorMessage { (message: any): boolean; } export interface IExtractErrorMessage { (message: any): any; } export interface IMessageHandler { test(message: any): boolean; handle(message: any): any; } export interface IWindowPostMessageProxyOptions { receiveWindow?: Window; processTrackingProperties?: IProcessTrackingProperties; isErrorMessage?: IIsErrorMessage; extractErrorMessage?: IExtractErrorMessage; name?: string; target?: string; logMessages?: boolean; eventSourceOverrideWindow?: Window; suppressWarnings?: boolean; } export declare class WindowPostMessageProxy { static defaultAddTrackingProperties<T>(message: T, trackingProperties: ITrackingProperties): T; static defaultGetTrackingProperties(message: any): ITrackingProperties; static defaultIsErrorMessage(message: any): boolean; static defaultExtractErrorMessage(message: any): any; private static messagePropertyName; /** * Utility to create a deferred object. */ private static createDeferred; /** * Utility to generate random sequence of characters used as tracking id for promises. */ private static createRandomString; private logMessages; private name; private target?; private addTrackingProperties; private getTrackingProperties; private isErrorMessage; private extractErrorMessage; private receiveWindow; private pendingRequestPromises; private handlers; private windowMessageHandler; private eventSourceOverrideWindow; private suppressWarnings; constructor(options?: IWindowPostMessageProxyOptions); /** * Adds handler. * If the first handler whose test method returns true will handle the message and provide a response. */ addHandler(handler: IMessageHandler): void; /** * Removes handler. * The reference must match the original object that was provided when adding the handler. */ removeHandler(handler: IMessageHandler): void; /** * Start listening to message events. */ start(): void; /** * Stops listening to message events. */ stop(): void; /** * Post message to target window with tracking properties added and save deferred object referenced by tracking id. */ postMessage<T>(targetWindow: Window, message: any): Promise<T>; /** * Send response message to target window. * Response messages re-use tracking properties from a previous request message. */ private sendResponse; /** * Message handler. */ private onMessageReceived; }