n8n-nodes-extended-forms 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/credentials/GithubIssuesApi.credentials.js +1 -36
  2. package/dist/credentials/GithubIssuesOAuth2Api.credentials.js +1 -53
  3. package/dist/nodes/Form123/Form.node.js +1 -388
  4. package/dist/nodes/Form123/Form.node.js.map +1 -1
  5. package/dist/nodes/Form123/FormTrigger.node.js +1 -27
  6. package/dist/nodes/Form123/common.descriptions.js +1 -630
  7. package/dist/nodes/Form123/common.descriptions.js.map +1 -1
  8. package/dist/nodes/Form123/cssVariables.js +1 -73
  9. package/dist/nodes/Form123/interfaces.d.ts +5 -0
  10. package/dist/nodes/Form123/interfaces.js +1 -4
  11. package/dist/nodes/Form123/interfaces.js.map +1 -1
  12. package/dist/nodes/Form123/templates/form-trigger-completion.handlebars +2 -1
  13. package/dist/nodes/Form123/templates/form-trigger.handlebars +774 -73
  14. package/dist/nodes/Form123/utils/descriptions.js +1 -10
  15. package/dist/nodes/Form123/utils/formCompletionUtils.js +1 -106
  16. package/dist/nodes/Form123/utils/formNodeUtils.js +3 -75
  17. package/dist/nodes/Form123/utils/formNodeUtils.js.map +1 -1
  18. package/dist/nodes/Form123/utils/templateRenderer.js +1 -71
  19. package/dist/nodes/Form123/utils/utilities.js +3 -47
  20. package/dist/nodes/Form123/utils/utils.d.ts +11 -3
  21. package/dist/nodes/Form123/utils/utils.js +3 -592
  22. package/dist/nodes/Form123/utils/utils.js.map +1 -1
  23. package/dist/nodes/Form123/utils/waitUtils.js +1 -67
  24. package/dist/nodes/Form123/v1/FormTriggerV1.node.js +1 -82
  25. package/dist/nodes/Form123/v2/FormTriggerV2.node.js +1 -193
  26. package/dist/nodes/Form123/v2/FormTriggerV2.node.js.map +1 -1
  27. package/dist/package.json +3 -1
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +3 -1
@@ -1,11 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.appendAttributionOption = void 0;
4
- exports.appendAttributionOption = {
5
- displayName: 'Append Attribution',
6
- name: 'appendAttribution',
7
- type: 'boolean',
8
- default: true,
9
- description: 'Whether to include the "Form automated with n8n" link at the bottom of the form',
10
- };
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.appendAttributionOption=void 0,exports.appendAttributionOption={displayName:"Append Attribution",name:"appendAttribution",type:"boolean",default:!0,description:'Whether to include the "Form automated with n8n" link at the bottom of the form'};
11
2
  //# sourceMappingURL=descriptions.js.map
