@warriorteam/zalo-webhook-types
Version:
TypeScript types for Zalo Personal webhook events from automation-web
328 lines • 10.7 kB
JavaScript
;
/**
* 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