gmail-mbox-stats
Version:
Nice tool to analyze Gmail MBOX file
125 lines (124 loc) • 6.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.keysForSenders = exports.groundFolder = exports.keyForMessageCountBySender = void 0;
const constants_1 = require("../constants");
const dotCsv = ".csv";
// const dotTxt = ".txt";
const str_frequency = "_freq";
const str_Sender = "Sender";
const str_Receiver = "Receiver";
const str_Cc = "Cc";
const str_Bcc = "Bcc";
// const str_Address = "Address";
const str_Domain = "Domain";
const str_AddressAndName = "PlusName";
//
const str_attachm_size = "_attachmSize";
//
exports.keyForMessageCountBySender = "frequencySenderAddress";
const sculptCommonInitialPropsOfFile = () => {
const generateNewMap = () => {
return new Map([]);
};
const commonInitialPropsOfFile = {
pathAbsOrRel: "",
freqMap: generateNewMap(),
messagesWhereRelevantValuesFound: 0,
legitCount: 0,
hiddenCount: 0,
emptyCount: 0,
//
attachmTotalSizeMap: generateNewMap(),
attachmTotalCountMap: generateNewMap(),
mailCountWithNonZeroCountOfAttachmentsMap: generateNewMap(),
//
};
null;
return commonInitialPropsOfFile;
};
const createResultsObjForSpecificSenderCategory = (category) => {
const sCatStr = category;
// const resultsFolderForSpecificSenderCategory: TyOneFolderIndicator
const resultsFolderForSpecificSenderCategory = {
folderName: "results", // will become "forMailsWhereSenderIsMe" or "forMailsWhereSenderIsNotMeOrIsUnknown"
pathAbsOrRel: "",
innerFolders: {},
innerFiles: {
frequencySenderAddress: Object.assign({ fileName: `${sCatStr}${str_frequency}${str_Sender}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
frequencySenderDomain: Object.assign({ fileName: `${sCatStr}${str_frequency}${str_Sender}${str_Domain}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
frequencySenderAddressAndName: Object.assign({ fileName: `${sCatStr}${str_frequency}${str_Sender}${str_AddressAndName}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
// not just first receiver, but includes all receivers. So, count of receivers can me more than count of senders
frequencyReceiverAddress: Object.assign({ fileName: `${sCatStr}${str_frequency}${str_Receiver}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
// frequencyReceiverDomain: {
// fileName: `${sCatStr}${str_frequency}${str_Receiver}${str_Domain}${dotCsv}`,
// pathAbsOrRel: "" as string,
// freqMap: new Map<TyMailDomain, number>([]),
// },
// frequencyReceiverAddressAndName: {
// fileName: `${sCatStr}${str_frequency}${str_Receiver}${str_AddressAndName}${dotCsv}`,
// pathAbsOrRel: "" as string,
// freqMap: new Map<string, number>([]),
// },
// cc:
frequencyCcAddress: Object.assign({ fileName: `${sCatStr}${str_frequency}${str_Cc}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
// frequencyCcDomain: {
// fileName: `${sCatStr}${str_frequency}${str_Cc}${str_Domain}${dotCsv}`,
// pathAbsOrRel: "" as string,
// freqMap: new Map<TyMailDomain, number>([]),
// },
// frequencyCcAddressAndName: {
// fileName: `${sCatStr}${str_frequency}${str_Cc}${str_AddressAndName}${dotCsv}`,
// pathAbsOrRel: "" as string,
// freqMap: new Map<string, number>([]),
// },
// bcc:
frequencyBccAddress: Object.assign({ fileName: `${sCatStr}${str_frequency}${str_Bcc}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
// frequencyBccDomain: {
// fileName: `${sCatStr}${str_frequency}${str_Bcc}${str_Domain}${dotCsv}`,
// pathAbsOrRel: "" as string,
// freqMap: new Map<TyMailDomain, number>([]),
// },
// frequencyBccAddressAndName: {
// fileName: `${sCatStr}${str_frequency}${str_Bcc}${str_AddressAndName}${dotCsv}`,
// pathAbsOrRel: "" as string,
// freqMap: new Map<string, number>([]),
// },
attachmentsBySender: Object.assign({ fileName: `${sCatStr}${str_attachm_size}${str_Sender}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
attachmentsByDomain: Object.assign({ fileName: `${sCatStr}${str_attachm_size}${str_Sender}${str_Domain}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
attachmentsByReceiver: Object.assign({ fileName: `${sCatStr}${str_attachm_size}${str_Receiver}${dotCsv}` }, sculptCommonInitialPropsOfFile()),
},
};
null;
return resultsFolderForSpecificSenderCategory;
};
// export const groundFolder: TyOneFolderIndicator
exports.groundFolder = {
folderName: "groundFolder",
pathAbsOrRel: "",
innerFiles: {},
innerFolders: {
mboxStats: {
folderName: `mailStats_${constants_1.slimStartDateTime.v}`,
pathAbsOrRel: "",
innerFiles: {
// not yet used in prod
allMailList_csv: Object.assign({ fileName: `index__sender-senderName-receiver-cc-bcc-time-id${dotCsv}` }, sculptCommonInitialPropsOfFile()),
generalStats: Object.assign({ fileName: `generalStats${dotCsv}` }, sculptCommonInitialPropsOfFile()),
},
innerFolders: {
forMailsWhereSenderIsMe: Object.assign(Object.assign({}, createResultsObjForSpecificSenderCategory("me")), { folderName: "forMailsWhereSenderIsMe" }),
forMailsWhereSenderIsNotMeOrIsUnknown: Object.assign(Object.assign({}, createResultsObjForSpecificSenderCategory("notMeOrUnkn")), { folderName: "forMailsWhereSenderIsNotMeOrIsUnknown" }),
},
},
},
};
null;
//
//
const meInner = exports.groundFolder.innerFolders.mboxStats.innerFolders.forMailsWhereSenderIsMe
.innerFiles;
exports.keysForSenders = [
"frequencySenderAddress",
"frequencySenderDomain",
"frequencySenderAddressAndName",
];