@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,131 @@
|
|
|
1
|
+
import type { Middleware } from "../middleware/types.js";
|
|
2
|
+
import type { UpdateType } from "../types/update.js";
|
|
3
|
+
import { BotDispatch } from "./dispatch.js";
|
|
4
|
+
import type { Context } from "./Bot.js";
|
|
5
|
+
import { type HearsTrigger, type CommandTrigger } from "./triggers.js";
|
|
6
|
+
/**
|
|
7
|
+
* Слой маршрутизации.
|
|
8
|
+
*
|
|
9
|
+
* Отвечает за регистрацию обработчиков событий:
|
|
10
|
+
* - `on` / `onMessage` / `onCallback` / `onStart` — подписка на типы обновлений
|
|
11
|
+
* - `command` / `hears` / `action` — шорткаты с pattern matching
|
|
12
|
+
* - `use` / `filter` — middleware-цепочки и предикаты
|
|
13
|
+
*
|
|
14
|
+
* Расширяет {@link BotDispatch} — использует `handlers` и `middlewares` из него.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class BotRouting<Ctx extends Context> extends BotDispatch<Ctx> {
|
|
17
|
+
/**
|
|
18
|
+
* Зарегистрировать один или несколько обработчиков для события message_created.
|
|
19
|
+
*
|
|
20
|
+
* При нескольких аргументах промежуточные middleware должны вызывать `next()`;
|
|
21
|
+
* последний аргумент — финальный обработчик (next не нужен).
|
|
22
|
+
*
|
|
23
|
+
* @example С промежуточным middleware
|
|
24
|
+
* bot.onMessage(authMw, async (ctx) => { await ctx.reply('OK'); });
|
|
25
|
+
*/
|
|
26
|
+
onMessage(...fns: Middleware<Ctx>[]): this;
|
|
27
|
+
/**
|
|
28
|
+
* Зарегистрировать один или несколько обработчиков для callback-запросов.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* bot.onCallback(logMw, async (ctx) => { ... });
|
|
32
|
+
*/
|
|
33
|
+
onCallback(...fns: Middleware<Ctx>[]): this;
|
|
34
|
+
/**
|
|
35
|
+
* Зарегистрировать обработчик для события `bot_started`.
|
|
36
|
+
*
|
|
37
|
+
* Срабатывает когда пользователь нажимает Start в диалоге или переходит по deep link.
|
|
38
|
+
*
|
|
39
|
+
* @example Onboarding с deep link
|
|
40
|
+
* bot.onStart(async (ctx) => {
|
|
41
|
+
* if (isBotStartedContext(ctx) && ctx.startPayload) {
|
|
42
|
+
* await ctx.reply(`Реферал: ${ctx.startPayload}`);
|
|
43
|
+
* } else {
|
|
44
|
+
* await ctx.reply('Добро пожаловать!');
|
|
45
|
+
* }
|
|
46
|
+
* });
|
|
47
|
+
*/
|
|
48
|
+
onStart(...fns: Middleware<Ctx>[]): this;
|
|
49
|
+
/**
|
|
50
|
+
* Зарегистрировать один или несколько обработчиков для любого типа обновления.
|
|
51
|
+
*
|
|
52
|
+
* @example Один обработчик
|
|
53
|
+
* bot.on('message_created', async (ctx) => { ... });
|
|
54
|
+
*
|
|
55
|
+
* @example Несколько middleware + обработчик
|
|
56
|
+
* bot.on('message_created', authMw, rateLimitMw, async (ctx) => { ... });
|
|
57
|
+
*/
|
|
58
|
+
on(event: UpdateType, ...fns: Middleware<Ctx>[]): this;
|
|
59
|
+
/**
|
|
60
|
+
* Зарегистрировать обработчик команды.
|
|
61
|
+
*
|
|
62
|
+
* Срабатывает на `message_created`, если текст сообщения начинается с `/<name>`.
|
|
63
|
+
*
|
|
64
|
+
* @example Один обработчик
|
|
65
|
+
* bot.command('start', async (ctx) => { ... });
|
|
66
|
+
*
|
|
67
|
+
* @example Массив команд
|
|
68
|
+
* bot.command(['start', 'begin'], async (ctx) => { ... });
|
|
69
|
+
*
|
|
70
|
+
* @example С промежуточными middleware
|
|
71
|
+
* bot.command('pay', authMw, checkBalanceMw, async (ctx) => { ... });
|
|
72
|
+
*/
|
|
73
|
+
command(name: CommandTrigger, ...fns: Middleware<Ctx>[]): this;
|
|
74
|
+
/**
|
|
75
|
+
* Зарегистрировать обработчик по regexp- или строковому фильтру текста сообщения.
|
|
76
|
+
*
|
|
77
|
+
* При совпадении RegExp устанавливает `ctx.match` с capture-группами.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* bot.hears(/(\d+)/, async (ctx) => { ... });
|
|
81
|
+
* bot.hears('привет', async (ctx) => { ... });
|
|
82
|
+
* bot.hears(['привет', /^hi/i], async (ctx) => { ... });
|
|
83
|
+
*/
|
|
84
|
+
hears(pattern: HearsTrigger, ...fns: Middleware<Ctx>[]): this;
|
|
85
|
+
/**
|
|
86
|
+
* Зарегистрировать обработчик по `callback.payload`.
|
|
87
|
+
*
|
|
88
|
+
* `pattern` может быть строкой, RegExp или массивом — срабатывает на первое
|
|
89
|
+
* совпадение. При совпадении RegExp устанавливает `ctx.match` с capture-группами.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* bot.action('buy', handler);
|
|
93
|
+
* bot.action(/^buy:(\d+)$/, handler);
|
|
94
|
+
* bot.action(['confirm', 'ok'], handler); // оба payload
|
|
95
|
+
* bot.action([/^buy:/, /^sell:/], handler); // несколько RegExp
|
|
96
|
+
*/
|
|
97
|
+
action(pattern: HearsTrigger, ...fns: Middleware<Ctx>[]): this;
|
|
98
|
+
/**
|
|
99
|
+
* Добавить глобальный middleware.
|
|
100
|
+
*
|
|
101
|
+
* Middleware выполняется **внутри** семафорного слота — backpressure применяется
|
|
102
|
+
* ко всему пайплайну целиком, а не только к финальным хендлерам.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* bot.use(async (ctx, next) => {
|
|
106
|
+
* console.log('before');
|
|
107
|
+
* await next();
|
|
108
|
+
* console.log('after');
|
|
109
|
+
* });
|
|
110
|
+
*/
|
|
111
|
+
use(middleware: Middleware<Ctx>): this;
|
|
112
|
+
/**
|
|
113
|
+
* Подключить middleware только если предикат возвращает `true`.
|
|
114
|
+
*
|
|
115
|
+
* Если предикат не сработал — обновление прозрачно перетекает к следующим middleware.
|
|
116
|
+
*
|
|
117
|
+
* @example Только сообщения с текстом
|
|
118
|
+
* bot.filter(hasText, async (ctx) => {
|
|
119
|
+
* console.log(ctx.text.toUpperCase()); // ctx.text: string
|
|
120
|
+
* });
|
|
121
|
+
*
|
|
122
|
+
* @example Composer + filter
|
|
123
|
+
* const privateRouter = new Composer();
|
|
124
|
+
* privateRouter.command('start', handler);
|
|
125
|
+
* bot.filter(isPrivateChat, privateRouter.middleware());
|
|
126
|
+
*/
|
|
127
|
+
filter<Narrowed extends Ctx>(predicate: (ctx: Ctx) => ctx is Narrowed, ...fns: Middleware<Narrowed>[]): this;
|
|
128
|
+
/** Цепочка из middleware: возвращает единый EventHandler, вызывающий каждый fn по очереди. */
|
|
129
|
+
private pipe;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/bot/routing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,UAAU,CAAC;AACtD,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;GASG;AACH,8BAAsB,UAAU,CAAC,GAAG,SAAS,OAAO,CAAE,SAAQ,WAAW,CAAC,GAAG,CAAC;IAG5E;;;;;;;;OAQG;IACH,SAAS,CAAC,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAI1C;;;;;OAKG;IACH,UAAU,CAAC,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAI3C;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAIxC;;;;;;;;OAQG;IACH,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAUtD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAU9D;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAY7D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAY9D;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI;IAKtC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,QAAQ,SAAS,GAAG,EACzB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,QAAQ,EACxC,GAAG,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,GAC7B,IAAI;IAWP,8FAA8F;IAC9F,OAAO,CAAC,IAAI;CAIb"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Тип паттерна для `hears()` и `action()`.
|
|
3
|
+
*
|
|
4
|
+
* Принимает:
|
|
5
|
+
* - строку — точное совпадение
|
|
6
|
+
* - RegExp — совпадение по регулярке, устанавливает `ctx.match`
|
|
7
|
+
* - массив строк/RegExp — срабатывает на **первое** совпадение из списка
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* bot.hears('привет', handler); // строка
|
|
11
|
+
* bot.hears(/(\d+)\+(\d+)/, handler); // RegExp
|
|
12
|
+
* bot.hears([/^\d+$/, 'помощь'], handler); // массив: число ИЛИ "помощь"
|
|
13
|
+
*
|
|
14
|
+
* bot.action(['confirm', 'ok'], handler); // несколько строк
|
|
15
|
+
* bot.action([/^buy:/, /^sell:/], handler); // несколько RegExp
|
|
16
|
+
*/
|
|
17
|
+
export type HearsTrigger = string | RegExp | ReadonlyArray<string | RegExp>;
|
|
18
|
+
/**
|
|
19
|
+
* Тип паттерна для `command()`.
|
|
20
|
+
*
|
|
21
|
+
* Принимает одну команду или массив команд (без учёта ведущего `/`).
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* bot.command('start', handler); // /start
|
|
25
|
+
* bot.command(['start', 'begin'], handler); // /start или /begin
|
|
26
|
+
* bot.command(['/help', 'info'], handler); // ведущий / необязателен
|
|
27
|
+
*/
|
|
28
|
+
export type CommandTrigger = string | ReadonlyArray<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Проверяет `HearsTrigger` против строки, перебирая все паттерны.
|
|
31
|
+
*
|
|
32
|
+
* Возвращает результат **первого** совпавшего паттерна:
|
|
33
|
+
* - `RegExpExecArray` — если совпал RegExp (для установки `ctx.match`)
|
|
34
|
+
* - `true` — если совпала строка
|
|
35
|
+
* - `null` — ни один паттерн не совпал
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const result = matchTrigger([/^(\d+)$/, 'да'], '42');
|
|
39
|
+
* // result: RegExpExecArray — ['42', '42'], совпал первый паттерн
|
|
40
|
+
*
|
|
41
|
+
* const result2 = matchTrigger([/^\d+$/, 'да'], 'да');
|
|
42
|
+
* // result2: true — совпала строка
|
|
43
|
+
*/
|
|
44
|
+
export declare function matchTrigger(trigger: HearsTrigger, text: string): RegExpExecArray | true | null;
|
|
45
|
+
/**
|
|
46
|
+
* Проверяет `CommandTrigger` против текста сообщения.
|
|
47
|
+
*
|
|
48
|
+
* Совпадение: текст равен `/<name>` или начинается с `/<name> ` (команда с аргументами).
|
|
49
|
+
* Сравнение регистронезависимо (`/Start` === `/start`).
|
|
50
|
+
*
|
|
51
|
+
* @returns `true` если хотя бы одна команда совпала, иначе `false`
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* matchCommand('start', '/start') // true
|
|
55
|
+
* matchCommand('start', '/start arg1') // true
|
|
56
|
+
* matchCommand(['start', 'help'], '/help') // true
|
|
57
|
+
* matchCommand('start', '/stop') // false
|
|
58
|
+
* matchCommand('start', '/starter') // false — нет пробела после имени
|
|
59
|
+
*/
|
|
60
|
+
export declare function matchCommand(trigger: CommandTrigger, text: string): boolean;
|
|
61
|
+
//# sourceMappingURL=triggers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../src/bot/triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAyB5D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,GACX,eAAe,GAAG,IAAI,GAAG,IAAI,CAU/B;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAW3E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Базовый класс ошибок SDK.
|
|
3
|
+
*
|
|
4
|
+
* Иерархия ошибок позволяет ловить как конкретные типы,
|
|
5
|
+
* так и все ошибки SDK одним catch-блоком.
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class MaxError extends Error {
|
|
8
|
+
abstract readonly code: string;
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=MaxError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaxError.d.ts","sourceRoot":"","sources":["../../../../src/core/errors/MaxError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,8BAAsB,QAAS,SAAQ,KAAK;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM;CAO5B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MaxError } from "./MaxError.js";
|
|
2
|
+
/**
|
|
3
|
+
* Ошибка превышения лимита запросов (HTTP 429).
|
|
4
|
+
*
|
|
5
|
+
* Содержит информацию о времени до возможности повторного запроса.
|
|
6
|
+
* Разработчик может использовать retryAfter для реализации своей логики retry.
|
|
7
|
+
*/
|
|
8
|
+
export declare class RateLimitError extends MaxError {
|
|
9
|
+
readonly retryAfter: number;
|
|
10
|
+
readonly code = "RATE_LIMIT";
|
|
11
|
+
constructor(retryAfter: number, message?: string);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Ошибка аутентификации (HTTP 401).
|
|
15
|
+
*
|
|
16
|
+
* Невалидный или отсутствующий токен — бот не сможет работать.
|
|
17
|
+
*/
|
|
18
|
+
export declare class AuthError extends MaxError {
|
|
19
|
+
readonly code = "AUTH_ERROR";
|
|
20
|
+
constructor(message?: string);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Ошибка сети (таймаут, недоступность сервера и т.д.).
|
|
24
|
+
*
|
|
25
|
+
* Временная ошибка — можно повторить запрос.
|
|
26
|
+
*/
|
|
27
|
+
export declare class NetworkError extends MaxError {
|
|
28
|
+
readonly cause?: Error | undefined;
|
|
29
|
+
readonly code = "NETWORK_ERROR";
|
|
30
|
+
constructor(message: string, cause?: Error | undefined);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Ошибка API (HTTP 4xx/5xx кроме 401 и 429).
|
|
34
|
+
*
|
|
35
|
+
* Содержит HTTP-код и сообщение от сервера.
|
|
36
|
+
*/
|
|
37
|
+
export declare class ApiError extends MaxError {
|
|
38
|
+
readonly statusCode: number;
|
|
39
|
+
readonly apiCode?: string | undefined;
|
|
40
|
+
readonly code = "API_ERROR";
|
|
41
|
+
constructor(statusCode: number, message: string, apiCode?: string | undefined);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Ошибка валидации входных данных.
|
|
45
|
+
*
|
|
46
|
+
* Возникает при некорректных параметрах, переданных в методы SDK.
|
|
47
|
+
*/
|
|
48
|
+
export declare class ValidationError extends MaxError {
|
|
49
|
+
readonly code = "VALIDATION_ERROR";
|
|
50
|
+
constructor(message: string);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Ресурс не найден (HTTP 404).
|
|
54
|
+
*/
|
|
55
|
+
export declare class NotFoundError extends MaxError {
|
|
56
|
+
readonly code = "NOT_FOUND";
|
|
57
|
+
constructor(message?: string);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/core/errors/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,QAAQ;aAIxB,UAAU,EAAE,MAAM;IAHpC,QAAQ,CAAC,IAAI,gBAAgB;gBAGX,UAAU,EAAE,MAAM,EAClC,OAAO,SAA6D;CAIvE;AAED;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IACrC,QAAQ,CAAC,IAAI,gBAAgB;gBAEjB,OAAO,SAAgD;CAGpE;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,QAAQ;aAKtB,KAAK,CAAC,EAAE,KAAK;IAJ/B,QAAQ,CAAC,IAAI,mBAAmB;gBAG9B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAIhC;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,QAAQ;aAIlB,UAAU,EAAE,MAAM;aAElB,OAAO,CAAC,EAAE,MAAM;IALlC,QAAQ,CAAC,IAAI,eAAe;gBAGV,UAAU,EAAE,MAAM,EAClC,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,YAAA;CAInC;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,QAAQ,CAAC,IAAI,sBAAsB;gBAEvB,OAAO,EAAE,MAAM;CAG5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,eAAe;gBAEhB,OAAO,SAAqB;CAGzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,cAAc,EACd,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { HttpClientConfig, IHttpClient, RequestOptions } from "./interfaces.js";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP-клиент для взаимодействия с MAX Bot API.
|
|
4
|
+
*
|
|
5
|
+
* Инкапсулирует всю HTTP-логику: заголовки, таймауты, rate limiting.
|
|
6
|
+
* Разработчику не нужно думать о низкоуровневых деталях.
|
|
7
|
+
*/
|
|
8
|
+
export declare class HttpClient implements IHttpClient {
|
|
9
|
+
private readonly baseUrl;
|
|
10
|
+
private readonly token;
|
|
11
|
+
private readonly timeout;
|
|
12
|
+
private readonly rateLimiter;
|
|
13
|
+
constructor(config: HttpClientConfig);
|
|
14
|
+
get<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
15
|
+
post<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
16
|
+
put<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
17
|
+
patch<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
18
|
+
delete<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
19
|
+
private request;
|
|
20
|
+
private buildUrl;
|
|
21
|
+
/**
|
|
22
|
+
* Централизованная обработка ответов —
|
|
23
|
+
* единообразное поведение во всём SDK, легче отлаживать
|
|
24
|
+
*/
|
|
25
|
+
private handleResponse;
|
|
26
|
+
private parseRetryAfter;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=HttpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpClient.d.ts","sourceRoot":"","sources":["../../../../src/core/http/HttpClient.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;gBAElD,MAAM,EAAE,gBAAgB;IAa9B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YAIrD,OAAO;IAqDrB,OAAO,CAAC,QAAQ;IAiBhB;;;OAGG;YACW,cAAc;IAwC5B,OAAO,CAAC,eAAe;CAmBxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { IRateLimiter } from "../rate-limiter/RateLimiter.js";
|
|
2
|
+
/**
|
|
3
|
+
* Конфигурация HTTP-клиента
|
|
4
|
+
*/
|
|
5
|
+
export interface HttpClientConfig {
|
|
6
|
+
/** Базовый URL API */
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
/** Токен авторизации бота */
|
|
9
|
+
token: string;
|
|
10
|
+
/** Таймаут запроса в миллисекундах (по умолчанию 30000) */
|
|
11
|
+
timeout?: number;
|
|
12
|
+
/** Rate limiter для контроля частоты запросов */
|
|
13
|
+
rateLimiter: IRateLimiter;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Опции для отдельного запроса
|
|
17
|
+
*/
|
|
18
|
+
export interface RequestOptions {
|
|
19
|
+
/** Тело запроса */
|
|
20
|
+
body?: unknown;
|
|
21
|
+
/** Query-параметры */
|
|
22
|
+
params?: Record<string, string | number | boolean | undefined>;
|
|
23
|
+
/** Дополнительные заголовки */
|
|
24
|
+
headers?: Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Сигнал для отмены запроса.
|
|
27
|
+
* При передаче заменяет встроенный AbortSignal.timeout —
|
|
28
|
+
* внешний caller берёт управление таймаутом на себя.
|
|
29
|
+
*/
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Интерфейс HTTP-клиента для возможности замены реализации (например, для моков)
|
|
34
|
+
*/
|
|
35
|
+
export interface IHttpClient {
|
|
36
|
+
get<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
37
|
+
post<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
38
|
+
put<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
39
|
+
patch<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
40
|
+
delete<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/core/http/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,WAAW,EAAE,YAAY,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC/D,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Интерфейс rate limiter для возможности замены реализации
|
|
3
|
+
*/
|
|
4
|
+
export interface IRateLimiter {
|
|
5
|
+
/**
|
|
6
|
+
* Запрашивает разрешение на выполнение запроса.
|
|
7
|
+
* Возвращает Promise, который резолвится когда запрос можно выполнить.
|
|
8
|
+
*/
|
|
9
|
+
acquire(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Rate Limiter на основе алгоритма Token Bucket.
|
|
13
|
+
*
|
|
14
|
+
* Token Bucket позволяет накапливать "запас" запросов при простое,
|
|
15
|
+
* что даёт возможность burst-запросов без превышения среднего лимита.
|
|
16
|
+
*/
|
|
17
|
+
export declare class RateLimiter implements IRateLimiter {
|
|
18
|
+
private readonly maxTokens;
|
|
19
|
+
private readonly refillRate;
|
|
20
|
+
private tokens;
|
|
21
|
+
private lastRefill;
|
|
22
|
+
private readonly queue;
|
|
23
|
+
private processing;
|
|
24
|
+
/**
|
|
25
|
+
* @param maxTokens - Максимальное количество токенов (по умолчанию 30)
|
|
26
|
+
* @param refillRate - Скорость восполнения токенов в секунду (по умолчанию 30)
|
|
27
|
+
*/
|
|
28
|
+
constructor(maxTokens?: number, refillRate?: number);
|
|
29
|
+
acquire(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Восполняет токены пропорционально прошедшему времени
|
|
32
|
+
*/
|
|
33
|
+
private refill;
|
|
34
|
+
/**
|
|
35
|
+
* Планирует ровно один setTimeout для первого элемента очереди.
|
|
36
|
+
*
|
|
37
|
+
* Вместо слип-цикла (sleep → refill → check → sleep …) каждый элемент
|
|
38
|
+
* получает свой точный таймер: setTimeout срабатывает ровно в момент
|
|
39
|
+
* когда токен готов, без дополнительного ожидания.
|
|
40
|
+
*
|
|
41
|
+
* processing-флаг гарантирует единственный активный таймер на очередь —
|
|
42
|
+
* новые вызовы scheduleNext() от acquire() не создают лишних таймеров.
|
|
43
|
+
*/
|
|
44
|
+
private scheduleNext;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=RateLimiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../../../src/core/rate-limiter/RateLimiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAQD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,UAAU,CAAS;IAE3B;;;OAGG;gBACS,SAAS,SAAK,EAAE,UAAU,SAAK;IAcrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB9B;;OAEG;IACH,OAAO,CAAC,MAAM;IAYd;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;CAuCrB"}
|
|
@@ -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 @@
|
|
|
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,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,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,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 @@
|
|
|
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,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"}
|