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
TypeScript
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;
}