UNPKG

gmail-mbox-stats

Version:
161 lines (144 loc) 4.44 kB
import { ParsedMail, Headers as TyMailparserHeaders } from "mailparser"; import { step } from "../gloAccu"; import { TyMainInfoForMail, TyMboxMailHeaders, TyZenMainInfoForMail, } from "../types/mailparserTypes"; import { getZenParticipantsFromFamily } from "./sweetUtils"; import { addOneMailInfoToStats } from "./statsBuilder"; export const scanHeaders = ( headersMap: TyMailparserHeaders, ): TyMainInfoForMail => { const headers = headersMap as TyMboxMailHeaders; const init_From = headers.get("from"); const init_To = headers.get("to"); // const init_deliveredTo = headers.get("delivered-to"); const init_cc = headers.get("cc"); const init_bcc = headers.get("bcc"); // const init_date = headers.get("date"); const init_messageId = headers.get("message-id"); // for testing: /* if ([7, 14].includes(step.v)) { init_From?.value?.forEach((val, index) => { // @ts-ignore val.address = `hidden${index}${step.v}`; }); } if ([21].includes(step.v)) { init_From = undefined; } if ([29, 30].includes(step.v)) { init_From?.value?.forEach((val) => { // @ts-ignore val.address = ``; // val.name = ``; }); } */ // if ( // init_messageId === // "<CAA_p-vxkKrYGM+QcZMbjvTkxQ6biC+6zdH4Mcp+bmAYzBXaxfQ@mail.gmail.com>" // ) { // console.log("baaa", JSON.stringify([...headers])); // } const initialMainInfoForThisMail: TyMainInfoForMail = { from: init_From, to: init_To, // "delivered-to": init_deliveredTo, cc: init_cc, bcc: init_bcc, // date: init_date, ["message-id"]: init_messageId, }; return initialMainInfoForThisMail; // if (step.v === 23) { // const rrr = initialMainInfoForThisMail.to?.value; // if (rrr) { // rrr.forEach((x) => { // x.address = undefined; // }); // } // const rrr2 = initialMainInfoForThisMail["delivered-to"]?.value; // if (rrr2) { // rrr2.forEach((x) => { // x.address = undefined; // }); // } // console.log(initialMainInfoForThisMail["message-id"]); // } }; export const processParsedMail = (theParsedMail: ParsedMail) => { const initialMainInfoForThisMail = scanHeaders(theParsedMail.headers); // MB => million bytes const sumOfSizesOfAttachmentsOfOneMail = theParsedMail.attachments.reduce((accu, curr) => accu + curr.size, 0) / 1000000; const countOfAttachmentsInThisMail = theParsedMail.attachments.length; const zenMainInfoForThisMail: TyZenMainInfoForMail = { from: getZenParticipantsFromFamily({ family: initialMainInfoForThisMail.from, step: step.succeededV, familyKind: "from", messageId: initialMainInfoForThisMail["message-id"], fromCombiner: false, }), // zenTo: combineTwoFamiliesIntoZenArr({ // step: step.v, // messageId: initialMainInfoForThisMail["message-id"], // twoFamilies: [ // { // familyKind: "to", // participationInfo: initialMainInfoForThisMail.to, // }, // { // familyKind: "delivered-to", // participationInfo: initialMainInfoForThisMail["delivered-to"], // }, // ], // }), zenTo: getZenParticipantsFromFamily({ family: initialMainInfoForThisMail.to, step: step.succeededV, familyKind: "to", messageId: initialMainInfoForThisMail["message-id"], fromCombiner: false, }), cc: getZenParticipantsFromFamily({ family: initialMainInfoForThisMail.cc, step: step.succeededV, familyKind: "cc", messageId: initialMainInfoForThisMail["message-id"], fromCombiner: false, }), bcc: getZenParticipantsFromFamily({ family: initialMainInfoForThisMail.bcc, step: step.succeededV, familyKind: "bcc", messageId: initialMainInfoForThisMail["message-id"], fromCombiner: false, }), // date: initialMainInfoForThisMail.date, "message-id": initialMainInfoForThisMail["message-id"], }; // TODO: maybe for future /* handleOneLineOfMailboxIndex({ stepV: step.v, zenMainInfoForThisMail, }); */ // // maybe more logical for "addOneMailInfoToStats" to be here: addOneMailInfoToStats({ oneMail: zenMainInfoForThisMail, stepN: step.succeededV, // sumOfSizesOfAttachmentsOfOneMail, countOfAttachmentsInThisMail, }); };