@@ -1,107 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderFormCompletion = exports.binaryResponse = void 0;
4
- const n8n_workflow_1 = require("n8n-workflow");
5
- const utils_1 = require("./utils");
6
- const templateRenderer_1 = require("./templateRenderer");
7
- const SANDBOX_CSP = 'sandbox allow-downloads allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-presentation allow-scripts allow-top-navigation allow-top-navigation-by-user-activation allow-top-navigation-to-custom-protocols';
8
- const getBinaryDataFromNode = (context, nodeName) => {
9
- return context.evaluateExpression(`{{ $('${nodeName}').first().binary }}`);
10
- };
11
- const binaryResponse = async (context) => {
12
- var _a;
13
- console.log('use 3');
14
- const inputDataFieldName = context.getNodeParameter('inputDataFieldName', '');
15
- const parentNodes = context.getParentNodes(context.getNode().name);
16
- const binaryNode = parentNodes
17
- .reverse()
18
- .find((node) => { var _a; return (_a = getBinaryDataFromNode(context, node === null || node === void 0 ? void 0 : node.name)) === null || _a === void 0 ? void 0 : _a.hasOwnProperty(inputDataFieldName); });
19
- if (!binaryNode) {
20
- throw new n8n_workflow_1.OperationalError(`No binary data with field ${inputDataFieldName} found.`);
21
- }
22
- const binaryData = getBinaryDataFromNode(context, binaryNode === null || binaryNode === void 0 ? void 0 : binaryNode.name)[inputDataFieldName];
23
- return {
24
- data: binaryData.id
25
- ? await context.helpers.binaryToBuffer(await context.helpers.getBinaryStream(binaryData.id))
26
- : atob(binaryData.data),
27
- fileName: (_a = binaryData.fileName) !== null && _a !== void 0 ? _a : 'file',
28
- type: binaryData.mimeType,
29
- };
30
- };
31
- exports.binaryResponse = binaryResponse;
32
- const renderFormCompletion = async (context, res, trigger) => {
33
- var _a;
34
- console.log('use 8');
35
- const completionTitle = context.getNodeParameter('completionTitle', '');
36
- const completionMessage = context.getNodeParameter('completionMessage', '');
37
- const redirectUrl = context.getNodeParameter('redirectUrl', '');
38
- const options = context.getNodeParameter('options', {});
39
- const responseText = (_a = context.getNodeParameter('responseText', '')) !== null && _a !== void 0 ? _a : '';
40
- const respondWith = context.getNodeParameter('respondWith', '');
41
- const binary = respondWith === 'returnBinary' ? await (0, exports.binaryResponse)(context) : '';
42
- let title = options.formTitle;
43
- if (!title) {
44
- title = context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.formTitle }}`);
45
- }
46
- let formHeader = options.formHeader;
47
- if (!formHeader || !formHeader.trim()) {
48
- try {
49
- const triggerHeader = context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.formHeader }}`);
50
- formHeader = triggerHeader && triggerHeader.trim() ? triggerHeader : undefined;
51
- }
52
- catch {
53
- formHeader = undefined;
54
- }
55
- }
56
- if (formHeader && formHeader.trim()) {
57
- formHeader = (0, utils_1.sanitizeHtml)(formHeader);
58
- if (!formHeader.trim()) {
59
- formHeader = undefined;
60
- }
61
- }
62
- else {
63
- formHeader = undefined;
64
- }
65
- const appendAttribution = context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.options?.appendAttribution === false ? false : true }}`);
66
- if (respondWith !== 'redirect') {
67
- res.setHeader('Content-Security-Policy', SANDBOX_CSP);
68
- }
69
- try {
70
- const html = (0, templateRenderer_1.renderTemplate)('form-trigger-completion', {
71
- title: completionTitle,
72
- message: (0, utils_1.sanitizeHtml)(completionMessage),
73
- formTitle: title,
74
- formHeader,
75
- appendAttribution,
76
- responseText,
77
- responseBinary: encodeURIComponent(JSON.stringify(binary)),
78
- dangerousCustomCss: (0, utils_1.sanitizeCustomCss)(options.customCss),
79
- redirectUrl,
80
- });
81
- res.setHeader('Content-Type', 'text/html');
82
- res.send(html);
83
- }
84
- catch (error) {
85
- const html = `
86
- <!DOCTYPE html>
87
- <html>
88
- <head>
89
- <title>${completionTitle || 'Form Submitted'}</title>
90
- ${options.customCss ? `<style>${(0, utils_1.sanitizeCustomCss)(options.customCss)}</style>` : ''}
91
- </head>
92
- <body>
93
- ${formHeader ? `<div class="form-header-image">${formHeader}</div>` : ''}
94
- <h1>${completionTitle || 'Form Submitted'}</h1>
95
- ${completionMessage ? `<p>${(0, utils_1.sanitizeHtml)(completionMessage)}</p>` : ''}
96
- ${responseText ? `<div>${responseText}</div>` : ''}
97
- ${redirectUrl ? `<script>window.location.replace('${redirectUrl}');</script>` : ''}
98
- </body>
99
- </html>
100
- `;
101
- res.setHeader('Content-Type', 'text/html');
102
- res.send(html);
103
- }
104
- return { noWebhookResponse: true };
105
- };
106
- exports.renderFormCompletion = renderFormCompletion;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderFormCompletion=exports.binaryResponse=void 0;const n8n_workflow_1=require("n8n-workflow"),utils_1=require("./utils"),templateRenderer_1=require("./templateRenderer"),SANDBOX_CSP="sandbox allow-downloads allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-presentation allow-scripts allow-top-navigation allow-top-navigation-by-user-activation allow-top-navigation-to-custom-protocols",getBinaryDataFromNode=(context,nodeName)=>context.evaluateExpression(`{{ $('${nodeName}').first().binary }}`),binaryResponse=async context=>{var _a;const inputDataFieldName=context.getNodeParameter("inputDataFieldName",""),binaryNode=context.getParentNodes(context.getNode().name).reverse().find(node=>{var _a;return null===(_a=getBinaryDataFromNode(context,null==node?void 0:node.name))||void 0===_a?void 0:_a.hasOwnProperty(inputDataFieldName)});if(!binaryNode)throw new n8n_workflow_1.OperationalError(`No binary data with field ${inputDataFieldName} found.`);const binaryData=getBinaryDataFromNode(context,null==binaryNode?void 0:binaryNode.name)[inputDataFieldName];return{data:binaryData.id?await context.helpers.binaryToBuffer(await context.helpers.getBinaryStream(binaryData.id)):atob(binaryData.data),fileName:null!==(_a=binaryData.fileName)&&void 0!==_a?_a:"file",type:binaryData.mimeType}};exports.binaryResponse=binaryResponse;const renderFormCompletion=async(context,res,trigger)=>{var _a;const completionTitle=context.getNodeParameter("completionTitle",""),completionMessage=context.getNodeParameter("completionMessage",""),redirectUrl=context.getNodeParameter("redirectUrl",""),options=context.getNodeParameter("options",{}),responseText=null!==(_a=context.getNodeParameter("responseText",""))&&void 0!==_a?_a:"",respondWith=context.getNodeParameter("respondWith",""),binary="returnBinary"===respondWith?await(0,exports.binaryResponse)(context):"";let title=options.formTitle;title||(title=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.formTitle }}`));let formHeader=options.formHeader;if(!formHeader||!formHeader.trim())try{const triggerHeader=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.formHeader }}`);formHeader=triggerHeader&&triggerHeader.trim()?triggerHeader:void 0}catch{formHeader=void 0}formHeader&&formHeader.trim()?(formHeader=(0,utils_1.sanitizeHtml)(formHeader),formHeader.trim()||(formHeader=void 0)):formHeader=void 0;const appendAttribution=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.options?.appendAttribution === false ? false : true }}`);"redirect"!==respondWith&&res.setHeader("Content-Security-Policy",SANDBOX_CSP);try{const html=(0,templateRenderer_1.renderTemplate)("form-trigger-completion",{title:completionTitle,message:(0,utils_1.sanitizeHtml)(completionMessage),formTitle:title,formHeader:formHeader,appendAttribution:appendAttribution,responseText:responseText,responseBinary:encodeURIComponent(JSON.stringify(binary)),dangerousCustomCss:(0,utils_1.sanitizeCustomCss)(options.customCss),redirectUrl:redirectUrl});res.setHeader("Content-Type","text/html"),res.send(html)}catch(error){const html=`\n\t\t\t<!DOCTYPE html>\n\t\t\t<html>\n\t\t\t<head>\n\t\t\t\t<title>${completionTitle||"Form Submitted"}</title>\n\t\t\t\t${options.customCss?`<style>${(0,utils_1.sanitizeCustomCss)(options.customCss)}</style>`:""}\n\t\t\t</head>\n\t\t\t<body>\n\t\t\t\t${formHeader?`<div class="form-header-image">${formHeader}</div>`:""}\n\t\t\t\t<h1>${completionTitle||"Form Submitted"}</h1>\n\t\t\t\t${completionMessage?`<p>${(0,utils_1.sanitizeHtml)(completionMessage)}</p>`:""}\n\t\t\t\t${responseText?`<div>${responseText}</div>`:""}\n\t\t\t\t${redirectUrl?`<script>window.location.replace('${redirectUrl}');<\/script>`:""}\n\t\t\t</body>\n\t\t\t</html>\n\t\t`;res.setHeader("Content-Type","text/html"),res.send(html)}return{noWebhookResponse:!0}};exports.renderFormCompletion=renderFormCompletion;
107
2
  //# sourceMappingURL=formCompletionUtils.js.map
