chz-telegram-bot 0.3.9 → 0.3.11

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.
Files changed (124) hide show
  1. package/builtin/helpAction.ts +1 -1
  2. package/dist/builtin/helpAction.js +1 -1
  3. package/dist/dtos/chatInfo.js +4 -0
  4. package/dist/dtos/commandTriggerCheckResult.js +3 -0
  5. package/dist/dtos/incomingMessage.js +9 -1
  6. package/dist/dtos/incomingQuery.js +5 -0
  7. package/dist/dtos/replyInfo.js +2 -0
  8. package/dist/dtos/responses/delay.js +6 -2
  9. package/dist/dtos/responses/imageMessage.js +10 -4
  10. package/dist/dtos/responses/inlineQueryResponse.js +6 -2
  11. package/dist/dtos/responses/reaction.js +7 -2
  12. package/dist/dtos/responses/textMessage.js +10 -3
  13. package/dist/dtos/responses/unpin.js +6 -2
  14. package/dist/dtos/responses/videoMessage.js +10 -4
  15. package/dist/entities/actions/commandAction.d.ts.map +1 -1
  16. package/dist/entities/actions/commandAction.js +14 -1
  17. package/dist/entities/actions/inlineQueryAction.d.ts.map +1 -1
  18. package/dist/entities/actions/inlineQueryAction.js +8 -1
  19. package/dist/entities/actions/replyCaptureAction.d.ts.map +1 -1
  20. package/dist/entities/actions/replyCaptureAction.js +8 -1
  21. package/dist/entities/actions/scheduledAction.d.ts.map +1 -1
  22. package/dist/entities/actions/scheduledAction.js +13 -14
  23. package/dist/entities/botInstance.js +6 -1
  24. package/dist/entities/cachedStateFactory.js +2 -0
  25. package/dist/entities/context/baseContext.js +14 -2
  26. package/dist/entities/context/chatContext.d.ts +0 -3
  27. package/dist/entities/context/chatContext.d.ts.map +1 -1
  28. package/dist/entities/context/chatContext.js +38 -41
  29. package/dist/entities/context/inlineQueryContext.d.ts +0 -3
  30. package/dist/entities/context/inlineQueryContext.d.ts.map +1 -1
  31. package/dist/entities/context/inlineQueryContext.js +12 -6
  32. package/dist/entities/context/messageContext.d.ts +0 -3
  33. package/dist/entities/context/messageContext.d.ts.map +1 -1
  34. package/dist/entities/context/messageContext.js +77 -68
  35. package/dist/entities/context/replyContext.d.ts +0 -3
  36. package/dist/entities/context/replyContext.d.ts.map +1 -1
  37. package/dist/entities/context/replyContext.js +90 -65
  38. package/dist/entities/states/actionStateBase.js +2 -4
  39. package/dist/entities/taskRecord.js +3 -0
  40. package/dist/helpers/builders/commandActionBuilder.js +10 -8
  41. package/dist/helpers/builders/inlineQueryActionBuilder.js +7 -6
  42. package/dist/helpers/builders/scheduledActionBuilder.js +7 -5
  43. package/dist/helpers/mapUtils.d.ts +3 -0
  44. package/dist/helpers/mapUtils.d.ts.map +1 -0
  45. package/dist/helpers/mapUtils.js +17 -0
  46. package/dist/helpers/noop.d.ts +3 -4
  47. package/dist/helpers/noop.d.ts.map +1 -1
  48. package/dist/helpers/noop.js +2 -1
  49. package/dist/helpers/traceFactory.d.ts +1 -1
  50. package/dist/helpers/traceFactory.d.ts.map +1 -1
  51. package/dist/main.js +1 -3
  52. package/dist/services/actionProcessingService.d.ts.map +1 -1
  53. package/dist/services/actionProcessingService.js +15 -3
  54. package/dist/services/actionProcessors/baseProcessor.d.ts +1 -3
  55. package/dist/services/actionProcessors/baseProcessor.d.ts.map +1 -1
  56. package/dist/services/actionProcessors/baseProcessor.js +6 -2
  57. package/dist/services/actionProcessors/commandActionProcessor.d.ts +0 -4
  58. package/dist/services/actionProcessors/commandActionProcessor.d.ts.map +1 -1
  59. package/dist/services/actionProcessors/commandActionProcessor.js +11 -14
  60. package/dist/services/actionProcessors/inlineQueryActionProcessor.d.ts +0 -4
  61. package/dist/services/actionProcessors/inlineQueryActionProcessor.d.ts.map +1 -1
  62. package/dist/services/actionProcessors/inlineQueryActionProcessor.js +5 -7
  63. package/dist/services/actionProcessors/scheduledActionProcessor.js +7 -5
  64. package/dist/services/jsonFileStorage.d.ts +4 -3
  65. package/dist/services/jsonFileStorage.d.ts.map +1 -1
  66. package/dist/services/jsonFileStorage.js +22 -14
  67. package/dist/services/jsonLogger.d.ts +1 -1
  68. package/dist/services/jsonLogger.d.ts.map +1 -1
  69. package/dist/services/jsonLogger.js +9 -3
  70. package/dist/services/nodeTimeoutScheduler.d.ts +2 -2
  71. package/dist/services/nodeTimeoutScheduler.d.ts.map +1 -1
  72. package/dist/services/nodeTimeoutScheduler.js +6 -5
  73. package/dist/services/responseProcessingQueue.d.ts +1 -0
  74. package/dist/services/responseProcessingQueue.d.ts.map +1 -1
  75. package/dist/services/responseProcessingQueue.js +11 -10
  76. package/dist/services/telegramApi.d.ts.map +1 -1
  77. package/dist/services/telegramApi.js +17 -8
  78. package/dist/types/commandTrigger.d.ts +1 -2
  79. package/dist/types/commandTrigger.d.ts.map +1 -1
  80. package/dist/types/handlers.d.ts +1 -1
  81. package/dist/types/handlers.d.ts.map +1 -1
  82. package/dist/types/logger.d.ts +2 -2
  83. package/dist/types/logger.d.ts.map +1 -1
  84. package/dist/types/scheduler.d.ts +2 -2
  85. package/dist/types/scheduler.d.ts.map +1 -1
  86. package/dist/types/storage.d.ts +2 -2
  87. package/dist/types/storage.d.ts.map +1 -1
  88. package/dist/types/timeValues.d.ts +3 -3
  89. package/dist/types/timeValues.d.ts.map +1 -1
  90. package/dist/types/trace.d.ts +1 -1
  91. package/dist/types/trace.d.ts.map +1 -1
  92. package/dtos/incomingMessage.ts +1 -1
  93. package/entities/actions/commandAction.ts +5 -1
  94. package/entities/actions/inlineQueryAction.ts +5 -1
  95. package/entities/actions/replyCaptureAction.ts +5 -1
  96. package/entities/actions/scheduledAction.ts +11 -13
  97. package/entities/botInstance.ts +7 -7
  98. package/entities/context/chatContext.ts +0 -6
  99. package/entities/context/inlineQueryContext.ts +0 -6
  100. package/entities/context/messageContext.ts +0 -6
  101. package/entities/context/replyContext.ts +18 -15
  102. package/eslint.config.js +26 -1
  103. package/helpers/mapUtils.ts +15 -0
  104. package/helpers/noop.ts +4 -4
  105. package/helpers/traceFactory.ts +2 -2
  106. package/package.json +1 -1
  107. package/services/actionProcessingService.ts +8 -4
  108. package/services/actionProcessors/baseProcessor.ts +5 -8
  109. package/services/actionProcessors/commandActionProcessor.ts +6 -18
  110. package/services/actionProcessors/inlineQueryActionProcessor.ts +6 -16
  111. package/services/actionProcessors/scheduledActionProcessor.ts +5 -5
  112. package/services/jsonFileStorage.ts +39 -21
  113. package/services/jsonLogger.ts +12 -8
  114. package/services/nodeTimeoutScheduler.ts +6 -6
  115. package/services/responseProcessingQueue.ts +13 -7
  116. package/services/telegramApi.ts +7 -5
  117. package/tsconfig.json +1 -1
  118. package/types/commandTrigger.ts +1 -3
  119. package/types/handlers.ts +1 -1
  120. package/types/logger.ts +3 -6
  121. package/types/scheduler.ts +2 -2
  122. package/types/storage.ts +2 -2
  123. package/types/timeValues.ts +3 -3
  124. package/types/trace.ts +3 -1
