UNPKG

webserial-core

Version:

A strongly-typed, event-driven, abstract TypeScript library for the Web Serial API with custom parsers, command queue, handshake validation, and auto-reconnect.

38 lines (37 loc) 1.51 kB
import { SerialEventMap } from '../types/index.js'; /** * Type-safe event emitter base class for serial device events. * * All event names and listener signatures are derived from the * {@link SerialEventMap} generic type, providing full IDE autocomplete * and compile-time safety. * * @typeParam T - The parsed data type, forwarded to `SerialEventMap<T>`. */ export declare class SerialEventEmitter<T> { private listeners; /** * Registers a listener for the given event. * * @param event - The event name (constrained to `SerialEventMap` keys). * @param listener - The callback to invoke when the event fires. * @returns `this` for method chaining. */ on<K extends keyof SerialEventMap<T>>(event: K, listener: SerialEventMap<T>[K]): this; /** * Removes a previously registered listener. * * @param event - The event name. * @param listener - The exact listener reference to remove. * @returns `this` for method chaining. */ off<K extends keyof SerialEventMap<T>>(event: K, listener: SerialEventMap<T>[K]): this; /** * Emits an event, invoking all registered listeners synchronously. * * @param event - The event name. * @param args - Arguments passed to each listener (type-inferred from `SerialEventMap`). * @returns `true` if any listeners were invoked, `false` otherwise. */ emit<K extends keyof SerialEventMap<T>>(event: K, ...args: Parameters<SerialEventMap<T>[K]>): boolean; }