UNPKG

dtamind-components

Version:

DTAmindai Components

444 lines 16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../../../src/utils"); const core_1 = require("./core"); class Jira_Tools { constructor() { this.label = 'Jira'; this.name = 'jiraTool'; this.version = 1.0; this.type = 'Jira'; this.icon = 'jira.svg'; this.category = 'Tools'; this.description = 'Perform Jira operations for issues, comments, and users'; this.baseClasses = [this.type, 'Tool']; this.credential = { label: 'Connect Credential', name: 'credential', type: 'credential', credentialNames: ['jiraApi'] }; this.inputs = [ { label: 'Host', name: 'jiraHost', type: 'string', placeholder: 'https://example.atlassian.net' }, { label: 'Type', name: 'jiraType', type: 'options', options: [ { label: 'Issues', name: 'issues' }, { label: 'Issue Comments', name: 'comments' }, { label: 'Users', name: 'users' } ] }, // Issue Actions { label: 'Issue Actions', name: 'issueActions', type: 'multiOptions', options: [ { label: 'List Issues', name: 'listIssues' }, { label: 'Create Issue', name: 'createIssue' }, { label: 'Get Issue', name: 'getIssue' }, { label: 'Update Issue', name: 'updateIssue' }, { label: 'Delete Issue', name: 'deleteIssue' }, { label: 'Assign Issue', name: 'assignIssue' }, { label: 'Transition Issue', name: 'transitionIssue' } ], show: { jiraType: ['issues'] } }, // Comment Actions { label: 'Comment Actions', name: 'commentActions', type: 'multiOptions', options: [ { label: 'List Comments', name: 'listComments' }, { label: 'Create Comment', name: 'createComment' }, { label: 'Get Comment', name: 'getComment' }, { label: 'Update Comment', name: 'updateComment' }, { label: 'Delete Comment', name: 'deleteComment' } ], show: { jiraType: ['comments'] } }, // User Actions { label: 'User Actions', name: 'userActions', type: 'multiOptions', options: [ { label: 'Search Users', name: 'searchUsers' }, { label: 'Get User', name: 'getUser' }, { label: 'Create User', name: 'createUser' }, { label: 'Update User', name: 'updateUser' }, { label: 'Delete User', name: 'deleteUser' } ], show: { jiraType: ['users'] } }, // ISSUE PARAMETERS { label: 'Project Key', name: 'projectKey', type: 'string', placeholder: 'PROJ', description: 'Project key for the issue', show: { issueActions: ['listIssues', 'createIssue'] }, additionalParams: true, optional: true }, { label: 'Issue Type', name: 'issueType', type: 'string', placeholder: 'Bug, Task, Story', description: 'Type of issue to create', show: { issueActions: ['createIssue'] }, additionalParams: true, optional: true }, { label: 'Summary', name: 'issueSummary', type: 'string', description: 'Issue summary/title', show: { issueActions: ['createIssue', 'updateIssue'] }, additionalParams: true, optional: true }, { label: 'Description', name: 'issueDescription', type: 'string', description: 'Issue description', show: { issueActions: ['createIssue', 'updateIssue'] }, additionalParams: true, optional: true }, { label: 'Priority', name: 'issuePriority', type: 'string', placeholder: 'Highest, High, Medium, Low, Lowest', description: 'Issue priority', show: { issueActions: ['createIssue', 'updateIssue'] }, additionalParams: true, optional: true }, { label: 'Issue Key', name: 'issueKey', type: 'string', placeholder: 'PROJ-123', description: 'Issue key (e.g., PROJ-123)', show: { issueActions: ['getIssue', 'updateIssue', 'deleteIssue', 'assignIssue', 'transitionIssue'] }, additionalParams: true, optional: true }, { label: 'Assignee Account ID', name: 'assigneeAccountId', type: 'string', description: 'Account ID of the user to assign', show: { issueActions: ['assignIssue', 'createIssue', 'updateIssue'] }, additionalParams: true, optional: true }, { label: 'Transition ID', name: 'transitionId', type: 'string', description: 'ID of the transition to execute', show: { issueActions: ['transitionIssue'] }, additionalParams: true, optional: true }, { label: 'JQL Query', name: 'jqlQuery', type: 'string', placeholder: 'project = PROJ AND status = "To Do"', description: 'JQL query for filtering issues', show: { issueActions: ['listIssues'] }, additionalParams: true, optional: true }, { label: 'Max Results', name: 'issueMaxResults', type: 'number', default: 50, description: 'Maximum number of issues to return', show: { issueActions: ['listIssues'] }, additionalParams: true, optional: true }, // COMMENT PARAMETERS { label: 'Issue Key (for Comments)', name: 'commentIssueKey', type: 'string', placeholder: 'PROJ-123', description: 'Issue key for comment operations', show: { commentActions: ['listComments', 'createComment'] }, additionalParams: true, optional: true }, { label: 'Comment Text', name: 'commentText', type: 'string', description: 'Comment content', show: { commentActions: ['createComment', 'updateComment'] }, additionalParams: true, optional: true }, { label: 'Comment ID', name: 'commentId', type: 'string', description: 'ID of the comment', show: { commentActions: ['getComment', 'updateComment', 'deleteComment'] }, additionalParams: true, optional: true }, // USER PARAMETERS { label: 'Search Query', name: 'userQuery', type: 'string', placeholder: 'john.doe', description: 'Query string for user search', show: { userActions: ['searchUsers'] }, additionalParams: true, optional: true }, { label: 'Account ID', name: 'userAccountId', type: 'string', description: 'User account ID', show: { userActions: ['getUser', 'updateUser', 'deleteUser'] }, additionalParams: true, optional: true }, { label: 'Email Address', name: 'userEmail', type: 'string', placeholder: 'user@example.com', description: 'User email address', show: { userActions: ['createUser', 'updateUser'] }, additionalParams: true, optional: true }, { label: 'Display Name', name: 'userDisplayName', type: 'string', description: 'User display name', show: { userActions: ['createUser', 'updateUser'] }, additionalParams: true, optional: true }, { label: 'User Max Results', name: 'userMaxResults', type: 'number', default: 50, description: 'Maximum number of users to return', show: { userActions: ['searchUsers'] }, additionalParams: true, optional: true } ]; } async init(nodeData, _, options) { let credentialData = await (0, utils_1.getCredentialData)(nodeData.credential ?? '', options); const username = (0, utils_1.getCredentialParam)('username', credentialData, nodeData); const accessToken = (0, utils_1.getCredentialParam)('accessToken', credentialData, nodeData); const jiraHost = nodeData.inputs?.jiraHost; if (!username) { throw new Error('No username found in credential'); } if (!accessToken) { throw new Error('No access token found in credential'); } if (!jiraHost) { throw new Error('No Jira host provided'); } // Get all actions based on type const jiraType = nodeData.inputs?.jiraType; let actions = []; if (jiraType === 'issues') { actions = (0, utils_1.convertMultiOptionsToStringArray)(nodeData.inputs?.issueActions); } else if (jiraType === 'comments') { actions = (0, utils_1.convertMultiOptionsToStringArray)(nodeData.inputs?.commentActions); } else if (jiraType === 'users') { actions = (0, utils_1.convertMultiOptionsToStringArray)(nodeData.inputs?.userActions); } const defaultParams = this.transformNodeInputsToToolArgs(nodeData); // Create and return tools based on selected actions const tools = (0, core_1.createJiraTools)({ actions, username, accessToken, jiraHost, defaultParams }); return tools; } transformNodeInputsToToolArgs(nodeData) { // Collect default parameters from inputs const defaultParams = {}; // Issue parameters if (nodeData.inputs?.projectKey) defaultParams.projectKey = nodeData.inputs.projectKey; if (nodeData.inputs?.issueType) defaultParams.issueType = nodeData.inputs.issueType; if (nodeData.inputs?.issueSummary) defaultParams.issueSummary = nodeData.inputs.issueSummary; if (nodeData.inputs?.issueDescription) defaultParams.issueDescription = nodeData.inputs.issueDescription; if (nodeData.inputs?.issuePriority) defaultParams.issuePriority = nodeData.inputs.issuePriority; if (nodeData.inputs?.issueKey) defaultParams.issueKey = nodeData.inputs.issueKey; if (nodeData.inputs?.assigneeAccountId) defaultParams.assigneeAccountId = nodeData.inputs.assigneeAccountId; if (nodeData.inputs?.transitionId) defaultParams.transitionId = nodeData.inputs.transitionId; if (nodeData.inputs?.jqlQuery) defaultParams.jqlQuery = nodeData.inputs.jqlQuery; if (nodeData.inputs?.issueMaxResults) defaultParams.issueMaxResults = nodeData.inputs.issueMaxResults; // Comment parameters if (nodeData.inputs?.commentIssueKey) defaultParams.commentIssueKey = nodeData.inputs.commentIssueKey; if (nodeData.inputs?.commentText) defaultParams.commentText = nodeData.inputs.commentText; if (nodeData.inputs?.commentId) defaultParams.commentId = nodeData.inputs.commentId; // User parameters if (nodeData.inputs?.userQuery) defaultParams.userQuery = nodeData.inputs.userQuery; if (nodeData.inputs?.userAccountId) defaultParams.userAccountId = nodeData.inputs.userAccountId; if (nodeData.inputs?.userEmail) defaultParams.userEmail = nodeData.inputs.userEmail; if (nodeData.inputs?.userDisplayName) defaultParams.userDisplayName = nodeData.inputs.userDisplayName; if (nodeData.inputs?.userMaxResults) defaultParams.userMaxResults = nodeData.inputs.userMaxResults; return defaultParams; } } module.exports = { nodeClass: Jira_Tools }; //# sourceMappingURL=Jira.js.map