chz-telegram-bot 0.7.7 → 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.
@@ -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,oBAA2B;gBAEpC,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;SAC1B,CAAC;KACL;IAuBK,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"}
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 = new TypedEventEmitter();
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
@@ -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,EACtC,MAAM,gBAAgB,CAAC"}
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
  /**
@@ -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;SAC1B,CAAC;KACL;IAoBD;;OAEG;IACG,QAAQ;CAKjB;AAED,eAAO,MAAM,eAAe,iBAAwB,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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"commandActionProcessor.d.ts","sourceRoot":"","sources":["../../../src/services/actionProcessors/commandActionProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IACxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,QAAQ,CAKd;IAEF,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,EACvC,OAAO,EAAE,OAAO;IAgDpB,2BAA2B,CACvB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO;IA8BpB,OAAO,CAAC,sBAAsB;CAgGjC"}
1
+ {"version":3,"file":"commandActionProcessor.d.ts","sourceRoot":"","sources":["../../../src/services/actionProcessors/commandActionProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IACxE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IACvE,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,QAAQ,CAKd;IAEF,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,EACvC,OAAO,EAAE,OAAO;IAgDpB,2BAA2B,CACvB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO;IA2CpB,OAAO,CAAC,sBAAsB;CAgGjC"}
@@ -53,14 +53,17 @@ export class CommandActionProcessor extends BaseActionProcessor {
53
53
  });
54
54
  this.replyCaptures.push(replyAction);
55
55
  capture.abortController.signal.addEventListener('abort', () => {
56
- const index = this.replyCaptures.indexOf(replyAction);
57
- this.replyCaptures.splice(index, 1);
58
- this.eventEmitter.emit(BotEventType.commandActionCaptureAborted, {
59
- parentMessageId,
60
- chatInfo,
61
- traceId
62
- });
63
- });
56
+ const capturesWithController = this.replyCaptures.filter((x) => x.abortController == capture.abortController);
57
+ for (const captureToCancel of capturesWithController) {
58
+ const index = this.replyCaptures.indexOf(captureToCancel);
59
+ this.replyCaptures.splice(index, 1);
60
+ this.eventEmitter.emit(BotEventType.commandActionCaptureAborted, {
61
+ parentMessageId,
62
+ chatInfo,
63
+ traceId
64
+ });
65
+ }
66
+ }, { once: true });
64
67
  }
65
68
  startMessageProcessing(msg) {
66
69
  this.eventEmitter.emit(BotEventType.messageProcessingStarted, {
@@ -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 ListenerArgs<K extends keyof BotEventMap> = BotEventMap[K] extends undefined ? [] : [
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
- } & BotEventMap[K]
175
+ } & TMap[K]
176
176
  ];
177
- export type Listener<K extends keyof BotEventMap> = (timestamp: number, ...args: ListenerArgs<K>) => void;
178
- export type EachListener = (event: BotEventTypeKeys, timestamp: number, data: unknown) => void;
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 BotEventMap>(event: K, fn: Listener<K>): void;
182
- onEach(fn: EachListener): void;
183
- emit<K extends keyof BotEventMap>(event: K, ...args: ListenerArgs<K>): void;
184
- events(): (keyof BotEventMap | '*')[];
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":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "type": "git",
15
15
  "url": "https://github.com/AlexSolari/botFramework.git"
16
16
  },
17
- "version": "0.7.7",
17
+ "version": "0.7.9",
18
18
  "type": "module",
19
19
  "dependencies": {
20
20
  "async-sema": "^3.1.1",
@@ -17,7 +17,7 @@ export class BotInstance {
17
17
  private readonly actionProcessingService: ActionProcessingService;
18
18
 
19
19
  readonly name: string;
20
- readonly eventEmitter = new TypedEventEmitter();
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
  });
@@ -107,16 +107,29 @@ export class CommandActionProcessor extends BaseActionProcessor {
107
107
 
108
108
  this.replyCaptures.push(replyAction);
109
109
 
110
- capture.abortController.signal.addEventListener('abort', () => {
111
- const index = this.replyCaptures.indexOf(replyAction);
112
- this.replyCaptures.splice(index, 1);
113
-
114
- this.eventEmitter.emit(BotEventType.commandActionCaptureAborted, {
115
- parentMessageId,
116
- chatInfo,
117
- traceId
118
- });
119
- });
110
+ capture.abortController.signal.addEventListener(
111
+ 'abort',
112
+ () => {
113
+ const capturesWithController = this.replyCaptures.filter(
114
+ (x) => x.abortController == capture.abortController
115
+ );
116
+
117
+ for (const captureToCancel of capturesWithController) {
118
+ const index = this.replyCaptures.indexOf(captureToCancel);
119
+ this.replyCaptures.splice(index, 1);
120
+
121
+ this.eventEmitter.emit(
122
+ BotEventType.commandActionCaptureAborted,
123
+ {
124
+ parentMessageId,
125
+ chatInfo,
126
+ traceId
127
+ }
128
+ );
129
+ }
130
+ },
131
+ { once: true }
132
+ );
120
133
  }
121
134
 
122
135
  private startMessageProcessing(msg: IncomingMessage) {
@@ -190,54 +190,79 @@ export type BotEventMap = {
190
190
  };
191
191
  };
192
192
 
193
- type ListenerArgs<K extends keyof BotEventMap> =
194
- BotEventMap[K] extends undefined
195
- ? []
196
- : [
197
- {
198
- traceId: TraceId;
199
- } & BotEventMap[K]
200
- ];
193
+ type FullEventMap<TCustom extends Record<string, unknown>> = BotEventMap &
194
+ TCustom;
201
195
 
202
- export type Listener<K extends keyof BotEventMap> = (
203
- timestamp: number,
204
- ...args: ListenerArgs<K>
205
- ) => void;
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 EachListener = (
208
- event: BotEventTypeKeys,
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 BotEventMap | '*',
216
- Set<Listener<keyof BotEventMap> | EachListener>
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 BotEventMap>(event: K, fn: Listener<K>) {
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(fn as Listener<keyof BotEventMap>);
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 BotEventMap>(
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>)(timestamp, ...args);
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 BotEventMap | '*')[] {
283
+ events(): (keyof FullEventMap<TCustomEvents> | '*')[] {
259
284
  return [...this.listeners.keys()];
260
285
  }
261
286
  }