UNPKG

n8n-nodes-awx

Version:

n8n node to interact with Ansible AWX/Tower with improved type safety

99 lines 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveResourceParameters = resolveResourceParameters; exports.normalizeSearchFilter = normalizeSearchFilter; exports.throwParameterResolutionError = throwParameterResolutionError; exports.formatResourceResponse = formatResourceResponse; const n8n_workflow_1 = require("n8n-workflow"); function resolveResourceParameters(idKeys, nameKeys, resourceType, itemIndex = 0) { const safeGet = (key) => { try { return this.getNodeParameter(key, itemIndex, ''); } catch { return undefined; } }; let id; let name; for (const key of idKeys) { const val = safeGet(key); if (val !== undefined && val !== '') { id = val; break; } } if (!id) { for (const key of nameKeys) { const val = safeGet(key); if (val !== undefined && val !== '') { name = val; break; } } } if (!id && !name) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Either ID or Name must be provided for ${resourceType}`); } return { id, name }; } function normalizeSearchFilter(rawFilter) { const filter = (rawFilter || '').trim(); if (!filter) { return undefined; } const lower = filter.toLowerCase(); const ignoreValues = new Set([ '*', 'all', 'job', 'jobs', 'job_template', 'job_templates', 'template', 'templates', 'workflow_job_template', 'workflow_job_templates', 'workflow', 'workflows', 'project', 'projects', 'inventory', 'inventories', 'group', 'groups', 'host', 'hosts', ]); if (ignoreValues.has(lower)) { return undefined; } return filter; } function throwParameterResolutionError(resourceType, idKeys, nameKeys, itemIndex = 0) { const idKeysList = idKeys.map(key => `'${key}'`).join(', '); const nameKeysList = nameKeys.map(key => `'${key}'`).join(', '); throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to resolve parameters for ${resourceType}. Provide one of: ${idKeysList} for ID or ${nameKeysList} for name.`, { itemIndex }); } function formatResourceResponse(resource, format, resourceType) { if (format === 'minimal') { return { id: resource.id, name: resource.name, }; } if (format === 'friendly') { const friendlyData = { id: resource.id, name: resource.name, description: resource.description || '', created: resource.created, modified: resource.modified, }; if (resourceType === 'inventory') { friendlyData.host_count = resource.total_hosts; friendlyData.organization = resource.organization; } else if (resourceType === 'job') { friendlyData.status = resource.status; friendlyData.started = resource.started; friendlyData.finished = resource.finished; if (resource.job_output !== undefined) { friendlyData.job_output = resource.job_output; } } return friendlyData; } return resource; } //# sourceMappingURL=resourceHelpers.js.map