/** * This module provides a pair of classes for creating readable and writable streams * over a [postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). * function. * * @module PostMessage streams */ import type { OnMessage, PostMessage } from "./utils.cjs"; import { BaseDuplexStream } from "../BaseDuplexStream.cjs"; import type { BaseReaderArgs, BaseWriterArgs } from "../BaseStream.cjs"; import { BaseReader, BaseWriter } from "../BaseStream.cjs"; export type PostMessageTarget = { addEventListener: (type: 'message', listener: OnMessage) => void; removeEventListener: (type: 'message', listener: OnMessage) => void; postMessage: PostMessage; }; type PostMessageReaderArgs = BaseReaderArgs & { messageTarget: PostMessageTarget; } & (Read extends MessageEvent ? { messageEventMode: 'event'; } : { messageEventMode?: 'data' | undefined; }); /** * A readable stream over a {@link PostMessage} function. * * Ignores message events dispatched on its port that contain ports, but otherwise * expects {@link Dispatchable} values to be posted to its port. * * @see {@link PostMessageWriter} for the corresponding writable stream. */ export declare class PostMessageReader extends BaseReader { /** * Constructs a new {@link PostMessageReader}. * * @param options - Options bag for configuring the reader. * @param options.messageTarget - The target to listen for messages on. * @param options.validateInput - A function that validates input from the transport. * @param options.onEnd - A function that is called when the stream ends. * @param options.messageEventMode - Whether to pass the message event or just the data to the stream. */ constructor({ validateInput, onEnd, messageTarget, messageEventMode, }: PostMessageReaderArgs); } export type PostMessageEnvelope = { payload: Write; transfer: Transferable[]; }; /** * A writable stream over a {@link PostMessage} function. * * @see {@link PostMessageReader} for the corresponding readable stream. */ export declare class PostMessageWriter extends BaseWriter { /** * Constructs a new {@link PostMessageWriter}. * * @param messageTarget - The target to post messages to. * @param options - Options bag for configuring the writer. * @param options.name - The name of the stream, for logging purposes. * @param options.onEnd - A function that is called when the stream ends. */ constructor(messageTarget: PostMessageTarget, { name, onEnd }?: Omit, 'onDispatch'>); } type PostMessageDuplexStreamArgs = PostMessageReaderArgs; /** * A duplex stream over a {@link PostMessage} function. * * @see {@link PostMessageReader} for the corresponding readable stream. * @see {@link PostMessageWriter} for the corresponding writable stream. */ export declare class PostMessageDuplexStream extends BaseDuplexStream, Write, PostMessageWriter> { /** * Constructs a new {@link PostMessageDuplexStream}. * * @param options - Options bag for configuring the duplex stream. * @param options.messageTarget - The target for sending and receiving messages. * @param options.validateInput - A function that validates input from the transport. * @param options.onEnd - A function that is called when the stream ends. */ constructor({ messageTarget, validateInput, onEnd, ...args }: PostMessageDuplexStreamArgs); /** * Creates and synchronizes a new {@link PostMessageDuplexStream}. * * @param args - The options for configuring the duplex stream. * @returns A synchronized duplex stream. */ static make(args: PostMessageDuplexStreamArgs): Promise>; } export {}; //# sourceMappingURL=PostMessageStream.d.cts.map