@dementevdev/maxbot-ts 1.0.0

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 (429) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1176 -0
  4. package/dist/cjs/api/BotsApi.d.ts +17 -0
  5. package/dist/cjs/api/BotsApi.d.ts.map +1 -0
  6. package/dist/cjs/api/BotsApi.js +22 -0
  7. package/dist/cjs/api/ChatsApi.d.ts +87 -0
  8. package/dist/cjs/api/ChatsApi.d.ts.map +1 -0
  9. package/dist/cjs/api/ChatsApi.js +144 -0
  10. package/dist/cjs/api/MessagesApi.d.ts +41 -0
  11. package/dist/cjs/api/MessagesApi.d.ts.map +1 -0
  12. package/dist/cjs/api/MessagesApi.js +66 -0
  13. package/dist/cjs/api/SubscriptionsApi.d.ts +45 -0
  14. package/dist/cjs/api/SubscriptionsApi.d.ts.map +1 -0
  15. package/dist/cjs/api/SubscriptionsApi.js +69 -0
  16. package/dist/cjs/api/UploadsApi.d.ts +45 -0
  17. package/dist/cjs/api/UploadsApi.d.ts.map +1 -0
  18. package/dist/cjs/api/UploadsApi.js +113 -0
  19. package/dist/cjs/api/index.d.ts +7 -0
  20. package/dist/cjs/api/index.d.ts.map +1 -0
  21. package/dist/cjs/api/index.js +14 -0
  22. package/dist/cjs/api/interfaces.d.ts +108 -0
  23. package/dist/cjs/api/interfaces.d.ts.map +1 -0
  24. package/dist/cjs/api/interfaces.js +3 -0
  25. package/dist/cjs/bot/Bot.d.ts +380 -0
  26. package/dist/cjs/bot/Bot.d.ts.map +1 -0
  27. package/dist/cjs/bot/Bot.js +624 -0
  28. package/dist/cjs/bot/Composer.d.ts +131 -0
  29. package/dist/cjs/bot/Composer.d.ts.map +1 -0
  30. package/dist/cjs/bot/Composer.js +218 -0
  31. package/dist/cjs/bot/context/BotStartedContext.d.ts +83 -0
  32. package/dist/cjs/bot/context/BotStartedContext.d.ts.map +1 -0
  33. package/dist/cjs/bot/context/BotStartedContext.js +113 -0
  34. package/dist/cjs/bot/context/CallbackContext.d.ts +107 -0
  35. package/dist/cjs/bot/context/CallbackContext.d.ts.map +1 -0
  36. package/dist/cjs/bot/context/CallbackContext.js +158 -0
  37. package/dist/cjs/bot/context/ChatContext.d.ts +35 -0
  38. package/dist/cjs/bot/context/ChatContext.d.ts.map +1 -0
  39. package/dist/cjs/bot/context/ChatContext.js +52 -0
  40. package/dist/cjs/bot/context/MessageContext.d.ts +149 -0
  41. package/dist/cjs/bot/context/MessageContext.d.ts.map +1 -0
  42. package/dist/cjs/bot/context/MessageContext.js +228 -0
  43. package/dist/cjs/bot/context/guards.d.ts +69 -0
  44. package/dist/cjs/bot/context/guards.d.ts.map +1 -0
  45. package/dist/cjs/bot/context/guards.js +85 -0
  46. package/dist/cjs/bot/context/index.d.ts +6 -0
  47. package/dist/cjs/bot/context/index.d.ts.map +1 -0
  48. package/dist/cjs/bot/context/index.js +18 -0
  49. package/dist/cjs/bot/dispatch.d.ts +51 -0
  50. package/dist/cjs/bot/dispatch.d.ts.map +1 -0
  51. package/dist/cjs/bot/dispatch.js +201 -0
  52. package/dist/cjs/bot/index.d.ts +10 -0
  53. package/dist/cjs/bot/index.d.ts.map +1 -0
  54. package/dist/cjs/bot/index.js +24 -0
  55. package/dist/cjs/bot/lifecycle.d.ts +85 -0
  56. package/dist/cjs/bot/lifecycle.d.ts.map +1 -0
  57. package/dist/cjs/bot/lifecycle.js +167 -0
  58. package/dist/cjs/bot/metrics.d.ts +18 -0
  59. package/dist/cjs/bot/metrics.d.ts.map +1 -0
  60. package/dist/cjs/bot/metrics.js +3 -0
  61. package/dist/cjs/bot/routing.d.ts +131 -0
  62. package/dist/cjs/bot/routing.d.ts.map +1 -0
  63. package/dist/cjs/bot/routing.js +198 -0
  64. package/dist/cjs/bot/triggers.d.ts +61 -0
  65. package/dist/cjs/bot/triggers.d.ts.map +1 -0
  66. package/dist/cjs/bot/triggers.js +84 -0
  67. package/dist/cjs/core/errors/MaxError.d.ts +11 -0
  68. package/dist/cjs/core/errors/MaxError.d.ts.map +1 -0
  69. package/dist/cjs/core/errors/MaxError.js +19 -0
  70. package/dist/cjs/core/errors/errors.d.ts +59 -0
  71. package/dist/cjs/core/errors/errors.d.ts.map +1 -0
  72. package/dist/cjs/core/errors/errors.js +84 -0
  73. package/dist/cjs/core/errors/index.d.ts +3 -0
  74. package/dist/cjs/core/errors/index.d.ts.map +1 -0
  75. package/dist/cjs/core/errors/index.js +13 -0
  76. package/dist/cjs/core/http/HttpClient.d.ts +28 -0
  77. package/dist/cjs/core/http/HttpClient.d.ts.map +1 -0
  78. package/dist/cjs/core/http/HttpClient.js +148 -0
  79. package/dist/cjs/core/http/index.d.ts +3 -0
  80. package/dist/cjs/core/http/index.d.ts.map +1 -0
  81. package/dist/cjs/core/http/index.js +6 -0
  82. package/dist/cjs/core/http/interfaces.d.ts +42 -0
  83. package/dist/cjs/core/http/interfaces.d.ts.map +1 -0
  84. package/dist/cjs/core/http/interfaces.js +3 -0
  85. package/dist/cjs/core/rate-limiter/RateLimiter.d.ts +46 -0
  86. package/dist/cjs/core/rate-limiter/RateLimiter.d.ts.map +1 -0
  87. package/dist/cjs/core/rate-limiter/RateLimiter.js +110 -0
  88. package/dist/cjs/core/rate-limiter/index.d.ts +3 -0
  89. package/dist/cjs/core/rate-limiter/index.d.ts.map +1 -0
  90. package/dist/cjs/core/rate-limiter/index.js +6 -0
  91. package/dist/cjs/filters/index.d.ts +2 -0
  92. package/dist/cjs/filters/index.d.ts.map +1 -0
  93. package/dist/cjs/filters/index.js +10 -0
  94. package/dist/cjs/filters/predicates.d.ts +85 -0
  95. package/dist/cjs/filters/predicates.d.ts.map +1 -0
  96. package/dist/cjs/filters/predicates.js +111 -0
  97. package/dist/cjs/index.d.ts +11 -0
  98. package/dist/cjs/index.d.ts.map +1 -0
  99. package/dist/cjs/index.js +27 -0
  100. package/dist/cjs/middleware/compose.d.ts +28 -0
  101. package/dist/cjs/middleware/compose.d.ts.map +1 -0
  102. package/dist/cjs/middleware/compose.js +89 -0
  103. package/dist/cjs/middleware/index.d.ts +3 -0
  104. package/dist/cjs/middleware/index.d.ts.map +1 -0
  105. package/dist/cjs/middleware/index.js +7 -0
  106. package/dist/cjs/middleware/types.d.ts +17 -0
  107. package/dist/cjs/middleware/types.d.ts.map +1 -0
  108. package/dist/cjs/middleware/types.js +3 -0
  109. package/dist/cjs/package.json +3 -0
  110. package/dist/cjs/transport/LongPollingTransport.d.ts +33 -0
  111. package/dist/cjs/transport/LongPollingTransport.d.ts.map +1 -0
  112. package/dist/cjs/transport/LongPollingTransport.js +153 -0
  113. package/dist/cjs/transport/WebhookTransport.d.ts +40 -0
  114. package/dist/cjs/transport/WebhookTransport.d.ts.map +1 -0
  115. package/dist/cjs/transport/WebhookTransport.js +229 -0
  116. package/dist/cjs/transport/index.d.ts +4 -0
  117. package/dist/cjs/transport/index.d.ts.map +1 -0
  118. package/dist/cjs/transport/index.js +8 -0
  119. package/dist/cjs/transport/interfaces.d.ts +74 -0
  120. package/dist/cjs/transport/interfaces.d.ts.map +1 -0
  121. package/dist/cjs/transport/interfaces.js +3 -0
  122. package/dist/cjs/types/bot.d.ts +19 -0
  123. package/dist/cjs/types/bot.d.ts.map +1 -0
  124. package/dist/cjs/types/bot.js +3 -0
  125. package/dist/cjs/types/chat.d.ts +94 -0
  126. package/dist/cjs/types/chat.d.ts.map +1 -0
  127. package/dist/cjs/types/chat.js +3 -0
  128. package/dist/cjs/types/common.d.ts +38 -0
  129. package/dist/cjs/types/common.d.ts.map +1 -0
  130. package/dist/cjs/types/common.js +6 -0
  131. package/dist/cjs/types/index.d.ts +9 -0
  132. package/dist/cjs/types/index.d.ts.map +1 -0
  133. package/dist/cjs/types/index.js +26 -0
  134. package/dist/cjs/types/keyboard.d.ts +97 -0
  135. package/dist/cjs/types/keyboard.d.ts.map +1 -0
  136. package/dist/cjs/types/keyboard.js +3 -0
  137. package/dist/cjs/types/message.d.ts +162 -0
  138. package/dist/cjs/types/message.d.ts.map +1 -0
  139. package/dist/cjs/types/message.js +3 -0
  140. package/dist/cjs/types/subscription.d.ts +23 -0
  141. package/dist/cjs/types/subscription.d.ts.map +1 -0
  142. package/dist/cjs/types/subscription.js +3 -0
  143. package/dist/cjs/types/update.d.ts +99 -0
  144. package/dist/cjs/types/update.d.ts.map +1 -0
  145. package/dist/cjs/types/update.js +3 -0
  146. package/dist/cjs/types/upload.d.ts +29 -0
  147. package/dist/cjs/types/upload.d.ts.map +1 -0
  148. package/dist/cjs/types/upload.js +3 -0
  149. package/dist/cjs/utils/Histogram.d.ts +93 -0
  150. package/dist/cjs/utils/Histogram.d.ts.map +1 -0
  151. package/dist/cjs/utils/Histogram.js +103 -0
  152. package/dist/cjs/utils/assertNever.d.ts +19 -0
  153. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  154. package/dist/cjs/utils/assertNever.js +24 -0
  155. package/dist/cjs/utils/format.d.ts +22 -0
  156. package/dist/cjs/utils/format.d.ts.map +1 -0
  157. package/dist/cjs/utils/format.js +25 -0
  158. package/dist/cjs/utils/index.d.ts +6 -0
  159. package/dist/cjs/utils/index.d.ts.map +1 -0
  160. package/dist/cjs/utils/index.js +14 -0
  161. package/dist/cjs/utils/keyboard.d.ts +70 -0
  162. package/dist/cjs/utils/keyboard.d.ts.map +1 -0
  163. package/dist/cjs/utils/keyboard.js +166 -0
  164. package/dist/esm/api/BotsApi.d.ts +17 -0
  165. package/dist/esm/api/BotsApi.d.ts.map +1 -0
  166. package/dist/esm/api/BotsApi.js +18 -0
  167. package/dist/esm/api/ChatsApi.d.ts +87 -0
  168. package/dist/esm/api/ChatsApi.d.ts.map +1 -0
  169. package/dist/esm/api/ChatsApi.js +140 -0
  170. package/dist/esm/api/MessagesApi.d.ts +41 -0
  171. package/dist/esm/api/MessagesApi.d.ts.map +1 -0
  172. package/dist/esm/api/MessagesApi.js +62 -0
  173. package/dist/esm/api/SubscriptionsApi.d.ts +45 -0
  174. package/dist/esm/api/SubscriptionsApi.d.ts.map +1 -0
  175. package/dist/esm/api/SubscriptionsApi.js +65 -0
  176. package/dist/esm/api/UploadsApi.d.ts +45 -0
  177. package/dist/esm/api/UploadsApi.d.ts.map +1 -0
  178. package/dist/esm/api/UploadsApi.js +109 -0
  179. package/dist/esm/api/index.d.ts +7 -0
  180. package/dist/esm/api/index.d.ts.map +1 -0
  181. package/dist/esm/api/index.js +6 -0
  182. package/dist/esm/api/interfaces.d.ts +108 -0
  183. package/dist/esm/api/interfaces.d.ts.map +1 -0
  184. package/dist/esm/api/interfaces.js +2 -0
  185. package/dist/esm/bot/Bot.d.ts +380 -0
  186. package/dist/esm/bot/Bot.d.ts.map +1 -0
  187. package/dist/esm/bot/Bot.js +620 -0
  188. package/dist/esm/bot/Composer.d.ts +131 -0
  189. package/dist/esm/bot/Composer.d.ts.map +1 -0
  190. package/dist/esm/bot/Composer.js +214 -0
  191. package/dist/esm/bot/context/BotStartedContext.d.ts +83 -0
  192. package/dist/esm/bot/context/BotStartedContext.d.ts.map +1 -0
  193. package/dist/esm/bot/context/BotStartedContext.js +109 -0
  194. package/dist/esm/bot/context/CallbackContext.d.ts +107 -0
  195. package/dist/esm/bot/context/CallbackContext.d.ts.map +1 -0
  196. package/dist/esm/bot/context/CallbackContext.js +154 -0
  197. package/dist/esm/bot/context/ChatContext.d.ts +35 -0
  198. package/dist/esm/bot/context/ChatContext.d.ts.map +1 -0
  199. package/dist/esm/bot/context/ChatContext.js +48 -0
  200. package/dist/esm/bot/context/MessageContext.d.ts +149 -0
  201. package/dist/esm/bot/context/MessageContext.d.ts.map +1 -0
  202. package/dist/esm/bot/context/MessageContext.js +224 -0
  203. package/dist/esm/bot/context/guards.d.ts +69 -0
  204. package/dist/esm/bot/context/guards.d.ts.map +1 -0
  205. package/dist/esm/bot/context/guards.js +78 -0
  206. package/dist/esm/bot/context/index.d.ts +6 -0
  207. package/dist/esm/bot/context/index.d.ts.map +1 -0
  208. package/dist/esm/bot/context/index.js +6 -0
  209. package/dist/esm/bot/dispatch.d.ts +51 -0
  210. package/dist/esm/bot/dispatch.d.ts.map +1 -0
  211. package/dist/esm/bot/dispatch.js +197 -0
  212. package/dist/esm/bot/index.d.ts +10 -0
  213. package/dist/esm/bot/index.d.ts.map +1 -0
  214. package/dist/esm/bot/index.js +9 -0
  215. package/dist/esm/bot/lifecycle.d.ts +85 -0
  216. package/dist/esm/bot/lifecycle.d.ts.map +1 -0
  217. package/dist/esm/bot/lifecycle.js +163 -0
  218. package/dist/esm/bot/metrics.d.ts +18 -0
  219. package/dist/esm/bot/metrics.d.ts.map +1 -0
  220. package/dist/esm/bot/metrics.js +2 -0
  221. package/dist/esm/bot/routing.d.ts +131 -0
  222. package/dist/esm/bot/routing.d.ts.map +1 -0
  223. package/dist/esm/bot/routing.js +194 -0
  224. package/dist/esm/bot/triggers.d.ts +61 -0
  225. package/dist/esm/bot/triggers.d.ts.map +1 -0
  226. package/dist/esm/bot/triggers.js +80 -0
  227. package/dist/esm/core/errors/MaxError.d.ts +11 -0
  228. package/dist/esm/core/errors/MaxError.d.ts.map +1 -0
  229. package/dist/esm/core/errors/MaxError.js +15 -0
  230. package/dist/esm/core/errors/errors.d.ts +59 -0
  231. package/dist/esm/core/errors/errors.d.ts.map +1 -0
  232. package/dist/esm/core/errors/errors.js +75 -0
  233. package/dist/esm/core/errors/index.d.ts +3 -0
  234. package/dist/esm/core/errors/index.d.ts.map +1 -0
  235. package/dist/esm/core/errors/index.js +3 -0
  236. package/dist/esm/core/http/HttpClient.d.ts +28 -0
  237. package/dist/esm/core/http/HttpClient.d.ts.map +1 -0
  238. package/dist/esm/core/http/HttpClient.js +144 -0
  239. package/dist/esm/core/http/index.d.ts +3 -0
  240. package/dist/esm/core/http/index.d.ts.map +1 -0
  241. package/dist/esm/core/http/index.js +2 -0
  242. package/dist/esm/core/http/interfaces.d.ts +42 -0
  243. package/dist/esm/core/http/interfaces.d.ts.map +1 -0
  244. package/dist/esm/core/http/interfaces.js +2 -0
  245. package/dist/esm/core/rate-limiter/RateLimiter.d.ts +46 -0
  246. package/dist/esm/core/rate-limiter/RateLimiter.d.ts.map +1 -0
  247. package/dist/esm/core/rate-limiter/RateLimiter.js +106 -0
  248. package/dist/esm/core/rate-limiter/index.d.ts +3 -0
  249. package/dist/esm/core/rate-limiter/index.d.ts.map +1 -0
  250. package/dist/esm/core/rate-limiter/index.js +2 -0
  251. package/dist/esm/filters/index.d.ts +2 -0
  252. package/dist/esm/filters/index.d.ts.map +1 -0
  253. package/dist/esm/filters/index.js +2 -0
  254. package/dist/esm/filters/predicates.d.ts +85 -0
  255. package/dist/esm/filters/predicates.d.ts.map +1 -0
  256. package/dist/esm/filters/predicates.js +104 -0
  257. package/dist/esm/index.d.ts +11 -0
  258. package/dist/esm/index.d.ts.map +1 -0
  259. package/dist/esm/index.js +11 -0
  260. package/dist/esm/middleware/compose.d.ts +28 -0
  261. package/dist/esm/middleware/compose.d.ts.map +1 -0
  262. package/dist/esm/middleware/compose.js +85 -0
  263. package/dist/esm/middleware/index.d.ts +3 -0
  264. package/dist/esm/middleware/index.d.ts.map +1 -0
  265. package/dist/esm/middleware/index.js +2 -0
  266. package/dist/esm/middleware/types.d.ts +17 -0
  267. package/dist/esm/middleware/types.d.ts.map +1 -0
  268. package/dist/esm/middleware/types.js +2 -0
  269. package/dist/esm/transport/LongPollingTransport.d.ts +33 -0
  270. package/dist/esm/transport/LongPollingTransport.d.ts.map +1 -0
  271. package/dist/esm/transport/LongPollingTransport.js +149 -0
  272. package/dist/esm/transport/WebhookTransport.d.ts +40 -0
  273. package/dist/esm/transport/WebhookTransport.d.ts.map +1 -0
  274. package/dist/esm/transport/WebhookTransport.js +225 -0
  275. package/dist/esm/transport/index.d.ts +4 -0
  276. package/dist/esm/transport/index.d.ts.map +1 -0
  277. package/dist/esm/transport/index.js +3 -0
  278. package/dist/esm/transport/interfaces.d.ts +74 -0
  279. package/dist/esm/transport/interfaces.d.ts.map +1 -0
  280. package/dist/esm/transport/interfaces.js +2 -0
  281. package/dist/esm/types/bot.d.ts +19 -0
  282. package/dist/esm/types/bot.d.ts.map +1 -0
  283. package/dist/esm/types/bot.js +2 -0
  284. package/dist/esm/types/chat.d.ts +94 -0
  285. package/dist/esm/types/chat.d.ts.map +1 -0
  286. package/dist/esm/types/chat.js +2 -0
  287. package/dist/esm/types/common.d.ts +38 -0
  288. package/dist/esm/types/common.d.ts.map +1 -0
  289. package/dist/esm/types/common.js +5 -0
  290. package/dist/esm/types/index.d.ts +9 -0
  291. package/dist/esm/types/index.d.ts.map +1 -0
  292. package/dist/esm/types/index.js +10 -0
  293. package/dist/esm/types/keyboard.d.ts +97 -0
  294. package/dist/esm/types/keyboard.d.ts.map +1 -0
  295. package/dist/esm/types/keyboard.js +2 -0
  296. package/dist/esm/types/message.d.ts +162 -0
  297. package/dist/esm/types/message.d.ts.map +1 -0
  298. package/dist/esm/types/message.js +2 -0
  299. package/dist/esm/types/subscription.d.ts +23 -0
  300. package/dist/esm/types/subscription.d.ts.map +1 -0
  301. package/dist/esm/types/subscription.js +2 -0
  302. package/dist/esm/types/update.d.ts +99 -0
  303. package/dist/esm/types/update.d.ts.map +1 -0
  304. package/dist/esm/types/update.js +2 -0
  305. package/dist/esm/types/upload.d.ts +29 -0
  306. package/dist/esm/types/upload.d.ts.map +1 -0
  307. package/dist/esm/types/upload.js +2 -0
  308. package/dist/esm/utils/Histogram.d.ts +93 -0
  309. package/dist/esm/utils/Histogram.d.ts.map +1 -0
  310. package/dist/esm/utils/Histogram.js +99 -0
  311. package/dist/esm/utils/assertNever.d.ts +19 -0
  312. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  313. package/dist/esm/utils/assertNever.js +21 -0
  314. package/dist/esm/utils/format.d.ts +22 -0
  315. package/dist/esm/utils/format.d.ts.map +1 -0
  316. package/dist/esm/utils/format.js +22 -0
  317. package/dist/esm/utils/index.d.ts +6 -0
  318. package/dist/esm/utils/index.d.ts.map +1 -0
  319. package/dist/esm/utils/index.js +5 -0
  320. package/dist/esm/utils/keyboard.d.ts +70 -0
  321. package/dist/esm/utils/keyboard.d.ts.map +1 -0
  322. package/dist/esm/utils/keyboard.js +162 -0
  323. package/dist/types/api/BotsApi.d.ts +17 -0
  324. package/dist/types/api/BotsApi.d.ts.map +1 -0
  325. package/dist/types/api/ChatsApi.d.ts +87 -0
  326. package/dist/types/api/ChatsApi.d.ts.map +1 -0
  327. package/dist/types/api/MessagesApi.d.ts +41 -0
  328. package/dist/types/api/MessagesApi.d.ts.map +1 -0
  329. package/dist/types/api/SubscriptionsApi.d.ts +45 -0
  330. package/dist/types/api/SubscriptionsApi.d.ts.map +1 -0
  331. package/dist/types/api/UploadsApi.d.ts +45 -0
  332. package/dist/types/api/UploadsApi.d.ts.map +1 -0
  333. package/dist/types/api/index.d.ts +7 -0
  334. package/dist/types/api/index.d.ts.map +1 -0
  335. package/dist/types/api/interfaces.d.ts +108 -0
  336. package/dist/types/api/interfaces.d.ts.map +1 -0
  337. package/dist/types/bot/Bot.d.ts +380 -0
  338. package/dist/types/bot/Bot.d.ts.map +1 -0
  339. package/dist/types/bot/Composer.d.ts +131 -0
  340. package/dist/types/bot/Composer.d.ts.map +1 -0
  341. package/dist/types/bot/context/BotStartedContext.d.ts +83 -0
  342. package/dist/types/bot/context/BotStartedContext.d.ts.map +1 -0
  343. package/dist/types/bot/context/CallbackContext.d.ts +107 -0
  344. package/dist/types/bot/context/CallbackContext.d.ts.map +1 -0
  345. package/dist/types/bot/context/ChatContext.d.ts +35 -0
  346. package/dist/types/bot/context/ChatContext.d.ts.map +1 -0
  347. package/dist/types/bot/context/MessageContext.d.ts +149 -0
  348. package/dist/types/bot/context/MessageContext.d.ts.map +1 -0
  349. package/dist/types/bot/context/guards.d.ts +69 -0
  350. package/dist/types/bot/context/guards.d.ts.map +1 -0
  351. package/dist/types/bot/context/index.d.ts +6 -0
  352. package/dist/types/bot/context/index.d.ts.map +1 -0
  353. package/dist/types/bot/dispatch.d.ts +51 -0
  354. package/dist/types/bot/dispatch.d.ts.map +1 -0
  355. package/dist/types/bot/index.d.ts +10 -0
  356. package/dist/types/bot/index.d.ts.map +1 -0
  357. package/dist/types/bot/lifecycle.d.ts +85 -0
  358. package/dist/types/bot/lifecycle.d.ts.map +1 -0
  359. package/dist/types/bot/metrics.d.ts +18 -0
  360. package/dist/types/bot/metrics.d.ts.map +1 -0
  361. package/dist/types/bot/routing.d.ts +131 -0
  362. package/dist/types/bot/routing.d.ts.map +1 -0
  363. package/dist/types/bot/triggers.d.ts +61 -0
  364. package/dist/types/bot/triggers.d.ts.map +1 -0
  365. package/dist/types/core/errors/MaxError.d.ts +11 -0
  366. package/dist/types/core/errors/MaxError.d.ts.map +1 -0
  367. package/dist/types/core/errors/errors.d.ts +59 -0
  368. package/dist/types/core/errors/errors.d.ts.map +1 -0
  369. package/dist/types/core/errors/index.d.ts +3 -0
  370. package/dist/types/core/errors/index.d.ts.map +1 -0
  371. package/dist/types/core/http/HttpClient.d.ts +28 -0
  372. package/dist/types/core/http/HttpClient.d.ts.map +1 -0
  373. package/dist/types/core/http/index.d.ts +3 -0
  374. package/dist/types/core/http/index.d.ts.map +1 -0
  375. package/dist/types/core/http/interfaces.d.ts +42 -0
  376. package/dist/types/core/http/interfaces.d.ts.map +1 -0
  377. package/dist/types/core/rate-limiter/RateLimiter.d.ts +46 -0
  378. package/dist/types/core/rate-limiter/RateLimiter.d.ts.map +1 -0
  379. package/dist/types/core/rate-limiter/index.d.ts +3 -0
  380. package/dist/types/core/rate-limiter/index.d.ts.map +1 -0
  381. package/dist/types/filters/index.d.ts +2 -0
  382. package/dist/types/filters/index.d.ts.map +1 -0
  383. package/dist/types/filters/predicates.d.ts +85 -0
  384. package/dist/types/filters/predicates.d.ts.map +1 -0
  385. package/dist/types/index.d.ts +11 -0
  386. package/dist/types/index.d.ts.map +1 -0
  387. package/dist/types/middleware/compose.d.ts +28 -0
  388. package/dist/types/middleware/compose.d.ts.map +1 -0
  389. package/dist/types/middleware/index.d.ts +3 -0
  390. package/dist/types/middleware/index.d.ts.map +1 -0
  391. package/dist/types/middleware/types.d.ts +17 -0
  392. package/dist/types/middleware/types.d.ts.map +1 -0
  393. package/dist/types/transport/LongPollingTransport.d.ts +33 -0
  394. package/dist/types/transport/LongPollingTransport.d.ts.map +1 -0
  395. package/dist/types/transport/WebhookTransport.d.ts +40 -0
  396. package/dist/types/transport/WebhookTransport.d.ts.map +1 -0
  397. package/dist/types/transport/index.d.ts +4 -0
  398. package/dist/types/transport/index.d.ts.map +1 -0
  399. package/dist/types/transport/interfaces.d.ts +74 -0
  400. package/dist/types/transport/interfaces.d.ts.map +1 -0
  401. package/dist/types/types/bot.d.ts +19 -0
  402. package/dist/types/types/bot.d.ts.map +1 -0
  403. package/dist/types/types/chat.d.ts +94 -0
  404. package/dist/types/types/chat.d.ts.map +1 -0
  405. package/dist/types/types/common.d.ts +38 -0
  406. package/dist/types/types/common.d.ts.map +1 -0
  407. package/dist/types/types/index.d.ts +9 -0
  408. package/dist/types/types/index.d.ts.map +1 -0
  409. package/dist/types/types/keyboard.d.ts +97 -0
  410. package/dist/types/types/keyboard.d.ts.map +1 -0
  411. package/dist/types/types/message.d.ts +162 -0
  412. package/dist/types/types/message.d.ts.map +1 -0
  413. package/dist/types/types/subscription.d.ts +23 -0
  414. package/dist/types/types/subscription.d.ts.map +1 -0
  415. package/dist/types/types/update.d.ts +99 -0
  416. package/dist/types/types/update.d.ts.map +1 -0
  417. package/dist/types/types/upload.d.ts +29 -0
  418. package/dist/types/types/upload.d.ts.map +1 -0
  419. package/dist/types/utils/Histogram.d.ts +93 -0
  420. package/dist/types/utils/Histogram.d.ts.map +1 -0
  421. package/dist/types/utils/assertNever.d.ts +19 -0
  422. package/dist/types/utils/assertNever.d.ts.map +1 -0
  423. package/dist/types/utils/format.d.ts +22 -0
  424. package/dist/types/utils/format.d.ts.map +1 -0
  425. package/dist/types/utils/index.d.ts +6 -0
  426. package/dist/types/utils/index.d.ts.map +1 -0
  427. package/dist/types/utils/keyboard.d.ts +70 -0
  428. package/dist/types/utils/keyboard.d.ts.map +1 -0
  429. package/package.json +84 -0
