chz-telegram-bot 0.7.8 → 0.7.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entities/botInstance.d.ts +2 -1
- package/dist/entities/botInstance.d.ts.map +1 -1
- package/dist/entities/botInstance.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -1
- package/dist/types/events.d.ts +10 -10
- package/dist/types/events.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/entities/botInstance.ts +4 -1
- package/src/index.ts +4 -1
- package/src/main.ts +5 -1
- package/src/types/events.ts +50 -25
|
@@ -11,7 +11,7 @@ export declare class BotInstance {
|
|
|
11
11
|
private readonly scheduler;
|
|
12
12
|
private readonly actionProcessingService;
|
|
13
13
|
readonly name: string;
|
|
14
|
-
readonly eventEmitter: TypedEventEmitter
|
|
14
|
+
readonly eventEmitter: TypedEventEmitter<Record<string, unknown>>;
|
|
15
15
|
constructor(options: {
|
|
16
16
|
name: string;
|
|
17
17
|
actions: {
|
|
@@ -24,6 +24,7 @@ export declare class BotInstance {
|
|
|
24
24
|
services?: {
|
|
25
25
|
storageClient?: IStorageClient;
|
|
26
26
|
scheduler?: IScheduler;
|
|
27
|
+
eventEmitter?: TypedEventEmitter<Record<string, unknown>>;
|
|
27
28
|
};
|
|
28
29
|
});
|
|
29
30
|
start(token: string, actions: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"botInstance.d.ts","sourceRoot":"","sources":["../../src/entities/botInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAgB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAElE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"botInstance.d.ts","sourceRoot":"","sources":["../../src/entities/botInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAgB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAElE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEtD,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACL,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,aAAa,EAAE,iBAAiB,EAAE,CAAC;SACtC,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE;YACP,aAAa,CAAC,EAAE,cAAc,CAAC;YAC/B,SAAS,CAAC,EAAE,UAAU,CAAC;YACvB,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SAC7D,CAAC;KACL;IAyBK,KAAK,CACP,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QACL,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,aAAa,EAAE,iBAAiB,EAAE,CAAC;KACtC,EACD,eAAe,CAAC,EAAE,OAAO;IAcvB,IAAI;CAUb"}
|
|
@@ -8,13 +8,15 @@ export class BotInstance {
|
|
|
8
8
|
scheduler;
|
|
9
9
|
actionProcessingService;
|
|
10
10
|
name;
|
|
11
|
-
eventEmitter
|
|
11
|
+
eventEmitter;
|
|
12
12
|
constructor(options) {
|
|
13
13
|
const actions = [
|
|
14
14
|
...options.actions.commands,
|
|
15
15
|
...options.actions.scheduled
|
|
16
16
|
];
|
|
17
17
|
this.name = options.name;
|
|
18
|
+
this.eventEmitter =
|
|
19
|
+
options.services?.eventEmitter ?? new TypedEventEmitter();
|
|
18
20
|
this.scheduler =
|
|
19
21
|
options.services?.scheduler ??
|
|
20
22
|
new NodeTimeoutScheduler(this.eventEmitter, this.name);
|
package/dist/index.d.ts
CHANGED
|
@@ -23,5 +23,5 @@ export { ICaptureController } from './types/capture';
|
|
|
23
23
|
export { ChatInfo } from './dtos/chatInfo';
|
|
24
24
|
export { MessageInfo } from './dtos/messageInfo';
|
|
25
25
|
export { UserInfo } from './dtos/userInfo';
|
|
26
|
-
export { BotEventType, BotEventMap as BotEventArgumentsMap } from './types/events';
|
|
26
|
+
export { BotEventType, BotEventMap as BotEventArgumentsMap, TypedEventEmitter, Listener, EachListener } from './types/events';
|
|
27
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACH,YAAY,EACZ,WAAW,IAAI,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,6CAA6C,CAAC;AAC5D,cAAc,yCAAyC,CAAC;AACxD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACH,YAAY,EACZ,WAAW,IAAI,oBAAoB,EACnC,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACf,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,4 +17,4 @@ export { ScheduledAction } from './entities/actions/scheduledAction';
|
|
|
17
17
|
export { ChatInfo } from './dtos/chatInfo';
|
|
18
18
|
export { MessageInfo } from './dtos/messageInfo';
|
|
19
19
|
export { UserInfo } from './dtos/userInfo';
|
|
20
|
-
export { BotEventType } from './types/events';
|
|
20
|
+
export { BotEventType, TypedEventEmitter } from './types/events';
|
package/dist/main.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { Seconds } from './types/timeValues';
|
|
|
6
6
|
import { IScheduler } from './types/scheduler';
|
|
7
7
|
import { InlineQueryAction } from './entities/actions/inlineQueryAction';
|
|
8
8
|
import { IActionState } from './types/actionState';
|
|
9
|
+
import { TypedEventEmitter } from './types/events';
|
|
9
10
|
declare class BotOrchestrator {
|
|
10
11
|
bots: BotInstance[];
|
|
11
12
|
/**
|
|
@@ -35,6 +36,8 @@ declare class BotOrchestrator {
|
|
|
35
36
|
storageClient?: IStorageClient;
|
|
36
37
|
/** Scheduler client for bot scheduling. If not provided, default `NodeTimeoutScheduler` will be used. */
|
|
37
38
|
scheduler?: IScheduler;
|
|
39
|
+
/** Event emitter instance. If not provided, a default `TypedEventEmitter` will be created. Pass a `TypedEventEmitter<YourCustomEvents>` to support custom events. */
|
|
40
|
+
eventEmitter?: TypedEventEmitter<Record<string, unknown>>;
|
|
38
41
|
};
|
|
39
42
|
}): Promise<BotInstance>;
|
|
40
43
|
/**
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,cAAM,eAAe;IACjB,IAAI,EAAE,WAAW,EAAE,CAAM;IAEzB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE;QACpB,gCAAgC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,kDAAkD;QAClD,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE;YACL,2HAA2H;YAC3H,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,mGAAmG;YACnG,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,4DAA4D;YAC5D,aAAa,EAAE,iBAAiB,EAAE,CAAC;SACtC,CAAC;QACF,yGAAyG;QACzG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,2KAA2K;QAC3K,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,6DAA6D;QAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,QAAQ,CAAC,EAAE;YACP,qGAAqG;YACrG,aAAa,CAAC,EAAE,cAAc,CAAC;YAC/B,yGAAyG;YACzG,SAAS,CAAC,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,cAAM,eAAe;IACjB,IAAI,EAAE,WAAW,EAAE,CAAM;IAEzB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE;QACpB,gCAAgC;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,kDAAkD;QAClD,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE;YACL,2HAA2H;YAC3H,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,mGAAmG;YACnG,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,4DAA4D;YAC5D,aAAa,EAAE,iBAAiB,EAAE,CAAC;SACtC,CAAC;QACF,yGAAyG;QACzG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,2KAA2K;QAC3K,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,6DAA6D;QAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,QAAQ,CAAC,EAAE;YACP,qGAAqG;YACrG,aAAa,CAAC,EAAE,cAAc,CAAC;YAC/B,yGAAyG;YACzG,SAAS,CAAC,EAAE,UAAU,CAAC;YACvB,qKAAqK;YACrK,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SAC7D,CAAC;KACL;IAqBD;;OAEG;IACG,QAAQ;CAKjB;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -13,7 +13,8 @@ class BotOrchestrator {
|
|
|
13
13
|
chats: options.chats,
|
|
14
14
|
services: {
|
|
15
15
|
storageClient: options.services?.storageClient,
|
|
16
|
-
scheduler: options.services?.scheduler
|
|
16
|
+
scheduler: options.services?.scheduler,
|
|
17
|
+
eventEmitter: options.services?.eventEmitter
|
|
17
18
|
},
|
|
18
19
|
storagePath: options.storagePath
|
|
19
20
|
});
|
package/dist/types/events.d.ts
CHANGED
|
@@ -44,7 +44,6 @@ export declare const BotEventType: {
|
|
|
44
44
|
readonly botStarting: "bot.starting";
|
|
45
45
|
readonly botStopping: "bot.stopping";
|
|
46
46
|
};
|
|
47
|
-
type BotEventTypeKeys = (typeof BotEventType)[keyof typeof BotEventType];
|
|
48
47
|
export type BotEventMap = {
|
|
49
48
|
[BotEventType.error]: {
|
|
50
49
|
error: Error;
|
|
@@ -169,19 +168,20 @@ export type BotEventMap = {
|
|
|
169
168
|
botName: string;
|
|
170
169
|
};
|
|
171
170
|
};
|
|
172
|
-
type
|
|
171
|
+
type FullEventMap<TCustom extends Record<string, unknown>> = BotEventMap & TCustom;
|
|
172
|
+
type ListenerArgs<TMap extends Record<string, unknown>, K extends keyof TMap> = TMap[K] extends undefined ? [] : [
|
|
173
173
|
{
|
|
174
174
|
traceId: TraceId;
|
|
175
|
-
} &
|
|
175
|
+
} & TMap[K]
|
|
176
176
|
];
|
|
177
|
-
export type Listener<K extends keyof
|
|
178
|
-
export type EachListener = (event:
|
|
179
|
-
export declare class TypedEventEmitter {
|
|
177
|
+
export type Listener<TMap extends Record<string, unknown>, K extends keyof TMap> = (timestamp: number, ...args: ListenerArgs<TMap, K>) => void;
|
|
178
|
+
export type EachListener<TMap extends Record<string, unknown> = BotEventMap> = (event: keyof TMap & string, timestamp: number, data: unknown) => void;
|
|
179
|
+
export declare class TypedEventEmitter<TCustomEvents extends Record<string, unknown> = {}> {
|
|
180
180
|
private readonly listeners;
|
|
181
|
-
on<K extends keyof
|
|
182
|
-
onEach(fn: EachListener): void;
|
|
183
|
-
emit<K extends keyof
|
|
184
|
-
events(): (keyof
|
|
181
|
+
on<K extends keyof FullEventMap<TCustomEvents>>(event: K, fn: Listener<FullEventMap<TCustomEvents>, K>): void;
|
|
182
|
+
onEach(fn: EachListener<FullEventMap<TCustomEvents>>): void;
|
|
183
|
+
emit<K extends keyof FullEventMap<TCustomEvents>>(event: K, ...args: ListenerArgs<FullEventMap<TCustomEvents>, K>): void;
|
|
184
|
+
events(): (keyof FullEventMap<TCustomEvents> | '*')[];
|
|
185
185
|
}
|
|
186
186
|
export {};
|
|
187
187
|
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCf,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ export class BotInstance {
|
|
|
17
17
|
private readonly actionProcessingService: ActionProcessingService;
|
|
18
18
|
|
|
19
19
|
readonly name: string;
|
|
20
|
-
readonly eventEmitter
|
|
20
|
+
readonly eventEmitter: TypedEventEmitter<Record<string, unknown>>;
|
|
21
21
|
|
|
22
22
|
constructor(options: {
|
|
23
23
|
name: string;
|
|
@@ -31,6 +31,7 @@ export class BotInstance {
|
|
|
31
31
|
services?: {
|
|
32
32
|
storageClient?: IStorageClient;
|
|
33
33
|
scheduler?: IScheduler;
|
|
34
|
+
eventEmitter?: TypedEventEmitter<Record<string, unknown>>;
|
|
34
35
|
};
|
|
35
36
|
}) {
|
|
36
37
|
const actions = [
|
|
@@ -39,6 +40,8 @@ export class BotInstance {
|
|
|
39
40
|
];
|
|
40
41
|
|
|
41
42
|
this.name = options.name;
|
|
43
|
+
this.eventEmitter =
|
|
44
|
+
options.services?.eventEmitter ?? new TypedEventEmitter();
|
|
42
45
|
|
|
43
46
|
this.scheduler =
|
|
44
47
|
options.services?.scheduler ??
|
package/src/index.ts
CHANGED
|
@@ -25,5 +25,8 @@ export { MessageInfo } from './dtos/messageInfo';
|
|
|
25
25
|
export { UserInfo } from './dtos/userInfo';
|
|
26
26
|
export {
|
|
27
27
|
BotEventType,
|
|
28
|
-
BotEventMap as BotEventArgumentsMap
|
|
28
|
+
BotEventMap as BotEventArgumentsMap,
|
|
29
|
+
TypedEventEmitter,
|
|
30
|
+
Listener,
|
|
31
|
+
EachListener
|
|
29
32
|
} from './types/events';
|
package/src/main.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { Seconds } from './types/timeValues';
|
|
|
7
7
|
import { IScheduler } from './types/scheduler';
|
|
8
8
|
import { InlineQueryAction } from './entities/actions/inlineQueryAction';
|
|
9
9
|
import { IActionState } from './types/actionState';
|
|
10
|
+
import { TypedEventEmitter } from './types/events';
|
|
10
11
|
|
|
11
12
|
class BotOrchestrator {
|
|
12
13
|
bots: BotInstance[] = [];
|
|
@@ -38,6 +39,8 @@ class BotOrchestrator {
|
|
|
38
39
|
storageClient?: IStorageClient;
|
|
39
40
|
/** Scheduler client for bot scheduling. If not provided, default `NodeTimeoutScheduler` will be used. */
|
|
40
41
|
scheduler?: IScheduler;
|
|
42
|
+
/** Event emitter instance. If not provided, a default `TypedEventEmitter` will be created. Pass a `TypedEventEmitter<YourCustomEvents>` to support custom events. */
|
|
43
|
+
eventEmitter?: TypedEventEmitter<Record<string, unknown>>;
|
|
41
44
|
};
|
|
42
45
|
}) {
|
|
43
46
|
const token = await readFile(options.tokenFilePath, 'utf8');
|
|
@@ -48,7 +51,8 @@ class BotOrchestrator {
|
|
|
48
51
|
chats: options.chats,
|
|
49
52
|
services: {
|
|
50
53
|
storageClient: options.services?.storageClient,
|
|
51
|
-
scheduler: options.services?.scheduler
|
|
54
|
+
scheduler: options.services?.scheduler,
|
|
55
|
+
eventEmitter: options.services?.eventEmitter
|
|
52
56
|
},
|
|
53
57
|
storagePath: options.storagePath
|
|
54
58
|
});
|
package/src/types/events.ts
CHANGED
|
@@ -190,54 +190,79 @@ export type BotEventMap = {
|
|
|
190
190
|
};
|
|
191
191
|
};
|
|
192
192
|
|
|
193
|
-
type
|
|
194
|
-
|
|
195
|
-
? []
|
|
196
|
-
: [
|
|
197
|
-
{
|
|
198
|
-
traceId: TraceId;
|
|
199
|
-
} & BotEventMap[K]
|
|
200
|
-
];
|
|
193
|
+
type FullEventMap<TCustom extends Record<string, unknown>> = BotEventMap &
|
|
194
|
+
TCustom;
|
|
201
195
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
196
|
+
type ListenerArgs<
|
|
197
|
+
TMap extends Record<string, unknown>,
|
|
198
|
+
K extends keyof TMap
|
|
199
|
+
> = TMap[K] extends undefined
|
|
200
|
+
? []
|
|
201
|
+
: [
|
|
202
|
+
{
|
|
203
|
+
traceId: TraceId;
|
|
204
|
+
} & TMap[K]
|
|
205
|
+
];
|
|
206
206
|
|
|
207
|
-
export type
|
|
208
|
-
|
|
207
|
+
export type Listener<
|
|
208
|
+
TMap extends Record<string, unknown>,
|
|
209
|
+
K extends keyof TMap
|
|
210
|
+
> = (timestamp: number, ...args: ListenerArgs<TMap, K>) => void;
|
|
211
|
+
|
|
212
|
+
export type EachListener<TMap extends Record<string, unknown> = BotEventMap> = (
|
|
213
|
+
event: keyof TMap & string,
|
|
209
214
|
timestamp: number,
|
|
210
215
|
data: unknown
|
|
211
216
|
) => void;
|
|
212
217
|
|
|
213
|
-
export class TypedEventEmitter
|
|
218
|
+
export class TypedEventEmitter<
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
220
|
+
TCustomEvents extends Record<string, unknown> = {}
|
|
221
|
+
> {
|
|
214
222
|
private readonly listeners = new Map<
|
|
215
|
-
keyof
|
|
216
|
-
Set<
|
|
223
|
+
keyof FullEventMap<TCustomEvents> | '*',
|
|
224
|
+
Set<
|
|
225
|
+
| Listener<
|
|
226
|
+
FullEventMap<TCustomEvents>,
|
|
227
|
+
keyof FullEventMap<TCustomEvents>
|
|
228
|
+
>
|
|
229
|
+
| EachListener<FullEventMap<TCustomEvents>>
|
|
230
|
+
>
|
|
217
231
|
>();
|
|
218
232
|
|
|
219
|
-
on<K extends keyof
|
|
233
|
+
on<K extends keyof FullEventMap<TCustomEvents>>(
|
|
234
|
+
event: K,
|
|
235
|
+
fn: Listener<FullEventMap<TCustomEvents>, K>
|
|
236
|
+
) {
|
|
220
237
|
const set = this.listeners.get(event) ?? new Set();
|
|
221
|
-
set.add(
|
|
238
|
+
set.add(
|
|
239
|
+
fn as Listener<
|
|
240
|
+
FullEventMap<TCustomEvents>,
|
|
241
|
+
keyof FullEventMap<TCustomEvents>
|
|
242
|
+
>
|
|
243
|
+
);
|
|
222
244
|
this.listeners.set(event, set);
|
|
223
245
|
}
|
|
224
246
|
|
|
225
|
-
onEach(fn: EachListener) {
|
|
247
|
+
onEach(fn: EachListener<FullEventMap<TCustomEvents>>) {
|
|
226
248
|
const event = '*';
|
|
227
249
|
const set = this.listeners.get(event) ?? new Set();
|
|
228
250
|
set.add(fn);
|
|
229
251
|
this.listeners.set(event, set);
|
|
230
252
|
}
|
|
231
253
|
|
|
232
|
-
emit<K extends keyof
|
|
254
|
+
emit<K extends keyof FullEventMap<TCustomEvents>>(
|
|
233
255
|
event: K,
|
|
234
|
-
...args: ListenerArgs<K>
|
|
256
|
+
...args: ListenerArgs<FullEventMap<TCustomEvents>, K>
|
|
235
257
|
): void {
|
|
236
258
|
const timestamp = Date.now();
|
|
237
259
|
const specific = this.listeners.get(event);
|
|
238
260
|
if (specific) {
|
|
239
261
|
for (const fn of specific) {
|
|
240
|
-
(fn as Listener<K>)(
|
|
262
|
+
(fn as Listener<FullEventMap<TCustomEvents>, K>)(
|
|
263
|
+
timestamp,
|
|
264
|
+
...args
|
|
265
|
+
);
|
|
241
266
|
}
|
|
242
267
|
}
|
|
243
268
|
|
|
@@ -248,14 +273,14 @@ export class TypedEventEmitter {
|
|
|
248
273
|
fn as unknown as (
|
|
249
274
|
e: K,
|
|
250
275
|
t: number,
|
|
251
|
-
...a: ListenerArgs<K>
|
|
276
|
+
...a: ListenerArgs<FullEventMap<TCustomEvents>, K>
|
|
252
277
|
) => void
|
|
253
278
|
)(event, timestamp, ...args);
|
|
254
279
|
}
|
|
255
280
|
}
|
|
256
281
|
}
|
|
257
282
|
|
|
258
|
-
events(): (keyof
|
|
283
|
+
events(): (keyof FullEventMap<TCustomEvents> | '*')[] {
|
|
259
284
|
return [...this.listeners.keys()];
|
|
260
285
|
}
|
|
261
286
|
}
|