@@ -1,75 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderFormNode = void 0;
4
- exports.getFormTriggerNode = getFormTriggerNode;
5
- const n8n_workflow_1 = require("n8n-workflow");
6
- const utils_1 = require("./utils");
7
- const renderFormNode = async (context, res, trigger, fields, mode) => {
8
- console.log('use 6');
9
- const options = context.getNodeParameter('options', {});
10
- let header = options.formHeader;
11
- if (!header || !header.trim()) {
12
- try {
13
- const triggerHeader = context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.formHeader }}`);
14
- header = triggerHeader && triggerHeader.trim() ? triggerHeader : undefined;
15
- }
16
- catch (error) {
17
- header = undefined;
18
- }
19
- }
20
- if (header && header.trim()) {
21
- header = (0, utils_1.sanitizeHtml)(header);
22
- if (!header.trim()) {
23
- header = undefined;
24
- }
25
- }
26
- else {
27
- header = undefined;
28
- }
29
- let title = options.formTitle;
30
- if (!title) {
31
- title = context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.formTitle }}`);
32
- }
33
- let buttonLabel = options.buttonLabel;
34
- if (!buttonLabel) {
35
- buttonLabel =
36
- context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.options?.buttonLabel }}`) || 'Submit';
37
- }
38
- const appendAttribution = context.evaluateExpression(`{{ $('${trigger === null || trigger === void 0 ? void 0 : trigger.name}').params.options?.appendAttribution === false ? false : true }}`);
39
- (0, utils_1.renderForm)({
40
- context,
41
- res,
42
- formHeader: header,
43
- formTitle: title,
44
- formDescription: options.formDescription,
45
- formFields: fields,
46
- responseMode: 'responseNode',
47
- mode,
48
- redirectUrl: undefined,
49
- appendAttribution,
50
- buttonLabel,
51
- customCss: options.customCss,
52
- });
53
- return {
54
- noWebhookResponse: true,
55
- };
56
- };
57
- exports.renderFormNode = renderFormNode;
58
- function getFormTriggerNode(context) {
59
- const parentNodes = context.getParentNodes(context.getNode().name);
60
- const formTriggers = parentNodes.filter((node) => node.type === n8n_workflow_1.FORM_TRIGGER_NODE_TYPE);
61
- if (!formTriggers.length) {
62
- throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Form Trigger node must be set before this node');
63
- }
64
- for (const trigger of formTriggers) {
65
- try {
66
- context.evaluateExpression(`{{ $('${trigger.name}').first() }}`);
67
- }
68
- catch (error) {
69
- continue;
70
- }
71
- return trigger;
72
- }
73
- throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Form Trigger node was not executed');
74
- }
75
- //# sourceMappingURL=formNodeUtils.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderFormNode=void 0,exports.getFormTriggerNode=getFormTriggerNode;const n8n_workflow_1=require("n8n-workflow"),utils_1=require("./utils");function isFormTriggerNode(nodeType){return"CUSTOM.formTrigger"===nodeType||nodeType.includes(".formTrigger")||"formTrigger"===nodeType}const renderFormNode=async(context,res,trigger,fields,mode)=>{const options=context.getNodeParameter("options",{});let header=options.formHeader;if(!header||!header.trim())try{const triggerHeader=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.formHeader }}`);header=triggerHeader&&triggerHeader.trim()?triggerHeader:void 0}catch(error){header=void 0}header&&header.trim()?(header=(0,utils_1.sanitizeHtml)(header),header.trim()||(header=void 0)):header=void 0;let title=options.formTitle;title||(title=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.formTitle }}`));let buttonLabel=options.buttonLabel;buttonLabel||(buttonLabel=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.options?.buttonLabel }}`)||"Submit");const appendAttribution=context.evaluateExpression(`{{ $('${null==trigger?void 0:trigger.name}').params.options?.appendAttribution === false ? false : true }}`);return await(0,utils_1.renderForm)({context:context,res:res,formHeader:header,formTitle:title,formDescription:options.formDescription,formFields:fields,responseMode:"responseNode",mode:mode,redirectUrl:void 0,appendAttribution:appendAttribution,buttonLabel:buttonLabel,customCss:options.customCss}),{noWebhookResponse:!0}};function getFormTriggerNode(context){const formTriggers=context.getParentNodes(context.getNode().name).filter(node=>isFormTriggerNode(node.type));if(!formTriggers.length)throw new n8n_workflow_1.NodeOperationError(context.getNode(),"Form Trigger node must be set before this node");for(const trigger of formTriggers){try{context.evaluateExpression(`{{ $('${trigger.name}').first() }}`)}catch(error){continue}return trigger}throw new n8n_workflow_1.NodeOperationError(context.getNode(),"Form Trigger node was not executed")}
2
+ //# sourceMappingURL=formNodeUtils.js.map
3
+ exports.renderFormNode=renderFormNode;
@@ -1 +1 @@
1
- {"version":3,"file":"formNodeUtils.js","sourceRoot":"","sources":["../../../../nodes/Form123/utils/formNodeUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formNodeUtils.js","sourceRoot":"","sources":["../../../../nodes/Form123/utils/formNodeUtils.ts"],"names":[],"mappings":"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"}
@@ -1,72 +1,2 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.renderTemplate = renderTemplate;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- const handlebars_1 = __importDefault(require("handlebars"));
43
- handlebars_1.default.registerHelper('json', function (context) {
44
- return JSON.stringify(context);
45
- });
46
- const templateCache = {};
47
- function renderTemplate(templateName, data) {
48
- if (templateCache[templateName]) {
49
- return templateCache[templateName](data);
50
- }
51
- const possiblePaths = [
52
- path.join(__dirname, '..', 'templates', `${templateName}.handlebars`),
53
- path.join(__dirname, '..', 'templates', `${templateName}.handlebars`),
54
- path.join(process.cwd(), 'nodes', 'Form123', 'templates', `${templateName}.handlebars`),
55
- path.join(process.cwd(), 'dist', 'nodes', 'Form123', 'templates', `${templateName}.handlebars`),
56
- ];
57
- let templateContent = null;
58
- for (const templatePath of possiblePaths) {
59
- if (fs.existsSync(templatePath)) {
60
- templateContent = fs.readFileSync(templatePath, 'utf-8');
61
- break;
62
- }
63
- }
64
- if (!templateContent) {
65
- throw new Error(`Template not found: ${templateName}.handlebars\n` +
66
- `Searched in:\n${possiblePaths.map(p => ` - ${p}`).join('\n')}`);
67
- }
68
- const template = handlebars_1.default.compile(templateContent);
69
- templateCache[templateName] = template;
70
- return template(data);
71
- }
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){void 0===k2&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);desc&&!("get"in desc?!m.__esModule:desc.writable||desc.configurable)||(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){void 0===k2&&(k2=k),o[k2]=m[k]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}:function(o,v){o.default=v}),__importStar=this&&this.__importStar||function(){var ownKeys=function(o){return ownKeys=Object.getOwnPropertyNames||function(o){var ar=[];for(var k in o)Object.prototype.hasOwnProperty.call(o,k)&&(ar[ar.length]=k);return ar},ownKeys(o)};return function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k=ownKeys(mod),i=0;i<k.length;i++)"default"!==k[i]&&__createBinding(result,mod,k[i]);return __setModuleDefault(result,mod),result}}(),__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderTemplate=renderTemplate;const fs=__importStar(require("fs")),path=__importStar(require("path")),handlebars_1=__importDefault(require("handlebars"));handlebars_1.default.registerHelper("json",function(context){return JSON.stringify(context)});const templateCache={};function renderTemplate(templateName,data){if(templateCache[templateName])return templateCache[templateName](data);const possiblePaths=[path.join(__dirname,"..","templates",`${templateName}.handlebars`),path.join(__dirname,"..","templates",`${templateName}.handlebars`),path.join(process.cwd(),"nodes","Form123","templates",`${templateName}.handlebars`),path.join(process.cwd(),"dist","nodes","Form123","templates",`${templateName}.handlebars`)];let templateContent=null;for(const templatePath of possiblePaths)if(fs.existsSync(templatePath)){templateContent=fs.readFileSync(templatePath,"utf-8");break}if(!templateContent)throw new Error(`Template not found: ${templateName}.handlebars\nSearched in:\n${possiblePaths.map(p=>` - ${p}`).join("\n")}`);const template=handlebars_1.default.compile(templateContent);return templateCache[templateName]=template,template(data)}
72
2
  //# sourceMappingURL=templateRenderer.js.map
