n8n-nodes-imap-ai
Version:
Simplified IMAP node for n8n with AI-agent support. Clean and modular email and mailbox management for automation workflows.
146 lines • 5.86 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEmailSearchParametersFromNode = getEmailSearchParametersFromNode;
exports.validateEmailSearchParameters = validateEmailSearchParameters;
function enhanceSearchTermForAI(searchTerm, fieldType) {
if (!searchTerm || searchTerm.trim() === '') {
return searchTerm;
}
const trimmed = searchTerm.trim();
if (trimmed.includes('*') || trimmed.includes('@') || trimmed.startsWith('"')) {
return trimmed;
}
if (fieldType === 'email') {
if (!trimmed.includes(' ') && !trimmed.includes('.') && !trimmed.includes('@')) {
return `*${trimmed}*`;
}
if (trimmed.includes(' ')) {
return `*${trimmed}*`;
}
}
return trimmed;
}
function getEmailSearchParametersFromNode(context, itemIndex) {
const searchObject = {};
const interfaceMode = context.getNodeParameter('interfaceMode', itemIndex, 'ai_simple');
const fromEmailDirect = context.getNodeParameter('From_Email_Address', itemIndex, '', {
extractValue: true,
});
const subjectDirect = context.getNodeParameter('Subject_Contains', itemIndex, '', {
extractValue: true,
});
const contentDirect = context.getNodeParameter('Email_Content_Contains', itemIndex, '', {
extractValue: true,
});
const toEmailDirect = context.getNodeParameter('To_Email_Address', itemIndex, '', {
extractValue: true,
});
const sinceDateDirect = context.getNodeParameter('Since_Date', itemIndex, '', {
extractValue: true,
});
const beforeDateDirect = context.getNodeParameter('Before_Date', itemIndex, '', {
extractValue: true,
});
const showUnreadOnly = context.getNodeParameter('Show_Unread_Only', itemIndex, false, {
extractValue: true,
});
if (fromEmailDirect && fromEmailDirect.trim() !== '') {
const enhanced = interfaceMode === 'ai_simple'
? enhanceSearchTermForAI(fromEmailDirect, 'email')
: fromEmailDirect;
searchObject.from = enhanced;
}
if (subjectDirect && subjectDirect.trim() !== '') {
const enhanced = interfaceMode === 'ai_simple'
? enhanceSearchTermForAI(subjectDirect, 'subject')
: subjectDirect;
searchObject.subject = enhanced;
}
if (contentDirect && contentDirect.trim() !== '') {
const enhanced = interfaceMode === 'ai_simple'
? enhanceSearchTermForAI(contentDirect, 'content')
: contentDirect;
searchObject.body = enhanced;
}
if (toEmailDirect && toEmailDirect.trim() !== '') {
const enhanced = interfaceMode === 'ai_simple'
? enhanceSearchTermForAI(toEmailDirect, 'email')
: toEmailDirect;
searchObject.to = enhanced;
}
if (sinceDateDirect && sinceDateDirect.trim() !== '') {
searchObject.since = new Date(sinceDateDirect);
}
if (beforeDateDirect && beforeDateDirect.trim() !== '') {
searchObject.before = new Date(beforeDateDirect);
}
if (interfaceMode === 'ai_simple' && showUnreadOnly) {
searchObject.seen = false;
}
if (interfaceMode === 'ai_advanced' || interfaceMode === 'human_full') {
const emailDateRangeObj = context.getNodeParameter('emailDateRange', itemIndex, {});
const since = emailDateRangeObj.since;
const before = emailDateRangeObj.before;
if (since && !searchObject.since) {
searchObject.since = new Date(since);
}
if (before && !searchObject.before) {
searchObject.before = new Date(before);
}
const emailFlagsObj = context.getNodeParameter('emailFlags', itemIndex, {});
if ('answered' in emailFlagsObj) {
searchObject.answered = emailFlagsObj.answered;
}
if ('deleted' in emailFlagsObj) {
searchObject.deleted = emailFlagsObj.deleted;
}
if ('draft' in emailFlagsObj) {
searchObject.draft = emailFlagsObj.draft;
}
if ('flagged' in emailFlagsObj) {
searchObject.flagged = emailFlagsObj.flagged;
}
if ('recent' in emailFlagsObj) {
const recent = emailFlagsObj.recent;
if (recent) {
searchObject.recent = true;
}
else {
searchObject.old = true;
}
}
if ('seen' in emailFlagsObj && !showUnreadOnly) {
searchObject.seen = emailFlagsObj.seen;
}
const emailSearchFiltersObj = context.getNodeParameter('emailSearchFilters', itemIndex, {});
if ('bcc' in emailSearchFiltersObj) {
searchObject.bcc = emailSearchFiltersObj.bcc;
}
if ('cc' in emailSearchFiltersObj) {
searchObject.cc = emailSearchFiltersObj.cc;
}
if ('from' in emailSearchFiltersObj && !searchObject.from) {
searchObject.from = emailSearchFiltersObj.from;
}
if ('subject' in emailSearchFiltersObj && !searchObject.subject) {
searchObject.subject = emailSearchFiltersObj.subject;
}
if ('text' in emailSearchFiltersObj && !searchObject.body) {
searchObject.body = emailSearchFiltersObj.text;
}
if ('to' in emailSearchFiltersObj && !searchObject.to) {
searchObject.to = emailSearchFiltersObj.to;
}
if ('uid' in emailSearchFiltersObj) {
searchObject.uid = emailSearchFiltersObj.uid;
}
}
return searchObject;
}
function validateEmailSearchParameters(searchObject) {
if (searchObject.since && searchObject.before && searchObject.since > searchObject.before) {
return false;
}
return true;
}
//# sourceMappingURL=ParameterHelpers.js.map