dtamind-components
Version:
Apps integration for Dtamind. Contain Nodes and Credentials.
840 lines • 33.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../../../src/utils");
const core_1 = require("./core");
class MicrosoftOutlook_Tools {
constructor() {
this.label = 'Microsoft Outlook';
this.name = 'microsoftOutlook';
this.version = 1.0;
this.type = 'MicrosoftOutlook';
this.icon = 'outlook.svg';
this.category = 'Tools';
this.description = 'Perform Microsoft Outlook operations for calendars, events, and messages';
this.baseClasses = [this.type, 'Tool'];
this.credential = {
label: 'Connect Credential',
name: 'credential',
type: 'credential',
credentialNames: ['microsoftOutlookOAuth2']
};
this.inputs = [
{
label: 'Type',
name: 'outlookType',
type: 'options',
options: [
{
label: 'Calendar',
name: 'calendar'
},
{
label: 'Message',
name: 'message'
}
]
},
// Calendar Actions
{
label: 'Calendar Actions',
name: 'calendarActions',
type: 'multiOptions',
options: [
{
label: 'List Calendars',
name: 'listCalendars'
},
{
label: 'Get Calendar',
name: 'getCalendar'
},
{
label: 'Create Calendar',
name: 'createCalendar'
},
{
label: 'Update Calendar',
name: 'updateCalendar'
},
{
label: 'Delete Calendar',
name: 'deleteCalendar'
},
{
label: 'List Events',
name: 'listEvents'
},
{
label: 'Get Event',
name: 'getEvent'
},
{
label: 'Create Event',
name: 'createEvent'
},
{
label: 'Update Event',
name: 'updateEvent'
},
{
label: 'Delete Event',
name: 'deleteEvent'
}
],
show: {
outlookType: ['calendar']
}
},
// Message Actions
{
label: 'Message Actions',
name: 'messageActions',
type: 'multiOptions',
options: [
{
label: 'List Messages',
name: 'listMessages'
},
{
label: 'Get Message',
name: 'getMessage'
},
{
label: 'Create Draft Message',
name: 'createDraftMessage'
},
{
label: 'Send Message',
name: 'sendMessage'
},
{
label: 'Update Message',
name: 'updateMessage'
},
{
label: 'Delete Message',
name: 'deleteMessage'
},
{
label: 'Copy Message',
name: 'copyMessage'
},
{
label: 'Move Message',
name: 'moveMessage'
},
{
label: 'Reply to Message',
name: 'replyMessage'
},
{
label: 'Forward Message',
name: 'forwardMessage'
}
],
show: {
outlookType: ['message']
}
},
// CALENDAR PARAMETERS
// List Calendars Parameters
{
label: 'Max Results [List Calendars]',
name: 'maxResultsListCalendars',
type: 'number',
description: 'Maximum number of calendars to return',
default: 50,
show: {
outlookType: ['calendar'],
calendarActions: ['listCalendars']
},
additionalParams: true,
optional: true
},
// Get Calendar Parameters
{
label: 'Calendar ID [Get Calendar]',
name: 'calendarIdGetCalendar',
type: 'string',
description: 'ID of the calendar to retrieve',
show: {
outlookType: ['calendar'],
calendarActions: ['getCalendar']
},
additionalParams: true,
optional: true
},
// Create Calendar Parameters
{
label: 'Calendar Name [Create Calendar]',
name: 'calendarNameCreateCalendar',
type: 'string',
description: 'Name of the calendar',
placeholder: 'My New Calendar',
show: {
outlookType: ['calendar'],
calendarActions: ['createCalendar']
},
additionalParams: true,
optional: true
},
// Update Calendar Parameters
{
label: 'Calendar ID [Update Calendar]',
name: 'calendarIdUpdateCalendar',
type: 'string',
description: 'ID of the calendar to update',
show: {
outlookType: ['calendar'],
calendarActions: ['updateCalendar']
},
additionalParams: true,
optional: true
},
{
label: 'Calendar Name [Update Calendar]',
name: 'calendarNameUpdateCalendar',
type: 'string',
description: 'New name of the calendar',
show: {
outlookType: ['calendar'],
calendarActions: ['updateCalendar']
},
additionalParams: true,
optional: true
},
// Delete Calendar Parameters
{
label: 'Calendar ID [Delete Calendar]',
name: 'calendarIdDeleteCalendar',
type: 'string',
description: 'ID of the calendar to delete',
show: {
outlookType: ['calendar'],
calendarActions: ['deleteCalendar']
},
additionalParams: true,
optional: true
},
// List Events Parameters
{
label: 'Calendar ID [List Events]',
name: 'calendarIdListEvents',
type: 'string',
description: 'ID of the calendar (leave empty for primary calendar)',
show: {
outlookType: ['calendar'],
calendarActions: ['listEvents']
},
additionalParams: true,
optional: true
},
{
label: 'Max Results [List Events]',
name: 'maxResultsListEvents',
type: 'number',
description: 'Maximum number of events to return',
default: 50,
show: {
outlookType: ['calendar'],
calendarActions: ['listEvents']
},
additionalParams: true,
optional: true
},
{
label: 'Start Date Time [List Events]',
name: 'startDateTimeListEvents',
type: 'string',
description: 'Start date time filter in ISO format',
placeholder: '2024-01-01T00:00:00Z',
show: {
outlookType: ['calendar'],
calendarActions: ['listEvents']
},
additionalParams: true,
optional: true
},
{
label: 'End Date Time [List Events]',
name: 'endDateTimeListEvents',
type: 'string',
description: 'End date time filter in ISO format',
placeholder: '2024-12-31T23:59:59Z',
show: {
outlookType: ['calendar'],
calendarActions: ['listEvents']
},
additionalParams: true,
optional: true
},
// Get Event Parameters
{
label: 'Event ID [Get Event]',
name: 'eventIdGetEvent',
type: 'string',
description: 'ID of the event to retrieve',
show: {
outlookType: ['calendar'],
calendarActions: ['getEvent']
},
additionalParams: true,
optional: true
},
// Create Event Parameters
{
label: 'Subject [Create Event]',
name: 'subjectCreateEvent',
type: 'string',
description: 'Subject/title of the event',
placeholder: 'Meeting Title',
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
{
label: 'Body [Create Event]',
name: 'bodyCreateEvent',
type: 'string',
description: 'Body/description of the event',
placeholder: 'Meeting description',
rows: 3,
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
{
label: 'Start Date Time [Create Event]',
name: 'startDateTimeCreateEvent',
type: 'string',
description: 'Start date and time in ISO format',
placeholder: '2024-01-15T10:00:00',
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
{
label: 'End Date Time [Create Event]',
name: 'endDateTimeCreateEvent',
type: 'string',
description: 'End date and time in ISO format',
placeholder: '2024-01-15T11:00:00',
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
{
label: 'Time Zone [Create Event]',
name: 'timeZoneCreateEvent',
type: 'string',
description: 'Time zone for the event',
placeholder: 'UTC',
default: 'UTC',
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
{
label: 'Location [Create Event]',
name: 'locationCreateEvent',
type: 'string',
description: 'Location of the event',
placeholder: 'Conference Room A',
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
{
label: 'Attendees [Create Event]',
name: 'attendeesCreateEvent',
type: 'string',
description: 'Comma-separated list of attendee email addresses',
placeholder: 'user1@example.com,user2@example.com',
show: {
outlookType: ['calendar'],
calendarActions: ['createEvent']
},
additionalParams: true,
optional: true
},
// Update Event Parameters
{
label: 'Event ID [Update Event]',
name: 'eventIdUpdateEvent',
type: 'string',
description: 'ID of the event to update',
show: {
outlookType: ['calendar'],
calendarActions: ['updateEvent']
},
additionalParams: true,
optional: true
},
{
label: 'Subject [Update Event]',
name: 'subjectUpdateEvent',
type: 'string',
description: 'New subject/title of the event',
show: {
outlookType: ['calendar'],
calendarActions: ['updateEvent']
},
additionalParams: true,
optional: true
},
// Delete Event Parameters
{
label: 'Event ID [Delete Event]',
name: 'eventIdDeleteEvent',
type: 'string',
description: 'ID of the event to delete',
show: {
outlookType: ['calendar'],
calendarActions: ['deleteEvent']
},
additionalParams: true,
optional: true
},
// MESSAGE PARAMETERS
// List Messages Parameters
{
label: 'Max Results [List Messages]',
name: 'maxResultsListMessages',
type: 'number',
description: 'Maximum number of messages to return',
default: 50,
show: {
outlookType: ['message'],
messageActions: ['listMessages']
},
additionalParams: true,
optional: true
},
{
label: 'Filter [List Messages]',
name: 'filterListMessages',
type: 'string',
description: 'Filter query (e.g., "isRead eq false")',
show: {
outlookType: ['message'],
messageActions: ['listMessages']
},
additionalParams: true,
optional: true
},
// Get Message Parameters
{
label: 'Message ID [Get Message]',
name: 'messageIdGetMessage',
type: 'string',
description: 'ID of the message to retrieve',
show: {
outlookType: ['message'],
messageActions: ['getMessage']
},
additionalParams: true,
optional: true
},
// Create Draft Message Parameters
{
label: 'To [Create Draft Message]',
name: 'toCreateDraftMessage',
type: 'string',
description: 'Recipient email address(es), comma-separated',
placeholder: 'user@example.com',
show: {
outlookType: ['message'],
messageActions: ['createDraftMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Subject [Create Draft Message]',
name: 'subjectCreateDraftMessage',
type: 'string',
description: 'Subject of the message',
placeholder: 'Email Subject',
show: {
outlookType: ['message'],
messageActions: ['createDraftMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Body [Create Draft Message]',
name: 'bodyCreateDraftMessage',
type: 'string',
description: 'Body content of the message',
placeholder: 'Email body content',
rows: 4,
show: {
outlookType: ['message'],
messageActions: ['createDraftMessage']
},
additionalParams: true,
optional: true
},
{
label: 'CC [Create Draft Message]',
name: 'ccCreateDraftMessage',
type: 'string',
description: 'CC email address(es), comma-separated',
placeholder: 'cc@example.com',
show: {
outlookType: ['message'],
messageActions: ['createDraftMessage']
},
additionalParams: true,
optional: true
},
{
label: 'BCC [Create Draft Message]',
name: 'bccCreateDraftMessage',
type: 'string',
description: 'BCC email address(es), comma-separated',
placeholder: 'bcc@example.com',
show: {
outlookType: ['message'],
messageActions: ['createDraftMessage']
},
additionalParams: true,
optional: true
},
// Send Message Parameters
{
label: 'To [Send Message]',
name: 'toSendMessage',
type: 'string',
description: 'Recipient email address(es), comma-separated',
placeholder: 'user@example.com',
show: {
outlookType: ['message'],
messageActions: ['sendMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Subject [Send Message]',
name: 'subjectSendMessage',
type: 'string',
description: 'Subject of the message',
placeholder: 'Email Subject',
show: {
outlookType: ['message'],
messageActions: ['sendMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Body [Send Message]',
name: 'bodySendMessage',
type: 'string',
description: 'Body content of the message',
placeholder: 'Email body content',
rows: 4,
show: {
outlookType: ['message'],
messageActions: ['sendMessage']
},
additionalParams: true,
optional: true
},
// Update Message Parameters
{
label: 'Message ID [Update Message]',
name: 'messageIdUpdateMessage',
type: 'string',
description: 'ID of the message to update',
show: {
outlookType: ['message'],
messageActions: ['updateMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Is Read [Update Message]',
name: 'isReadUpdateMessage',
type: 'boolean',
description: 'Mark message as read/unread',
show: {
outlookType: ['message'],
messageActions: ['updateMessage']
},
additionalParams: true,
optional: true
},
// Delete Message Parameters
{
label: 'Message ID [Delete Message]',
name: 'messageIdDeleteMessage',
type: 'string',
description: 'ID of the message to delete',
show: {
outlookType: ['message'],
messageActions: ['deleteMessage']
},
additionalParams: true,
optional: true
},
// Copy Message Parameters
{
label: 'Message ID [Copy Message]',
name: 'messageIdCopyMessage',
type: 'string',
description: 'ID of the message to copy',
show: {
outlookType: ['message'],
messageActions: ['copyMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Destination Folder ID [Copy Message]',
name: 'destinationFolderIdCopyMessage',
type: 'string',
description: 'ID of the destination folder',
show: {
outlookType: ['message'],
messageActions: ['copyMessage']
},
additionalParams: true,
optional: true
},
// Move Message Parameters
{
label: 'Message ID [Move Message]',
name: 'messageIdMoveMessage',
type: 'string',
description: 'ID of the message to move',
show: {
outlookType: ['message'],
messageActions: ['moveMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Destination Folder ID [Move Message]',
name: 'destinationFolderIdMoveMessage',
type: 'string',
description: 'ID of the destination folder',
show: {
outlookType: ['message'],
messageActions: ['moveMessage']
},
additionalParams: true,
optional: true
},
// Reply Message Parameters
{
label: 'Message ID [Reply Message]',
name: 'messageIdReplyMessage',
type: 'string',
description: 'ID of the message to reply to',
show: {
outlookType: ['message'],
messageActions: ['replyMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Reply Body [Reply Message]',
name: 'replyBodyReplyMessage',
type: 'string',
description: 'Reply message body',
rows: 4,
show: {
outlookType: ['message'],
messageActions: ['replyMessage']
},
additionalParams: true,
optional: true
},
// Forward Message Parameters
{
label: 'Message ID [Forward Message]',
name: 'messageIdForwardMessage',
type: 'string',
description: 'ID of the message to forward',
show: {
outlookType: ['message'],
messageActions: ['forwardMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Forward To [Forward Message]',
name: 'forwardToForwardMessage',
type: 'string',
description: 'Email address(es) to forward to, comma-separated',
show: {
outlookType: ['message'],
messageActions: ['forwardMessage']
},
additionalParams: true,
optional: true
},
{
label: 'Forward Comment [Forward Message]',
name: 'forwardCommentForwardMessage',
type: 'string',
description: 'Additional comment to include with forward',
rows: 2,
show: {
outlookType: ['message'],
messageActions: ['forwardMessage']
},
additionalParams: true,
optional: true
}
];
}
async init(nodeData, _, options) {
const outlookType = nodeData.inputs?.outlookType;
const calendarActions = nodeData.inputs?.calendarActions;
const messageActions = nodeData.inputs?.messageActions;
let credentialData = await (0, utils_1.getCredentialData)(nodeData.credential ?? '', options);
credentialData = await (0, utils_1.refreshOAuth2Token)(nodeData.credential ?? '', credentialData, options);
const accessToken = (0, utils_1.getCredentialParam)('access_token', credentialData, nodeData);
if (!accessToken) {
throw new Error('No access token found in credential');
}
let actions = [];
if (outlookType === 'calendar') {
actions = (0, utils_1.convertMultiOptionsToStringArray)(calendarActions);
}
else if (outlookType === 'message') {
actions = (0, utils_1.convertMultiOptionsToStringArray)(messageActions);
}
const defaultParams = this.transformNodeInputsToToolArgs(nodeData);
const outlookTools = (0, core_1.createOutlookTools)({
accessToken,
actions,
defaultParams
});
return outlookTools;
}
transformNodeInputsToToolArgs(nodeData) {
// Collect default parameters from inputs
const defaultParams = {};
// Calendar parameters
if (nodeData.inputs?.maxResultsListCalendars)
defaultParams.maxResultsListCalendars = nodeData.inputs.maxResultsListCalendars;
if (nodeData.inputs?.calendarIdGetCalendar)
defaultParams.calendarIdGetCalendar = nodeData.inputs.calendarIdGetCalendar;
if (nodeData.inputs?.calendarNameCreateCalendar)
defaultParams.calendarNameCreateCalendar = nodeData.inputs.calendarNameCreateCalendar;
if (nodeData.inputs?.calendarIdUpdateCalendar)
defaultParams.calendarIdUpdateCalendar = nodeData.inputs.calendarIdUpdateCalendar;
if (nodeData.inputs?.calendarNameUpdateCalendar)
defaultParams.calendarNameUpdateCalendar = nodeData.inputs.calendarNameUpdateCalendar;
if (nodeData.inputs?.calendarIdDeleteCalendar)
defaultParams.calendarIdDeleteCalendar = nodeData.inputs.calendarIdDeleteCalendar;
if (nodeData.inputs?.calendarIdListEvents)
defaultParams.calendarIdListEvents = nodeData.inputs.calendarIdListEvents;
if (nodeData.inputs?.maxResultsListEvents)
defaultParams.maxResultsListEvents = nodeData.inputs.maxResultsListEvents;
if (nodeData.inputs?.startDateTimeListEvents)
defaultParams.startDateTimeListEvents = nodeData.inputs.startDateTimeListEvents;
if (nodeData.inputs?.endDateTimeListEvents)
defaultParams.endDateTimeListEvents = nodeData.inputs.endDateTimeListEvents;
if (nodeData.inputs?.eventIdGetEvent)
defaultParams.eventIdGetEvent = nodeData.inputs.eventIdGetEvent;
if (nodeData.inputs?.subjectCreateEvent)
defaultParams.subjectCreateEvent = nodeData.inputs.subjectCreateEvent;
if (nodeData.inputs?.bodyCreateEvent)
defaultParams.bodyCreateEvent = nodeData.inputs.bodyCreateEvent;
if (nodeData.inputs?.startDateTimeCreateEvent)
defaultParams.startDateTimeCreateEvent = nodeData.inputs.startDateTimeCreateEvent;
if (nodeData.inputs?.endDateTimeCreateEvent)
defaultParams.endDateTimeCreateEvent = nodeData.inputs.endDateTimeCreateEvent;
if (nodeData.inputs?.timeZoneCreateEvent)
defaultParams.timeZoneCreateEvent = nodeData.inputs.timeZoneCreateEvent;
if (nodeData.inputs?.locationCreateEvent)
defaultParams.locationCreateEvent = nodeData.inputs.locationCreateEvent;
if (nodeData.inputs?.attendeesCreateEvent)
defaultParams.attendeesCreateEvent = nodeData.inputs.attendeesCreateEvent;
if (nodeData.inputs?.eventIdUpdateEvent)
defaultParams.eventIdUpdateEvent = nodeData.inputs.eventIdUpdateEvent;
if (nodeData.inputs?.subjectUpdateEvent)
defaultParams.subjectUpdateEvent = nodeData.inputs.subjectUpdateEvent;
if (nodeData.inputs?.eventIdDeleteEvent)
defaultParams.eventIdDeleteEvent = nodeData.inputs.eventIdDeleteEvent;
// Message parameters
if (nodeData.inputs?.maxResultsListMessages)
defaultParams.maxResultsListMessages = nodeData.inputs.maxResultsListMessages;
if (nodeData.inputs?.filterListMessages)
defaultParams.filterListMessages = nodeData.inputs.filterListMessages;
if (nodeData.inputs?.messageIdGetMessage)
defaultParams.messageIdGetMessage = nodeData.inputs.messageIdGetMessage;
if (nodeData.inputs?.toCreateDraftMessage)
defaultParams.toCreateDraftMessage = nodeData.inputs.toCreateDraftMessage;
if (nodeData.inputs?.subjectCreateDraftMessage)
defaultParams.subjectCreateDraftMessage = nodeData.inputs.subjectCreateDraftMessage;
if (nodeData.inputs?.bodyCreateDraftMessage)
defaultParams.bodyCreateDraftMessage = nodeData.inputs.bodyCreateDraftMessage;
if (nodeData.inputs?.ccCreateDraftMessage)
defaultParams.ccCreateDraftMessage = nodeData.inputs.ccCreateDraftMessage;
if (nodeData.inputs?.bccCreateDraftMessage)
defaultParams.bccCreateDraftMessage = nodeData.inputs.bccCreateDraftMessage;
if (nodeData.inputs?.toSendMessage)
defaultParams.toSendMessage = nodeData.inputs.toSendMessage;
if (nodeData.inputs?.subjectSendMessage)
defaultParams.subjectSendMessage = nodeData.inputs.subjectSendMessage;
if (nodeData.inputs?.bodySendMessage)
defaultParams.bodySendMessage = nodeData.inputs.bodySendMessage;
if (nodeData.inputs?.messageIdUpdateMessage)
defaultParams.messageIdUpdateMessage = nodeData.inputs.messageIdUpdateMessage;
if (nodeData.inputs?.isReadUpdateMessage !== undefined)
defaultParams.isReadUpdateMessage = nodeData.inputs.isReadUpdateMessage;
if (nodeData.inputs?.messageIdDeleteMessage)
defaultParams.messageIdDeleteMessage = nodeData.inputs.messageIdDeleteMessage;
if (nodeData.inputs?.messageIdCopyMessage)
defaultParams.messageIdCopyMessage = nodeData.inputs.messageIdCopyMessage;
if (nodeData.inputs?.destinationFolderIdCopyMessage)
defaultParams.destinationFolderIdCopyMessage = nodeData.inputs.destinationFolderIdCopyMessage;
if (nodeData.inputs?.messageIdMoveMessage)
defaultParams.messageIdMoveMessage = nodeData.inputs.messageIdMoveMessage;
if (nodeData.inputs?.destinationFolderIdMoveMessage)
defaultParams.destinationFolderIdMoveMessage = nodeData.inputs.destinationFolderIdMoveMessage;
if (nodeData.inputs?.messageIdReplyMessage)
defaultParams.messageIdReplyMessage = nodeData.inputs.messageIdReplyMessage;
if (nodeData.inputs?.replyBodyReplyMessage)
defaultParams.replyBodyReplyMessage = nodeData.inputs.replyBodyReplyMessage;
if (nodeData.inputs?.messageIdForwardMessage)
defaultParams.messageIdForwardMessage = nodeData.inputs.messageIdForwardMessage;
if (nodeData.inputs?.forwardToForwardMessage)
defaultParams.forwardToForwardMessage = nodeData.inputs.forwardToForwardMessage;
if (nodeData.inputs?.forwardCommentForwardMessage)
defaultParams.forwardCommentForwardMessage = nodeData.inputs.forwardCommentForwardMessage;
return defaultParams;
}
}
module.exports = { nodeClass: MicrosoftOutlook_Tools };
//# sourceMappingURL=MicrosoftOutlook.js.map