Files
airllm-fork-nodejs/node_modules/lifecycle-utils/dist/EventRelay.d.ts
2026-02-05 15:27:49 +08:00

47 lines
1.4 KiB
TypeScript

/**
* A simple event relay.
* Create a listener with `createListener` and dispatch events with `dispatchEvent`.
* For each supported event type, create a new instance of `EventRelay` and expose it as a property.
*
* For example, this code:
* ```ts
* class MyClass {
* public readonly onSomethingHappened = new EventRelay<string>();
*
* public doSomething(whatToDo: string) {
* this.onSomethingHappened.dispatchEvent(whatToDo);
* console.log("Done notifying listeners");
* }
* }
*
* const myClass = new MyClass();
* myClass.onSomethingHappened.createListener((whatHappened) => {
* console.log(`Something happened: ${whatHappened}`);
* });
* myClass.doSomething("eat a cookie");
* ```
*
* Will print this:
* ```
* Something happened: eat a cookie
* Done notifying listeners
* ```
*/
export declare class EventRelay<T> {
constructor();
createListener(callback: ((data: T) => void)): EventRelayListenerHandle;
createOnceListener(callback: ((data: T) => void)): EventRelayListenerHandle;
dispatchEvent(data: T): void;
clearListeners(): void;
get listenerCount(): number;
get disposed(): boolean;
dispose(): void;
[Symbol.dispose](): void;
}
export declare class EventRelayListenerHandle {
private constructor();
dispose(): void;
[Symbol.dispose](): void;
get disposed(): boolean;
}
//# sourceMappingURL=EventRelay.d.ts.map