UNPKG

@vwork-digital/n8n-nodes-fillout

Version:

N8N nodes for Fillout forms - includes both trigger and action nodes.

174 lines 6.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FilloutTrigger = void 0; const n8n_workflow_1 = require("n8n-workflow"); class FilloutTrigger { constructor() { this.description = { displayName: 'Fillout Trigger', name: 'filloutTrigger', icon: 'file:fillout.svg', group: ['trigger'], version: 1, description: 'Starts the workflow when a Fillout form is submitted', defaults: { name: 'Fillout Trigger', }, inputs: [], outputs: ["main"], credentials: [ { name: 'filloutApi', required: true, }, ], webhooks: [ { name: 'default', httpMethod: 'POST', responseMode: 'onReceived', path: 'webhook', }, ], properties: [ { displayName: 'Form', name: 'formId', type: 'options', typeOptions: { loadOptionsMethod: 'getForms', }, default: '', required: true, description: 'The Fillout form that will trigger this workflow when a submission is received', }, ], }; this.methods = { loadOptions: { async getForms() { const credentials = await this.getCredentials('filloutApi'); try { const response = await this.helpers.request({ method: 'GET', url: `${credentials.apiUrl}/v1/api/forms`, headers: { Authorization: `Bearer ${credentials.apiKey}`, }, json: true, }); const forms = response; return forms.map(form => ({ name: form.name, value: form.formId, })); } catch (error) { console.error('[Fillout Trigger] Error loading forms:', error); throw new n8n_workflow_1.NodeApiError(this.getNode(), error); } }, }, }; this.webhookMethods = { default: { async checkExists() { const webhookData = this.getWorkflowStaticData('node'); if (webhookData.webhookId === undefined) { return false; } return true; }, async create() { const webhookUrl = this.getNodeWebhookUrl('default'); const webhookData = this.getWorkflowStaticData('node'); const formId = this.getNodeParameter('formId'); const credentials = await this.getCredentials('filloutApi'); try { const response = await this.helpers.request({ method: 'POST', url: `${credentials.apiUrl}/v1/api/webhook/create`, body: { formId, url: webhookUrl, }, headers: { Authorization: `Bearer ${credentials.apiKey}`, 'Content-Type': 'application/json', }, json: true, }); if (!response || !response.id) { throw new Error(`Failed to create webhook for form ${formId}. Response: ${JSON.stringify(response)}`); } webhookData.webhookId = response.id; webhookData.formId = formId; return true; } catch (error) { console.error('[Fillout Trigger] Error creating webhook:', error); throw error; } }, async delete() { const webhookData = this.getWorkflowStaticData('node'); const credentials = await this.getCredentials('filloutApi'); if (webhookData.webhookId === undefined) { return false; } const webhookId = webhookData.webhookId; try { const response = await this.helpers.request({ method: 'POST', url: `${credentials.apiUrl}/v1/api/webhook/delete`, body: { webhookId, }, headers: { Authorization: `Bearer ${credentials.apiKey}`, 'Content-Type': 'application/json', }, json: true, }); console.log('[Fillout Trigger] Deleted webhook:', response); delete webhookData.webhookId; delete webhookData.formId; return true; } catch (error) { console.error('[Fillout Trigger] Error deleting webhook:', error); return false; } }, }, }; } async webhook() { try { let bodyData = this.getBodyData(); if (typeof bodyData === 'string') { try { bodyData = JSON.parse(bodyData); } catch (e) { } } const processedData = (typeof bodyData === 'object') ? bodyData : { rawData: bodyData }; return { workflowData: [ this.helpers.returnJsonArray([processedData]), ], }; } catch (error) { console.error('[Fillout Trigger] Error processing webhook data:', error); return { workflowData: [ this.helpers.returnJsonArray([{ error: 'Error processing webhook data' }]), ], }; } } } exports.FilloutTrigger = FilloutTrigger; //# sourceMappingURL=FilloutTrigger.node.js.map