UNPKG

webr

Version:

The statistical programming language R compiled into WASM for use in a web browser and node.

49 lines (48 loc) 1.91 kB
/** * Interfaces for the webR main and worker thread communication channels. * @module Channel */ import { AsyncQueue } from './queue'; import { EventMessage, Message, Response } from './message'; import { WebRPayload } from '../payload'; export declare abstract class ChannelMain { #private; inputQueue: AsyncQueue<Message>; outputQueue: AsyncQueue<Message>; systemQueue: AsyncQueue<Message>; eventQueue: EventMessage[]; abstract initialised: Promise<unknown>; abstract close(): void; abstract emit(msg: Message): void; abstract interrupt(): void; read(): Promise<Message>; flush(): Promise<Message[]>; readSystem(): Promise<Message>; write(msg: Message): void; request(msg: Message, transferables?: [Transferable]): Promise<WebRPayload>; protected putClosedMessage(): void; protected resolveResponse(msg: Response): void; } export interface ChannelWorker { resolve(): void; write(msg: Message, transfer?: [Transferable]): void; writeSystem(msg: Message, transfer?: [Transferable]): void; syncRequest(msg: Message, transfer?: [Transferable]): Message; read(): Message; handleEvents(): void; setInterrupt(interrupt: () => void): void; run(args: string[]): void; inputOrDispatch: () => number; setDispatchHandler: (dispatch: (msg: Message) => void) => void; resolveRequest: (msg: Message) => void; WebSocketProxy?: typeof WebSocket; } /** * Handler functions dealing with setup and communication over a Service Worker. */ export interface ServiceWorkerHandlers { handleActivate: (this: ServiceWorkerGlobalScope, ev: ExtendableEvent) => any; handleFetch: (this: ServiceWorkerGlobalScope, ev: FetchEvent) => any; handleInstall: (this: ServiceWorkerGlobalScope, ev: ExtendableEvent) => any; handleMessage: (this: ServiceWorkerGlobalScope, ev: ExtendableMessageEvent) => any; }