UNPKG

n8n-nodes-selfhosthub

Version:

Collection of n8n nodes for self-hosted AI services, including Leonardo.ai integration for AI image and content generation capabilities.

169 lines 5.46 kB
"use strict"; // nodes/CreateJ2vMovie/core/buildRequest.ts Object.defineProperty(exports, "__esModule", { value: true }); exports.buildRequest = buildRequest; exports.isEmptyRequest = isEmptyRequest; /** * Build complete JSON2Video API request from collected parameters * Handles both basic mode (form parameters) and advanced mode (JSON template) */ function buildRequest(parameters) { const result = { request: null, errors: [], warnings: [] }; try { if (parameters.isAdvancedMode) { result.request = buildAdvancedModeRequest(parameters, result); } else { result.request = buildBasicModeRequest(parameters, result); } if (result.request) { applyCommonRequestProperties(result.request, parameters); if (!result.request.scenes || result.request.scenes.length === 0) { result.warnings.push('Request has no scenes - video will be empty'); } } return result; } catch (error) { result.errors.push('Request building failed: Unknown error'); return result; } } /** * Build request from JSON template in advanced mode */ function buildAdvancedModeRequest(parameters, result) { try { if (!parameters.jsonTemplate || !parameters.jsonTemplate.trim()) { result.errors.push('Advanced mode requires a JSON template'); return null; } let baseRequest; try { baseRequest = JSON.parse(parameters.jsonTemplate.trim()); } catch (parseError) { result.errors.push('Invalid JSON template: Parse error'); return null; } if (!baseRequest.scenes) { baseRequest.scenes = []; } return baseRequest; } catch (error) { result.errors.push('Advanced mode processing failed: Unknown error'); return null; } } /** * Build request from form parameters using single-scene approach */ function buildBasicModeRequest(parameters, result) { const request = { scenes: [] }; applyOutputSettings(request, parameters); // Process movie-level subtitles if (parameters.subtitles && typeof parameters.subtitles === 'object') { request.elements = [parameters.subtitles]; } buildSingleScene(request, parameters, result); return request; } /** * Apply output settings to the request */ function applyOutputSettings(request, parameters) { if (parameters.outputSettings) { const output = parameters.outputSettings; if (output.width !== undefined) request.width = output.width; if (output.height !== undefined) request.height = output.height; if (output.quality !== undefined) request.quality = output.quality; if (output.cache !== undefined) request.cache = output.cache; } // Set defaults if no output settings provided if (!request.width) request.width = 1920; if (!request.height) request.height = 1080; if (!request.quality) request.quality = 'high'; } /** * Build single scene with all collected elements */ function buildSingleScene(request, parameters, result) { const scene = { elements: [] }; if (parameters.elements && parameters.elements.length > 0) { parameters.elements.forEach((element, index) => { try { if (!element.type) { result.errors.push(`Element ${index + 1}: missing type`); return; } scene.elements.push(element); } catch (error) { result.errors.push(`Element ${index + 1}: Unknown error`); } }); } request.scenes.push(scene); if (scene.elements.length === 0) { if (!parameters.subtitles) { result.warnings.push('No elements or subtitles provided - video will be empty'); } else { result.warnings.push('No scene elements provided - only subtitles will appear'); } } } /** * Apply common request properties that affect all operations */ function applyCommonRequestProperties(request, parameters) { // Apply exports configuration with v2 API format if (parameters.exportConfigs && parameters.exportConfigs.length > 0) { request.exports = parameters.exportConfigs; // Warning for multiple export configs (API limitation) if (parameters.exportConfigs.length > 1) { // This warning will be shown in validation, so we don't duplicate it here } } if (parameters.recordId) { const recordComment = `RecordID: ${parameters.recordId}`; if (request.comment) { request.comment += ` | ${recordComment}`; } else { request.comment = recordComment; } } if (!request.id) { request.id = parameters.recordId || `n8n-${Date.now()}`; } } /** * Check if request contains meaningful content */ function isEmptyRequest(request) { if (request.elements && request.elements.length > 0) { return false; } if (request.scenes && request.scenes.length > 0) { return !request.scenes.some(scene => scene.elements && scene.elements.length > 0); } return true; } //# sourceMappingURL=buildRequest.js.map