UNPKG

@warriorteam/zalo-webhook-types

Version:

TypeScript types for Zalo Personal webhook events from automation-web

328 lines 10.7 kB
"use strict"; /** * Type Guards for Zalo Webhook Events * * Runtime type checking functions for all event types. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isMessageEvent = isMessageEvent; exports.isInteractionEvent = isInteractionEvent; exports.isSystemEvent = isSystemEvent; exports.isSocialEvent = isSocialEvent; exports.isAttachmentMessageEvent = isAttachmentMessageEvent; exports.isNonAttachmentMessageEvent = isNonAttachmentMessageEvent; exports.isTextCategoryMessage = isTextCategoryMessage; exports.isMediaCategoryMessage = isMediaCategoryMessage; exports.isFileCategoryMessage = isFileCategoryMessage; exports.isSocialCategoryMessage = isSocialCategoryMessage; exports.isTextMessage = isTextMessage; exports.isLinkMessage = isLinkMessage; exports.isImageMessage = isImageMessage; exports.isVideoMessage = isVideoMessage; exports.isVoiceMessage = isVoiceMessage; exports.isGifMessage = isGifMessage; exports.isDoodleMessage = isDoodleMessage; exports.isFileMessage = isFileMessage; exports.isStickerMessage = isStickerMessage; exports.isLocationMessage = isLocationMessage; exports.isGenericMessage = isGenericMessage; exports.isTypingEvent = isTypingEvent; exports.isSeenMessagesEvent = isSeenMessagesEvent; exports.isDeliveredMessagesEvent = isDeliveredMessagesEvent; exports.isReactionEvent = isReactionEvent; exports.isUndoEvent = isUndoEvent; exports.isConnectionStatusEvent = isConnectionStatusEvent; exports.isErrorEvent = isErrorEvent; exports.isOldMessagesEvent = isOldMessagesEvent; exports.isOldReactionsEvent = isOldReactionsEvent; exports.isUploadAttachmentEvent = isUploadAttachmentEvent; exports.isCipherKeyEvent = isCipherKeyEvent; exports.isFriendEvent = isFriendEvent; exports.isGroupEvent = isGroupEvent; const enums_1 = require("../enums"); // ===== BASE EVENT GUARDS ===== /** * Check if event is any message event */ function isMessageEvent(event) { return (event.eventType.includes("MESSAGE") || event.eventType.includes("message")); } /** * Check if event is any interaction event */ function isInteractionEvent(event) { return [ enums_1.ZaloWebhookEventType.TYPING, enums_1.ZaloWebhookEventType.SEEN_MESSAGES, enums_1.ZaloWebhookEventType.DELIVERED_MESSAGES, enums_1.ZaloWebhookEventType.REACTION, enums_1.ZaloWebhookEventType.UNDO, ].includes(event.eventType); } /** * Check if event is any system event */ function isSystemEvent(event) { return [ enums_1.ZaloWebhookEventType.CONNECTION_STATUS, enums_1.ZaloWebhookEventType.ERROR, enums_1.ZaloWebhookEventType.OLD_MESSAGES, enums_1.ZaloWebhookEventType.OLD_REACTIONS, enums_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT, enums_1.ZaloWebhookEventType.CIPHER_KEY, ].includes(event.eventType); } /** * Check if event is any social event */ function isSocialEvent(event) { return [ enums_1.ZaloWebhookEventType.FRIEND_EVENT, enums_1.ZaloWebhookEventType.GROUP_EVENT, ].includes(event.eventType); } // ===== MESSAGE EVENT GUARDS ===== /** * Check if message event has attachment */ function isAttachmentMessageEvent(event) { return isMessageEvent(event) && event.data?.hasAttachment === true; } /** * Check if message event has no attachment */ function isNonAttachmentMessageEvent(event) { return isMessageEvent(event) && event.data?.hasAttachment === false; } /** * Check if event is text category message */ function isTextCategoryMessage(event) { return isTextMessage(event) || isLinkMessage(event); } /** * Check if event is media category message */ function isMediaCategoryMessage(event) { return (isImageMessage(event) || isVideoMessage(event) || isVoiceMessage(event) || isGifMessage(event) || isDoodleMessage(event)); } /** * Check if event is file category message */ function isFileCategoryMessage(event) { return isFileMessage(event); } /** * Check if event is social category message */ function isSocialCategoryMessage(event) { return isStickerMessage(event) || isLocationMessage(event); } // ===== SPECIFIC MESSAGE TYPE GUARDS ===== /** * Check if event is text message */ function isTextMessage(event) { return [ enums_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is link message */ function isLinkMessage(event) { return [ enums_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is image message */ function isImageMessage(event) { return [ enums_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is video message */ function isVideoMessage(event) { return [ enums_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is voice message */ function isVoiceMessage(event) { return [ enums_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is GIF message */ function isGifMessage(event) { return [ enums_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is doodle message */ function isDoodleMessage(event) { return [ enums_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is file message */ function isFileMessage(event) { return [ enums_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is sticker message */ function isStickerMessage(event) { return [ enums_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is location message */ function isLocationMessage(event) { return [ enums_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } /** * Check if event is generic message */ function isGenericMessage(event) { return [ enums_1.ZaloWebhookEventType.MESSAGE_SENT_TO_USER, enums_1.ZaloWebhookEventType.MESSAGE_SENT_TO_GROUP, enums_1.ZaloWebhookEventType.MESSAGE_RECEIVED_FROM_USER, enums_1.ZaloWebhookEventType.MESSAGE_RECEIVED_FROM_GROUP, ].includes(event.eventType); } // ===== INTERACTION EVENT GUARDS ===== /** * Check if event is typing event */ function isTypingEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.TYPING; } /** * Check if event is seen messages event */ function isSeenMessagesEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.SEEN_MESSAGES; } /** * Check if event is delivered messages event */ function isDeliveredMessagesEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.DELIVERED_MESSAGES; } /** * Check if event is reaction event */ function isReactionEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.REACTION; } /** * Check if event is undo event */ function isUndoEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.UNDO; } // ===== SYSTEM EVENT GUARDS ===== /** * Check if event is connection status event */ function isConnectionStatusEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.CONNECTION_STATUS; } /** * Check if event is error event */ function isErrorEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.ERROR; } /** * Check if event is old messages event */ function isOldMessagesEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.OLD_MESSAGES; } /** * Check if event is old reactions event */ function isOldReactionsEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.OLD_REACTIONS; } /** * Check if event is upload attachment event */ function isUploadAttachmentEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.UPLOAD_ATTACHMENT; } /** * Check if event is cipher key event */ function isCipherKeyEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.CIPHER_KEY; } // ===== SOCIAL EVENT GUARDS ===== /** * Check if event is friend event */ function isFriendEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.FRIEND_EVENT; } /** * Check if event is group event */ function isGroupEvent(event) { return event.eventType === enums_1.ZaloWebhookEventType.GROUP_EVENT; } //# sourceMappingURL=index.js.map