@@ -1,47 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebhookAuthorizationError = void 0;
4
- exports.getResolvables = getResolvables;
5
- exports.validateWebhookAuthentication = validateWebhookAuthentication;
6
- function getResolvables(text) {
7
- const resolvables = [];
8
- const regex = /\{\{[\s\S]*?\}\}/g;
9
- let match;
10
- while ((match = regex.exec(text)) !== null) {
11
- resolvables.push(match[0]);
12
- }
13
- return resolvables;
14
- }
15
- class WebhookAuthorizationError extends Error {
16
- constructor(statusCode, message) {
17
- super(message || `Webhook authorization failed with status ${statusCode}`);
18
- this.statusCode = statusCode;
19
- this.name = 'WebhookAuthorizationError';
20
- }
21
- }
22
- exports.WebhookAuthorizationError = WebhookAuthorizationError;
23
- async function validateWebhookAuthentication(context, authProperty) {
24
- const authType = context.getNodeParameter(authProperty, 'none');
25
- if (authType === 'none') {
26
- return;
27
- }
28
- if (authType === 'basicAuth') {
29
- const req = context.getRequestObject();
30
- const authHeader = req.headers.authorization;
31
- if (!authHeader || !authHeader.startsWith('Basic ')) {
32
- throw new WebhookAuthorizationError(401, 'Basic authentication required');
33
- }
34
- try {
35
- const credentials = await context.getCredentials('httpBasicAuth');
36
- if (credentials) {
37
- const expectedAuth = Buffer.from(`${credentials.user}:${credentials.password}`).toString('base64');
38
- if (authHeader !== `Basic ${expectedAuth}`) {
39
- throw new WebhookAuthorizationError(401, 'Invalid credentials');
40
- }
41
- }
42
- }
43
- catch (error) {
44
- }
45
- }
46
- }
47
- //# sourceMappingURL=utilities.js.map
1
+ "use strict";function getResolvables(text){const resolvables=[],regex=/\{\{[\s\S]*?\}\}/g;let match;for(;null!==(match=regex.exec(text));)resolvables.push(match[0]);return resolvables}Object.defineProperty(exports,"__esModule",{value:!0}),exports.WebhookAuthorizationError=void 0,exports.getResolvables=getResolvables,exports.validateWebhookAuthentication=validateWebhookAuthentication;class WebhookAuthorizationError extends Error{constructor(statusCode,message){super(message||`Webhook authorization failed with status ${statusCode}`),this.statusCode=statusCode,this.name="WebhookAuthorizationError"}}async function validateWebhookAuthentication(context,authProperty){const authType=context.getNodeParameter(authProperty,"none");if("none"!==authType&&"basicAuth"===authType){const authHeader=context.getRequestObject().headers.authorization;if(!authHeader||!authHeader.startsWith("Basic "))throw new WebhookAuthorizationError(401,"Basic authentication required");try{const credentials=await context.getCredentials("httpBasicAuth");if(credentials){if(authHeader!==`Basic ${Buffer.from(`${credentials.user}:${credentials.password}`).toString("base64")}`)throw new WebhookAuthorizationError(401,"Invalid credentials")}}catch(error){}}}
2
+ //# sourceMappingURL=utilities.js.map
3
+ exports.WebhookAuthorizationError=WebhookAuthorizationError;
@@ -27,7 +27,7 @@ export declare const prepareFormFields: (context: IWebhookFunctions, fields: For
27
27
  }[];
