n8n-nodes-imap-ai
Version:
Simplified IMAP node for n8n with AI-agent support. Clean and modular email and mailbox management for automation workflows.
223 lines • 7.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.emailSearchParameters = void 0;
exports.getEmailSearchParametersFromNode = getEmailSearchParametersFromNode;
var EmailFlags;
(function (EmailFlags) {
EmailFlags["Answered"] = "answered";
EmailFlags["Deleted"] = "deleted";
EmailFlags["Draft"] = "draft";
EmailFlags["Flagged"] = "flagged";
EmailFlags["Recent"] = "recent";
EmailFlags["Seen"] = "seen";
})(EmailFlags || (EmailFlags = {}));
var EmailSearchFilters;
(function (EmailSearchFilters) {
EmailSearchFilters["BCC"] = "bcc";
EmailSearchFilters["CC"] = "cc";
EmailSearchFilters["From"] = "from";
EmailSearchFilters["Subject"] = "subject";
EmailSearchFilters["Text"] = "text";
EmailSearchFilters["To"] = "to";
EmailSearchFilters["UID"] = "uid";
})(EmailSearchFilters || (EmailSearchFilters = {}));
exports.emailSearchParameters = [
{
displayName: 'Date Range',
name: 'emailDateRange',
type: 'collection',
placeholder: 'Add Date Range',
default: {
since: '',
},
options: [
{
displayName: 'Since',
name: 'since',
type: 'dateTime',
default: '',
description: 'Start date of search',
},
{
displayName: 'Before',
name: 'before',
type: 'dateTime',
default: '',
description: 'End date of search',
},
],
},
{
displayName: 'Flags',
name: 'emailFlags',
type: 'collection',
placeholder: 'Add Flag',
default: {},
options: [
{
displayName: 'Is Answered',
name: EmailFlags.Answered,
type: 'boolean',
default: false,
description: 'Whether email is answered',
},
{
displayName: 'Is Deleted',
name: EmailFlags.Deleted,
type: 'boolean',
default: false,
description: 'Whether email is deleted',
},
{
displayName: 'Is Draft',
name: EmailFlags.Draft,
type: 'boolean',
default: false,
description: 'Whether email is draft',
},
{
displayName: 'Is Flagged',
name: EmailFlags.Flagged,
type: 'boolean',
default: true,
description: 'Whether email is flagged',
},
{
displayName: 'Is Recent',
name: EmailFlags.Recent,
type: 'boolean',
default: true,
description: 'Whether email is recent',
},
{
displayName: 'Is Seen (Read)',
name: EmailFlags.Seen,
type: 'boolean',
default: false,
description: 'Whether email is seen',
hint: 'If true, only seen emails will be returned. If false, only unseen emails will be returned.',
},
],
},
{
displayName: 'Search Filters',
name: 'emailSearchFilters',
type: 'collection',
placeholder: 'Add Filter',
hint: 'Search filters are case-insensitive and combined with AND (must match all).',
default: {},
options: [
{
displayName: 'BCC Contains',
name: EmailSearchFilters.BCC,
type: 'string',
default: '',
description: 'Email address of BCC recipient',
},
{
displayName: 'CC Contains',
name: EmailSearchFilters.CC,
type: 'string',
default: '',
description: 'Email address of CC recipient',
},
{
displayName: 'From Contains',
name: EmailSearchFilters.From,
type: 'string',
default: '',
description: 'Email address of sender',
},
{
displayName: 'Subject Contains',
name: EmailSearchFilters.Subject,
type: 'string',
default: '',
description: 'Email subject',
},
{
displayName: 'Text Contains',
name: EmailSearchFilters.Text,
type: 'string',
default: '',
description: 'Search text',
},
{
displayName: 'To Contains',
name: EmailSearchFilters.To,
type: 'string',
default: '',
description: 'Email address of recipient',
},
{
displayName: 'UID',
name: EmailSearchFilters.UID,
type: 'string',
default: '',
description: 'Comma-separated list of UIDs',
placeholder: '1,2,3',
},
],
},
];
function getEmailSearchParametersFromNode(context, itemIndex) {
const searchObject = {};
const emailDateRangeObj = context.getNodeParameter('emailDateRange', itemIndex);
const since = emailDateRangeObj.since;
const before = emailDateRangeObj.before;
if (since) {
searchObject.since = new Date(since);
}
if (before) {
searchObject.before = new Date(before);
}
const emailFlagsObj = context.getNodeParameter('emailFlags', itemIndex);
if (EmailFlags.Answered in emailFlagsObj) {
searchObject.answered = emailFlagsObj[EmailFlags.Answered];
}
if (EmailFlags.Deleted in emailFlagsObj) {
searchObject.deleted = emailFlagsObj[EmailFlags.Deleted];
}
if (EmailFlags.Draft in emailFlagsObj) {
searchObject.draft = emailFlagsObj[EmailFlags.Draft];
}
if (EmailFlags.Flagged in emailFlagsObj) {
searchObject.flagged = emailFlagsObj[EmailFlags.Flagged];
}
if (EmailFlags.Recent in emailFlagsObj) {
const recent = emailFlagsObj[EmailFlags.Recent];
if (recent) {
searchObject.recent = true;
}
else {
searchObject.old = true;
}
}
if (EmailFlags.Seen in emailFlagsObj) {
searchObject.seen = emailFlagsObj[EmailFlags.Seen];
}
const emailSearchFiltersObj = context.getNodeParameter('emailSearchFilters', itemIndex);
if (EmailSearchFilters.BCC in emailSearchFiltersObj) {
searchObject.bcc = emailSearchFiltersObj[EmailSearchFilters.BCC];
}
if (EmailSearchFilters.CC in emailSearchFiltersObj) {
searchObject.cc = emailSearchFiltersObj[EmailSearchFilters.CC];
}
if (EmailSearchFilters.From in emailSearchFiltersObj) {
searchObject.from = emailSearchFiltersObj[EmailSearchFilters.From];
}
if (EmailSearchFilters.Subject in emailSearchFiltersObj) {
searchObject.subject = emailSearchFiltersObj[EmailSearchFilters.Subject];
}
if (EmailSearchFilters.Text in emailSearchFiltersObj) {
searchObject.body = emailSearchFiltersObj[EmailSearchFilters.Text];
}
if (EmailSearchFilters.To in emailSearchFiltersObj) {
searchObject.to = emailSearchFiltersObj[EmailSearchFilters.To];
}
if (EmailSearchFilters.UID in emailSearchFiltersObj) {
searchObject.uid = emailSearchFiltersObj[EmailSearchFilters.UID];
}
return searchObject;
}
//# sourceMappingURL=EmailSearchParameters.js.map