@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
37 lines (36 loc) • 1.55 kB
TypeScript
import BrowserConnection from './Browser.js';
import { MESSAGE_DIRECTION } from '../schema.js';
export type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>;
/**
* Browser window Post Message connector module
* @category aepp wallet communication
*/
export default class BrowserWindowMessageConnection extends BrowserConnection {
#private;
origin?: string;
sendDirection?: MESSAGE_DIRECTION;
receiveDirection: MESSAGE_DIRECTION;
listener?: (this: Window, ev: MessageEvent<any>) => void;
/**
* @param options - Options
* @param options.target Target window for message
* @param options.self Host window for message
* @param options.origin Origin of receiver
* @param options.sendDirection Wrapping messages into additional struct
* `({ type: 'to_aepp' || 'to_waellet', data })`
* Used for handling messages between content script and page
* @param options.receiveDirection Unwrapping messages from additional struct
*/
constructor({ target, self, origin, sendDirection, receiveDirection, ...options }?: {
target?: ImplPostMessage;
self?: ImplPostMessage;
origin?: string;
sendDirection?: MESSAGE_DIRECTION;
receiveDirection?: MESSAGE_DIRECTION;
debug?: boolean;
});
isConnected(): boolean;
connect(onMessage: (message: any, origin: string, source: MessageEventSource | null) => void, onDisconnect: () => void): void;
disconnect(): void;
sendMessage(msg: any): void;
}