@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.
- package/CHANGELOG.md +9 -0
- package/LICENSE +21 -0
- package/README.md +1176 -0
- package/dist/cjs/api/BotsApi.d.ts +17 -0
- package/dist/cjs/api/BotsApi.d.ts.map +1 -0
- package/dist/cjs/api/BotsApi.js +22 -0
- package/dist/cjs/api/ChatsApi.d.ts +87 -0
- package/dist/cjs/api/ChatsApi.d.ts.map +1 -0
- package/dist/cjs/api/ChatsApi.js +144 -0
- package/dist/cjs/api/MessagesApi.d.ts +41 -0
- package/dist/cjs/api/MessagesApi.d.ts.map +1 -0
- package/dist/cjs/api/MessagesApi.js +66 -0
- package/dist/cjs/api/SubscriptionsApi.d.ts +45 -0
- package/dist/cjs/api/SubscriptionsApi.d.ts.map +1 -0
- package/dist/cjs/api/SubscriptionsApi.js +69 -0
- package/dist/cjs/api/UploadsApi.d.ts +45 -0
- package/dist/cjs/api/UploadsApi.d.ts.map +1 -0
- package/dist/cjs/api/UploadsApi.js +113 -0
- package/dist/cjs/api/index.d.ts +7 -0
- package/dist/cjs/api/index.d.ts.map +1 -0
- package/dist/cjs/api/index.js +14 -0
- package/dist/cjs/api/interfaces.d.ts +108 -0
- package/dist/cjs/api/interfaces.d.ts.map +1 -0
- package/dist/cjs/api/interfaces.js +3 -0
- package/dist/cjs/bot/Bot.d.ts +380 -0
- package/dist/cjs/bot/Bot.d.ts.map +1 -0
- package/dist/cjs/bot/Bot.js +624 -0
- package/dist/cjs/bot/Composer.d.ts +131 -0
- package/dist/cjs/bot/Composer.d.ts.map +1 -0
- package/dist/cjs/bot/Composer.js +218 -0
- package/dist/cjs/bot/context/BotStartedContext.d.ts +83 -0
- package/dist/cjs/bot/context/BotStartedContext.d.ts.map +1 -0
- package/dist/cjs/bot/context/BotStartedContext.js +113 -0
- package/dist/cjs/bot/context/CallbackContext.d.ts +107 -0
- package/dist/cjs/bot/context/CallbackContext.d.ts.map +1 -0
- package/dist/cjs/bot/context/CallbackContext.js +158 -0
- package/dist/cjs/bot/context/ChatContext.d.ts +35 -0
- package/dist/cjs/bot/context/ChatContext.d.ts.map +1 -0
- package/dist/cjs/bot/context/ChatContext.js +52 -0
- package/dist/cjs/bot/context/MessageContext.d.ts +149 -0
- package/dist/cjs/bot/context/MessageContext.d.ts.map +1 -0
- package/dist/cjs/bot/context/MessageContext.js +228 -0
- package/dist/cjs/bot/context/guards.d.ts +69 -0
- package/dist/cjs/bot/context/guards.d.ts.map +1 -0
- package/dist/cjs/bot/context/guards.js +85 -0
- package/dist/cjs/bot/context/index.d.ts +6 -0
- package/dist/cjs/bot/context/index.d.ts.map +1 -0
- package/dist/cjs/bot/context/index.js +18 -0
- package/dist/cjs/bot/dispatch.d.ts +51 -0
- package/dist/cjs/bot/dispatch.d.ts.map +1 -0
- package/dist/cjs/bot/dispatch.js +201 -0
- package/dist/cjs/bot/index.d.ts +10 -0
- package/dist/cjs/bot/index.d.ts.map +1 -0
- package/dist/cjs/bot/index.js +24 -0
- package/dist/cjs/bot/lifecycle.d.ts +85 -0
- package/dist/cjs/bot/lifecycle.d.ts.map +1 -0
- package/dist/cjs/bot/lifecycle.js +167 -0
- package/dist/cjs/bot/metrics.d.ts +18 -0
- package/dist/cjs/bot/metrics.d.ts.map +1 -0
- package/dist/cjs/bot/metrics.js +3 -0
- package/dist/cjs/bot/routing.d.ts +131 -0
- package/dist/cjs/bot/routing.d.ts.map +1 -0
- package/dist/cjs/bot/routing.js +198 -0
- package/dist/cjs/bot/triggers.d.ts +61 -0
- package/dist/cjs/bot/triggers.d.ts.map +1 -0
- package/dist/cjs/bot/triggers.js +84 -0
- package/dist/cjs/core/errors/MaxError.d.ts +11 -0
- package/dist/cjs/core/errors/MaxError.d.ts.map +1 -0
- package/dist/cjs/core/errors/MaxError.js +19 -0
- package/dist/cjs/core/errors/errors.d.ts +59 -0
- package/dist/cjs/core/errors/errors.d.ts.map +1 -0
- package/dist/cjs/core/errors/errors.js +84 -0
- package/dist/cjs/core/errors/index.d.ts +3 -0
- package/dist/cjs/core/errors/index.d.ts.map +1 -0
- package/dist/cjs/core/errors/index.js +13 -0
- package/dist/cjs/core/http/HttpClient.d.ts +28 -0
- package/dist/cjs/core/http/HttpClient.d.ts.map +1 -0
- package/dist/cjs/core/http/HttpClient.js +148 -0
- package/dist/cjs/core/http/index.d.ts +3 -0
- package/dist/cjs/core/http/index.d.ts.map +1 -0
- package/dist/cjs/core/http/index.js +6 -0
- package/dist/cjs/core/http/interfaces.d.ts +42 -0
- package/dist/cjs/core/http/interfaces.d.ts.map +1 -0
- package/dist/cjs/core/http/interfaces.js +3 -0
- package/dist/cjs/core/rate-limiter/RateLimiter.d.ts +46 -0
- package/dist/cjs/core/rate-limiter/RateLimiter.d.ts.map +1 -0
- package/dist/cjs/core/rate-limiter/RateLimiter.js +110 -0
- package/dist/cjs/core/rate-limiter/index.d.ts +3 -0
- package/dist/cjs/core/rate-limiter/index.d.ts.map +1 -0
- package/dist/cjs/core/rate-limiter/index.js +6 -0
- package/dist/cjs/filters/index.d.ts +2 -0
- package/dist/cjs/filters/index.d.ts.map +1 -0
- package/dist/cjs/filters/index.js +10 -0
- package/dist/cjs/filters/predicates.d.ts +85 -0
- package/dist/cjs/filters/predicates.d.ts.map +1 -0
- package/dist/cjs/filters/predicates.js +111 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/middleware/compose.d.ts +28 -0
- package/dist/cjs/middleware/compose.d.ts.map +1 -0
- package/dist/cjs/middleware/compose.js +89 -0
- package/dist/cjs/middleware/index.d.ts +3 -0
- package/dist/cjs/middleware/index.d.ts.map +1 -0
- package/dist/cjs/middleware/index.js +7 -0
- package/dist/cjs/middleware/types.d.ts +17 -0
- package/dist/cjs/middleware/types.d.ts.map +1 -0
- package/dist/cjs/middleware/types.js +3 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/transport/LongPollingTransport.d.ts +33 -0
- package/dist/cjs/transport/LongPollingTransport.d.ts.map +1 -0
- package/dist/cjs/transport/LongPollingTransport.js +153 -0
- package/dist/cjs/transport/WebhookTransport.d.ts +40 -0
- package/dist/cjs/transport/WebhookTransport.d.ts.map +1 -0
- package/dist/cjs/transport/WebhookTransport.js +229 -0
- package/dist/cjs/transport/index.d.ts +4 -0
- package/dist/cjs/transport/index.d.ts.map +1 -0
- package/dist/cjs/transport/index.js +8 -0
- package/dist/cjs/transport/interfaces.d.ts +74 -0
- package/dist/cjs/transport/interfaces.d.ts.map +1 -0
- package/dist/cjs/transport/interfaces.js +3 -0
- package/dist/cjs/types/bot.d.ts +19 -0
- package/dist/cjs/types/bot.d.ts.map +1 -0
- package/dist/cjs/types/bot.js +3 -0
- package/dist/cjs/types/chat.d.ts +94 -0
- package/dist/cjs/types/chat.d.ts.map +1 -0
- package/dist/cjs/types/chat.js +3 -0
- package/dist/cjs/types/common.d.ts +38 -0
- package/dist/cjs/types/common.d.ts.map +1 -0
- package/dist/cjs/types/common.js +6 -0
- package/dist/cjs/types/index.d.ts +9 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +26 -0
- package/dist/cjs/types/keyboard.d.ts +97 -0
- package/dist/cjs/types/keyboard.d.ts.map +1 -0
- package/dist/cjs/types/keyboard.js +3 -0
- package/dist/cjs/types/message.d.ts +162 -0
- package/dist/cjs/types/message.d.ts.map +1 -0
- package/dist/cjs/types/message.js +3 -0
- package/dist/cjs/types/subscription.d.ts +23 -0
- package/dist/cjs/types/subscription.d.ts.map +1 -0
- package/dist/cjs/types/subscription.js +3 -0
- package/dist/cjs/types/update.d.ts +99 -0
- package/dist/cjs/types/update.d.ts.map +1 -0
- package/dist/cjs/types/update.js +3 -0
- package/dist/cjs/types/upload.d.ts +29 -0
- package/dist/cjs/types/upload.d.ts.map +1 -0
- package/dist/cjs/types/upload.js +3 -0
- package/dist/cjs/utils/Histogram.d.ts +93 -0
- package/dist/cjs/utils/Histogram.d.ts.map +1 -0
- package/dist/cjs/utils/Histogram.js +103 -0
- package/dist/cjs/utils/assertNever.d.ts +19 -0
- package/dist/cjs/utils/assertNever.d.ts.map +1 -0
- package/dist/cjs/utils/assertNever.js +24 -0
- package/dist/cjs/utils/format.d.ts +22 -0
- package/dist/cjs/utils/format.d.ts.map +1 -0
- package/dist/cjs/utils/format.js +25 -0
- package/dist/cjs/utils/index.d.ts +6 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +14 -0
- package/dist/cjs/utils/keyboard.d.ts +70 -0
- package/dist/cjs/utils/keyboard.d.ts.map +1 -0
- package/dist/cjs/utils/keyboard.js +166 -0
- package/dist/esm/api/BotsApi.d.ts +17 -0
- package/dist/esm/api/BotsApi.d.ts.map +1 -0
- package/dist/esm/api/BotsApi.js +18 -0
- package/dist/esm/api/ChatsApi.d.ts +87 -0
- package/dist/esm/api/ChatsApi.d.ts.map +1 -0
- package/dist/esm/api/ChatsApi.js +140 -0
- package/dist/esm/api/MessagesApi.d.ts +41 -0
- package/dist/esm/api/MessagesApi.d.ts.map +1 -0
- package/dist/esm/api/MessagesApi.js +62 -0
- package/dist/esm/api/SubscriptionsApi.d.ts +45 -0
- package/dist/esm/api/SubscriptionsApi.d.ts.map +1 -0
- package/dist/esm/api/SubscriptionsApi.js +65 -0
- package/dist/esm/api/UploadsApi.d.ts +45 -0
- package/dist/esm/api/UploadsApi.d.ts.map +1 -0
- package/dist/esm/api/UploadsApi.js +109 -0
- package/dist/esm/api/index.d.ts +7 -0
- package/dist/esm/api/index.d.ts.map +1 -0
- package/dist/esm/api/index.js +6 -0
- package/dist/esm/api/interfaces.d.ts +108 -0
- package/dist/esm/api/interfaces.d.ts.map +1 -0
- package/dist/esm/api/interfaces.js +2 -0
- package/dist/esm/bot/Bot.d.ts +380 -0
- package/dist/esm/bot/Bot.d.ts.map +1 -0
- package/dist/esm/bot/Bot.js +620 -0
- package/dist/esm/bot/Composer.d.ts +131 -0
- package/dist/esm/bot/Composer.d.ts.map +1 -0
- package/dist/esm/bot/Composer.js +214 -0
- package/dist/esm/bot/context/BotStartedContext.d.ts +83 -0
- package/dist/esm/bot/context/BotStartedContext.d.ts.map +1 -0
- package/dist/esm/bot/context/BotStartedContext.js +109 -0
- package/dist/esm/bot/context/CallbackContext.d.ts +107 -0
- package/dist/esm/bot/context/CallbackContext.d.ts.map +1 -0
- package/dist/esm/bot/context/CallbackContext.js +154 -0
- package/dist/esm/bot/context/ChatContext.d.ts +35 -0
- package/dist/esm/bot/context/ChatContext.d.ts.map +1 -0
- package/dist/esm/bot/context/ChatContext.js +48 -0
- package/dist/esm/bot/context/MessageContext.d.ts +149 -0
- package/dist/esm/bot/context/MessageContext.d.ts.map +1 -0
- package/dist/esm/bot/context/MessageContext.js +224 -0
- package/dist/esm/bot/context/guards.d.ts +69 -0
- package/dist/esm/bot/context/guards.d.ts.map +1 -0
- package/dist/esm/bot/context/guards.js +78 -0
- package/dist/esm/bot/context/index.d.ts +6 -0
- package/dist/esm/bot/context/index.d.ts.map +1 -0
- package/dist/esm/bot/context/index.js +6 -0
- package/dist/esm/bot/dispatch.d.ts +51 -0
- package/dist/esm/bot/dispatch.d.ts.map +1 -0
- package/dist/esm/bot/dispatch.js +197 -0
- package/dist/esm/bot/index.d.ts +10 -0
- package/dist/esm/bot/index.d.ts.map +1 -0
- package/dist/esm/bot/index.js +9 -0
- package/dist/esm/bot/lifecycle.d.ts +85 -0
- package/dist/esm/bot/lifecycle.d.ts.map +1 -0
- package/dist/esm/bot/lifecycle.js +163 -0
- package/dist/esm/bot/metrics.d.ts +18 -0
- package/dist/esm/bot/metrics.d.ts.map +1 -0
- package/dist/esm/bot/metrics.js +2 -0
- package/dist/esm/bot/routing.d.ts +131 -0
- package/dist/esm/bot/routing.d.ts.map +1 -0
- package/dist/esm/bot/routing.js +194 -0
- package/dist/esm/bot/triggers.d.ts +61 -0
- package/dist/esm/bot/triggers.d.ts.map +1 -0
- package/dist/esm/bot/triggers.js +80 -0
- package/dist/esm/core/errors/MaxError.d.ts +11 -0
- package/dist/esm/core/errors/MaxError.d.ts.map +1 -0
- package/dist/esm/core/errors/MaxError.js +15 -0
- package/dist/esm/core/errors/errors.d.ts +59 -0
- package/dist/esm/core/errors/errors.d.ts.map +1 -0
- package/dist/esm/core/errors/errors.js +75 -0
- package/dist/esm/core/errors/index.d.ts +3 -0
- package/dist/esm/core/errors/index.d.ts.map +1 -0
- package/dist/esm/core/errors/index.js +3 -0
- package/dist/esm/core/http/HttpClient.d.ts +28 -0
- package/dist/esm/core/http/HttpClient.d.ts.map +1 -0
- package/dist/esm/core/http/HttpClient.js +144 -0
- package/dist/esm/core/http/index.d.ts +3 -0
- package/dist/esm/core/http/index.d.ts.map +1 -0
- package/dist/esm/core/http/index.js +2 -0
- package/dist/esm/core/http/interfaces.d.ts +42 -0
- package/dist/esm/core/http/interfaces.d.ts.map +1 -0
- package/dist/esm/core/http/interfaces.js +2 -0
- package/dist/esm/core/rate-limiter/RateLimiter.d.ts +46 -0
- package/dist/esm/core/rate-limiter/RateLimiter.d.ts.map +1 -0
- package/dist/esm/core/rate-limiter/RateLimiter.js +106 -0
- package/dist/esm/core/rate-limiter/index.d.ts +3 -0
- package/dist/esm/core/rate-limiter/index.d.ts.map +1 -0
- package/dist/esm/core/rate-limiter/index.js +2 -0
- package/dist/esm/filters/index.d.ts +2 -0
- package/dist/esm/filters/index.d.ts.map +1 -0
- package/dist/esm/filters/index.js +2 -0
- package/dist/esm/filters/predicates.d.ts +85 -0
- package/dist/esm/filters/predicates.d.ts.map +1 -0
- package/dist/esm/filters/predicates.js +104 -0
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/middleware/compose.d.ts +28 -0
- package/dist/esm/middleware/compose.d.ts.map +1 -0
- package/dist/esm/middleware/compose.js +85 -0
- package/dist/esm/middleware/index.d.ts +3 -0
- package/dist/esm/middleware/index.d.ts.map +1 -0
- package/dist/esm/middleware/index.js +2 -0
- package/dist/esm/middleware/types.d.ts +17 -0
- package/dist/esm/middleware/types.d.ts.map +1 -0
- package/dist/esm/middleware/types.js +2 -0
- package/dist/esm/transport/LongPollingTransport.d.ts +33 -0
- package/dist/esm/transport/LongPollingTransport.d.ts.map +1 -0
- package/dist/esm/transport/LongPollingTransport.js +149 -0
- package/dist/esm/transport/WebhookTransport.d.ts +40 -0
- package/dist/esm/transport/WebhookTransport.d.ts.map +1 -0
- package/dist/esm/transport/WebhookTransport.js +225 -0
- package/dist/esm/transport/index.d.ts +4 -0
- package/dist/esm/transport/index.d.ts.map +1 -0
- package/dist/esm/transport/index.js +3 -0
- package/dist/esm/transport/interfaces.d.ts +74 -0
- package/dist/esm/transport/interfaces.d.ts.map +1 -0
- package/dist/esm/transport/interfaces.js +2 -0
- package/dist/esm/types/bot.d.ts +19 -0
- package/dist/esm/types/bot.d.ts.map +1 -0
- package/dist/esm/types/bot.js +2 -0
- package/dist/esm/types/chat.d.ts +94 -0
- package/dist/esm/types/chat.d.ts.map +1 -0
- package/dist/esm/types/chat.js +2 -0
- package/dist/esm/types/common.d.ts +38 -0
- package/dist/esm/types/common.d.ts.map +1 -0
- package/dist/esm/types/common.js +5 -0
- package/dist/esm/types/index.d.ts +9 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +10 -0
- package/dist/esm/types/keyboard.d.ts +97 -0
- package/dist/esm/types/keyboard.d.ts.map +1 -0
- package/dist/esm/types/keyboard.js +2 -0
- package/dist/esm/types/message.d.ts +162 -0
- package/dist/esm/types/message.d.ts.map +1 -0
- package/dist/esm/types/message.js +2 -0
- package/dist/esm/types/subscription.d.ts +23 -0
- package/dist/esm/types/subscription.d.ts.map +1 -0
- package/dist/esm/types/subscription.js +2 -0
- package/dist/esm/types/update.d.ts +99 -0
- package/dist/esm/types/update.d.ts.map +1 -0
- package/dist/esm/types/update.js +2 -0
- package/dist/esm/types/upload.d.ts +29 -0
- package/dist/esm/types/upload.d.ts.map +1 -0
- package/dist/esm/types/upload.js +2 -0
- package/dist/esm/utils/Histogram.d.ts +93 -0
- package/dist/esm/utils/Histogram.d.ts.map +1 -0
- package/dist/esm/utils/Histogram.js +99 -0
- package/dist/esm/utils/assertNever.d.ts +19 -0
- package/dist/esm/utils/assertNever.d.ts.map +1 -0
- package/dist/esm/utils/assertNever.js +21 -0
- package/dist/esm/utils/format.d.ts +22 -0
- package/dist/esm/utils/format.d.ts.map +1 -0
- package/dist/esm/utils/format.js +22 -0
- package/dist/esm/utils/index.d.ts +6 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +5 -0
- package/dist/esm/utils/keyboard.d.ts +70 -0
- package/dist/esm/utils/keyboard.d.ts.map +1 -0
- package/dist/esm/utils/keyboard.js +162 -0
- package/dist/types/api/BotsApi.d.ts +17 -0
- package/dist/types/api/BotsApi.d.ts.map +1 -0
- package/dist/types/api/ChatsApi.d.ts +87 -0
- package/dist/types/api/ChatsApi.d.ts.map +1 -0
- package/dist/types/api/MessagesApi.d.ts +41 -0
- package/dist/types/api/MessagesApi.d.ts.map +1 -0
- package/dist/types/api/SubscriptionsApi.d.ts +45 -0
- package/dist/types/api/SubscriptionsApi.d.ts.map +1 -0
- package/dist/types/api/UploadsApi.d.ts +45 -0
- package/dist/types/api/UploadsApi.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +7 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/interfaces.d.ts +108 -0
- package/dist/types/api/interfaces.d.ts.map +1 -0
- package/dist/types/bot/Bot.d.ts +380 -0
- package/dist/types/bot/Bot.d.ts.map +1 -0
- package/dist/types/bot/Composer.d.ts +131 -0
- package/dist/types/bot/Composer.d.ts.map +1 -0
- package/dist/types/bot/context/BotStartedContext.d.ts +83 -0
- package/dist/types/bot/context/BotStartedContext.d.ts.map +1 -0
- package/dist/types/bot/context/CallbackContext.d.ts +107 -0
- package/dist/types/bot/context/CallbackContext.d.ts.map +1 -0
- package/dist/types/bot/context/ChatContext.d.ts +35 -0
- package/dist/types/bot/context/ChatContext.d.ts.map +1 -0
- package/dist/types/bot/context/MessageContext.d.ts +149 -0
- package/dist/types/bot/context/MessageContext.d.ts.map +1 -0
- package/dist/types/bot/context/guards.d.ts +69 -0
- package/dist/types/bot/context/guards.d.ts.map +1 -0
- package/dist/types/bot/context/index.d.ts +6 -0
- package/dist/types/bot/context/index.d.ts.map +1 -0
- package/dist/types/bot/dispatch.d.ts +51 -0
- package/dist/types/bot/dispatch.d.ts.map +1 -0
- package/dist/types/bot/index.d.ts +10 -0
- package/dist/types/bot/index.d.ts.map +1 -0
- package/dist/types/bot/lifecycle.d.ts +85 -0
- package/dist/types/bot/lifecycle.d.ts.map +1 -0
- package/dist/types/bot/metrics.d.ts +18 -0
- package/dist/types/bot/metrics.d.ts.map +1 -0
- package/dist/types/bot/routing.d.ts +131 -0
- package/dist/types/bot/routing.d.ts.map +1 -0
- package/dist/types/bot/triggers.d.ts +61 -0
- package/dist/types/bot/triggers.d.ts.map +1 -0
- package/dist/types/core/errors/MaxError.d.ts +11 -0
- package/dist/types/core/errors/MaxError.d.ts.map +1 -0
- package/dist/types/core/errors/errors.d.ts +59 -0
- package/dist/types/core/errors/errors.d.ts.map +1 -0
- package/dist/types/core/errors/index.d.ts +3 -0
- package/dist/types/core/errors/index.d.ts.map +1 -0
- package/dist/types/core/http/HttpClient.d.ts +28 -0
- package/dist/types/core/http/HttpClient.d.ts.map +1 -0
- package/dist/types/core/http/index.d.ts +3 -0
- package/dist/types/core/http/index.d.ts.map +1 -0
- package/dist/types/core/http/interfaces.d.ts +42 -0
- package/dist/types/core/http/interfaces.d.ts.map +1 -0
- package/dist/types/core/rate-limiter/RateLimiter.d.ts +46 -0
- package/dist/types/core/rate-limiter/RateLimiter.d.ts.map +1 -0
- package/dist/types/core/rate-limiter/index.d.ts +3 -0
- package/dist/types/core/rate-limiter/index.d.ts.map +1 -0
- package/dist/types/filters/index.d.ts +2 -0
- package/dist/types/filters/index.d.ts.map +1 -0
- package/dist/types/filters/predicates.d.ts +85 -0
- package/dist/types/filters/predicates.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/middleware/compose.d.ts +28 -0
- package/dist/types/middleware/compose.d.ts.map +1 -0
- package/dist/types/middleware/index.d.ts +3 -0
- package/dist/types/middleware/index.d.ts.map +1 -0
- package/dist/types/middleware/types.d.ts +17 -0
- package/dist/types/middleware/types.d.ts.map +1 -0
- package/dist/types/transport/LongPollingTransport.d.ts +33 -0
- package/dist/types/transport/LongPollingTransport.d.ts.map +1 -0
- package/dist/types/transport/WebhookTransport.d.ts +40 -0
- package/dist/types/transport/WebhookTransport.d.ts.map +1 -0
- package/dist/types/transport/index.d.ts +4 -0
- package/dist/types/transport/index.d.ts.map +1 -0
- package/dist/types/transport/interfaces.d.ts +74 -0
- package/dist/types/transport/interfaces.d.ts.map +1 -0
- package/dist/types/types/bot.d.ts +19 -0
- package/dist/types/types/bot.d.ts.map +1 -0
- package/dist/types/types/chat.d.ts +94 -0
- package/dist/types/types/chat.d.ts.map +1 -0
- package/dist/types/types/common.d.ts +38 -0
- package/dist/types/types/common.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +9 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/keyboard.d.ts +97 -0
- package/dist/types/types/keyboard.d.ts.map +1 -0
- package/dist/types/types/message.d.ts +162 -0
- package/dist/types/types/message.d.ts.map +1 -0
- package/dist/types/types/subscription.d.ts +23 -0
- package/dist/types/types/subscription.d.ts.map +1 -0
- package/dist/types/types/update.d.ts +99 -0
- package/dist/types/types/update.d.ts.map +1 -0
- package/dist/types/types/upload.d.ts +29 -0
- package/dist/types/types/upload.d.ts.map +1 -0
- package/dist/types/utils/Histogram.d.ts +93 -0
- package/dist/types/utils/Histogram.d.ts.map +1 -0
- package/dist/types/utils/assertNever.d.ts +19 -0
- package/dist/types/utils/assertNever.d.ts.map +1 -0
- package/dist/types/utils/format.d.ts +22 -0
- package/dist/types/utils/format.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +6 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/keyboard.d.ts +70 -0
- package/dist/types/utils/keyboard.d.ts.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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,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"}
|