n8n-nodes-inflow-crm
Version:
Official Inflow CRM integration for n8n. Create, update, search records and handle webhooks with dynamic field support.
74 lines (73 loc) • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeGetProcessesAction = void 0;
const api_1 = require("../../lib/api");
const endpoints_1 = require("../../lib/endpoints");
const logger_1 = require("../../lib/logger");
async function executeGetProcessesAction(itemIndex, moduleName) {
// Context and parameter validation
if (!this || typeof this.getNodeParameter !== 'function') {
throw new Error('Context error: IExecuteFunctions context is required');
}
if (!moduleName || typeof moduleName !== 'string') {
throw new Error('module name is required');
}
// Restrict module parameter to only 'potential' and 'order' values
if (moduleName !== 'potential' && moduleName !== 'order') {
throw new Error(`Unsupported module "${moduleName}". Only "potential" and "order" modules support processes.`);
}
logger_1.actionsLogger.info(`Getting processes for module: ${moduleName}`);
try {
// Build request body for POST /api/getProcessesForModule
const requestBody = {
module: moduleName,
};
logger_1.actionsLogger.info('Request body:', JSON.stringify(requestBody, null, 2));
let response;
try {
response = await (0, api_1.inflowApiRequest)(this, 'POST', endpoints_1.Endpoints.GET_PROCESSES_FOR_MODULE, requestBody);
}
catch (apiError) {
logger_1.actionsLogger.error('API request failed with error:', apiError);
if (apiError?.error && apiError.error.code) {
throw new Error(`[${apiError.error.code}] ${apiError.error.message}`);
}
throw apiError;
}
logger_1.actionsLogger.info('API Response:', JSON.stringify(response, null, 2));
// Expect { data: [...] } format
if (response && typeof response === 'object' && 'data' in response) {
const { data } = response;
// Handle empty process lists gracefully
if (!Array.isArray(data)) {
logger_1.actionsLogger.warn('Get processes returned non-array data for', moduleName, '.');
return [{ json: { success: true, data: [] }, pairedItem: { item: itemIndex } }];
}
// Format response to include process id, label, and stagesNames
const formattedData = data.map(process => ({
id: process.id,
systemLabel: process.systemLabel,
stagesNames: process.stagesNames || [],
}));
// Return the complete response with formatted data
return [{
json: {
success: true,
data: formattedData,
count: formattedData.length
},
pairedItem: { item: itemIndex }
}];
}
logger_1.actionsLogger.error('Unexpected API response format:', response);
throw new Error('API returned unexpected response format');
}
catch (error) {
logger_1.actionsLogger.error('Error getting processes:', error);
if (error?.error && error.error.code) {
throw new Error(`[${error.error.code}] ${error.error.message}`);
}
throw new Error(`Failed to get processes for "${moduleName}": ${error.message || 'unknown error'}`);
}
}
exports.executeGetProcessesAction = executeGetProcessesAction;