@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,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RateLimiter = void 0;
4
+ /**
5
+ * Rate Limiter на основе алгоритма Token Bucket.
6
+ *
7
+ * Token Bucket позволяет накапливать "запас" запросов при простое,
8
+ * что даёт возможность burst-запросов без превышения среднего лимита.
9
+ */
10
+ class RateLimiter {
11
+ maxTokens;
12
+ refillRate;
13
+ tokens;
14
+ lastRefill;
15
+ queue = [];
16
+ processing = false;
17
+ /**
18
+ * @param maxTokens - Максимальное количество токенов (по умолчанию 30)
19
+ * @param refillRate - Скорость восполнения токенов в секунду (по умолчанию 30)
20
+ */
21
+ constructor(maxTokens = 30, refillRate = 30) {
22
+ if (!Number.isFinite(maxTokens) || maxTokens <= 0) {
23
+ throw new Error("Параметр maxTokens должен быть положительным числом");
24
+ }
25
+ if (!Number.isFinite(refillRate) || refillRate <= 0) {
26
+ throw new Error("Параметр refillRate должен быть положительным числом");
27
+ }
28
+ this.maxTokens = maxTokens;
29
+ this.refillRate = refillRate;
30
+ this.tokens = maxTokens;
31
+ this.lastRefill = Date.now();
32
+ }
33
+ async acquire() {
34
+ this.refill();
35
+ if (this.tokens >= 1) {
36
+ this.tokens -= 1;
37
+ return;
38
+ }
39
+ // Запрос ждёт в очереди — не отбрасываем, а откладываем.
40
+ // Это избавляет разработчика от необходимости реализовывать retry-логику самостоятельно.
41
+ return new Promise((resolve) => {
42
+ // Вычисляем точное время готовности: позиция в очереди × интервал между токенами.
43
+ // Это позволяет scheduleQueue() поставить ровно один setTimeout на каждый элемент
44
+ // вместо общего слип-цикла, который вызывал задержку даже когда токен уже готов.
45
+ const msPerToken = 1000 / this.refillRate;
46
+ const position = this.queue.length; // 0-based: текущий элемент — первый ожидающий
47
+ const readyAt = Date.now() +
48
+ Math.ceil((1 - this.tokens) * msPerToken) +
49
+ position * msPerToken;
50
+ this.queue.push({ resolve, readyAt });
51
+ this.scheduleNext();
52
+ });
53
+ }
54
+ /**
55
+ * Восполняет токены пропорционально прошедшему времени
56
+ */
57
+ refill() {
58
+ const now = Date.now();
59
+ const elapsed = (now - this.lastRefill) / 1000;
60
+ // Добавляем токены пропорционально времени, но не больше максимума
61
+ this.tokens = Math.min(this.maxTokens, this.tokens + elapsed * this.refillRate);
62
+ this.lastRefill = now;
63
+ }
64
+ /**
65
+ * Планирует ровно один setTimeout для первого элемента очереди.
66
+ *
67
+ * Вместо слип-цикла (sleep → refill → check → sleep …) каждый элемент
68
+ * получает свой точный таймер: setTimeout срабатывает ровно в момент
69
+ * когда токен готов, без дополнительного ожидания.
70
+ *
71
+ * processing-флаг гарантирует единственный активный таймер на очередь —
72
+ * новые вызовы scheduleNext() от acquire() не создают лишних таймеров.
73
+ */
74
+ scheduleNext() {
75
+ if (this.processing || this.queue.length === 0) {
76
+ return;
77
+ }
78
+ this.processing = true;
79
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- queue.length > 0 проверен выше
80
+ const item = this.queue[0];
81
+ const delay = Math.max(0, item.readyAt - Date.now());
82
+ setTimeout(() => {
83
+ this.processing = false;
84
+ // Обновляем токены на момент срабатывания таймера
85
+ this.refill();
86
+ if (this.tokens >= 1) {
87
+ this.tokens -= 1;
88
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- queue непустая: item гарантированно существует
89
+ this.queue.shift().resolve();
90
+ }
91
+ else {
92
+ // Edge case: таймер мог сработать чуть раньше фактической готовности токена
93
+ // (погрешность clock/timer). Пересчитываем readyAt для головы очереди,
94
+ // чтобы следующий таймер был точным и не создавал цепочку setTimeout(0).
95
+ const head = this.queue[0];
96
+ if (head) {
97
+ const msPerToken = 1000 / this.refillRate;
98
+ head.readyAt = Date.now() + Math.ceil((1 - this.tokens) * msPerToken);
99
+ }
100
+ }
101
+ // Если токен всё ещё не готов (unlikely — системный таймер мог сработать
102
+ // чуть раньше), элемент остаётся в очереди и scheduleNext() поставит
103
+ // новый точный таймер.
104
+ // Запускаем следующий элемент, если очередь не пуста
105
+ this.scheduleNext();
106
+ }, delay);
107
+ }
108
+ }
109
+ exports.RateLimiter = RateLimiter;
110
+ //# sourceMappingURL=RateLimiter.js.map
@@ -0,0 +1,3 @@
1
+ export { RateLimiter } from "./RateLimiter.js";
2
+ export type { IRateLimiter } from "./RateLimiter.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/rate-limiter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RateLimiter = void 0;
4
+ var RateLimiter_js_1 = require("./RateLimiter.js");
5
+ Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return RateLimiter_js_1.RateLimiter; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export { hasText, isPrivateChat, commandIs, hasCallbackPayload, payloadIs, } from "./predicates.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,SAAS,GACV,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.payloadIs = exports.hasCallbackPayload = exports.commandIs = exports.isPrivateChat = exports.hasText = void 0;
4
+ var predicates_js_1 = require("./predicates.js");
5
+ Object.defineProperty(exports, "hasText", { enumerable: true, get: function () { return predicates_js_1.hasText; } });
6
+ Object.defineProperty(exports, "isPrivateChat", { enumerable: true, get: function () { return predicates_js_1.isPrivateChat; } });
7
+ Object.defineProperty(exports, "commandIs", { enumerable: true, get: function () { return predicates_js_1.commandIs; } });
8
+ Object.defineProperty(exports, "hasCallbackPayload", { enumerable: true, get: function () { return predicates_js_1.hasCallbackPayload; } });
9
+ Object.defineProperty(exports, "payloadIs", { enumerable: true, get: function () { return predicates_js_1.payloadIs; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,85 @@
1
+ import { CallbackContext } from "../bot/context/CallbackContext.js";
2
+ import { MessageContext } from "../bot/context/MessageContext.js";
3
+ import type { Context } from "../bot/Bot.js";
4
+ /**
5
+ * Проверяет, что контекст является MessageContext **и** содержит непустой текст.
6
+ *
7
+ * @example
8
+ * bot.use(async (ctx, next) => {
9
+ * if (hasText(ctx)) {
10
+ * // ctx: MessageContext, ctx.text: string (не undefined)
11
+ * console.log(ctx.text.toUpperCase());
12
+ * }
13
+ * await next();
14
+ * });
15
+ */
16
+ export declare function hasText(ctx: Context): ctx is MessageContext & {
17
+ text: string;
18
+ };
19
+ /**
20
+ * Проверяет, что сообщение пришло из приватного чата (диалога с ботом).
21
+ *
22
+ * @example
23
+ * bot.use(async (ctx, next) => {
24
+ * if (isPrivateChat(ctx)) {
25
+ * await ctx.reply("Это личный чат 👋");
26
+ * }
27
+ * await next();
28
+ * });
29
+ */
30
+ export declare function isPrivateChat(ctx: Context): ctx is MessageContext;
31
+ /**
32
+ * Фабрика предикатов: проверяет, что сообщение — конкретная команда.
33
+ *
34
+ * Совпадает с точным текстом (`/cmd`) или текстом + аргументами (`/cmd arg`).
35
+ * Слэш можно не указывать — он добавляется автоматически.
36
+ *
37
+ * @param name Имя команды, например `"start"` или `"/help"`
38
+ *
39
+ * @example
40
+ * bot.use(async (ctx, next) => {
41
+ * if (commandIs("start")(ctx)) {
42
+ * await ctx.reply("Привет!");
43
+ * return; // не вызываем next — команда обработана
44
+ * }
45
+ * await next();
46
+ * });
47
+ */
48
+ export declare function commandIs(name: string): (ctx: Context) => ctx is MessageContext & {
49
+ text: string;
50
+ };
51
+ /**
52
+ * Проверяет, что контекст является CallbackContext (нажатие кнопки)
53
+ * **и** payload не пустой.
54
+ *
55
+ * @example
56
+ * bot.use(async (ctx, next) => {
57
+ * if (hasCallbackPayload(ctx)) {
58
+ * // ctx: CallbackContext, ctx.data: непустая строка
59
+ * console.log("payload:", ctx.data);
60
+ * }
61
+ * await next();
62
+ * });
63
+ */
64
+ export declare function hasCallbackPayload(ctx: Context): ctx is CallbackContext & {
65
+ data: string;
66
+ };
67
+ /**
68
+ * Фабрика предикатов: проверяет, что payload кнопки совпадает с шаблоном.
69
+ *
70
+ * @param pattern Строка (точное совпадение) или RegExp
71
+ *
72
+ * @example
73
+ * bot.use(async (ctx, next) => {
74
+ * if (payloadIs(/^action:/)(ctx)) {
75
+ * const [, action] = ctx.data.split(":");
76
+ * await ctx.answer({ notification: `Действие: ${action}` });
77
+ * return;
78
+ * }
79
+ * await next();
80
+ * });
81
+ */
82
+ export declare function payloadIs(pattern: string | RegExp): (ctx: Context) => ctx is CallbackContext & {
83
+ data: string;
84
+ };
85
+ //# sourceMappingURL=predicates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicates.d.ts","sourceRoot":"","sources":["../../../src/filters/predicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAM1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,cAAc,CAKjE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAO5D;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAE3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAO7D"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasText = hasText;
4
+ exports.isPrivateChat = isPrivateChat;
5
+ exports.commandIs = commandIs;
6
+ exports.hasCallbackPayload = hasCallbackPayload;
7
+ exports.payloadIs = payloadIs;
8
+ const CallbackContext_js_1 = require("../bot/context/CallbackContext.js");
9
+ const MessageContext_js_1 = require("../bot/context/MessageContext.js");
10
+ // ─── MessageContext predicates ───────────────────────────────────────────────
11
+ /**
12
+ * Проверяет, что контекст является MessageContext **и** содержит непустой текст.
13
+ *
14
+ * @example
15
+ * bot.use(async (ctx, next) => {
16
+ * if (hasText(ctx)) {
17
+ * // ctx: MessageContext, ctx.text: string (не undefined)
18
+ * console.log(ctx.text.toUpperCase());
19
+ * }
20
+ * await next();
21
+ * });
22
+ */
23
+ function hasText(ctx) {
24
+ return (ctx instanceof MessageContext_js_1.MessageContext &&
25
+ typeof ctx.text === "string" &&
26
+ ctx.text.length > 0);
27
+ }
28
+ /**
29
+ * Проверяет, что сообщение пришло из приватного чата (диалога с ботом).
30
+ *
31
+ * @example
32
+ * bot.use(async (ctx, next) => {
33
+ * if (isPrivateChat(ctx)) {
34
+ * await ctx.reply("Это личный чат 👋");
35
+ * }
36
+ * await next();
37
+ * });
38
+ */
39
+ function isPrivateChat(ctx) {
40
+ return (ctx instanceof MessageContext_js_1.MessageContext &&
41
+ ctx.raw.message.recipient.chat_type === "dialog");
42
+ }
43
+ /**
44
+ * Фабрика предикатов: проверяет, что сообщение — конкретная команда.
45
+ *
46
+ * Совпадает с точным текстом (`/cmd`) или текстом + аргументами (`/cmd arg`).
47
+ * Слэш можно не указывать — он добавляется автоматически.
48
+ *
49
+ * @param name Имя команды, например `"start"` или `"/help"`
50
+ *
51
+ * @example
52
+ * bot.use(async (ctx, next) => {
53
+ * if (commandIs("start")(ctx)) {
54
+ * await ctx.reply("Привет!");
55
+ * return; // не вызываем next — команда обработана
56
+ * }
57
+ * await next();
58
+ * });
59
+ */
60
+ function commandIs(name) {
61
+ const normalized = name.startsWith("/") ? name : `/${name}`;
62
+ return (ctx) => {
63
+ if (!(ctx instanceof MessageContext_js_1.MessageContext))
64
+ return false;
65
+ const text = ctx.text ?? "";
66
+ return text === normalized || text.startsWith(`${normalized} `);
67
+ };
68
+ }
69
+ // ─── CallbackContext predicates ──────────────────────────────────────────────
70
+ /**
71
+ * Проверяет, что контекст является CallbackContext (нажатие кнопки)
72
+ * **и** payload не пустой.
73
+ *
74
+ * @example
75
+ * bot.use(async (ctx, next) => {
76
+ * if (hasCallbackPayload(ctx)) {
77
+ * // ctx: CallbackContext, ctx.data: непустая строка
78
+ * console.log("payload:", ctx.data);
79
+ * }
80
+ * await next();
81
+ * });
82
+ */
83
+ function hasCallbackPayload(ctx) {
84
+ return ctx instanceof CallbackContext_js_1.CallbackContext && ctx.data.length > 0;
85
+ }
86
+ /**
87
+ * Фабрика предикатов: проверяет, что payload кнопки совпадает с шаблоном.
88
+ *
89
+ * @param pattern Строка (точное совпадение) или RegExp
90
+ *
91
+ * @example
92
+ * bot.use(async (ctx, next) => {
93
+ * if (payloadIs(/^action:/)(ctx)) {
94
+ * const [, action] = ctx.data.split(":");
95
+ * await ctx.answer({ notification: `Действие: ${action}` });
96
+ * return;
97
+ * }
98
+ * await next();
99
+ * });
100
+ */
101
+ function payloadIs(pattern) {
102
+ return (ctx) => {
103
+ if (!(ctx instanceof CallbackContext_js_1.CallbackContext))
104
+ return false;
105
+ const data = ctx.data;
106
+ if (data.length === 0)
107
+ return false;
108
+ return typeof pattern === "string" ? data === pattern : pattern.test(data);
109
+ };
110
+ }
111
+ //# sourceMappingURL=predicates.js.map
@@ -0,0 +1,11 @@
1
+ export * from "./bot/index.js";
2
+ export * from "./api/index.js";
3
+ export * from "./transport/index.js";
4
+ export * from "./core/http/index.js";
5
+ export * from "./core/errors/index.js";
6
+ export * from "./core/rate-limiter/RateLimiter.js";
7
+ export * from "./types/index.js";
8
+ export * from "./utils/index.js";
9
+ export * from "./middleware/index.js";
10
+ export * from "./filters/index.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./bot/index.js"), exports);
18
+ __exportStar(require("./api/index.js"), exports);
19
+ __exportStar(require("./transport/index.js"), exports);
20
+ __exportStar(require("./core/http/index.js"), exports);
21
+ __exportStar(require("./core/errors/index.js"), exports);
22
+ __exportStar(require("./core/rate-limiter/RateLimiter.js"), exports);
23
+ __exportStar(require("./types/index.js"), exports);
24
+ __exportStar(require("./utils/index.js"), exports);
25
+ __exportStar(require("./middleware/index.js"), exports);
26
+ __exportStar(require("./filters/index.js"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,28 @@
1
+ import type { Middleware } from "./types.js";
2
+ /**
3
+ * Собирает массив middleware в единую async-функцию.
4
+ *
5
+ * Инварианты:
6
+ * - next() нельзя вызвать дважды в одном middleware — выброс Error.
7
+ * - Если middlewares пустой — вызывается `finalHandler` напрямую.
8
+ * - Ошибка в любом звене пробрасывается вверх по стеку (без перехвата).
9
+ *
10
+ * @param middlewares - Упорядоченный список middleware
11
+ * @param finalHandler - Вызывается после последнего middleware (например, диспетчер хендлеров)
12
+ * @returns Функция `(ctx) => Promise<void>`, которую можно awaited
13
+ */
14
+ export declare function compose<Ctx>(middlewares: ReadonlyArray<Middleware<Ctx>>, finalHandler: (ctx: Ctx) => Promise<void>): (ctx: Ctx) => Promise<void>;
15
+ /**
16
+ * Вариант `compose` с замером времени каждого middleware.
17
+ *
18
+ * Записывает в массив `timings` (по индексу) фактическое время выполнения
19
+ * каждого middleware в миллисекундах (включая вызов вложенных next()).
20
+ *
21
+ * Используется внутри `Bot` когда задан `onMetrics` колбэк.
22
+ *
23
+ * @param middlewares - Упорядоченный список middleware
24
+ * @param finalHandler - Вызывается после последнего middleware
25
+ * @param timings - Выходной массив: `timings[i]` — ms для i-го middleware
26
+ */
27
+ export declare function composeWithTiming<Ctx>(middlewares: ReadonlyArray<Middleware<Ctx>>, finalHandler: (ctx: Ctx) => Promise<void>, timings: number[]): (ctx: Ctx) => Promise<void>;
28
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../src/middleware/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,YAAY,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,GAAG,EACzB,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC3C,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GACxC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAkC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EACnC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC3C,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EACzC,OAAO,EAAE,MAAM,EAAE,GAChB,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CA+C7B"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compose = compose;
4
+ exports.composeWithTiming = composeWithTiming;
5
+ /**
6
+ * Собирает массив middleware в единую async-функцию.
7
+ *
8
+ * Инварианты:
9
+ * - next() нельзя вызвать дважды в одном middleware — выброс Error.
10
+ * - Если middlewares пустой — вызывается `finalHandler` напрямую.
11
+ * - Ошибка в любом звене пробрасывается вверх по стеку (без перехвата).
12
+ *
13
+ * @param middlewares - Упорядоченный список middleware
14
+ * @param finalHandler - Вызывается после последнего middleware (например, диспетчер хендлеров)
15
+ * @returns Функция `(ctx) => Promise<void>`, которую можно awaited
16
+ */
17
+ function compose(middlewares, finalHandler) {
18
+ return function dispatch(ctx) {
19
+ let index = -1;
20
+ function step(i) {
21
+ // Защита от двойного next(): i должен быть строго больше index при каждом шаге
22
+ if (i <= index) {
23
+ return Promise.reject(new Error("next() вызван повторно в одном middleware"));
24
+ }
25
+ index = i;
26
+ const fn = i < middlewares.length ? middlewares[i] : undefined;
27
+ if (fn === undefined) {
28
+ // Все middleware прошли — запускаем финальный обработчик
29
+ return finalHandler(ctx);
30
+ }
31
+ try {
32
+ const result = fn(ctx, () => step(i + 1));
33
+ // Если middleware синхронный (возвращает void) — оборачиваем в resolved Promise
34
+ return result instanceof Promise ? result : Promise.resolve();
35
+ }
36
+ catch (err) {
37
+ return Promise.reject(err instanceof Error ? err : new Error(String(err)));
38
+ }
39
+ }
40
+ return step(0);
41
+ };
42
+ }
43
+ /**
44
+ * Вариант `compose` с замером времени каждого middleware.
45
+ *
46
+ * Записывает в массив `timings` (по индексу) фактическое время выполнения
47
+ * каждого middleware в миллисекундах (включая вызов вложенных next()).
48
+ *
49
+ * Используется внутри `Bot` когда задан `onMetrics` колбэк.
50
+ *
51
+ * @param middlewares - Упорядоченный список middleware
52
+ * @param finalHandler - Вызывается после последнего middleware
53
+ * @param timings - Выходной массив: `timings[i]` — ms для i-го middleware
54
+ */
55
+ function composeWithTiming(middlewares, finalHandler, timings) {
56
+ return function dispatch(ctx) {
57
+ let index = -1;
58
+ function step(i) {
59
+ if (i <= index) {
60
+ return Promise.reject(new Error("next() вызван повторно в одном middleware"));
61
+ }
62
+ index = i;
63
+ const fn = i < middlewares.length ? middlewares[i] : undefined;
64
+ if (fn === undefined) {
65
+ return finalHandler(ctx);
66
+ }
67
+ const t0 = Date.now();
68
+ try {
69
+ const result = fn(ctx, () => step(i + 1));
70
+ if (result instanceof Promise) {
71
+ return result.then(() => {
72
+ timings[i] = Date.now() - t0;
73
+ }, (err) => {
74
+ timings[i] = Date.now() - t0;
75
+ return Promise.reject(err instanceof Error ? err : new Error(String(err)));
76
+ });
77
+ }
78
+ timings[i] = Date.now() - t0;
79
+ return Promise.resolve();
80
+ }
81
+ catch (err) {
82
+ timings[i] = Date.now() - t0;
83
+ return Promise.reject(err instanceof Error ? err : new Error(String(err)));
84
+ }
85
+ }
86
+ return step(0);
87
+ };
88
+ }
89
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1,3 @@
1
+ export type { Middleware, NextFn } from "./types.js";
2
+ export { compose, composeWithTiming } from "./compose.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.composeWithTiming = exports.compose = void 0;
4
+ var compose_js_1 = require("./compose.js");
5
+ Object.defineProperty(exports, "compose", { enumerable: true, get: function () { return compose_js_1.compose; } });
6
+ Object.defineProperty(exports, "composeWithTiming", { enumerable: true, get: function () { return compose_js_1.composeWithTiming; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Функция-переход к следующему middleware.
3
+ * Вызов next() дважды в одном middleware — программная ошибка.
4
+ */
5
+ export type NextFn = () => Promise<void>;
6
+ /**
7
+ * Middleware — асинхронная функция, получающая контекст и переход to следующему звену.
8
+ *
9
+ * @example
10
+ * const logger: Middleware<Context> = async (ctx, next) => {
11
+ * console.log('incoming update');
12
+ * await next();
13
+ * console.log('handlers done');
14
+ * };
15
+ */
16
+ export type Middleware<Ctx> = (ctx: Ctx, next: NextFn) => Promise<void> | void;
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,33 @@
1
+ import type { ISubscriptionsApi } from "../api/interfaces.js";
2
+ import type { ErrorHandler, IUpdateTransport, LongPollingConfig, UpdateHandler } from "./interfaces.js";
3
+ /**
4
+ * Транспорт на основе Long Polling.
5
+ *
6
+ * Long Polling проще в настройке — не нужен публичный IP и SSL.
7
+ * Подходит для разработки и небольших ботов.
8
+ */
9
+ export declare class LongPollingTransport implements IUpdateTransport {
10
+ private readonly subscriptionsApi;
11
+ private readonly timeout;
12
+ private readonly limit;
13
+ private readonly retryDelay;
14
+ private readonly resetMarkerOnRestart;
15
+ private readonly allowedUpdates;
16
+ private isRunning;
17
+ private marker;
18
+ private updateHandler;
19
+ private errorHandler;
20
+ private abortController;
21
+ private pollPromise;
22
+ constructor(subscriptionsApi: ISubscriptionsApi, config?: LongPollingConfig);
23
+ start(): Promise<void>;
24
+ stop(): Promise<void>;
25
+ onUpdate(handler: UpdateHandler): void;
26
+ onError(handler: ErrorHandler): void;
27
+ private poll;
28
+ private isAbortError;
29
+ private emitUpdate;
30
+ private emitError;
31
+ private delay;
32
+ }
33
+ //# sourceMappingURL=LongPollingTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LongPollingTransport.d.ts","sourceRoot":"","sources":["../../../src/transport/LongPollingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAmBzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAlBnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAE1D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA6B;IAIjD,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO,CAAC,WAAW,CAA8B;gBAG9B,gBAAgB,EAAE,iBAAiB,EACpD,MAAM,CAAC,EAAE,iBAAiB;IAStB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAItC,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;YAItB,IAAI;IAyDlB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,KAAK;CAkBd"}