UNPKG

gmail-to-exchange365

Version:

Complete Gmail to Exchange 365 migration tool with UI - Migrate emails, attachments, and folders seamlessly

68 lines 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOrCreateFolder = getOrCreateFolder; exports.mapGmailLabelsToFolders = mapGmailLabelsToFolders; exports.getFolderIdForLabel = getFolderIdForLabel; async function getOrCreateFolder(client, folderName, parentFolderId = "Inbox") { try { // Try to find existing folder const folders = await client .api(`/me/mailFolders/${parentFolderId}/childFolders`) .filter(`displayName eq '${folderName}'`) .get(); if (folders.value && folders.value.length > 0) { return folders.value[0].id; } // Create new folder const newFolder = await client .api(`/me/mailFolders/${parentFolderId}/childFolders`) .post({ displayName: folderName }); return newFolder.id; } catch (error) { console.error(`Error creating folder ${folderName}:`, error.message); // Fallback to Inbox if folder creation fails return parentFolderId; } } async function mapGmailLabelsToFolders(client, gmailLabels) { const mappings = []; // Map common Gmail labels to Exchange folders const commonMappings = { "INBOX": "Inbox", "SENT": "Sent Items", "DRAFT": "Drafts", "TRASH": "Deleted Items", "SPAM": "Junk Email", "IMPORTANT": "Important" }; for (const label of gmailLabels) { const folderName = commonMappings[label.toUpperCase()] || label; try { const folderId = await getOrCreateFolder(client, folderName); mappings.push({ gmailLabel: label, exchangeFolderId: folderId, exchangeFolderName: folderName }); } catch (error) { console.error(`Error mapping label ${label}:`, error.message); } } return mappings; } function getFolderIdForLabel(mappings, labels) { // Find the first matching label mapping for (const label of labels) { const mapping = mappings.find(m => m.gmailLabel === label); if (mapping) { return mapping.exchangeFolderId; } } // Default to Inbox return "Inbox"; } //# sourceMappingURL=folderMapper.js.map