@@ -0,0 +1,69 @@
1
+ import { BotStartedContext } from "./BotStartedContext.js";
2
+ import { CallbackContext } from "./CallbackContext.js";
3
+ import { ChatContext } from "./ChatContext.js";
4
+ import { MessageContext } from "./MessageContext.js";
5
+ import type { Context } from "../Bot.js";
6
+ /**
7
+ * Type guard: проверяет, что контекст является `MessageContext`.
8
+ *
9
+ * Применяется в middleware для сужения типа:
10
+ * @example
11
+ * bot.use(async (ctx, next) => {
12
+ * if (isMessageContext(ctx)) {
13
+ * console.log(ctx.text); // string | undefined — TS знает тип
14
+ * }
15
+ * await next();
16
+ * });
17
+ */
18
+ export declare function isMessageContext(ctx: Context): ctx is MessageContext;
19
+ /**
20
+ * Type guard: проверяет, что контекст является `CallbackContext`.
21
+ *
22
+ * @example
23
+ * bot.use(async (ctx, next) => {
24
+ * if (isCallbackContext(ctx)) {
25
+ * console.log(ctx.data); // payload кнопки
26
+ * }
27
+ * await next();
28
+ * });
29
+ */
30
+ export declare function isCallbackContext(ctx: Context): ctx is CallbackContext;
31
+ /**
32
+ * Type guard: проверяет, что контекст является `ChatContext`.
33
+ *
34
+ * @example
35
+ * bot.use(async (ctx, next) => {
36
+ * if (isChatContext(ctx)) {
37
+ * console.log(ctx.chatId); // number — всегда есть в ChatContext
38
+ * }
39
+ * await next();
40
+ * });
41
+ */
42
+ export declare function isChatContext(ctx: Context): ctx is ChatContext;
43
+ /**
44
+ * Type guard: проверяет, что контекст является `BotStartedContext`.
45
+ *
46
+ * Используй для обработки нажатия Start или перехода по deep link:
47
+ * @example
48
+ * bot.use(async (ctx, next) => {
49
+ * if (isBotStartedContext(ctx)) {
50
+ * console.log(ctx.startPayload); // payload из deep link или null
51
+ * }
52
+ * await next();
53
+ * });
54
+ */
55
+ export declare function isBotStartedContext(ctx: Context): ctx is BotStartedContext;
56
+ /**
57
+ * Type guard: проверяет конкретный `update_type`.
58
+ *
59
+ * Используй когда нужно сузить тип внутри MessageContext или ChatContext:
60
+ * @example
61
+ * bot.use(async (ctx, next) => {
62
+ * if (isUpdateType(ctx, 'message_created')) {
63
+ * // ctx — MessageContext с update_type === 'message_created'
64
+ * }
65
+ * await next();
66
+ * });
67
+ */
68
+ export declare function isUpdateType<T extends Context>(ctx: Context, updateType: T["raw"]["update_type"]): ctx is T;
69
+ //# sourceMappingURL=guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../../src/bot/context/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CAEpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,eAAe,CAEtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAE9D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAE1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAC5C,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAClC,GAAG,IAAI,CAAC,CAEV"}
@@ -0,0 +1,78 @@
1
+ import { BotStartedContext } from "./BotStartedContext.js";
2
+ import { CallbackContext } from "./CallbackContext.js";
3
+ import { ChatContext } from "./ChatContext.js";
4
+ import { MessageContext } from "./MessageContext.js";
5
+ /**
6
+ * Type guard: проверяет, что контекст является `MessageContext`.
7
+ *
8
+ * Применяется в middleware для сужения типа:
9
+ * @example
10
+ * bot.use(async (ctx, next) => {
11
+ * if (isMessageContext(ctx)) {
12
+ * console.log(ctx.text); // string | undefined — TS знает тип
13
+ * }
14
+ * await next();
15
+ * });
16
+ */
17
+ export function isMessageContext(ctx) {
18
+ return ctx instanceof MessageContext;
19
+ }
20
+ /**
21
+ * Type guard: проверяет, что контекст является `CallbackContext`.
22
+ *
23
+ * @example
24
+ * bot.use(async (ctx, next) => {
25
+ * if (isCallbackContext(ctx)) {
26
+ * console.log(ctx.data); // payload кнопки
27
+ * }
28
+ * await next();
29
+ * });
30
+ */
31
+ export function isCallbackContext(ctx) {
32
+ return ctx instanceof CallbackContext;
33
+ }
34
+ /**
35
+ * Type guard: проверяет, что контекст является `ChatContext`.
36
+ *
37
+ * @example
38
+ * bot.use(async (ctx, next) => {
39
+ * if (isChatContext(ctx)) {
40
+ * console.log(ctx.chatId); // number — всегда есть в ChatContext
41
+ * }
42
+ * await next();
43
+ * });
44
+ */
45
+ export function isChatContext(ctx) {
46
+ return ctx instanceof ChatContext;
47
+ }
48
+ /**
49
+ * Type guard: проверяет, что контекст является `BotStartedContext`.
50
+ *
51
+ * Используй для обработки нажатия Start или перехода по deep link:
52
+ * @example
53
+ * bot.use(async (ctx, next) => {
54
+ * if (isBotStartedContext(ctx)) {
55
+ * console.log(ctx.startPayload); // payload из deep link или null
56
+ * }
57
+ * await next();
58
+ * });
59
+ */
60
+ export function isBotStartedContext(ctx) {
61
+ return ctx instanceof BotStartedContext;
62
+ }
63
+ /**
64
+ * Type guard: проверяет конкретный `update_type`.
65
+ *
66
+ * Используй когда нужно сузить тип внутри MessageContext или ChatContext:
67
+ * @example
68
+ * bot.use(async (ctx, next) => {
69
+ * if (isUpdateType(ctx, 'message_created')) {
70
+ * // ctx — MessageContext с update_type === 'message_created'
71
+ * }
72
+ * await next();
73
+ * });
74
+ */
75
+ export function isUpdateType(ctx, updateType) {
76
+ return ctx.raw.update_type === updateType;
77
+ }
78
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1,6 @@
1
+ export { MessageContext, type SendOptions, type ContextApi, } from "./MessageContext.js";
2
+ export { CallbackContext, type AnswerOptions } from "./CallbackContext.js";
3
+ export { ChatContext } from "./ChatContext.js";
4
+ export { BotStartedContext } from "./BotStartedContext.js";
5
+ export { isMessageContext, isCallbackContext, isChatContext, isBotStartedContext, isUpdateType, } from "./guards.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bot/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { MessageContext, } from "./MessageContext.js";
2
+ export { CallbackContext } from "./CallbackContext.js";
3
+ export { ChatContext } from "./ChatContext.js";
4
+ export { BotStartedContext } from "./BotStartedContext.js";
5
+ export { isMessageContext, isCallbackContext, isChatContext, isBotStartedContext, isUpdateType, } from "./guards.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,51 @@
1
+ import { type ContextApi } from "./context/MessageContext.js";
2
+ import type { Middleware } from "../middleware/types.js";
3
+ import type { Update } from "../types/update.js";
4
+ import type { BotMetrics } from "./metrics.js";
5
+ import type { Context, EventHandler } from "./Bot.js";
6
+ /**
7
+ * Слой диспетчеризации и семафора.
8
+ *
9
+ * Отвечает за:
10
+ * - Создание контекста из сырого обновления (`createContext`)
11
+ * - Запуск пайплайна middleware + handlers (`handleUpdate`, `runHandlersWithSemaphore`)
12
+ * - Backpressure (семафор: `acquireSemaphore` / `releaseSemaphore`)
13
+ * - Маршрутизацию ошибок (`handleError`)
14
+ *
15
+ * Не содержит бизнес-логики маршрутизации — она вынесена в {@link BotRouting}.
16
+ */
17
+ export declare abstract class BotDispatch<Ctx extends Context> {
18
+ protected readonly handlers: Map<string, EventHandler<Ctx>[]>;
19
+ protected readonly middlewares: Middleware<Ctx>[];
20
+ protected contextApi: ContextApi;
21
+ protected _contextFactory: (base: Context) => Ctx;
22
+ protected concurrency: number;
23
+ protected errorHandler: ((error: Error) => void) | null;
24
+ protected slowHandler: ((ms: number, updateType: string) => void) | null;
25
+ protected slowThresholdMs: number;
26
+ protected unknownUpdateHandler: ((raw: Record<string, unknown>) => void) | null;
27
+ protected metricsHandler: ((metrics: BotMetrics) => void) | null;
28
+ private activeCount;
29
+ private readonly waitQueue;
30
+ protected handleUpdate(update: Update): void;
31
+ private runHandlersWithSemaphore;
32
+ /**
33
+ * Захватить слот семафора.
34
+ * Если свободных слотов нет — ждём в очереди.
35
+ */
36
+ private acquireSemaphore;
37
+ /**
38
+ * Освободить слот семафора и разбудить следующего в очереди.
39
+ */
40
+ private releaseSemaphore;
41
+ protected handleError(error: Error): void;
42
+ /**
43
+ * Создаёт типизированный контекст из сырого обновления.
44
+ *
45
+ * Возвращает `null` если `update_type` неизвестен SDK **и** задан хук
46
+ * `onUnknownUpdate` — хук уже вызван, update нужно пропустить.
47
+ * Если хук не задан — бросает ошибку через `assertNever` → `errorHandler`.
48
+ */
49
+ private createContext;
50
+ }
51
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/bot/dispatch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,8BAAsB,WAAW,CAAC,GAAG,SAAS,OAAO;IAEnD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAa;IAC1E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAM;IAKvD,SAAS,CAAC,UAAU,EAAG,UAAU,CAAC;IAClC,SAAS,CAAC,eAAe,EAAG,CAAC,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC;IACnD,SAAS,CAAC,WAAW,EAAG,MAAM,CAAC;IAG/B,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC/D,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CACjE;IACP,SAAS,CAAC,eAAe,SAAK;IAC9B,SAAS,CAAC,oBAAoB,EAC1B,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,GACxC,IAAI,CAAQ;IAChB,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAGxE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAInD,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YA6B9B,wBAAwB;IAoEtC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAczC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAkCtB"}
@@ -0,0 +1,197 @@
1
+ import { CallbackContext } from "./context/CallbackContext.js";
2
+ import { ChatContext } from "./context/ChatContext.js";
3
+ import { BotStartedContext } from "./context/BotStartedContext.js";
4
+ import { MessageContext } from "./context/MessageContext.js";
5
+ import { assertNever } from "../utils/assertNever.js";
6
+ import { compose, composeWithTiming } from "../middleware/compose.js";
7
+ /**
8
+ * Слой диспетчеризации и семафора.
9
+ *
10
+ * Отвечает за:
11
+ * - Создание контекста из сырого обновления (`createContext`)
12
+ * - Запуск пайплайна middleware + handlers (`handleUpdate`, `runHandlersWithSemaphore`)
13
+ * - Backpressure (семафор: `acquireSemaphore` / `releaseSemaphore`)
14
+ * - Маршрутизацию ошибок (`handleError`)
15
+ *
16
+ * Не содержит бизнес-логики маршрутизации — она вынесена в {@link BotRouting}.
17
+ */
18
+ export class BotDispatch {
19
+ // ── Хранилища маршрутов и middleware ──────────────────────────────────────
20
+ handlers = new Map();
21
+ middlewares = [];
22
+ // ── Поля, инициализируемые в конструкторе Bot ─────────────────────────────
23
+ // Используем ! (definite assignment assertion): TypeScript знает что поля
24
+ // будут присвоены до первого use (в конструкторе Bot, который вызывает super()).
25
+ contextApi;
26
+ _contextFactory;
27
+ concurrency;
28
+ // ── Наблюдатели (configurable через lifecycle-методы или config) ───────────
29
+ errorHandler = null;
30
+ slowHandler = null;
31
+ slowThresholdMs = 0;
32
+ unknownUpdateHandler = null;
33
+ metricsHandler = null;
34
+ // ── Семафор ───────────────────────────────────────────────────────────────
35
+ activeCount = 0;
36
+ waitQueue = [];
37
+ // ── Точка входа для транспорта ────────────────────────────────────────────
38
+ handleUpdate(update) {
39
+ let ctx;
40
+ try {
41
+ const base = this.createContext(update);
42
+ // null — знак что update_type неизвестен и хук onUnknownUpdate уже вызван;
43
+ // пропускаем update без ошибки
44
+ if (base === null)
45
+ return;
46
+ ctx = this._contextFactory(base);
47
+ }
48
+ catch (error) {
49
+ this.handleError(error instanceof Error ? error : new Error(String(error)));
50
+ return;
51
+ }
52
+ const handlers = this.handlers.get(update.update_type) ?? [];
53
+ // Пропускаем только если нет ни middleware, ни handlers — тогда обрабатывать
54
+ // буквально нечего и мы не занимаем слот семафора впустую.
55
+ // Если есть хотя бы middleware — запускаем пайплайн: глобальные middleware
56
+ // (логирование, трейсинг) должны видеть ВСЕ update типы.
57
+ if (this.middlewares.length === 0 && handlers.length === 0)
58
+ return;
59
+ // Запускаем обработку через семафор — гарантируем не более concurrency
60
+ // параллельных задач. Каждое обновление обрабатывается как единица:
61
+ // все его хендлеры выполняются параллельно внутри одного слота семафора.
62
+ void this.runHandlersWithSemaphore(ctx, handlers, update.update_type);
63
+ }
64
+ async runHandlersWithSemaphore(ctx, handlers, updateType) {
65
+ const needMetrics = this.metricsHandler !== null;
66
+ const needSlow = this.slowHandler !== null;
67
+ // Размер очереди ДО захвата слота — показывает реальное давление
68
+ const queueSizeAtStart = this.waitQueue.length;
69
+ await this.acquireSemaphore();
70
+ const start = needMetrics || needSlow ? Date.now() : 0;
71
+ let handlerErrors = 0;
72
+ const middlewareTimes = [];
73
+ try {
74
+ // Финальный обработчик — запускает все зарегистрированные handlers параллельно
75
+ const finalHandler = async (c) => {
76
+ await Promise.all(handlers.map(async (handler) => {
77
+ try {
78
+ await handler(c);
79
+ }
80
+ catch (error) {
81
+ handlerErrors++;
82
+ this.handleError(error instanceof Error ? error : new Error(String(error)));
83
+ }
84
+ }));
85
+ };
86
+ // Весь пайплайн [middlewares... → handlers] выполняется внутри одного
87
+ // семафорного слота — backpressure применяется ко всему цепочке целиком.
88
+ const pipeline = needMetrics
89
+ ? composeWithTiming(this.middlewares, finalHandler, middlewareTimes)
90
+ : compose(this.middlewares, finalHandler);
91
+ await pipeline(ctx);
92
+ }
93
+ finally {
94
+ const elapsed = needMetrics || needSlow ? Date.now() - start : 0;
95
+ if (needSlow && elapsed >= this.slowThresholdMs) {
96
+ try {
97
+ this.slowHandler?.(elapsed, updateType);
98
+ }
99
+ catch {
100
+ // Ошибки наблюдателей не должны влиять на основной поток
101
+ }
102
+ }
103
+ if (needMetrics) {
104
+ try {
105
+ this.metricsHandler?.({
106
+ updateType,
107
+ totalMs: elapsed,
108
+ queueSizeAtStart,
109
+ handlerErrors,
110
+ middlewareTimes,
111
+ });
112
+ }
113
+ catch {
114
+ // Ошибки наблюдателей не должны влиять на основной поток
115
+ }
116
+ }
117
+ this.releaseSemaphore();
118
+ }
119
+ }
120
+ /**
121
+ * Захватить слот семафора.
122
+ * Если свободных слотов нет — ждём в очереди.
123
+ */
124
+ acquireSemaphore() {
125
+ if (this.activeCount < this.concurrency) {
126
+ this.activeCount++;
127
+ return Promise.resolve();
128
+ }
129
+ return new Promise((resolve) => {
130
+ this.waitQueue.push(resolve);
131
+ });
132
+ }
133
+ /**
134
+ * Освободить слот семафора и разбудить следующего в очереди.
135
+ */
136
+ releaseSemaphore() {
137
+ const next = this.waitQueue.shift();
138
+ if (next) {
139
+ // Передаём слот напрямую — activeCount не меняется
140
+ next();
141
+ }
142
+ else {
143
+ this.activeCount--;
144
+ }
145
+ }
146
+ handleError(error) {
147
+ if (this.errorHandler) {
148
+ try {
149
+ this.errorHandler(error);
150
+ }
151
+ catch {
152
+ // Игнорируем ошибки в обработчике ошибок
153
+ console.error("Ошибка в обработчике ошибок:", error);
154
+ }
155
+ }
156
+ else {
157
+ // По умолчанию логируем в консоль
158
+ console.error("Ошибка бота:", error);
159
+ }
160
+ }
161
+ /**
162
+ * Создаёт типизированный контекст из сырого обновления.
163
+ *
164
+ * Возвращает `null` если `update_type` неизвестен SDK **и** задан хук
165
+ * `onUnknownUpdate` — хук уже вызван, update нужно пропустить.
166
+ * Если хук не задан — бросает ошибку через `assertNever` → `errorHandler`.
167
+ */
168
+ createContext(update) {
169
+ switch (update.update_type) {
170
+ case "message_callback":
171
+ return new CallbackContext(update, this.contextApi);
172
+ case "message_created":
173
+ case "message_edited":
174
+ case "message_removed":
175
+ return new MessageContext(update, this.contextApi);
176
+ case "bot_added":
177
+ case "bot_removed":
178
+ case "user_added":
179
+ case "user_removed":
180
+ case "chat_title_changed":
181
+ return new ChatContext(update);
182
+ case "bot_started":
183
+ return new BotStartedContext(update, this.contextApi);
184
+ default:
185
+ // TypeScript проверит здесь что все варианты UpdateType обработаны выше.
186
+ // Если появится новый update_type — будет ошибка компиляции, а не рантайм-краш.
187
+ if (this.unknownUpdateHandler) {
188
+ // Хук вызван, возвращаем null — handleUpdate пропустит update без ошибки
189
+ this.unknownUpdateHandler(update);
190
+ return null;
191
+ }
192
+ // Хук не задан — бросаем ошибку, она уйдёт в errorHandler
193
+ return assertNever(update);
194
+ }
195
+ }
196
+ }
197
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1,10 @@
1
+ export { Bot, type BotConfig, type Context, type EventHandler } from "./Bot.js";
2
+ export { Composer, type Filter } from "./Composer.js";
3
+ export { type HearsTrigger, type CommandTrigger, matchCommand, } from "./triggers.js";
4
+ export type { BotMetrics } from "./metrics.js";
5
+ export { MessageContext, type ContextApi, type SendOptions, } from "./context/MessageContext.js";
6
+ export { CallbackContext, type AnswerOptions, } from "./context/CallbackContext.js";
7
+ export { ChatContext } from "./context/ChatContext.js";
8
+ export { BotStartedContext } from "./context/BotStartedContext.js";
9
+ export { isMessageContext, isCallbackContext, isChatContext, isBotStartedContext, isUpdateType, } from "./context/guards.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { Bot } from "./Bot.js";
2
+ export { Composer } from "./Composer.js";
3
+ export { matchCommand, } from "./triggers.js";
4
+ export { MessageContext, } from "./context/MessageContext.js";
5
+ export { CallbackContext, } from "./context/CallbackContext.js";
6
+ export { ChatContext } from "./context/ChatContext.js";
7
+ export { BotStartedContext } from "./context/BotStartedContext.js";
8
+ export { isMessageContext, isCallbackContext, isChatContext, isBotStartedContext, isUpdateType, } from "./context/guards.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,85 @@
1
+ import type { IBotsApi, IChatsApi, IMessagesApi, ISubscriptionsApi, IUploadsApi } from "../api/interfaces.js";
2
+ import type { IUpdateTransport } from "../transport/interfaces.js";
3
+ import type { BotInfo } from "../types/bot.js";
4
+ import type { Message } from "../types/message.js";
5
+ import type { SubscriptionInfo } from "../types/subscription.js";
6
+ import type { SendOptions } from "./context/MessageContext.js";
7
+ import { BotRouting } from "./routing.js";
8
+ import type { Context } from "./Bot.js";
9
+ /**
10
+ * Слой жизненного цикла и удобных методов.
11
+ *
12
+ * Отвечает за:
13
+ * - Запуск / остановку бота (`start` / `stop`) с Promise-мьютексом
14
+ * - Управление webhook (`setWebhookUrl`, `deleteWebhook`, `getWebhookInfo`)
15
+ * - Высокоуровневые методы отправки (`sendMessage`, `sendPrivateMessage`, `getMe`)
16
+ * - Конфигурацию наблюдателей (`onError`, `onSlowHandler`)
17
+ *
18
+ * Расширяет {@link BotRouting} — использует маршруты и middleware из него.
19
+ *
20
+ * Поля `api` и `transport` объявлены как `abstract` — конкретные значения
21
+ * предоставляет конструктор `Bot`.
22
+ */
23
+ export declare abstract class BotLifecycle<Ctx extends Context> extends BotRouting<Ctx> {
24
+ /** Доступ к низкоуровневым API для продвинутых сценариев */
25
+ abstract readonly api: {
26
+ readonly bots: IBotsApi;
27
+ readonly chats: IChatsApi;
28
+ readonly messages: IMessagesApi;
29
+ readonly subscriptions: ISubscriptionsApi;
30
+ readonly uploads: IUploadsApi;
31
+ };
32
+ /** Транспорт: LongPolling или Webhook */
33
+ protected abstract readonly transport: IUpdateTransport;
34
+ private startPromise;
35
+ /**
36
+ * Установить URL для webhook.
37
+ */
38
+ setWebhookUrl(url: string): Promise<void>;
39
+ /**
40
+ * Удалить webhook.
41
+ */
42
+ deleteWebhook(): Promise<void>;
43
+ /**
44
+ * Получить информацию о текущем webhook.
45
+ */
46
+ getWebhookInfo(): Promise<SubscriptionInfo>;
47
+ /**
48
+ * Зарегистрировать обработчик ошибок.
49
+ */
50
+ onError(handler: (error: Error) => void): this;
51
+ /**
52
+ * Назначить коллбэк для медленных обработчиков.
53
+ *
54
+ * Если обработка обновления заняла больше `thresholdMs` мс,
55
+ * вызывается `cb` с фактическим временем выполнения и типом обновления.
56
+ *
57
+ * @example
58
+ * bot.onSlowHandler(500, (ms, type) => {
59
+ * log.warn({ ms, type }, 'slow handler detected');
60
+ * });
61
+ */
62
+ onSlowHandler(thresholdMs: number, cb: (ms: number, updateType: string) => void): this;
63
+ /**
64
+ * Получить информацию о боте.
65
+ */
66
+ getMe(): Promise<BotInfo>;
67
+ /**
68
+ * Отправить сообщение в чат.
69
+ */
70
+ sendMessage(chatId: number, text: string, options?: SendOptions): Promise<Message>;
71
+ /**
72
+ * Отправить личное сообщение пользователю.
73
+ */
74
+ sendPrivateMessage(userId: number, text: string, options?: SendOptions): Promise<Message>;
75
+ /**
76
+ * Запустить бота.
77
+ */
78
+ start(): Promise<void>;
79
+ /**
80
+ * Остановить бота.
81
+ */
82
+ stop(): Promise<void>;
83
+ private _doStart;
84
+ }
85
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/bot/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,8BAAsB,YAAY,CAChC,GAAG,SAAS,OAAO,CACnB,SAAQ,UAAU,CAAC,GAAG,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;QACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;QAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;KAC/B,CAAC;IAEF,yCAAyC;IACzC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAMxD,OAAO,CAAC,YAAY,CAA8B;IAIlD;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMjD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAK9C;;;;;;;;;;OAUG;IACH,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAC3C,IAAI;IAQP;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,OAAO,CAAC;IAgBnB;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,OAAO,CAAC;IAkBnB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA8Bb,QAAQ;CAMvB"}