@vraksha/bottender 1.6.1-beta.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/README.md +161 -0
- package/bin/cli.js +4 -0
- package/dist/bot/Bot.d.ts +44 -0
- package/dist/bot/Bot.d.ts.map +1 -0
- package/dist/bot/Bot.js +226 -0
- package/dist/bot/Bot.js.map +1 -0
- package/dist/bot/Connector.d.ts +23 -0
- package/dist/bot/Connector.d.ts.map +1 -0
- package/dist/bot/Connector.js +3 -0
- package/dist/bot/Connector.js.map +1 -0
- package/dist/bottender.d.ts +7 -0
- package/dist/bottender.d.ts.map +1 -0
- package/dist/bottender.js +15 -0
- package/dist/bottender.js.map +1 -0
- package/dist/browser.d.ts +9 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +23 -0
- package/dist/browser.js.map +1 -0
- package/dist/cache/CacheStore.d.ts +12 -0
- package/dist/cache/CacheStore.d.ts.map +1 -0
- package/dist/cache/CacheStore.js +3 -0
- package/dist/cache/CacheStore.js.map +1 -0
- package/dist/cache/MemoryCacheStore.d.ts +13 -0
- package/dist/cache/MemoryCacheStore.d.ts.map +1 -0
- package/dist/cache/MemoryCacheStore.js +59 -0
- package/dist/cache/MemoryCacheStore.js.map +1 -0
- package/dist/cache/RedisCacheStore.d.ts +18 -0
- package/dist/cache/RedisCacheStore.d.ts.map +1 -0
- package/dist/cache/RedisCacheStore.js +79 -0
- package/dist/cache/RedisCacheStore.js.map +1 -0
- package/dist/chain.d.ts +5 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +27 -0
- package/dist/chain.js.map +1 -0
- package/dist/cli/index.d.ts +11 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +99 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/providers/index.d.ts +37 -0
- package/dist/cli/providers/index.d.ts.map +1 -0
- package/dist/cli/providers/index.js +18 -0
- package/dist/cli/providers/index.js.map +1 -0
- package/dist/cli/providers/line/help.d.ts +3 -0
- package/dist/cli/providers/line/help.d.ts.map +1 -0
- package/dist/cli/providers/line/help.js +9 -0
- package/dist/cli/providers/line/help.js.map +1 -0
- package/dist/cli/providers/line/index.d.ts +7 -0
- package/dist/cli/providers/line/index.d.ts.map +1 -0
- package/dist/cli/providers/line/index.js +10 -0
- package/dist/cli/providers/line/index.js.map +1 -0
- package/dist/cli/providers/messenger/help.d.ts +3 -0
- package/dist/cli/providers/messenger/help.d.ts.map +1 -0
- package/dist/cli/providers/messenger/help.js +31 -0
- package/dist/cli/providers/messenger/help.js.map +1 -0
- package/dist/cli/providers/messenger/index.d.ts +10 -0
- package/dist/cli/providers/messenger/index.d.ts.map +1 -0
- package/dist/cli/providers/messenger/index.js +19 -0
- package/dist/cli/providers/messenger/index.js.map +1 -0
- package/dist/cli/providers/messenger/persona.d.ts +7 -0
- package/dist/cli/providers/messenger/persona.d.ts.map +1 -0
- package/dist/cli/providers/messenger/persona.js +235 -0
- package/dist/cli/providers/messenger/persona.js.map +1 -0
- package/dist/cli/providers/messenger/profile.d.ts +9 -0
- package/dist/cli/providers/messenger/profile.d.ts.map +1 -0
- package/dist/cli/providers/messenger/profile.js +233 -0
- package/dist/cli/providers/messenger/profile.js.map +1 -0
- package/dist/cli/providers/messenger/webhook.d.ts +4 -0
- package/dist/cli/providers/messenger/webhook.d.ts.map +1 -0
- package/dist/cli/providers/messenger/webhook.js +165 -0
- package/dist/cli/providers/messenger/webhook.js.map +1 -0
- package/dist/cli/providers/sh/dev.d.ts +4 -0
- package/dist/cli/providers/sh/dev.d.ts.map +1 -0
- package/dist/cli/providers/sh/dev.js +79 -0
- package/dist/cli/providers/sh/dev.js.map +1 -0
- package/dist/cli/providers/sh/help.d.ts +3 -0
- package/dist/cli/providers/sh/help.d.ts.map +1 -0
- package/dist/cli/providers/sh/help.js +42 -0
- package/dist/cli/providers/sh/help.js.map +1 -0
- package/dist/cli/providers/sh/index.d.ts +10 -0
- package/dist/cli/providers/sh/index.d.ts.map +1 -0
- package/dist/cli/providers/sh/index.js +19 -0
- package/dist/cli/providers/sh/index.js.map +1 -0
- package/dist/cli/providers/sh/init.d.ts +3 -0
- package/dist/cli/providers/sh/init.d.ts.map +1 -0
- package/dist/cli/providers/sh/init.js +22 -0
- package/dist/cli/providers/sh/init.js.map +1 -0
- package/dist/cli/providers/sh/start.d.ts +4 -0
- package/dist/cli/providers/sh/start.d.ts.map +1 -0
- package/dist/cli/providers/sh/start.js +51 -0
- package/dist/cli/providers/sh/start.js.map +1 -0
- package/dist/cli/providers/sh/utils/argCommon.d.ts +8 -0
- package/dist/cli/providers/sh/utils/argCommon.d.ts.map +1 -0
- package/dist/cli/providers/sh/utils/argCommon.js +10 -0
- package/dist/cli/providers/sh/utils/argCommon.js.map +1 -0
- package/dist/cli/providers/sh/utils/getArgs.d.ts +9 -0
- package/dist/cli/providers/sh/utils/getArgs.d.ts.map +1 -0
- package/dist/cli/providers/sh/utils/getArgs.js +10 -0
- package/dist/cli/providers/sh/utils/getArgs.js.map +1 -0
- package/dist/cli/providers/sh/utils/getSubArgs.d.ts +6 -0
- package/dist/cli/providers/sh/utils/getSubArgs.d.ts.map +1 -0
- package/dist/cli/providers/sh/utils/getSubArgs.js +23 -0
- package/dist/cli/providers/sh/utils/getSubArgs.js.map +1 -0
- package/dist/cli/providers/telegram/help.d.ts +3 -0
- package/dist/cli/providers/telegram/help.d.ts.map +1 -0
- package/dist/cli/providers/telegram/help.js +34 -0
- package/dist/cli/providers/telegram/help.js.map +1 -0
- package/dist/cli/providers/telegram/index.d.ts +8 -0
- package/dist/cli/providers/telegram/index.d.ts.map +1 -0
- package/dist/cli/providers/telegram/index.js +13 -0
- package/dist/cli/providers/telegram/index.js.map +1 -0
- package/dist/cli/providers/telegram/webhook.d.ts +6 -0
- package/dist/cli/providers/telegram/webhook.d.ts.map +1 -0
- package/dist/cli/providers/telegram/webhook.js +149 -0
- package/dist/cli/providers/telegram/webhook.js.map +1 -0
- package/dist/cli/providers/viber/help.d.ts +3 -0
- package/dist/cli/providers/viber/help.d.ts.map +1 -0
- package/dist/cli/providers/viber/help.js +33 -0
- package/dist/cli/providers/viber/help.js.map +1 -0
- package/dist/cli/providers/viber/index.d.ts +8 -0
- package/dist/cli/providers/viber/index.d.ts.map +1 -0
- package/dist/cli/providers/viber/index.js +13 -0
- package/dist/cli/providers/viber/index.js.map +1 -0
- package/dist/cli/providers/viber/webhook.d.ts +5 -0
- package/dist/cli/providers/viber/webhook.d.ts.map +1 -0
- package/dist/cli/providers/viber/webhook.js +122 -0
- package/dist/cli/providers/viber/webhook.js.map +1 -0
- package/dist/console/ConsoleBot.d.ts +17 -0
- package/dist/console/ConsoleBot.d.ts.map +1 -0
- package/dist/console/ConsoleBot.js +80 -0
- package/dist/console/ConsoleBot.js.map +1 -0
- package/dist/console/ConsoleClient.d.ts +4 -0
- package/dist/console/ConsoleClient.d.ts.map +1 -0
- package/dist/console/ConsoleClient.js +3 -0
- package/dist/console/ConsoleClient.js.map +1 -0
- package/dist/console/ConsoleConnector.d.ts +35 -0
- package/dist/console/ConsoleConnector.d.ts.map +1 -0
- package/dist/console/ConsoleConnector.js +62 -0
- package/dist/console/ConsoleConnector.js.map +1 -0
- package/dist/console/ConsoleContext.d.ts +28 -0
- package/dist/console/ConsoleContext.d.ts.map +1 -0
- package/dist/console/ConsoleContext.js +66 -0
- package/dist/console/ConsoleContext.js.map +1 -0
- package/dist/console/ConsoleEvent.d.ts +24 -0
- package/dist/console/ConsoleEvent.d.ts.map +1 -0
- package/dist/console/ConsoleEvent.js +36 -0
- package/dist/console/ConsoleEvent.js.map +1 -0
- package/dist/context/Context.d.ts +52 -0
- package/dist/context/Context.d.ts.map +1 -0
- package/dist/context/Context.js +118 -0
- package/dist/context/Context.js.map +1 -0
- package/dist/context/Event.d.ts +8 -0
- package/dist/context/Event.d.ts.map +1 -0
- package/dist/context/Event.js +3 -0
- package/dist/context/Event.js.map +1 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -0
- package/dist/initializeServer.d.ts +10 -0
- package/dist/initializeServer.d.ts.map +1 -0
- package/dist/initializeServer.js +98 -0
- package/dist/initializeServer.js.map +1 -0
- package/dist/line/LineBot.d.ts +15 -0
- package/dist/line/LineBot.d.ts.map +1 -0
- package/dist/line/LineBot.js +27 -0
- package/dist/line/LineBot.js.map +1 -0
- package/dist/line/LineConnector.d.ts +92 -0
- package/dist/line/LineConnector.d.ts.map +1 -0
- package/dist/line/LineConnector.js +283 -0
- package/dist/line/LineConnector.js.map +1 -0
- package/dist/line/LineContext.d.ts +135 -0
- package/dist/line/LineContext.d.ts.map +1 -0
- package/dist/line/LineContext.js +419 -0
- package/dist/line/LineContext.js.map +1 -0
- package/dist/line/LineEvent.d.ts +61 -0
- package/dist/line/LineEvent.d.ts.map +1 -0
- package/dist/line/LineEvent.js +217 -0
- package/dist/line/LineEvent.js.map +1 -0
- package/dist/line/LineTypes.d.ts +199 -0
- package/dist/line/LineTypes.d.ts.map +1 -0
- package/dist/line/LineTypes.js +18 -0
- package/dist/line/LineTypes.js.map +1 -0
- package/dist/line/routes.d.ts +33 -0
- package/dist/line/routes.d.ts.map +1 -0
- package/dist/line/routes.js +89 -0
- package/dist/line/routes.js.map +1 -0
- package/dist/messenger/FacebookBaseConnector.d.ts +66 -0
- package/dist/messenger/FacebookBaseConnector.d.ts.map +1 -0
- package/dist/messenger/FacebookBaseConnector.js +118 -0
- package/dist/messenger/FacebookBaseConnector.js.map +1 -0
- package/dist/messenger/MessengerBot.d.ts +15 -0
- package/dist/messenger/MessengerBot.d.ts.map +1 -0
- package/dist/messenger/MessengerBot.js +27 -0
- package/dist/messenger/MessengerBot.js.map +1 -0
- package/dist/messenger/MessengerConnector.d.ts +37 -0
- package/dist/messenger/MessengerConnector.d.ts.map +1 -0
- package/dist/messenger/MessengerConnector.js +204 -0
- package/dist/messenger/MessengerConnector.js.map +1 -0
- package/dist/messenger/MessengerContext.d.ts +114 -0
- package/dist/messenger/MessengerContext.d.ts.map +1 -0
- package/dist/messenger/MessengerContext.js +547 -0
- package/dist/messenger/MessengerContext.js.map +1 -0
- package/dist/messenger/MessengerEvent.d.ts +76 -0
- package/dist/messenger/MessengerEvent.d.ts.map +1 -0
- package/dist/messenger/MessengerEvent.js +380 -0
- package/dist/messenger/MessengerEvent.js.map +1 -0
- package/dist/messenger/MessengerTypes.d.ts +292 -0
- package/dist/messenger/MessengerTypes.d.ts.map +1 -0
- package/dist/messenger/MessengerTypes.js +18 -0
- package/dist/messenger/MessengerTypes.js.map +1 -0
- package/dist/messenger/routes.d.ts +39 -0
- package/dist/messenger/routes.d.ts.map +1 -0
- package/dist/messenger/routes.js +109 -0
- package/dist/messenger/routes.js.map +1 -0
- package/dist/plugins/withTyping.d.ts +6 -0
- package/dist/plugins/withTyping.d.ts.map +1 -0
- package/dist/plugins/withTyping.js +135 -0
- package/dist/plugins/withTyping.js.map +1 -0
- package/dist/router/index.d.ts +39 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +166 -0
- package/dist/router/index.js.map +1 -0
- package/dist/server/DevServer.d.ts +6 -0
- package/dist/server/DevServer.d.ts.map +1 -0
- package/dist/server/DevServer.js +27 -0
- package/dist/server/DevServer.js.map +1 -0
- package/dist/server/Server.d.ts +26 -0
- package/dist/server/Server.d.ts.map +1 -0
- package/dist/server/Server.js +86 -0
- package/dist/server/Server.js.map +1 -0
- package/dist/session/CacheBasedSessionStore.d.ts +14 -0
- package/dist/session/CacheBasedSessionStore.d.ts.map +1 -0
- package/dist/session/CacheBasedSessionStore.js +44 -0
- package/dist/session/CacheBasedSessionStore.js.map +1 -0
- package/dist/session/FileSessionStore.d.ts +20 -0
- package/dist/session/FileSessionStore.d.ts.map +1 -0
- package/dist/session/FileSessionStore.js +118 -0
- package/dist/session/FileSessionStore.js.map +1 -0
- package/dist/session/MemorySessionStore.d.ts +10 -0
- package/dist/session/MemorySessionStore.d.ts.map +1 -0
- package/dist/session/MemorySessionStore.js +25 -0
- package/dist/session/MemorySessionStore.js.map +1 -0
- package/dist/session/MongoSessionStore.d.ts +23 -0
- package/dist/session/MongoSessionStore.d.ts.map +1 -0
- package/dist/session/MongoSessionStore.js +97 -0
- package/dist/session/MongoSessionStore.js.map +1 -0
- package/dist/session/RedisSessionStore.d.ts +14 -0
- package/dist/session/RedisSessionStore.d.ts.map +1 -0
- package/dist/session/RedisSessionStore.js +15 -0
- package/dist/session/RedisSessionStore.js.map +1 -0
- package/dist/session/Session.d.ts +3 -0
- package/dist/session/Session.d.ts.map +1 -0
- package/dist/session/Session.js +3 -0
- package/dist/session/Session.js.map +1 -0
- package/dist/session/SessionStore.d.ts +10 -0
- package/dist/session/SessionStore.d.ts.map +1 -0
- package/dist/session/SessionStore.js +3 -0
- package/dist/session/SessionStore.js.map +1 -0
- package/dist/shared/getBottenderConfig.d.ts +5 -0
- package/dist/shared/getBottenderConfig.d.ts.map +1 -0
- package/dist/shared/getBottenderConfig.js +24 -0
- package/dist/shared/getBottenderConfig.js.map +1 -0
- package/dist/shared/getChannelBotAndRequestContext.d.ts +10 -0
- package/dist/shared/getChannelBotAndRequestContext.d.ts.map +1 -0
- package/dist/shared/getChannelBotAndRequestContext.js +41 -0
- package/dist/shared/getChannelBotAndRequestContext.js.map +1 -0
- package/dist/shared/getChannelBots.d.ts +6 -0
- package/dist/shared/getChannelBots.d.ts.map +1 -0
- package/dist/shared/getChannelBots.js +84 -0
- package/dist/shared/getChannelBots.js.map +1 -0
- package/dist/shared/getChannelConfig.d.ts +5 -0
- package/dist/shared/getChannelConfig.d.ts.map +1 -0
- package/dist/shared/getChannelConfig.js +28 -0
- package/dist/shared/getChannelConfig.js.map +1 -0
- package/dist/shared/getChannelSchema.d.ts +4 -0
- package/dist/shared/getChannelSchema.d.ts.map +1 -0
- package/dist/shared/getChannelSchema.js +110 -0
- package/dist/shared/getChannelSchema.js.map +1 -0
- package/dist/shared/getClient.d.ts +11 -0
- package/dist/shared/getClient.d.ts.map +1 -0
- package/dist/shared/getClient.js +36 -0
- package/dist/shared/getClient.js.map +1 -0
- package/dist/shared/getConsoleBot.d.ts +5 -0
- package/dist/shared/getConsoleBot.d.ts.map +1 -0
- package/dist/shared/getConsoleBot.js +43 -0
- package/dist/shared/getConsoleBot.js.map +1 -0
- package/dist/shared/getSessionStore.d.ts +5 -0
- package/dist/shared/getSessionStore.d.ts.map +1 -0
- package/dist/shared/getSessionStore.js +41 -0
- package/dist/shared/getSessionStore.js.map +1 -0
- package/dist/shared/getWebhookFromNgrok.d.ts +2 -0
- package/dist/shared/getWebhookFromNgrok.d.ts.map +1 -0
- package/dist/shared/getWebhookFromNgrok.js +33 -0
- package/dist/shared/getWebhookFromNgrok.js.map +1 -0
- package/dist/shared/log.d.ts +6 -0
- package/dist/shared/log.d.ts.map +1 -0
- package/dist/shared/log.js +29 -0
- package/dist/shared/log.js.map +1 -0
- package/dist/slack/SlackBot.d.ts +22 -0
- package/dist/slack/SlackBot.d.ts.map +1 -0
- package/dist/slack/SlackBot.js +30 -0
- package/dist/slack/SlackBot.js.map +1 -0
- package/dist/slack/SlackConnector.d.ts +72 -0
- package/dist/slack/SlackConnector.d.ts.map +1 -0
- package/dist/slack/SlackConnector.js +302 -0
- package/dist/slack/SlackConnector.js.map +1 -0
- package/dist/slack/SlackContext.d.ts +65 -0
- package/dist/slack/SlackContext.d.ts.map +1 -0
- package/dist/slack/SlackContext.js +131 -0
- package/dist/slack/SlackContext.js.map +1 -0
- package/dist/slack/SlackEvent.d.ts +28 -0
- package/dist/slack/SlackEvent.d.ts.map +1 -0
- package/dist/slack/SlackEvent.js +171 -0
- package/dist/slack/SlackEvent.js.map +1 -0
- package/dist/slack/SlackTypes.d.ts +79 -0
- package/dist/slack/SlackTypes.d.ts.map +1 -0
- package/dist/slack/SlackTypes.js +18 -0
- package/dist/slack/SlackTypes.js.map +1 -0
- package/dist/slack/routes.d.ts +24 -0
- package/dist/slack/routes.d.ts.map +1 -0
- package/dist/slack/routes.js +25 -0
- package/dist/slack/routes.js.map +1 -0
- package/dist/telegram/TelegramBot.d.ts +20 -0
- package/dist/telegram/TelegramBot.d.ts.map +1 -0
- package/dist/telegram/TelegramBot.js +68 -0
- package/dist/telegram/TelegramBot.js.map +1 -0
- package/dist/telegram/TelegramConnector.d.ts +42 -0
- package/dist/telegram/TelegramConnector.d.ts.map +1 -0
- package/dist/telegram/TelegramConnector.js +191 -0
- package/dist/telegram/TelegramConnector.js.map +1 -0
- package/dist/telegram/TelegramContext.d.ts +64 -0
- package/dist/telegram/TelegramContext.d.ts.map +1 -0
- package/dist/telegram/TelegramContext.js +742 -0
- package/dist/telegram/TelegramContext.js.map +1 -0
- package/dist/telegram/TelegramEvent.d.ts +61 -0
- package/dist/telegram/TelegramEvent.d.ts.map +1 -0
- package/dist/telegram/TelegramEvent.js +246 -0
- package/dist/telegram/TelegramEvent.js.map +1 -0
- package/dist/telegram/TelegramTypes.d.ts +27 -0
- package/dist/telegram/TelegramTypes.d.ts.map +1 -0
- package/dist/telegram/TelegramTypes.js +18 -0
- package/dist/telegram/TelegramTypes.js.map +1 -0
- package/dist/telegram/routes.d.ts +25 -0
- package/dist/telegram/routes.d.ts.map +1 -0
- package/dist/telegram/routes.js +53 -0
- package/dist/telegram/routes.js.map +1 -0
- package/dist/test-utils/ContextSimulator.d.ts +196 -0
- package/dist/test-utils/ContextSimulator.d.ts.map +1 -0
- package/dist/test-utils/ContextSimulator.js +237 -0
- package/dist/test-utils/ContextSimulator.js.map +1 -0
- package/dist/test-utils/SimulatedContext.d.ts +9 -0
- package/dist/test-utils/SimulatedContext.d.ts.map +1 -0
- package/dist/test-utils/SimulatedContext.js +18 -0
- package/dist/test-utils/SimulatedContext.js.map +1 -0
- package/dist/test-utils/index.d.ts +2 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +9 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/types.d.ts +107 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/viber/ViberBot.d.ts +15 -0
- package/dist/viber/ViberBot.d.ts.map +1 -0
- package/dist/viber/ViberBot.js +27 -0
- package/dist/viber/ViberBot.js.map +1 -0
- package/dist/viber/ViberConnector.d.ts +62 -0
- package/dist/viber/ViberConnector.d.ts.map +1 -0
- package/dist/viber/ViberConnector.js +152 -0
- package/dist/viber/ViberConnector.js.map +1 -0
- package/dist/viber/ViberContext.d.ts +20 -0
- package/dist/viber/ViberContext.d.ts.map +1 -0
- package/dist/viber/ViberContext.js +132 -0
- package/dist/viber/ViberContext.js.map +1 -0
- package/dist/viber/ViberEvent.d.ts +39 -0
- package/dist/viber/ViberEvent.d.ts.map +1 -0
- package/dist/viber/ViberEvent.js +150 -0
- package/dist/viber/ViberEvent.js.map +1 -0
- package/dist/viber/ViberTypes.d.ts +82 -0
- package/dist/viber/ViberTypes.d.ts.map +1 -0
- package/dist/viber/ViberTypes.js +18 -0
- package/dist/viber/ViberTypes.js.map +1 -0
- package/dist/viber/routes.d.ts +21 -0
- package/dist/viber/routes.d.ts.map +1 -0
- package/dist/viber/routes.js +37 -0
- package/dist/viber/routes.js.map +1 -0
- package/dist/whatsapp/TwilioClient.d.ts +55 -0
- package/dist/whatsapp/TwilioClient.d.ts.map +1 -0
- package/dist/whatsapp/TwilioClient.js +66 -0
- package/dist/whatsapp/TwilioClient.js.map +1 -0
- package/dist/whatsapp/WhatsappBot.d.ts +15 -0
- package/dist/whatsapp/WhatsappBot.d.ts.map +1 -0
- package/dist/whatsapp/WhatsappBot.js +27 -0
- package/dist/whatsapp/WhatsappBot.js.map +1 -0
- package/dist/whatsapp/WhatsappConnector.d.ts +64 -0
- package/dist/whatsapp/WhatsappConnector.d.ts.map +1 -0
- package/dist/whatsapp/WhatsappConnector.js +111 -0
- package/dist/whatsapp/WhatsappConnector.js.map +1 -0
- package/dist/whatsapp/WhatsappContext.d.ts +17 -0
- package/dist/whatsapp/WhatsappContext.d.ts.map +1 -0
- package/dist/whatsapp/WhatsappContext.js +30 -0
- package/dist/whatsapp/WhatsappContext.js.map +1 -0
- package/dist/whatsapp/WhatsappEvent.d.ts +25 -0
- package/dist/whatsapp/WhatsappEvent.d.ts.map +1 -0
- package/dist/whatsapp/WhatsappEvent.js +60 -0
- package/dist/whatsapp/WhatsappEvent.js.map +1 -0
- package/dist/whatsapp/WhatsappTypes.d.ts +59 -0
- package/dist/whatsapp/WhatsappTypes.d.ts.map +1 -0
- package/dist/whatsapp/WhatsappTypes.js +3 -0
- package/dist/whatsapp/WhatsappTypes.js.map +1 -0
- package/dist/whatsapp/routes.d.ts +20 -0
- package/dist/whatsapp/routes.d.ts.map +1 -0
- package/dist/whatsapp/routes.js +33 -0
- package/dist/whatsapp/routes.js.map +1 -0
- package/dist/whatsapp-by-meta/MetaClient.d.ts +297 -0
- package/dist/whatsapp-by-meta/MetaClient.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/MetaClient.js +74 -0
- package/dist/whatsapp-by-meta/MetaClient.js.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaBot.d.ts +15 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaBot.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaBot.js +27 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaBot.js.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaConnector.d.ts +67 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaConnector.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaConnector.js +130 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaConnector.js.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaContext.d.ts +45 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaContext.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaContext.js +49 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaContext.js.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaTypes.d.ts +236 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaTypes.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaTypes.js +3 -0
- package/dist/whatsapp-by-meta/WhatsappByMetaTypes.js.map +1 -0
- package/dist/whatsapp-by-meta/events/BaseEvent.d.ts +26 -0
- package/dist/whatsapp-by-meta/events/BaseEvent.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/events/BaseEvent.js +61 -0
- package/dist/whatsapp-by-meta/events/BaseEvent.js.map +1 -0
- package/dist/whatsapp-by-meta/routes.d.ts +20 -0
- package/dist/whatsapp-by-meta/routes.d.ts.map +1 -0
- package/dist/whatsapp-by-meta/routes.js +33 -0
- package/dist/whatsapp-by-meta/routes.js.map +1 -0
- package/dist/withProps.d.ts +5 -0
- package/dist/withProps.d.ts.map +1 -0
- package/dist/withProps.js +16 -0
- package/dist/withProps.js.map +1 -0
- package/package.json +110 -0
- package/router.d.ts +1 -0
- package/router.js +2 -0
- package/test-utils.js +2 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
16
|
+
const TwilioClient_1 = __importDefault(require("./TwilioClient"));
|
|
17
|
+
const WhatsappContext_1 = __importDefault(require("./WhatsappContext"));
|
|
18
|
+
const WhatsappEvent_1 = __importDefault(require("./WhatsappEvent"));
|
|
19
|
+
function getExpectedTwilioSignature(authToken, url, params = {}) {
|
|
20
|
+
const data = Object.keys(params)
|
|
21
|
+
.sort()
|
|
22
|
+
.reduce((acc, key) => acc + key + params[key], url);
|
|
23
|
+
return crypto_1.default
|
|
24
|
+
.createHmac('sha1', authToken)
|
|
25
|
+
.update(Buffer.from(data, 'utf-8'))
|
|
26
|
+
.digest('base64');
|
|
27
|
+
}
|
|
28
|
+
class WhatsappConnector {
|
|
29
|
+
constructor(options) {
|
|
30
|
+
if ('client' in options) {
|
|
31
|
+
this._client = options.client;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const { accountSid, authToken, phoneNumber, origin } = options;
|
|
35
|
+
this._client = new TwilioClient_1.default({
|
|
36
|
+
accountSid,
|
|
37
|
+
authToken,
|
|
38
|
+
phoneNumber,
|
|
39
|
+
origin,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
get platform() {
|
|
44
|
+
return 'whatsapp';
|
|
45
|
+
}
|
|
46
|
+
get client() {
|
|
47
|
+
return this._client;
|
|
48
|
+
}
|
|
49
|
+
getUniqueSessionKey(body) {
|
|
50
|
+
return body.smsStatus === 'received' ? body.from : body.to;
|
|
51
|
+
}
|
|
52
|
+
updateSession(session, body) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const userId = body.smsStatus === 'received' ? body.from : body.to;
|
|
55
|
+
session.user = {
|
|
56
|
+
_updatedAt: new Date().toISOString(),
|
|
57
|
+
id: userId,
|
|
58
|
+
};
|
|
59
|
+
Object.freeze(session.user);
|
|
60
|
+
Object.defineProperty(session, 'user', {
|
|
61
|
+
configurable: false,
|
|
62
|
+
enumerable: true,
|
|
63
|
+
writable: false,
|
|
64
|
+
value: session.user,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
mapRequestToEvents(body) {
|
|
69
|
+
return [new WhatsappEvent_1.default(body)];
|
|
70
|
+
}
|
|
71
|
+
createContext(params) {
|
|
72
|
+
return new WhatsappContext_1.default(Object.assign(Object.assign({}, params), { client: this._client }));
|
|
73
|
+
}
|
|
74
|
+
verifySignature({ body, url, headers, }) {
|
|
75
|
+
if (!headers['x-twilio-signature']) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const authToken = this._client.authToken;
|
|
79
|
+
const bufferFromActualSignature = Buffer.from(headers['x-twilio-signature']);
|
|
80
|
+
const bufferFromExpectedSignature = Buffer.from(getExpectedTwilioSignature(authToken, url, body));
|
|
81
|
+
if (bufferFromActualSignature.length !== bufferFromExpectedSignature.length) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return crypto_1.default.timingSafeEqual(bufferFromActualSignature, bufferFromExpectedSignature);
|
|
85
|
+
}
|
|
86
|
+
preprocess({ url, headers, rawBody, body }) {
|
|
87
|
+
if (this.verifySignature({ body, url, headers })) {
|
|
88
|
+
return {
|
|
89
|
+
shouldNext: true,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const error = {
|
|
93
|
+
message: 'WhatsApp Signature Validation Failed!',
|
|
94
|
+
request: {
|
|
95
|
+
rawBody,
|
|
96
|
+
headers: {
|
|
97
|
+
'x-twilio-signature': headers['x-twilio-signature'],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
shouldNext: false,
|
|
103
|
+
response: {
|
|
104
|
+
status: 400,
|
|
105
|
+
body: { error },
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.default = WhatsappConnector;
|
|
111
|
+
//# sourceMappingURL=WhatsappConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappConnector.js","sourceRoot":"","sources":["../../src/whatsapp/WhatsappConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Context from '../context/Context';
|
|
2
|
+
import TwilioClient from './TwilioClient';
|
|
3
|
+
import WhatsappEvent from './WhatsappEvent';
|
|
4
|
+
declare class WhatsappContext extends Context<TwilioClient, WhatsappEvent> {
|
|
5
|
+
get platform(): 'whatsapp';
|
|
6
|
+
sendText(text: string, options?: {
|
|
7
|
+
maxPrice?: number;
|
|
8
|
+
provideFeedback?: boolean;
|
|
9
|
+
validityPeriod?: number;
|
|
10
|
+
forceDelivery?: boolean;
|
|
11
|
+
smartEncoded?: boolean;
|
|
12
|
+
persistentAction?: string[];
|
|
13
|
+
mediaUrl?: string[];
|
|
14
|
+
}): Promise<any>;
|
|
15
|
+
}
|
|
16
|
+
export default WhatsappContext;
|
|
17
|
+
//# sourceMappingURL=WhatsappContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappContext.d.ts","sourceRoot":"","sources":["../../src/whatsapp/WhatsappContext.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAEzC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,cAAM,eAAgB,SAAQ,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC;IAKhE,IAAI,QAAQ,IAAI,UAAU,CAEzB;IAMK,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,GACA,OAAO,CAAC,GAAG,CAAC;CAYhB;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const Context_1 = __importDefault(require("../context/Context"));
|
|
16
|
+
class WhatsappContext extends Context_1.default {
|
|
17
|
+
get platform() {
|
|
18
|
+
return 'whatsapp';
|
|
19
|
+
}
|
|
20
|
+
sendText(text, options) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const to = this._event.rawEvent.smsStatus === 'received'
|
|
23
|
+
? this._event.rawEvent.from
|
|
24
|
+
: this._event.rawEvent.to;
|
|
25
|
+
return this._client.createMessage(Object.assign({ to, body: text }, options));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.default = WhatsappContext;
|
|
30
|
+
//# sourceMappingURL=WhatsappContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappContext.js","sourceRoot":"","sources":["../../src/whatsapp/WhatsappContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iEAAyC;AAKzC,MAAM,eAAgB,SAAQ,iBAAoC;IAKhE,IAAI,QAAQ;QACV,OAAO,UAAU,CAAC;IACpB,CAAC;IAMK,QAAQ,CACZ,IAAY,EACZ,OAQC;;YAED,MAAM,EAAE,GACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU;gBAC3C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;gBAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE9B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,iBAC/B,EAAE,EACF,IAAI,EAAE,IAAI,IACP,OAAO,EACV,CAAC;QACL,CAAC;KAAA;CACF;AAED,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Event } from '../context/Event';
|
|
2
|
+
import { MessageDelivered, MessageRead, MessageReceived, MessageSent, WhatsappRawEvent } from './WhatsappTypes';
|
|
3
|
+
export default class WhatsappEvent implements Event<WhatsappRawEvent> {
|
|
4
|
+
_rawEvent: WhatsappRawEvent;
|
|
5
|
+
constructor(rawEvent: WhatsappRawEvent);
|
|
6
|
+
get rawEvent(): WhatsappRawEvent;
|
|
7
|
+
get isMessage(): boolean;
|
|
8
|
+
get message(): MessageReceived | null;
|
|
9
|
+
get isText(): boolean;
|
|
10
|
+
get text(): string | null;
|
|
11
|
+
get isMedia(): boolean;
|
|
12
|
+
get media(): {
|
|
13
|
+
contentType: string;
|
|
14
|
+
url: string;
|
|
15
|
+
} | null;
|
|
16
|
+
get isReceived(): boolean;
|
|
17
|
+
get received(): MessageReceived | null;
|
|
18
|
+
get isSent(): boolean;
|
|
19
|
+
get sent(): MessageSent | null;
|
|
20
|
+
get isDelivered(): boolean;
|
|
21
|
+
get delivered(): MessageDelivered | null;
|
|
22
|
+
get isRead(): boolean;
|
|
23
|
+
get read(): MessageRead | null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=WhatsappEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappEvent.d.ts","sourceRoot":"","sources":["../../src/whatsapp/WhatsappEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAEL,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,WAAW,EACX,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,KAAK,CAAC,gBAAgB,CAAC;IACnE,SAAS,EAAE,gBAAgB,CAAC;gBAEhB,QAAQ,EAAE,gBAAgB;IAQtC,IAAI,QAAQ,IAAI,gBAAgB,CAE/B;IAMD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAMD,IAAI,OAAO,IAAI,eAAe,GAAG,IAAI,CAEpC;IAMD,IAAI,MAAM,IAAI,OAAO,CAIpB;IAMD,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAMD,IAAI,OAAO,IAAI,OAAO,CAIrB;IAMD,IAAI,KAAK,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CASvD;IAMD,IAAI,UAAU,IAAI,OAAO,CAExB;IAMD,IAAI,QAAQ,IAAI,eAAe,GAAG,IAAI,CAErC;IAMD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAMD,IAAI,IAAI,IAAI,WAAW,GAAG,IAAI,CAE7B;IAMD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAMD,IAAI,SAAS,IAAI,gBAAgB,GAAG,IAAI,CAEvC;IAMD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAMD,IAAI,IAAI,IAAI,WAAW,GAAG,IAAI,CAE7B;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class WhatsappEvent {
|
|
4
|
+
constructor(rawEvent) {
|
|
5
|
+
this._rawEvent = rawEvent;
|
|
6
|
+
}
|
|
7
|
+
get rawEvent() {
|
|
8
|
+
return this._rawEvent;
|
|
9
|
+
}
|
|
10
|
+
get isMessage() {
|
|
11
|
+
return this._rawEvent.smsStatus === 'received';
|
|
12
|
+
}
|
|
13
|
+
get message() {
|
|
14
|
+
return this.isMessage ? this._rawEvent : null;
|
|
15
|
+
}
|
|
16
|
+
get isText() {
|
|
17
|
+
return (this._rawEvent.smsStatus === 'received' && this._rawEvent.numMedia === '0');
|
|
18
|
+
}
|
|
19
|
+
get text() {
|
|
20
|
+
return this._rawEvent.body || null;
|
|
21
|
+
}
|
|
22
|
+
get isMedia() {
|
|
23
|
+
return (this._rawEvent.smsStatus === 'received' && this._rawEvent.numMedia === '1');
|
|
24
|
+
}
|
|
25
|
+
get media() {
|
|
26
|
+
if (!this.isMedia)
|
|
27
|
+
return null;
|
|
28
|
+
const rawEvent = this._rawEvent;
|
|
29
|
+
return {
|
|
30
|
+
contentType: rawEvent.mediaContentType0,
|
|
31
|
+
url: rawEvent.mediaUrl0,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
get isReceived() {
|
|
35
|
+
return this._rawEvent.smsStatus === 'received';
|
|
36
|
+
}
|
|
37
|
+
get received() {
|
|
38
|
+
return this.isReceived ? this._rawEvent : null;
|
|
39
|
+
}
|
|
40
|
+
get isSent() {
|
|
41
|
+
return this._rawEvent.smsStatus === 'sent';
|
|
42
|
+
}
|
|
43
|
+
get sent() {
|
|
44
|
+
return this.isSent ? this._rawEvent : null;
|
|
45
|
+
}
|
|
46
|
+
get isDelivered() {
|
|
47
|
+
return this._rawEvent.smsStatus === 'delivered';
|
|
48
|
+
}
|
|
49
|
+
get delivered() {
|
|
50
|
+
return this.isDelivered ? this._rawEvent : null;
|
|
51
|
+
}
|
|
52
|
+
get isRead() {
|
|
53
|
+
return this._rawEvent.smsStatus === 'read';
|
|
54
|
+
}
|
|
55
|
+
get read() {
|
|
56
|
+
return this.isRead ? this._rawEvent : null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.default = WhatsappEvent;
|
|
60
|
+
//# sourceMappingURL=WhatsappEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappEvent.js","sourceRoot":"","sources":["../../src/whatsapp/WhatsappEvent.ts"],"names":[],"mappings":";;AAWA,MAAqB,aAAa;IAGhC,YAAY,QAA0B;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAMD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAMD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC;IACjD,CAAC;IAMD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,SAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAMD,IAAI,MAAM;QACR,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,GAAG,CAC3E,CAAC;IACJ,CAAC;IAMD,IAAI,IAAI;QACN,OAAQ,IAAI,CAAC,SAA6B,CAAC,IAAI,IAAI,IAAI,CAAC;IAC1D,CAAC;IAMD,IAAI,OAAO;QACT,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,GAAG,CAC3E,CAAC;IACJ,CAAC;IAMD,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAiC,CAAC;QAExD,OAAO;YACL,WAAW,EAAE,QAAQ,CAAC,iBAAiB;YACvC,GAAG,EAAE,QAAQ,CAAC,SAAS;SACxB,CAAC;IACJ,CAAC;IAMD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU,CAAC;IACjD,CAAC;IAMD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,IAAI,CAAC,SAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,CAAC;IAMD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,MAAM,CAAC;IAC7C,CAAC;IAMD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,SAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAMD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW,CAAC;IAClD,CAAC;IAMD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,CAAC,SAA8B,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;IAMD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,MAAM,CAAC;IAC7C,CAAC;IAMD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,SAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;CACF;AAzID,gCAyIC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { RequestContext } from '../types';
|
|
2
|
+
export { WhatsappConnectorOptions } from './WhatsappConnector';
|
|
3
|
+
export type MessageReceivedCommon = {
|
|
4
|
+
messageSid: string;
|
|
5
|
+
smsMessageSid: string;
|
|
6
|
+
smsSid: string;
|
|
7
|
+
smsStatus: 'received';
|
|
8
|
+
accountSid: string;
|
|
9
|
+
from: string;
|
|
10
|
+
to: string;
|
|
11
|
+
body: string;
|
|
12
|
+
numSegments: string;
|
|
13
|
+
apiVersion: '2010-04-01';
|
|
14
|
+
fromCity?: string;
|
|
15
|
+
fromState?: string;
|
|
16
|
+
fromZip?: string;
|
|
17
|
+
fromCountry?: string;
|
|
18
|
+
toCity?: string;
|
|
19
|
+
toState?: string;
|
|
20
|
+
toZip?: string;
|
|
21
|
+
toCountry?: string;
|
|
22
|
+
};
|
|
23
|
+
export type TextMessageReceived = MessageReceivedCommon & {
|
|
24
|
+
numMedia: '0';
|
|
25
|
+
};
|
|
26
|
+
export type MediaMessageReceived = MessageReceivedCommon & {
|
|
27
|
+
numMedia: '1';
|
|
28
|
+
mediaContentType0: string;
|
|
29
|
+
mediaUrl0: string;
|
|
30
|
+
};
|
|
31
|
+
export type MessageReceived = TextMessageReceived | MediaMessageReceived;
|
|
32
|
+
export type MessageStatusCommon<S extends string> = {
|
|
33
|
+
smsStatus: S;
|
|
34
|
+
messageStatus: S;
|
|
35
|
+
smsSid: string;
|
|
36
|
+
channelToAddress: string;
|
|
37
|
+
to: string;
|
|
38
|
+
channelPrefix: 'whatsapp';
|
|
39
|
+
messageSid: string;
|
|
40
|
+
accountSid: string;
|
|
41
|
+
from: string;
|
|
42
|
+
apiVersion: '2010-04-01';
|
|
43
|
+
channelInstallSid: string;
|
|
44
|
+
};
|
|
45
|
+
export type MessageSent = MessageStatusCommon<'sent'> & {
|
|
46
|
+
structuredMessage: 'false';
|
|
47
|
+
};
|
|
48
|
+
export type MessageDelivered = MessageStatusCommon<'delivered'> & {
|
|
49
|
+
eventType: 'DELIVERED';
|
|
50
|
+
};
|
|
51
|
+
export type MessageRead = MessageStatusCommon<'read'> & {
|
|
52
|
+
eventType: 'READ';
|
|
53
|
+
};
|
|
54
|
+
export type WhatsappRawEvent = MessageReceived | MessageSent | MessageDelivered | MessageRead;
|
|
55
|
+
export type WhatsappRequestBody = any;
|
|
56
|
+
export type WhatsappRequestContext = RequestContext<WhatsappRequestBody, {
|
|
57
|
+
'x-twilio-signature'?: string;
|
|
58
|
+
}>;
|
|
59
|
+
//# sourceMappingURL=WhatsappTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappTypes.d.ts","sourceRoot":"","sources":["../../src/whatsapp/WhatsappTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,MAAM,qBAAqB,GAAG;IAIlC,UAAU,EAAE,MAAM,CAAC;IAInB,aAAa,EAAE,MAAM,CAAC;IAItB,MAAM,EAAE,MAAM,CAAC;IAIf,SAAS,EAAE,UAAU,CAAC;IAItB,UAAU,EAAE,MAAM,CAAC;IAInB,IAAI,EAAE,MAAM,CAAC;IAIb,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,MAAM,CAAC;IAIb,WAAW,EAAE,MAAM,CAAC;IAIpB,UAAU,EAAE,YAAY,CAAC;IAIzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IAIxD,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAMF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG;IACzD,QAAQ,EAAE,GAAG,CAAC;IAId,iBAAiB,EAAE,MAAM,CAAC;IAI1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEzE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI;IAClD,SAAS,EAAE,CAAC,CAAC;IACb,aAAa,EAAE,CAAC,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,UAAU,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,YAAY,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG;IACtD,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAAG;IAChE,SAAS,EAAE,WAAW,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,GAAG;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,WAAW,CAAC;AAEhB,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEtC,MAAM,MAAM,sBAAsB,GAAG,cAAc,CACjD,mBAAmB,EACnB;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsappTypes.js","sourceRoot":"","sources":["../../src/whatsapp/WhatsappTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Context from '../context/Context';
|
|
2
|
+
import { Action } from '../types';
|
|
3
|
+
import { RoutePredicate } from '../router';
|
|
4
|
+
import WhatsappContext from './WhatsappContext';
|
|
5
|
+
type Route = <C extends Context>(action: Action<WhatsappContext, any>) => {
|
|
6
|
+
predicate: RoutePredicate<C>;
|
|
7
|
+
action: Action<WhatsappContext, any>;
|
|
8
|
+
};
|
|
9
|
+
type Whatsapp = Route & {
|
|
10
|
+
any: Route;
|
|
11
|
+
message: Route;
|
|
12
|
+
media: Route;
|
|
13
|
+
received: Route;
|
|
14
|
+
sent: Route;
|
|
15
|
+
delivered: Route;
|
|
16
|
+
read: Route;
|
|
17
|
+
};
|
|
18
|
+
declare const whatsapp: Whatsapp;
|
|
19
|
+
export default whatsapp;
|
|
20
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/whatsapp/routes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAS,MAAM,WAAW,CAAC;AAElD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,KAAK,KAAK,GAAG,CAAC,CAAC,SAAS,OAAO,EAC7B,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,KACjC;IACH,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,QAAQ,GAAG,KAAK,GAAG;IACtB,GAAG,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,QAIf,CAAC;AA2DF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const router_1 = require("../router");
|
|
4
|
+
const whatsapp = (action) => {
|
|
5
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp', action);
|
|
6
|
+
};
|
|
7
|
+
whatsapp.any = whatsapp;
|
|
8
|
+
function message(action) {
|
|
9
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp' && context.event.isMessage, action);
|
|
10
|
+
}
|
|
11
|
+
whatsapp.message = message;
|
|
12
|
+
function media(action) {
|
|
13
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp' && context.event.isMedia, action);
|
|
14
|
+
}
|
|
15
|
+
whatsapp.media = media;
|
|
16
|
+
function received(action) {
|
|
17
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp' && context.event.isReceived, action);
|
|
18
|
+
}
|
|
19
|
+
whatsapp.received = received;
|
|
20
|
+
function sent(action) {
|
|
21
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp' && context.event.isSent, action);
|
|
22
|
+
}
|
|
23
|
+
whatsapp.sent = sent;
|
|
24
|
+
function delivered(action) {
|
|
25
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp' && context.event.isDelivered, action);
|
|
26
|
+
}
|
|
27
|
+
whatsapp.delivered = delivered;
|
|
28
|
+
function read(action) {
|
|
29
|
+
return (0, router_1.route)((context) => context.platform === 'whatsapp' && context.event.isRead, action);
|
|
30
|
+
}
|
|
31
|
+
whatsapp.read = read;
|
|
32
|
+
exports.default = whatsapp;
|
|
33
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/whatsapp/routes.ts"],"names":[],"mappings":";;AAEA,sCAAkD;AAqBlD,MAAM,QAAQ,GAAa,CACzB,MAAoC,EACpC,EAAE;IACF,OAAO,IAAA,cAAK,EAAC,CAAC,OAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC;AAExB,SAAS,OAAO,CAAoB,MAAoC;IACtE,OAAO,IAAA,cAAK,EACV,CAAC,OAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,EAC1E,MAAM,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAE3B,SAAS,KAAK,CAAoB,MAAoC;IACpE,OAAO,IAAA,cAAK,EACV,CAAC,OAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EACxE,MAAM,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAEvB,SAAS,QAAQ,CAAoB,MAAoC;IACvE,OAAO,IAAA,cAAK,EACV,CAAC,OAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAC3E,MAAM,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE7B,SAAS,IAAI,CAAoB,MAAoC;IACnE,OAAO,IAAA,cAAK,EACV,CAAC,OAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EACvE,MAAM,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAErB,SAAS,SAAS,CAAoB,MAAoC;IACxE,OAAO,IAAA,cAAK,EACV,CAAC,OAAU,EAAE,EAAE,CACb,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAC9D,MAAM,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;AAE/B,SAAS,IAAI,CAAoB,MAAoC;IACnE,OAAO,IAAA,cAAK,EACV,CAAC,OAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EACvE,MAAM,CACP,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAErB,kBAAe,QAAQ,CAAC"}
|