UNPKG

@stack.thefennec.dev/telegram-export-parser

Version:

TypeScript library for parsing Telegram Desktop's data export with full type safety

138 lines 5.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EVENT_PARSERS = void 0; const base_1 = require("./base"); const types_1 = require("../types"); const parser_1 = require("../core/parser"); // ===================================================== // EVENT PARSERS // ===================================================== const callEventParser = (0, parser_1.createParser)({ name: 'call-event', priority: 80, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && types_1.CALL_ACTIONS.includes(raw.action), parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: raw.action, discardReason: raw.discard_reason, duration: raw.duration }) }); const callScheduleEventParser = (0, parser_1.createParser)({ name: 'call-schedule-event', priority: 75, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.GROUP_CALL_SCHEDULED, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.GROUP_CALL_SCHEDULED, scheduleDate: raw.schedule_date ? (0, base_1.parseDate)(raw.schedule_date) : undefined }) }); const membershipEventParser = (0, parser_1.createParser)({ name: 'membership-event', priority: 70, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && types_1.MEMBERSHIP_ACTIONS.includes(raw.action), parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: raw.action, inviter: raw.inviter, members: (0, base_1.parseMembers)(raw.members) }) }); const creationEventParser = (0, parser_1.createParser)({ name: 'creation-event', priority: 65, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && types_1.CREATION_ACTIONS.includes(raw.action), parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: raw.action, members: (0, base_1.parseMembers)(raw.members) }) }); const groupChangeEventParser = (0, parser_1.createParser)({ name: 'group-change-event', priority: 60, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && types_1.GROUP_CHANGE_ACTIONS.includes(raw.action), parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: raw.action }) }); const messagePinEventParser = (0, parser_1.createParser)({ name: 'message-pin-event', priority: 55, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.PIN_MESSAGE, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.PIN_MESSAGE, messageId: raw.message_id ?? 0 }) }); const premiumGiftEventParser = (0, parser_1.createParser)({ name: 'premium-gift-event', priority: 50, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.SEND_PREMIUM_GIFT, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.SEND_PREMIUM_GIFT, cost: raw.cost ?? 0, months: raw.months ?? 0 }) }); const refundEventParser = (0, parser_1.createParser)({ name: 'refund-event', priority: 45, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.PAID_MESSAGES_REFUND, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.PAID_MESSAGES_REFUND, messagesCount: raw.messages_count ?? 0, starsCount: raw.stars_count ?? 0 }) }); const gameScoreEventParser = (0, parser_1.createParser)({ name: 'game-score-event', priority: 40, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.SCORE_IN_GAME, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.SCORE_IN_GAME, score: raw.score ?? 0, gameMessageId: raw.game_message_id ?? 0 }) }); const clearHistoryEventParser = (0, parser_1.createParser)({ name: 'clear-history-event', priority: 35, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.CLEAR_HISTORY, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.CLEAR_HISTORY }) }); const screenshotEventParser = (0, parser_1.createParser)({ name: 'screenshot-event', priority: 30, canHandle: (raw) => raw.type === types_1.MESSAGE_TYPES.SERVICE && raw.action === types_1.EVENT_ACTIONS.TAKE_SCREENSHOT, parse: (raw) => ({ ...(0, base_1.parseBaseEvent)(raw), action: types_1.EVENT_ACTIONS.TAKE_SCREENSHOT }) }); // ===================================================== // EXPORTS // ===================================================== exports.EVENT_PARSERS = [ callEventParser, callScheduleEventParser, membershipEventParser, creationEventParser, groupChangeEventParser, messagePinEventParser, premiumGiftEventParser, refundEventParser, gameScoreEventParser, clearHistoryEventParser, screenshotEventParser ]; //# sourceMappingURL=events.js.map