Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions src/pubsub-engine.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import {PubSubAsyncIterableIterator} from './pubsub-async-iterable-iterator';

export abstract class PubSubEngine {
public abstract publish(triggerName: string, payload: any): Promise<void>;
public abstract subscribe(triggerName: string, onMessage: Function, options: Object): Promise<number>;
public abstract unsubscribe(subId: number);
public asyncIterableIterator<T>(triggers: string | readonly string[]): PubSubAsyncIterableIterator<T> {
return new PubSubAsyncIterableIterator<T>(this, triggers);
export abstract class PubSubEngine<
Events extends { [event: string]: unknown } = Record<string, never>
> {
public abstract publish<K extends keyof Events>(triggerName: K, payload: Events[K]): Promise<void>;
public abstract subscribe<K extends keyof Events>(triggerName: K, onMessage: (payload: Events[K]) => void, options: Object): Promise<number>;
public abstract unsubscribe(subId: number): void;
public asyncIterableIterator<K extends keyof Events>(triggers: K | readonly K[]): PubSubAsyncIterableIterator<Events[K]> {
return new PubSubAsyncIterableIterator<Events[K]>(this as any, triggers as any);
}
}
4 changes: 2 additions & 2 deletions src/pubsub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export interface PubSubOptions {

export class PubSub<
Events extends { [event: string]: unknown } = Record<string, never>
> extends PubSubEngine {
> extends PubSubEngine<Events> {
protected ee: EventEmitter;
private subscriptions: { [key: string]: [string, (...args: any[]) => void] };
private subIdCounter: number;
Expand Down Expand Up @@ -43,4 +43,4 @@ export class PubSub<
delete this.subscriptions[subId];
this.ee.removeListener(triggerName, onMessage);
}
}
}