UNPKG

n8n-nodes-late

Version:

n8n community node for LATE API - Schedule and manage social media posts across Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, and Threads

102 lines 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SUPPORTED_PLATFORMS = void 0; exports.loadPlatformAccounts = loadPlatformAccounts; exports.buildPlatformMappingExpression = buildPlatformMappingExpression; exports.processMediaItems = processMediaItems; exports.processTags = processTags; exports.SUPPORTED_PLATFORMS = [ { name: "Twitter/X", value: "twitter", displayName: "Twitter/X Accounts", usernamePrefix: "@", }, { name: "Instagram", value: "instagram", displayName: "Instagram Accounts", usernamePrefix: "@", }, { name: "Facebook", value: "facebook", displayName: "Facebook Accounts" }, { name: "LinkedIn", value: "linkedin", displayName: "LinkedIn Accounts" }, { name: "TikTok", value: "tiktok", displayName: "TikTok Accounts", usernamePrefix: "@", }, { name: "YouTube", value: "youtube", displayName: "YouTube Accounts" }, { name: "Threads", value: "threads", displayName: "Threads Accounts", usernamePrefix: "@", }, ]; /** * Generic function to load accounts for any platform */ async function loadPlatformAccounts(context, platform) { try { const response = await context.helpers.requestWithAuthentication.call(context, "lateApi", { method: "GET", url: "https://getlate.dev/api/v1/accounts", json: true, }); if (!response?.accounts) { return [{ name: `No ${platform} accounts found`, value: "none" }]; } const platformAccounts = response.accounts.filter((account) => account.platform === platform); if (platformAccounts.length === 0) { return [{ name: `No ${platform} accounts connected`, value: "none" }]; } const platformConfig = exports.SUPPORTED_PLATFORMS.find((p) => p.value === platform); const usernamePrefix = platformConfig?.usernamePrefix || ""; return platformAccounts.map((account) => ({ name: `${usernamePrefix}${account.username || account.displayName || account._id}`, value: account._id, })); } catch (error) { const errorMsg = error?.cause?.code === "ECONNREFUSED" ? "Cannot connect to LATE API. Please check your internet connection." : error.message || "Failed to load accounts"; return [{ name: `Error: ${errorMsg}`, value: "error" }]; } } /** * Builds the platform mapping expression for create/update operations * Fixed: Use proper n8n expression syntax that evaluates correctly */ function buildPlatformMappingExpression() { return "={{ $parameter.selectedPlatforms.map(platform => { if (platform === 'twitter') return $parameter.twitterAccounts?.map(id => ({ platform: 'twitter', accountId: id })) || []; if (platform === 'instagram') return $parameter.instagramAccounts?.map(id => ({ platform: 'instagram', accountId: id })) || []; if (platform === 'facebook') return $parameter.facebookAccounts?.map(id => ({ platform: 'facebook', accountId: id })) || []; if (platform === 'linkedin') return $parameter.linkedinAccounts?.map(id => ({ platform: 'linkedin', accountId: id })) || []; if (platform === 'tiktok') return $parameter.tiktokAccounts?.map(id => ({ platform: 'tiktok', accountId: id })) || []; if (platform === 'youtube') return $parameter.youtubeAccounts?.map(id => ({ platform: 'youtube', accountId: id })) || []; if (platform === 'threads') return $parameter.threadsAccounts?.map(id => ({ platform: 'threads', accountId: id })) || []; return []; }).flat() }}"; } /** * Processes media items to ensure proper variable evaluation */ function processMediaItems(mediaItems) { if (!mediaItems || !Array.isArray(mediaItems)) { return []; } return mediaItems.map((item) => ({ type: item.type || "image", url: item.url, filename: item.filename || "", mimeType: item.mimeType || "", ...(item._id && { _id: item._id }), })); } /** * Processes tags string into array */ function processTags(tagsString) { if (!tagsString || typeof tagsString !== "string") { return []; } return tagsString .split(",") .map((tag) => tag.trim()) .filter((tag) => tag.length > 0); } //# sourceMappingURL=platformHelpers.js.map