@@ -1,4 +1,3 @@
1
- import { Telegraf } from 'telegraf';
2
1
  import { ILogger } from '../../types/logger';
3
2
  import { IScheduler } from '../../types/scheduler';
4
3
  import { IStorageClient } from '../../types/storage';
@@ -11,10 +10,9 @@ export declare abstract class BaseActionProcessor {
11
10
  protected readonly logger: ILogger;
12
11
  protected readonly botName: string;
13
12
  protected api: TelegramApiService;
14
- protected telegraf: Telegraf;
15
13
  constructor(botName: string, storage: IStorageClient, scheduler: IScheduler, logger: ILogger);
16
14
  private defaultErrorHandler;
17
- initializeDependencies(api: TelegramApiService, telegraf: Telegraf): void;
15
+ initializeDependencies(api: TelegramApiService): void;
18
16
  executeAction<TAction extends IAction, TActionContext extends BaseContext<TAction>>(action: TAction, ctx: TActionContext, errorHandler?: (error: Error, ctx: TActionContext) => void): Promise<void>;
19
17
  }
20
18
  //# sourceMappingURL=baseProcessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/baseProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,8BAAsB,mBAAmB;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAG,kBAAkB,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC;gBAG1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,OAAO;IASnB,OAAO,CAAC,mBAAmB;IAO3B,sBAAsB,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ;IAK5D,aAAa,CACf,OAAO,SAAS,OAAO,EACvB,cAAc,SAAS,WAAW,CAAC,OAAO,CAAC,EAE3C,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,cAAc,EACnB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI;CAUjE"}
