data-transport
Version:
A simple and responsive transport
37 lines • 1.64 kB
TypeScript
import { callbackKey } from '../constant';
import { TransportOptions, TransferableWorker, BaseInteraction } from '../interface';
import { Transport } from '../transport';
interface SharedWorkerPort extends TransferableWorker {
_port?: MessagePort;
}
export interface SharedWorkerClientTransportOptions extends Partial<TransportOptions<TransferableWorker>> {
/**
* Pass a shared worker instance for data transport.
*/
worker: SharedWorker;
}
type ClientCallback = () => void | Promise<void>;
type WorkerCallback = (clientId: string) => void | Promise<void>;
export interface SharedWorkerInternalTransportOptions extends Partial<TransportOptions<SharedWorkerPort>> {
}
export declare abstract class SharedWorkerClientTransport<T extends BaseInteraction = any> extends Transport<T> {
constructor(_options: SharedWorkerClientTransportOptions);
private _onConnectCallback;
onConnect(callback: ClientCallback): () => void;
}
export declare abstract class SharedWorkerInternalTransport<T extends BaseInteraction = any> extends Transport<T> {
protected ports: Map<string, MessagePort>;
protected tempPorts: Set<MessagePort>;
private [callbackKey];
constructor(_options?: SharedWorkerInternalTransportOptions);
private _onConnectCallback;
onConnect(callback: WorkerCallback): () => void;
private _onDisconnectCallback;
onDisconnect(callback: WorkerCallback): () => void;
}
export declare const SharedWorkerTransport: {
Client: typeof SharedWorkerClientTransport;
Worker: typeof SharedWorkerInternalTransport;
};
export {};
//# sourceMappingURL=sharedWorkerTransport.d.ts.map