UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS with Full Type Safety, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multip

192 lines 6.73 kB
"use strict"; /** * Type guard utilities for Zalo SDK webhook events * * This file provides type-safe functions to check webhook event types * and narrow down TypeScript types for better development experience. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isUserSendGroupTextEvent = isUserSendGroupTextEvent; exports.isUserSendGroupImageEvent = isUserSendGroupImageEvent; exports.isUserSendGroupVideoEvent = isUserSendGroupVideoEvent; exports.isUserSendGroupAudioEvent = isUserSendGroupAudioEvent; exports.isUserSendGroupFileEvent = isUserSendGroupFileEvent; exports.isUserGroupMessageEvent = isUserGroupMessageEvent; exports.isOASendTextEvent = isOASendTextEvent; exports.isOASendImageEvent = isOASendImageEvent; exports.isOASendFileEvent = isOASendFileEvent; exports.isOASendStickerEvent = isOASendStickerEvent; exports.isOASendGifEvent = isOASendGifEvent; exports.isOASendGroupTextEvent = isOASendGroupTextEvent; exports.isOASendGroupImageEvent = isOASendGroupImageEvent; exports.isOASendGroupFileEvent = isOASendGroupFileEvent; exports.isOASendGroupStickerEvent = isOASendGroupStickerEvent; exports.isOASendGroupGifEvent = isOASendGroupGifEvent; exports.isOAMessageEvent = isOAMessageEvent; exports.isUserMessageEvent = isUserMessageEvent; exports.hasAttachments = hasAttachments; exports.isFromGroup = isFromGroup; exports.isFromPersonal = isFromPersonal; const webhook_1 = require("../types/webhook"); /** * Check if event is a user sending text message to group */ function isUserSendGroupTextEvent(event) { return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_TEXT; } /** * Check if event is a user sending image message to group */ function isUserSendGroupImageEvent(event) { return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_IMAGE; } /** * Check if event is a user sending video message to group */ function isUserSendGroupVideoEvent(event) { return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_VIDEO; } /** * Check if event is a user sending audio message to group */ function isUserSendGroupAudioEvent(event) { return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_AUDIO; } /** * Check if event is a user sending file to group */ function isUserSendGroupFileEvent(event) { return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_FILE; } /** * Check if event is any user group message event */ function isUserGroupMessageEvent(event) { return [ webhook_1.WebhookEventName.USER_SEND_GROUP_TEXT, webhook_1.WebhookEventName.USER_SEND_GROUP_IMAGE, webhook_1.WebhookEventName.USER_SEND_GROUP_VIDEO, webhook_1.WebhookEventName.USER_SEND_GROUP_AUDIO, webhook_1.WebhookEventName.USER_SEND_GROUP_FILE, ].includes(event.event_name); } // ===== OA MESSAGE TYPE GUARDS ===== /** * Check if event is OA sending text message to user */ function isOASendTextEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_TEXT; } /** * Check if event is OA sending image message to user */ function isOASendImageEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_IMAGE; } /** * Check if event is OA sending file to user */ function isOASendFileEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_FILE; } /** * Check if event is OA sending sticker to user */ function isOASendStickerEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_STICKER; } /** * Check if event is OA sending GIF to user */ function isOASendGifEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_GIF; } // ===== OA GROUP MESSAGE TYPE GUARDS ===== /** * Check if event is OA sending text message to group */ function isOASendGroupTextEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_TEXT; } /** * Check if event is OA sending image to group */ function isOASendGroupImageEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_IMAGE; } /** * Check if event is OA sending file to group */ function isOASendGroupFileEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_FILE; } /** * Check if event is OA sending sticker to group */ function isOASendGroupStickerEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_STICKER; } /** * Check if event is OA sending GIF to group */ function isOASendGroupGifEvent(event) { return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_GIF; } // ===== COMBINED TYPE GUARDS ===== /** * Check if event is any OA message event (personal or group) */ function isOAMessageEvent(event) { return [ webhook_1.WebhookEventName.OA_SEND_TEXT, webhook_1.WebhookEventName.OA_SEND_IMAGE, webhook_1.WebhookEventName.OA_SEND_FILE, webhook_1.WebhookEventName.OA_SEND_STICKER, webhook_1.WebhookEventName.OA_SEND_GIF, webhook_1.WebhookEventName.OA_SEND_GROUP_TEXT, webhook_1.WebhookEventName.OA_SEND_GROUP_IMAGE, webhook_1.WebhookEventName.OA_SEND_GROUP_FILE, webhook_1.WebhookEventName.OA_SEND_GROUP_STICKER, webhook_1.WebhookEventName.OA_SEND_GROUP_GIF, ].includes(event.event_name); } /** * Check if event is any user message event (personal or group) */ function isUserMessageEvent(event) { return [ webhook_1.WebhookEventName.USER_SEND_TEXT, webhook_1.WebhookEventName.USER_SEND_IMAGE, webhook_1.WebhookEventName.USER_SEND_AUDIO, webhook_1.WebhookEventName.USER_SEND_VIDEO, webhook_1.WebhookEventName.USER_SEND_FILE, webhook_1.WebhookEventName.USER_SEND_STICKER, webhook_1.WebhookEventName.USER_SEND_LOCATION, webhook_1.WebhookEventName.USER_SEND_GROUP_TEXT, webhook_1.WebhookEventName.USER_SEND_GROUP_VIDEO, webhook_1.WebhookEventName.USER_SEND_GROUP_AUDIO, webhook_1.WebhookEventName.USER_SEND_GROUP_FILE, ].includes(event.event_name); } /** * Check if event has message attachments */ function hasAttachments(event) { if ('message' in event && event.message && 'attachments' in event.message) { return Array.isArray(event.message.attachments) && event.message.attachments.length > 0; } return false; } /** * Check if event is from a group context */ function isFromGroup(event) { return 'group_id' in event || event.event_name.includes('group'); } /** * Check if event is from a personal context */ function isFromPersonal(event) { return !isFromGroup(event); } //# sourceMappingURL=type-guards.js.map