@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
JavaScript
;
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