@wiko/subscribable
Version:
Helpers for creating subscription-based event emitters
12 lines • 799 B
TypeScript
import { TypedEventEmitter, TypedEventTarget } from './event-emitter';
type UnsubscribeFn = () => void;
export interface DataPublisher<TDataByChannelName extends Record<string, unknown> = Record<string, unknown>> {
on<const TChannelName extends keyof TDataByChannelName>(channelName: TChannelName, subscriber: (data: TDataByChannelName[TChannelName]) => void, options?: {
signal: AbortSignal;
}): UnsubscribeFn;
}
export declare function getDataPublisherFromEventEmitter<TEventMap extends Record<string, Event>>(eventEmitter: TypedEventEmitter<TEventMap> | TypedEventTarget<TEventMap>): DataPublisher<{
[TEventType in keyof TEventMap]: TEventMap[TEventType] extends CustomEvent ? TEventMap[TEventType]['detail'] : null;
}>;
export {};
//# sourceMappingURL=data-publisher.d.ts.map