28
28
  export declare function sanitizeCustomCss(css: string | undefined): string | undefined;
29
29
  export declare function createDescriptionMetadata(description: string): string;
30
- export declare function prepareFormData({ formHeader, formTitle, formDescription, formSubmittedHeader, formSubmittedText, completionHeader, redirectUrl, formFields, testRun, query, instanceId, useResponseData, appendAttribution, buttonLabel, customCss, }: {
30
+ export declare function prepareFormData({ formHeader, formTitle, formDescription, formSubmittedHeader, formSubmittedText, completionHeader, redirectUrl, formFields, testRun, query, instanceId, useResponseData, appendAttribution, buttonLabel, customCss, enableProgressSaving, saveProgressWebhookUrl, loadProgressWebhookUrl, progressQueryParam, }: {
31
31
  formHeader?: string;
32
32
  formTitle: string;
33
33
  formDescription: string;
@@ -43,11 +43,15 @@ export declare function prepareFormData({ formHeader, formTitle, formDescription
43
43
  formSubmittedHeader?: string;
44
44
  completionHeader?: string;
45
45
  customCss?: string;
46
+ enableProgressSaving?: boolean;
47
+ saveProgressWebhookUrl?: string;
48
+ loadProgressWebhookUrl?: string;
49
+ progressQueryParam?: string;
46
50
  }): FormTriggerData;
47
51
  export declare const validateResponseModeConfiguration: (context: IWebhookFunctions) => void;
48
52
  export declare function addFormResponseDataToReturnItem(returnItem: INodeExecutionData, formFields: FormFieldsParameter, bodyData: IDataObject): void;
49
53
  export declare function prepareFormReturnItem(context: IWebhookFunctions, formFields: FormFieldsParameter, mode: 'test' | 'production', useWorkflowTimezone?: boolean): Promise<INodeExecutionData>;
50
- export declare function renderForm({ context, res, formHeader, formTitle, formDescription, formFields, responseMode, mode, formSubmittedText, formSubmittedHeader, completionHeader, redirectUrl, appendAttribution, buttonLabel, customCss, }: {
54
+ export declare function renderForm({ context, res, formHeader, formTitle, formDescription, formFields, responseMode, mode, formSubmittedText, formSubmittedHeader, completionHeader, redirectUrl, appendAttribution, buttonLabel, customCss, enableProgressSaving: enableProgressSavingParam, progressQueryParam: progressQueryParamParam, saveProgressWebhookUrl: saveProgressWebhookUrlParam, loadProgressWebhookUrl: loadProgressWebhookUrlParam, }: {
51
55
  context: IWebhookFunctions;
52
56
  res: Response;
53
57
  formHeader?: string;
@@ -63,7 +67,11 @@ export declare function renderForm({ context, res, formHeader, formTitle, formDe
63
67
  appendAttribution?: boolean;
64
68
  buttonLabel?: string;
65
69
  customCss?: string;
66
- }): void;
70
+ enableProgressSaving?: boolean;
71
+ progressQueryParam?: string;
72
+ saveProgressWebhookUrl?: string;
73
+ loadProgressWebhookUrl?: string;
74
+ }): Promise<void>;
67
75
  export declare const isFormConnected: (nodes: NodeTypeAndVersion[]) => boolean;
68
76
  export declare function formWebhook(context: IWebhookFunctions, authProperty?: string): Promise<{
69
77
  noWebhookResponse: boolean;