n8n-nodes-instantly-dev
Version:
n8n community node for Instantly API v2
86 lines • 2.44 kB
JavaScript
;
/**
* Utility functions for Instantly API v2 integration
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.handlePagination = handlePagination;
exports.transformErrorMessage = transformErrorMessage;
exports.cleanRequestBody = cleanRequestBody;
exports.formatCampaignData = formatCampaignData;
exports.formatLeadData = formatLeadData;
/**
* Handle pagination for Instantly API responses
*/
function handlePagination(response, limit) {
if (!response || !Array.isArray(response.data)) {
return response;
}
const data = response.data;
const hasMore = response.has_more || false;
const nextCursor = response.next_starting_after || null;
return {
data,
hasMore,
nextCursor,
totalCount: data.length,
};
}
/**
* Transform Instantly API error responses into user-friendly messages
*/
function transformErrorMessage(error) {
if (error.response?.data?.message) {
return `Instantly API Error: ${error.response.data.message}`;
}
if (error.response?.data?.error) {
return `Instantly API Error: ${error.response.data.error}`;
}
if (error.message) {
return `Request Error: ${error.message}`;
}
return 'An unknown error occurred while communicating with Instantly API';
}
/**
* Clean up request body by removing empty or undefined values
*/
function cleanRequestBody(body) {
const cleaned = {};
for (const [key, value] of Object.entries(body)) {
if (value !== undefined && value !== null && value !== '') {
cleaned[key] = value;
}
}
return cleaned;
}
/**
* Format campaign data for consistent output
*/
function formatCampaignData(campaign) {
return {
id: campaign.id,
name: campaign.name,
status: campaign.status,
emailAccountId: campaign.email_account_id,
createdAt: campaign.created_at,
updatedAt: campaign.updated_at,
...campaign,
};
}
/**
* Format lead data for consistent output
*/
function formatLeadData(lead) {
return {
id: lead.id,
email: lead.email,
firstName: lead.first_name,
lastName: lead.last_name,
company: lead.company,
linkedinUrl: lead.linkedin_url,
status: lead.status,
createdAt: lead.created_at,
updatedAt: lead.updated_at,
...lead,
};
}
//# sourceMappingURL=utils.js.map