1
+ {"version":3,"file":"baseProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/baseProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,8BAAsB,mBAAmB;IACrC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAG,kBAAkB,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,OAAO;IASnB,OAAO,CAAC,mBAAmB;IAO3B,sBAAsB,CAAC,GAAG,EAAE,kBAAkB;IAIxC,aAAa,CACf,OAAO,SAAS,OAAO,EACvB,cAAc,SAAS,WAAW,CAAC,OAAO,CAAC,EAE3C,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,cAAc,EACnB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI;CAUjE"}
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseActionProcessor = void 0;
4
4
  class BaseActionProcessor {
5
+ storage;
6
+ scheduler;
7
+ logger;
8
+ botName;
9
+ api;
5
10
  constructor(botName, storage, scheduler, logger) {
6
11
  this.storage = storage;
7
12
  this.scheduler = scheduler;
@@ -11,9 +16,8 @@ class BaseActionProcessor {
11
16
  defaultErrorHandler(error, ctx) {
12
17
  ctx.logger.errorWithTraceId(error, ctx);
13
18
  }
14
- initializeDependencies(api, telegraf) {
19
+ initializeDependencies(api) {
15
20
  this.api = api;
16
- this.telegraf = telegraf;
17
21
  }
18
22
  async executeAction(action, ctx, errorHandler) {
19
23
  try {
@@ -1,9 +1,6 @@
1
1
  import { Telegraf } from 'telegraf';
2
2
  import { CommandAction } from '../../entities/actions/commandAction';
3
3
  import { IActionState } from '../../types/actionState';
4
- import { ILogger } from '../../types/logger';
5
- import { IScheduler } from '../../types/scheduler';
6
- import { IStorageClient } from '../../types/storage';
7
4
  import { TelegramApiService } from '../telegramApi';
8
5
  import { IReplyCapture } from '../../types/capture';
9
6
  import { TraceId } from '../../types/trace';
@@ -12,7 +9,6 @@ import { BaseActionProcessor } from './baseProcessor';
12
9
  export declare class CommandActionProcessor extends BaseActionProcessor {
13
10
  private readonly replyCaptures;
14
11
  private commands;
15
- constructor(botName: string, storage: IStorageClient, scheduler: IScheduler, logger: ILogger);
16
12
  initialize(api: TelegramApiService, telegraf: Telegraf, commands: CommandAction<IActionState>[], verboseLoggingForIncomingMessage: boolean): void;
17
13
  captureRegistrationCallback(capture: IReplyCapture, parentMessageId: number, chatInfo: ChatInfo, traceId: TraceId): void;
18
14
  private processMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"commandActionProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/commandActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IAExE,OAAO,CAAC,QAAQ,CAKd;gBAGE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,OAAO;IAKnB,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,EACvC,gCAAgC,EAAE,OAAO;IAyD7C,2BAA2B,CACvB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO;YA+BN,cAAc;IAiC5B,OAAO,CAAC,6BAA6B;IA6BrC,OAAO,CAAC,wBAAwB;CA8BnC"}
1
+ {"version":3,"file":"commandActionProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/commandActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,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,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IAExE,OAAO,CAAC,QAAQ,CAKd;IAEF,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,EACvC,gCAAgC,EAAE,OAAO;IAyD7C,2BAA2B,CACvB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO;YA+BN,cAAc;IAiC5B,OAAO,CAAC,6BAA6B;IA6BrC,OAAO,CAAC,wBAAwB;CA8BnC"}
@@ -9,16 +9,13 @@ const messageTypes_1 = require("../../types/messageTypes");
9
9
  const objectFromEntries_1 = require("../../helpers/objectFromEntries");
10
10
  const baseProcessor_1 = require("./baseProcessor");
11
11
  class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
12
- constructor(botName, storage, scheduler, logger) {
13
- super(botName, storage, scheduler, logger);
14
- this.replyCaptures = [];
15
- this.commands = (0, objectFromEntries_1.typeSafeObjectFromEntries)(Object.values(messageTypes_1.MessageType).map((x) => [
16
- x,
17
- []
18
- ]));
19
- }
12
+ replyCaptures = [];
13
+ commands = (0, objectFromEntries_1.typeSafeObjectFromEntries)(Object.values(messageTypes_1.MessageType).map((x) => [
14
+ x,
15
+ []
16
+ ]));
20
17
  initialize(api, telegraf, commands, verboseLoggingForIncomingMessage) {
21
- this.initializeDependencies(api, telegraf);
18
+ this.initializeDependencies(api);
22
19
  for (const msgType of Object.values(messageTypes_1.MessageType)) {
23
20
  if (msgType == messageTypes_1.MessageType.Text) {
24
21
  this.commands[msgType] = commands.filter((cmd) => cmd.triggers.find((x) => typeof x != 'string') !=
@@ -33,7 +30,7 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
33
30
  cmd.triggers.includes(messageTypes_1.MessageType.Any));
34
31
  }
35
32
  if (commands.length > 0) {
36
- this.telegraf.on('message', async (ctx) => {
33
+ telegraf.on('message', async (ctx) => {
37
34
  const msg = new incomingMessage_1.IncomingMessage(ctx.update.message, this.botName);
38
35
  const logger = this.logger.createScope(this.botName, msg.traceId, msg.chatInfo.name);
39
36
  if (verboseLoggingForIncomingMessage) {
@@ -65,13 +62,13 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
65
62
  }
66
63
  for (const commandAction of commandsToCheck) {
67
64
  this.initializeMessageContext(ctx, commandAction, msg);
68
- this.executeAction(commandAction, ctx);
65
+ await this.executeAction(commandAction, ctx);
69
66
  }
70
67
  if (this.replyCaptures.length != 0) {
71
68
  const replyCtx = new replyContext_1.ReplyContext(this.storage, this.scheduler);
72
69
  for (const replyAction of this.replyCaptures) {
73
70
  this.initializeReplyCaptureContext(replyCtx, replyAction, msg);
74
- this.executeAction(replyAction, replyCtx);
71
+ await this.executeAction(replyAction, replyCtx);
75
72
  }
76
73
  }
77
74
  this.api.flushResponses();
@@ -79,7 +76,7 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
79
76
  initializeReplyCaptureContext(ctx, action, message) {
80
77
  ctx.replyMessageId = message.replyToMessageId;
81
78
  ctx.messageId = message.messageId;
82
- ctx.messageText = message.text ?? '';
79
+ ctx.messageText = message.text;
83
80
  ctx.messageType = message.type;
84
81
  ctx.fromUserId = message.from?.id;
85
82
  ctx.fromUserName =
@@ -96,7 +93,7 @@ class CommandActionProcessor extends baseProcessor_1.BaseActionProcessor {
96
93
  }
97
94
  initializeMessageContext(ctx, action, message) {
98
95
  ctx.messageId = message.messageId;
99
- ctx.messageText = message.text ?? '';
96
+ ctx.messageText = message.text;
100
97
  ctx.messageType = message.type;
101
98
  ctx.fromUserId = message.from?.id;
102
99
  ctx.fromUserName =
@@ -1,14 +1,10 @@
1
1
  import { Telegraf } from 'telegraf';
2
2
  import { InlineQueryAction } from '../../entities/actions/inlineQueryAction';
3
- import { ILogger } from '../../types/logger';
4
- import { IScheduler } from '../../types/scheduler';
5
- import { IStorageClient } from '../../types/storage';
6
3
  import { Milliseconds } from '../../types/timeValues';
7
4
  import { TelegramApiService } from '../telegramApi';
8
5
  import { BaseActionProcessor } from './baseProcessor';
9
6
  export declare class InlineQueryActionProcessor extends BaseActionProcessor {
10
7
  private inlineQueries;
11
- constructor(botName: string, storage: IStorageClient, scheduler: IScheduler, logger: ILogger);
12
8
  initialize(api: TelegramApiService, telegraf: Telegraf, inlineQueries: InlineQueryAction[], period: Milliseconds): void;
13
9
  private initializeInlineQueryContext;
14
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inlineQueryActionProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/inlineQueryActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,0BAA2B,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,aAAa,CAAuB;gBAGxC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,OAAO;IAKnB,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,EAAE,EAClC,MAAM,EAAE,YAAY;IAqGxB,OAAO,CAAC,4BAA4B;CAqBvC"}
1
+ {"version":3,"file":"inlineQueryActionProcessor.d.ts","sourceRoot":"","sources":["../../../services/actionProcessors/inlineQueryActionProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,0BAA2B,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,aAAa,CAAuB;IAE5C,UAAU,CACN,GAAG,EAAE,kBAAkB,EACvB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,EAAE,EAClC,MAAM,EAAE,YAAY;IAuGxB,OAAO,CAAC,4BAA4B;CAqBvC"}
@@ -6,19 +6,17 @@ const inlineQueryContext_1 = require("../../entities/context/inlineQueryContext"
6
6
  const traceFactory_1 = require("../../helpers/traceFactory");
7
7
  const baseProcessor_1 = require("./baseProcessor");
8
8
  class InlineQueryActionProcessor extends baseProcessor_1.BaseActionProcessor {
9
- constructor(botName, storage, scheduler, logger) {
10
- super(botName, storage, scheduler, logger);
11
- }
9
+ inlineQueries;
12
10
  initialize(api, telegraf, inlineQueries, period) {
13
- this.initializeDependencies(api, telegraf);
11
+ this.initializeDependencies(api);
14
12
  this.inlineQueries = inlineQueries;
15
13
  let pendingInlineQueries = [];
16
14
  const queriesInProcessing = new Map();
17
15
  if (this.inlineQueries.length > 0) {
18
- this.telegraf.on('inline_query', async (ctx) => {
16
+ telegraf.on('inline_query', (ctx) => {
19
17
  const query = new incomingQuery_1.IncomingInlineQuery(ctx.inlineQuery.id, ctx.inlineQuery.query, ctx.inlineQuery.from.id, (0, traceFactory_1.createTrace)('InlineQuery', this.botName, ctx.inlineQuery.id));
20
18
  const logger = this.logger.createScope(this.botName, query.traceId, 'Query');
21
- logger.logWithTraceId(`${ctx.inlineQuery.from.username} (${ctx.inlineQuery.from.id}): Query for ${ctx.inlineQuery.query}`);
19
+ logger.logWithTraceId(`${ctx.inlineQuery.from.username ?? 'Unknown'} (${ctx.inlineQuery.from.id}): Query for ${ctx.inlineQuery.query}`);
22
20
  const queryBeingProcessed = queriesInProcessing.get(query.userId);
23
21
  if (queryBeingProcessed) {
24
22
  logger.logWithTraceId(`Aborting query ${queryBeingProcessed.queryId} (${queryBeingProcessed.query}): new query recieved from ${query.userId}`);
@@ -36,7 +34,7 @@ class InlineQueryActionProcessor extends baseProcessor_1.BaseActionProcessor {
36
34
  queriesInProcessing.set(inlineQuery.userId, inlineQuery);
37
35
  for (const inlineQueryAction of this.inlineQueries) {
38
36
  this.initializeInlineQueryContext(ctx, inlineQuery.query, inlineQuery.queryId, inlineQueryAction, inlineQuery.abortController.signal, inlineQuery.traceId);
39
- this.executeAction(inlineQueryAction, ctx, (error, ctx) => {
37
+ await this.executeAction(inlineQueryAction, ctx, (error, ctx) => {
40
38
  if (error.name == 'AbortError') {
41
39
  ctx.logger.logWithTraceId(`Aborting query ${inlineQuery.queryId} (${inlineQuery.query}) successful.`);
42
40
  }
@@ -11,12 +11,14 @@ const timeConvertions_1 = require("../../helpers/timeConvertions");
11
11
  const traceFactory_1 = require("../../helpers/traceFactory");
12
12
  const baseProcessor_1 = require("./baseProcessor");
13
13
  class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
14
+ chats;
15
+ scheduled;
14
16
  constructor(botName, chats, storage, scheduler, logger) {
15
17
  super(botName, storage, scheduler, logger);
16
18
  this.chats = chats;
17
19
  }
18
20
  initialize(api, scheduled, period) {
19
- this.initializeDependencies(api, null);
21
+ this.initializeDependencies(api);
20
22
  this.scheduled = scheduled;
21
23
  if (this.scheduled.length > 0) {
22
24
  const now = (0, moment_1.default)();
@@ -31,9 +33,9 @@ class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
31
33
  nextExecutionTime = nextExecutionTime.add(1, 'hour');
32
34
  }
33
35
  const delay = nextExecutionTime.diff(now);
34
- this.scheduler.createOnetimeTask('ScheduledProcessing_OneTime', async () => {
35
- this.scheduler.createTask('ScheduledProcessing', async () => {
36
- await this.runScheduled();
36
+ this.scheduler.createOnetimeTask('ScheduledProcessing_OneTime', () => {
37
+ this.scheduler.createTask('ScheduledProcessing', () => {
38
+ void this.runScheduled();
37
39
  }, (0, timeConvertions_1.secondsToMilliseconds)(period), true, this.botName);
38
40
  }, delay, this.botName);
39
41
  }
@@ -43,7 +45,7 @@ class ScheduledActionProcessor extends baseProcessor_1.BaseActionProcessor {
43
45
  for (const [chatName, chatId] of Object.entries(this.chats)) {
44
46
  for (const scheduledAction of this.scheduled) {
45
47
  this.initializeChatContext(ctx, scheduledAction, new chatInfo_1.ChatInfo(chatId, chatName), (0, traceFactory_1.createTrace)(scheduledAction, this.botName, `${scheduledAction.key}-${chatId}`));
46
- this.executeAction(scheduledAction, ctx);
48
+ await this.executeAction(scheduledAction, ctx);
47
49
  }
48
50
  }
49
51
  this.api.flushResponses();
@@ -8,15 +8,16 @@ export declare class JsonFileStorage implements IStorageClient {
8
8
  private readonly storagePath;
9
9
  private readonly botName;
10
10
  constructor(botName: string, actions: IActionWithState<IActionState>[], path?: string);
11
+ private backfillEmptyActionStates;
11
12
  private lock;
12
13
  private tryGetFromCache;
13
14
  private loadFromFile;
14
15
  private updateCacheAndSaveToFile;
15
- load<TActionState extends IActionState>(key: ActionKey): Promise<Record<number, TActionState>>;
16
+ load<TActionState extends IActionState>(key: ActionKey): Promise<Record<number, TActionState | undefined>>;
16
17
  saveMetadata(actions: IActionWithState<IActionState>[]): Promise<void>;
17
- getActionState<TActionState extends IActionState>(action: IActionWithState<TActionState>, chatId: number): Promise<TActionState>;
18
+ getActionState<TActionState extends IActionState>(action: IActionWithState<TActionState>, chatId: number): Promise<TActionState | (TActionState & undefined)>;
18
19
  saveActionExecutionResult<TActionState extends IActionState>(action: IActionWithState<TActionState>, chatId: number, state: TActionState): Promise<void>;
19
20
  close(): Promise<void>;
20
- updateStateFor<TActionState extends IActionState>(action: IActionWithState<TActionState>, chatId: number, update: (state: TActionState) => Promise<void>): Promise<void>;
21
+ updateStateFor<TActionState extends IActionState>(action: IActionWithState<TActionState>, chatId: number, update: (state: TActionState) => Promise<void> | void): Promise<void>;
21
22
  }
22
23
  //# sourceMappingURL=jsonFileStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonFileStorage.d.ts","sourceRoot":"","sources":["../../services/jsonFileStorage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAM9D,qBAAa,eAAgB,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAG7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,EACzC,IAAI,CAAC,EAAE,MAAM;YAqBH,IAAI;IAclB,OAAO,CAAC,eAAe;YAIT,YAAY;YAwBZ,wBAAwB;IAgBhC,IAAI,CAAC,YAAY,SAAS,YAAY,EAAE,GAAG,EAAE,SAAS;IAStD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE;IAQtD,cAAc,CAAC,YAAY,SAAS,YAAY,EAClD,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACtC,MAAM,EAAE,MAAM;IAWZ,yBAAyB,CAAC,YAAY,SAAS,YAAY,EAC7D,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY;IAajB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,cAAc,CAAC,YAAY,SAAS,YAAY,EAClD,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC;CAiBrD"}
1
+ {"version":3,"file":"jsonFileStorage.d.ts","sourceRoot":"","sources":["../../services/jsonFileStorage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO9D,qBAAa,eAAgB,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;IAClE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAG7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,EACzC,IAAI,CAAC,EAAE,MAAM;IAqBjB,OAAO,CAAC,yBAAyB;YAanB,IAAI;IAYlB,OAAO,CAAC,eAAe;YAIT,YAAY;YA6BZ,wBAAwB;IAehC,IAAI,CAAC,YAAY,SAAS,YAAY,EAAE,GAAG,EAAE,SAAS;IAStD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE;IAQtD,cAAc,CAAC,YAAY,SAAS,YAAY,EAClD,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACtC,MAAM,EAAE,MAAM;IAWZ,yBAAyB,CAAC,YAAY,SAAS,YAAY,EAC7D,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY;IAcjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,cAAc,CAAC,YAAY,SAAS,YAAY,EAClD,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAkB5D"}
@@ -4,13 +4,17 @@ exports.JsonFileStorage = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const promises_1 = require("fs/promises");
6
6
  const async_sema_1 = require("async-sema");
7
+ const mapUtils_1 = require("../helpers/mapUtils");
7
8
  function buildPath(storagePath, botName, actionKey) {
8
9
  return `${storagePath}/${botName}/${actionKey.replaceAll(':', '/')}.json`;
9
10
  }
10
11
  class JsonFileStorage {
12
+ filePaths = new Map();
13
+ locks = new Map();
14
+ cache;
15
+ storagePath;
16
+ botName;
11
17
  constructor(botName, actions, path) {
12
- this.filePaths = new Map();
13
- this.locks = new Map();
14
18
  this.cache = new Map();
15
19
  this.botName = botName;
16
20
  this.storagePath = path ?? 'storage';
@@ -24,10 +28,16 @@ class JsonFileStorage {
24
28
  this.filePaths.set(action.key, buildPath(this.storagePath, this.botName, action.key));
25
29
  }
26
30
  }
31
+ backfillEmptyActionStates(action, data) {
32
+ for (const [stringKey, value] of Object.entries(data)) {
33
+ if (value)
34
+ continue;
35
+ data[parseInt(stringKey)] = action.stateConstructor();
36
+ }
37
+ return true;
38
+ }
27
39
  async lock(key, action) {
28
- if (!this.locks.has(key))
29
- this.locks.set(key, new async_sema_1.Sema(1));
30
- const lock = this.locks.get(key);
40
+ const lock = (0, mapUtils_1.getOrSetIfNotExists)(this.locks, key, new async_sema_1.Sema(1));
31
41
  await lock.acquire();
32
42
  try {
33
43
  return await action();
@@ -40,9 +50,7 @@ class JsonFileStorage {
40
50
  return this.cache.get(key);
41
51
  }
42
52
  async loadFromFile(key) {
43
- if (!this.filePaths.has(key))
44
- this.filePaths.set(key, buildPath(this.storagePath, this.botName, key));
45
- const targetPath = this.filePaths.get(key);
53
+ const targetPath = (0, mapUtils_1.getOrSetIfNotExists)(this.filePaths, key, buildPath(this.storagePath, this.botName, key));
46
54
  const fileContent = await (0, promises_1.readFile)(targetPath, {
47
55
  encoding: 'utf-8',
48
56
  flag: 'a+'
@@ -55,9 +63,7 @@ class JsonFileStorage {
55
63
  }
56
64
  async updateCacheAndSaveToFile(data, key) {
57
65
  this.cache.set(key, data);
58
- if (!this.filePaths.has(key))
59
- this.filePaths.set(key, buildPath(this.storagePath, this.botName, key));
60
- const targetPath = this.filePaths.get(key);
66
+ const targetPath = (0, mapUtils_1.getOrSetIfNotExists)(this.filePaths, key, buildPath(this.storagePath, this.botName, key));
61
67
  await (0, promises_1.writeFile)(targetPath, JSON.stringify(data), { flag: 'w+' });
62
68
  }
63
69
  async load(key) {
@@ -80,11 +86,12 @@ class JsonFileStorage {
80
86
  return Object.assign(action.stateConstructor(), value[chatId]);
81
87
  }
82
88
  async saveActionExecutionResult(action, chatId, state) {
83
- return await this.lock(action.key, async () => {
89
+ await this.lock(action.key, async () => {
84
90
  const data = this.tryGetFromCache(action.key) ??
85
91
  (await this.loadFromFile(action.key));
86
92
  data[chatId] = state;
87
- await this.updateCacheAndSaveToFile(data, action.key);
93
+ if (this.backfillEmptyActionStates(action, data))
94
+ await this.updateCacheAndSaveToFile(data, action.key);
88
95
  });
89
96
  }
90
97
  async close() {
@@ -98,7 +105,8 @@ class JsonFileStorage {
98
105
  (await this.loadFromFile(action.key));
99
106
  const state = Object.assign(action.stateConstructor(), data[chatId]);
100
107
  await update(state);
101
- await this.updateCacheAndSaveToFile(data, action.key);
108
+ if (this.backfillEmptyActionStates(action, data))
109
+ await this.updateCacheAndSaveToFile(data, action.key);
102
110
  });
103
111
  }
104
112
  }
@@ -5,6 +5,6 @@ export declare class JsonLogger implements ILogger {
5
5
  createScope(botName: string, traceId: TraceId, chatName: string): IScopedLogger;
6
6
  logObjectWithTraceId(botName: string, traceId: TraceId, chatName: string, data: any): void;
7
7
  logWithTraceId(botName: string, traceId: TraceId, chatName: string, text: string): void;
8
- errorWithTraceId<TData>(botName: string, traceId: TraceId, chatName: string, errorObj: unknown, extraData?: TData): void;
8
+ errorWithTraceId(botName: string, traceId: TraceId, chatName: string, errorObj: unknown, extraData?: unknown): void;
9
9
  }
10
10
  //# sourceMappingURL=jsonLogger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonLogger.d.ts","sourceRoot":"","sources":["../../services/jsonLogger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,qBAAa,UAAW,YAAW,OAAO;IACtC,OAAO,CAAC,cAAc;IAQtB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GActD,aAAa;IAGtB,oBAAoB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG;IAQb,cAAc,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM;IAOhB,gBAAgB,CAAC,KAAK,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,KAAK;CAQxB"}
1
+ {"version":3,"file":"jsonLogger.d.ts","sourceRoot":"","sources":["../../services/jsonLogger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,qBAAa,UAAW,YAAW,OAAO;IACtC,OAAO,CAAC,cAAc;IAQtB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAiBtD,aAAa;IAGtB,oBAAoB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG;IAQb,cAAc,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM;IAOhB,gBAAgB,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,OAAO;CAQ1B"}
@@ -11,9 +11,15 @@ class JsonLogger {
11
11
  }
12
12
  createScope(botName, traceId, chatName) {
13
13
  return {
14
- logObjectWithTraceId: (data) => this.logObjectWithTraceId(botName, traceId, chatName, data),
15
- logWithTraceId: (text) => this.logWithTraceId(botName, traceId, chatName, text),
16
- errorWithTraceId: (errorObj, extraData) => this.errorWithTraceId(botName, traceId, chatName, errorObj, extraData)
14
+ logObjectWithTraceId: (data) => {
15
+ this.logObjectWithTraceId(botName, traceId, chatName, data);
16
+ },
17
+ logWithTraceId: (text) => {
18
+ this.logWithTraceId(botName, traceId, chatName, text);
19
+ },
20
+ errorWithTraceId: (errorObj, extraData) => {
21
+ this.errorWithTraceId(botName, traceId, chatName, errorObj, extraData);
22
+ }
17
23
  };
18
24
  }
19
25
  logObjectWithTraceId(botName, traceId, chatName, data) {
@@ -7,7 +7,7 @@ export declare class NodeTimeoutScheduler implements IScheduler {
7
7
  readonly activeTasks: TaskRecord[];
8
8
  constructor(logger: ILogger);
9
9
  stopAll(): void;
10
- createTask(name: string, action: () => void, interval: Milliseconds, executeRightAway: boolean, ownerName: string): void;
11
- createOnetimeTask(name: string, action: () => void, delay: Milliseconds, ownerName: string): void;
10
+ createTask(name: string, action: () => unknown, interval: Milliseconds, executeRightAway: boolean, ownerName: string): void;
11
+ createOnetimeTask(name: string, action: () => unknown, delay: Milliseconds, ownerName: string): void;
12
12
  }
13
13
  //# sourceMappingURL=nodeTimeoutScheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeTimeoutScheduler.d.ts","sourceRoot":"","sources":["../../services/nodeTimeoutScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,qBAAa,oBAAqB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAM;gBAE5B,MAAM,EAAE,OAAO;IAI3B,OAAO;IAMP,UAAU,CACN,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,IAAI,EAClB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,MAAM;IAmBrB,iBAAiB,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,IAAI,EAClB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM;CAoBxB"}
1
+ {"version":3,"file":"nodeTimeoutScheduler.d.ts","sourceRoot":"","sources":["../../services/nodeTimeoutScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,qBAAa,oBAAqB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAM;gBAE5B,MAAM,EAAE,OAAO;IAI3B,OAAO;IAMP,UAAU,CACN,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,OAAO,EACrB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,MAAM;IAmBrB,iBAAiB,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,OAAO,EACrB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM;CAoBxB"}
@@ -4,8 +4,9 @@ exports.NodeTimeoutScheduler = void 0;
4
4
  const taskRecord_1 = require("../entities/taskRecord");
5
5
  const traceFactory_1 = require("../helpers/traceFactory");
6
6
  class NodeTimeoutScheduler {
7
+ logger;
8
+ activeTasks = [];
7
9
  constructor(logger) {
8
- this.activeTasks = [];
9
10
  this.logger = logger;
10
11
  }
11
12
  stopAll() {
@@ -19,16 +20,16 @@ class NodeTimeoutScheduler {
19
20
  if (executeRightAway) {
20
21
  setImmediate(action);
21
22
  }
22
- this.logger.logWithTraceId(ownerName, (0, traceFactory_1.createTrace)(this, ownerName, name), 'System', `Created task [${taskId}]${name}, that will run every ${interval}ms.`);
23
+ this.logger.logWithTraceId(ownerName, (0, traceFactory_1.createTrace)(this, ownerName, name), 'System', `Created task ${name}, that will run every ${interval}ms.`);
23
24
  this.activeTasks.push(task);
24
25
  }
25
26
  createOnetimeTask(name, action, delay, ownerName) {
26
27
  const actionWrapper = () => {
27
- this.logger.logWithTraceId(ownerName, (0, traceFactory_1.createTrace)(this, ownerName, name), 'System', `Executing delayed oneshot [${taskId}]${name}`);
28
+ this.logger.logWithTraceId(ownerName, (0, traceFactory_1.createTrace)(this, ownerName, name), 'System', `Executing delayed oneshot ${name}`);
28
29
  action();
29
30
  };
30
- const taskId = setTimeout(actionWrapper, delay);
31
- this.logger.logWithTraceId(ownerName, (0, traceFactory_1.createTrace)(this, ownerName, name), 'System', `Created oneshot task [${taskId}]${name}, that will run in ${delay}ms.`);
31
+ setTimeout(actionWrapper, delay);
32
+ this.logger.logWithTraceId(ownerName, (0, traceFactory_1.createTrace)(this, ownerName, name), 'System', `Created oneshot task ${name}, that will run in ${delay}ms.`);
32
33
  }
33
34
  }
34
35
  exports.NodeTimeoutScheduler = NodeTimeoutScheduler;
@@ -3,6 +3,7 @@ export type QueueItem = {
3
3
  callback: () => Promise<void>;
4
4
  };
5
5
  export declare class ResponseProcessingQueue {
6
+ rateLimiter: () => Promise<void>;
6
7
  items: QueueItem[];
7
8
  isFlushing: boolean;
8
9
  enqueue(item: QueueItem): void;
@@ -1 +1 @@
1
- {"version":3,"file":"responseProcessingQueue.d.ts","sourceRoot":"","sources":["../../services/responseProcessingQueue.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAIF,qBAAa,uBAAuB;IAChC,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB,UAAU,UAAS;IAEnB,OAAO,CAAC,IAAI,EAAE,SAAS;IAmBjB,eAAe;CAiBxB"}
1
+ {"version":3,"file":"responseProcessingQueue.d.ts","sourceRoot":"","sources":["../../services/responseProcessingQueue.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAQF,qBAAa,uBAAuB;IAChC,WAAW,sBAAwD;IACnE,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB,UAAU,UAAS;IAEnB,OAAO,CAAC,IAAI,EAAE,SAAS;IAmBjB,eAAe;CAkBxB"}
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResponseProcessingQueue = void 0;
4
- const promises_1 = require("timers/promises");
4
+ const async_sema_1 = require("async-sema");
5
+ function notEmpty(arr) {
6
+ return arr.length > 0;
7
+ }
5
8
  const TELEGRAM_RATELIMIT_DELAY = 35;
6
9
  class ResponseProcessingQueue {
7
- constructor() {
8
- this.items = [];
9
- this.isFlushing = false;
10
- }
10
+ rateLimiter = (0, async_sema_1.RateLimit)(1, { timeUnit: TELEGRAM_RATELIMIT_DELAY });
11
+ items = [];
12
+ isFlushing = false;
11
13
  enqueue(item) {
12
14
  if (this.items.length === 0 ||
13
15
  item.priority >= this.items[this.items.length - 1].priority) {
@@ -25,14 +27,13 @@ class ResponseProcessingQueue {
25
27
  if (this.isFlushing)
26
28
  return;
27
29
  this.isFlushing = true;
28
- while (this.items.length) {
30
+ while (notEmpty(this.items)) {
29
31
  if (Date.now() >= this.items[0].priority) {
30
- const item = this.items.shift();
32
+ await this.rateLimiter();
33
+ const [item] = this.items;
34
+ this.items.shift();
31
35
  await item.callback();
32
36
  }
33
- else {
34
- await (0, promises_1.setTimeout)(TELEGRAM_RATELIMIT_DELAY);
35
- }
36
37
  }
37
38
  this.isFlushing = false;
38
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"telegramApi.d.ts","sourceRoot":"","sources":["../../services/telegramApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAKlC;IAEV,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAG7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,OAAO,EACf,2BAA2B,EAAE,CACzB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,KACf,IAAI;IASb,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE;IAsDhD,cAAc;YAIA,WAAW;YAkBX,eAAe;CAoGhC"}
1
+ {"version":3,"file":"telegramApi.d.ts","sourceRoot":"","sources":["../../services/telegramApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAKlC;IAEV,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAG7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,OAAO,EACf,2BAA2B,EAAE,CACzB,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,KACf,IAAI;IASb,uBAAuB,CAAC,SAAS,EAAE,WAAW,EAAE;IAsDhD,cAAc;YAIA,WAAW;YAkBX,eAAe;CAsGhC"}
@@ -4,8 +4,13 @@ exports.TelegramApiService = exports.TELEGRAM_ERROR_QUOTE_INVALID = void 0;
4
4
  const responseProcessingQueue_1 = require("./responseProcessingQueue");
5
5
  exports.TELEGRAM_ERROR_QUOTE_INVALID = 'QUOTE_TEXT_INVALID';
6
6
  class TelegramApiService {
7
+ queue = new responseProcessingQueue_1.ResponseProcessingQueue();
8
+ telegram;
9
+ storage;
10
+ logger;
11
+ captureRegistrationCallback;
12
+ botName;
7
13
  constructor(botName, telegram, storage, logger, captureRegistrationCallback) {
8
- this.queue = new responseProcessingQueue_1.ResponseProcessingQueue();
9
14
  this.telegram = telegram;
10
15
  this.botName = botName;
11
16
  this.storage = storage;
@@ -50,12 +55,12 @@ class TelegramApiService {
50
55
  }
51
56
  }
52
57
  flushResponses() {
53
- this.queue.flushReadyItems();
58
+ void this.queue.flushReadyItems();
54
59
  }
55
60
  async pinIfShould(response, sentMessage) {
56
61
  if (response.shouldPin) {
57
62
  await this.telegram.pinChatMessage(response.chatInfo.id, sentMessage.message_id, { disable_notification: true });
58
- await this.storage.updateStateFor(response.action, response.chatInfo.id, async (state) => {
63
+ await this.storage.updateStateFor(response.action, response.chatInfo.id, (state) => {
59
64
  state.pinnedMessages.push(sentMessage.message_id);
60
65
  });
61
66
  }
@@ -80,16 +85,20 @@ class TelegramApiService {
80
85
  });
81
86
  break;
82
87
  case 'image':
83
- sentMessage = await this.telegram.sendPhoto(response.chatInfo.id, response.content, response.replyInfo?.id
88
+ sentMessage = await this.telegram.sendPhoto(response.chatInfo.id, response.content,
89
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
90
+ response.replyInfo?.id
84
91
  ? {
85
- reply_to_message_id: response.replyInfo?.id // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
+ reply_to_message_id: response.replyInfo.id // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
93
  }
87
94
  : undefined);
88
95
  break;
89
96
  case 'video':
90
- sentMessage = await this.telegram.sendVideo(response.chatInfo.id, response.content, response.replyInfo?.id
97
+ sentMessage = await this.telegram.sendVideo(response.chatInfo.id, response.content,
98
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
99
+ response.replyInfo?.id
91
100
  ? {
92
- reply_to_message_id: response.replyInfo?.id // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
+ reply_to_message_id: response.replyInfo.id // eslint-disable-next-line @typescript-eslint/no-explicit-any
93
102
  }
94
103
  : undefined);
95
104
  break;
@@ -103,7 +112,7 @@ class TelegramApiService {
103
112
  return;
104
113
  case 'unpin':
105
114
  await this.telegram.unpinChatMessage(response.chatInfo.id, response.messageId);
106
- await this.storage.updateStateFor(response.action, response.chatInfo.id, async (state) => {
115
+ await this.storage.updateStateFor(response.action, response.chatInfo.id, (state) => {
107
116
  state.pinnedMessages = state.pinnedMessages.filter((x) => x != response.messageId);
108
117
  });
109
118
  break;
@@ -1,3 +1,2 @@
1
- import { MessageTypeValue } from './messageTypes';
2
- export type CommandTrigger = MessageTypeValue | string | RegExp;
1
+ export type CommandTrigger = string | RegExp;
3
2
  //# sourceMappingURL=commandTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commandTrigger.d.ts","sourceRoot":"","sources":["../../types/commandTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"commandTrigger.d.ts","sourceRoot":"","sources":["../../types/commandTrigger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC"}
@@ -10,7 +10,7 @@ export type CommandHandler<TActionState extends IActionState> = (
10
10
  /** Context of action executed in chat, in response to a message. */
11
11
  ctx: MessageContext<TActionState>,
12
12
  /** State of an action being executed. */
13
- state: TActionState) => Promise<void>;
13
+ state: TActionState) => Promise<void> | void;
14
14
  export type ScheduledHandler<TActionState extends IActionState> = (
15
15
  /** Context of action executed in chat. */
16
16
  ctx: ChatContext<TActionState>,
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../types/handlers.ts"],"names":[],"mappings":"AAAA,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,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG;AAC7B,0EAA0E;AAC1E,GAAG,EAAE,kBAAkB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,YAAY,IAAI;AAC5D,oEAAoE;AACpE,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC;AACjC,yCAAyC;AACzC,KAAK,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,gBAAgB,CAAC,YAAY,SAAS,YAAY,IAAI;AAC9D,0CAA0C;AAC1C,GAAG,EAAE,WAAW,CAAC,YAAY,CAAC;AAC9B,yIAAyI;AACzI,SAAS,EAAE,mBAAmB;AAC9B,yCAAyC;AACzC,KAAK,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../types/handlers.ts"],"names":[],"mappings":"AAAA,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,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG;AAC7B,0EAA0E;AAC1E,GAAG,EAAE,kBAAkB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,YAAY,IAAI;AAC5D,oEAAoE;AACpE,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC;AACjC,yCAAyC;AACzC,KAAK,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,MAAM,gBAAgB,CAAC,YAAY,SAAS,YAAY,IAAI;AAC9D,0CAA0C;AAC1C,GAAG,EAAE,WAAW,CAAC,YAAY,CAAC;AAC9B,yIAAyI;AACzI,SAAS,EAAE,mBAAmB;AAC9B,yCAAyC;AACzC,KAAK,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -2,12 +2,12 @@ import { TraceId } from './trace';
2
2
  export interface IScopedLogger {
3
3
  logObjectWithTraceId(data: any): void;
4
4
  logWithTraceId(text: string): void;
5
- errorWithTraceId<TData>(errorObj: unknown, extraData?: TData | undefined): void;
5
+ errorWithTraceId(errorObj: unknown, extraData?: unknown): void;
6
6
  }
7
7
  export interface ILogger {
8
8
  createScope(botName: string, traceId: TraceId, chatName: string): IScopedLogger;
9
9
  logObjectWithTraceId(botName: string, traceId: TraceId, chatName: string, data: any): void;
10
10
  logWithTraceId(botName: string, traceId: TraceId, chatName: string, text: string): void;
11
- errorWithTraceId<TData>(botName: string, traceId: TraceId, chatName: string, errorObj: unknown, extraData?: TData | undefined): void;
11
+ errorWithTraceId(botName: string, traceId: TraceId, chatName: string, errorObj: unknown, extraData?: unknown): void;
12
12
  }
13
13
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../types/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,aAAa;IAC1B,oBAAoB,CAEhB,IAAI,EAAE,GAAG,GACV,IAAI,CAAC;IAER,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,gBAAgB,CAAC,KAAK,EAClB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,KAAK,GAAG,SAAS,GAC9B,IAAI,CAAC;CACX;AAED,MAAM,WAAW,OAAO;IACpB,WAAW,CACP,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACjB,aAAa,CAAC;IAEjB,oBAAoB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAEhB,IAAI,EAAE,GAAG,GACV,IAAI,CAAC;IAER,cAAc,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACb,IAAI,CAAC;IAER,gBAAgB,CAAC,KAAK,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,KAAK,GAAG,SAAS,GAC9B,IAAI,CAAC;CACX"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../types/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,WAAW,aAAa;IAC1B,oBAAoB,CAEhB,IAAI,EAAE,GAAG,GACV,IAAI,CAAC;IAER,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,OAAO;IACpB,WAAW,CACP,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACjB,aAAa,CAAC;IAEjB,oBAAoB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAEhB,IAAI,EAAE,GAAG,GACV,IAAI,CAAC;IAER,cAAc,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACb,IAAI,CAAC;IAER,gBAAgB,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,OAAO,GACpB,IAAI,CAAC;CACX"}