data-transport
Version:
A simple and responsive transport
60 lines • 2.33 kB
TypeScript
import { callbackKey } from '../constant';
import { global } from '../global';
import type { BaseInteraction, SendOptions, TransportOptions } from '../interface';
import { Transport } from '../transport';
type Browser = typeof global.browser | typeof global.chrome;
type Port = browser.runtime.Port | chrome.runtime.Port;
interface SendResponse {
_sendResponse?: (response?: SendOptions<SendResponse>) => void;
}
export interface BrowserExtensionsGenericTransportOptions extends Partial<TransportOptions<SendResponse>> {
/**
* browser extension API.
*/
browser?: Browser;
}
export interface BrowserExtensionsMainTransportOptions extends Partial<TransportOptions<BrowserExtensionsMainPort>> {
/**
* browser extension API.
*/
browser?: Browser;
}
export interface BrowserExtensionsClientTransportOptions extends Partial<TransportOptions> {
/**
* browser extension API.
*/
browser?: Browser;
/**
* browser extension client port.
*/
port?: Port;
}
interface BrowserExtensionsMainPort {
_port?: Port;
}
type ClientCallback = () => void | Promise<void>;
type MainCallback = (clientId: string) => void | Promise<void>;
export declare abstract class BrowserExtensionsGenericTransport<T extends BaseInteraction = any> extends Transport<T> {
private [callbackKey];
constructor(_options?: BrowserExtensionsGenericTransportOptions);
}
export declare abstract class BrowserExtensionsMainTransport<T extends BaseInteraction = any> extends Transport<T> {
protected ports: Map<string, Port>;
private [callbackKey];
constructor(_options?: BrowserExtensionsMainTransportOptions);
private _onConnectCallback;
onConnect(callback: MainCallback): () => void;
private _onDisconnectCallback;
onDisconnect(callback: MainCallback): () => void;
}
export declare abstract class BrowserExtensionsClientTransport<T extends BaseInteraction = any> extends Transport<T> {
constructor(_options?: BrowserExtensionsClientTransportOptions);
private _onConnectCallback;
onConnect(callback: ClientCallback): () => void;
}
export declare const BrowserExtensionsTransport: {
Main: typeof BrowserExtensionsMainTransport;
Client: typeof BrowserExtensionsClientTransport;
};
export {};
//# sourceMappingURL=browserExtensionsTransport.d.ts.map