-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.d.ts
82 lines (71 loc) · 2.25 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Type definitions for @polyn/async-events
// Project: https://github.com/losandes/polyn-async-events
// Definitions by: Andy Wright <https://github.com/losandes>
// TypeScript Version: 2.1
import * as EventEmitter from 'events';
export interface IEventMeta {
id: string;
time: number;
topic: string;
name: string;
subscriptionId: string;
}
export interface IEventOutput {
count: number;
meta: {
id: string;
time: number;
topic: string;
event: string;
};
results?: any[]; // the subscriptions output
}
export interface IReceiver {
(body: any, meta: IEventMeta): any | Promise<any>;
}
export interface ISubscription {
id: string;
receiver: IReceiver;
}
export interface ISubscriptionResult {
subscriptionId: string;
}
export interface ITopicRepo {
subscribe (names: string | string[], receiver: IReceiver): Promise<ISubscriptionResult|ISubscriptionResult[]>;
unsubscribe (id: string): Promise<boolean>;
getSubscriptions (name: string): Promise<ISubscription[]>;
hasSubscriptions (name: string): Promise<boolean>;
}
interface ITopicOptions {
topic: string;
repo?: ITopicRepo; // default is in memory repo
timeout?: number;
reportVerbosity?: string; // ^(all|errors|none)$;
reportEventNames?: {
emitted?: string;
error?: string;
}
}
export interface ITopic {
name: string;
publish (name: string, body: any, meta?: any): Promise<IEventOutput>;
emit (name: string, body: any, meta?: any): Promise<IEventOutput>;
subscribe (names: string | string[], receiver: IReceiver): Promise<ISubscriptionResult|ISubscriptionResult[]>;
unsubscribe (id: string): Promise<boolean>;
}
declare class Topic implements ITopic {
constructor (options: ITopicOptions);
name: string;
publish (name: string, body: any, meta?: any): Promise<IEventOutput>;
emit (name: string, body: any, meta?: any): Promise<IEventOutput>;
subscribe (names: string | string[], receiver: IReceiver): Promise<ISubscriptionResult|ISubscriptionResult[]>;
unsubscribe (id: string): Promise<boolean>;
}
declare class WildcardEmitter extends EventEmitter {
constructor (options?: any | {
delimiter?: string;
wildcard?: string;
noSubscriptionsEvent?: string;
});
makeWildcards(event: string | symbol): string[];
}