@ibracob.dev/n8n-nodes-fal 1.0.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 (197) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -0
  3. package/dist/credentials/FalApi.credentials.d.ts +10 -0
  4. package/dist/credentials/FalApi.credentials.d.ts.map +1 -0
  5. package/dist/credentials/FalApi.credentials.js +36 -0
  6. package/dist/credentials/FalApi.credentials.js.map +1 -0
  7. package/dist/credentials/fal-ai-logo.svg +3 -0
  8. package/dist/nodes/Fal/Fal.node.d.ts +6 -0
  9. package/dist/nodes/Fal/Fal.node.d.ts.map +1 -0
  10. package/dist/nodes/Fal/Fal.node.js +202 -0
  11. package/dist/nodes/Fal/Fal.node.js.map +1 -0
  12. package/dist/nodes/Fal/enums/index.d.ts +2 -0
  13. package/dist/nodes/Fal/enums/index.d.ts.map +1 -0
  14. package/dist/nodes/Fal/enums/index.js +18 -0
  15. package/dist/nodes/Fal/enums/index.js.map +1 -0
  16. package/dist/nodes/Fal/enums/queue-status.enum.d.ts +7 -0
  17. package/dist/nodes/Fal/enums/queue-status.enum.d.ts.map +1 -0
  18. package/dist/nodes/Fal/enums/queue-status.enum.js +11 -0
  19. package/dist/nodes/Fal/enums/queue-status.enum.js.map +1 -0
  20. package/dist/nodes/Fal/fal-ai-logo.svg +3 -0
  21. package/dist/nodes/Fal/interfaces/index.d.ts +3 -0
  22. package/dist/nodes/Fal/interfaces/index.d.ts.map +1 -0
  23. package/dist/nodes/Fal/interfaces/index.js +19 -0
  24. package/dist/nodes/Fal/interfaces/index.js.map +1 -0
  25. package/dist/nodes/Fal/interfaces/queue-status-response.interface.d.ts +14 -0
  26. package/dist/nodes/Fal/interfaces/queue-status-response.interface.d.ts.map +1 -0
  27. package/dist/nodes/Fal/interfaces/queue-status-response.interface.js +3 -0
  28. package/dist/nodes/Fal/interfaces/queue-status-response.interface.js.map +1 -0
  29. package/dist/nodes/Fal/interfaces/queue-submit-response.interface.d.ts +6 -0
  30. package/dist/nodes/Fal/interfaces/queue-submit-response.interface.d.ts.map +1 -0
  31. package/dist/nodes/Fal/interfaces/queue-submit-response.interface.js +3 -0
  32. package/dist/nodes/Fal/interfaces/queue-submit-response.interface.js.map +1 -0
  33. package/dist/nodes/Fal/resources/image-editing/description.d.ts +5 -0
  34. package/dist/nodes/Fal/resources/image-editing/description.d.ts.map +1 -0
  35. package/dist/nodes/Fal/resources/image-editing/description.js +178 -0
  36. package/dist/nodes/Fal/resources/image-editing/description.js.map +1 -0
  37. package/dist/nodes/Fal/resources/image-editing/execute/index.d.ts +3 -0
  38. package/dist/nodes/Fal/resources/image-editing/execute/index.d.ts.map +1 -0
  39. package/dist/nodes/Fal/resources/image-editing/execute/index.js +63 -0
  40. package/dist/nodes/Fal/resources/image-editing/execute/index.js.map +1 -0
  41. package/dist/nodes/Fal/resources/image-editing/index.d.ts +4 -0
  42. package/dist/nodes/Fal/resources/image-editing/index.d.ts.map +1 -0
  43. package/dist/nodes/Fal/resources/image-editing/index.js +41 -0
  44. package/dist/nodes/Fal/resources/image-editing/index.js.map +1 -0
  45. package/dist/nodes/Fal/resources/image-editing/models.d.ts +6 -0
  46. package/dist/nodes/Fal/resources/image-editing/models.d.ts.map +1 -0
  47. package/dist/nodes/Fal/resources/image-editing/models.js +31 -0
  48. package/dist/nodes/Fal/resources/image-editing/models.js.map +1 -0
  49. package/dist/nodes/Fal/resources/image-to-video/description.d.ts +5 -0
  50. package/dist/nodes/Fal/resources/image-to-video/description.d.ts.map +1 -0
  51. package/dist/nodes/Fal/resources/image-to-video/description.js +236 -0
  52. package/dist/nodes/Fal/resources/image-to-video/description.js.map +1 -0
  53. package/dist/nodes/Fal/resources/image-to-video/execute/index.d.ts +3 -0
  54. package/dist/nodes/Fal/resources/image-to-video/execute/index.d.ts.map +1 -0
  55. package/dist/nodes/Fal/resources/image-to-video/execute/index.js +64 -0
  56. package/dist/nodes/Fal/resources/image-to-video/execute/index.js.map +1 -0
  57. package/dist/nodes/Fal/resources/image-to-video/index.d.ts +4 -0
  58. package/dist/nodes/Fal/resources/image-to-video/index.d.ts.map +1 -0
  59. package/dist/nodes/Fal/resources/image-to-video/index.js +41 -0
  60. package/dist/nodes/Fal/resources/image-to-video/index.js.map +1 -0
  61. package/dist/nodes/Fal/resources/image-to-video/models.d.ts +6 -0
  62. package/dist/nodes/Fal/resources/image-to-video/models.d.ts.map +1 -0
  63. package/dist/nodes/Fal/resources/image-to-video/models.js +66 -0
  64. package/dist/nodes/Fal/resources/image-to-video/models.js.map +1 -0
  65. package/dist/nodes/Fal/resources/llm/description.d.ts +5 -0
  66. package/dist/nodes/Fal/resources/llm/description.d.ts.map +1 -0
  67. package/dist/nodes/Fal/resources/llm/description.js +132 -0
  68. package/dist/nodes/Fal/resources/llm/description.js.map +1 -0
  69. package/dist/nodes/Fal/resources/llm/execute/index.d.ts +3 -0
  70. package/dist/nodes/Fal/resources/llm/execute/index.d.ts.map +1 -0
  71. package/dist/nodes/Fal/resources/llm/execute/index.js +49 -0
  72. package/dist/nodes/Fal/resources/llm/execute/index.js.map +1 -0
  73. package/dist/nodes/Fal/resources/llm/index.d.ts +4 -0
  74. package/dist/nodes/Fal/resources/llm/index.d.ts.map +1 -0
  75. package/dist/nodes/Fal/resources/llm/index.js +41 -0
  76. package/dist/nodes/Fal/resources/llm/index.js.map +1 -0
  77. package/dist/nodes/Fal/resources/llm/models.d.ts +6 -0
  78. package/dist/nodes/Fal/resources/llm/models.d.ts.map +1 -0
  79. package/dist/nodes/Fal/resources/llm/models.js +136 -0
  80. package/dist/nodes/Fal/resources/llm/models.js.map +1 -0
  81. package/dist/nodes/Fal/resources/queue/description.d.ts +4 -0
  82. package/dist/nodes/Fal/resources/queue/description.d.ts.map +1 -0
  83. package/dist/nodes/Fal/resources/queue/description.js +149 -0
  84. package/dist/nodes/Fal/resources/queue/description.js.map +1 -0
  85. package/dist/nodes/Fal/resources/queue/execute/index.d.ts +3 -0
  86. package/dist/nodes/Fal/resources/queue/execute/index.d.ts.map +1 -0
  87. package/dist/nodes/Fal/resources/queue/execute/index.js +220 -0
  88. package/dist/nodes/Fal/resources/queue/execute/index.js.map +1 -0
  89. package/dist/nodes/Fal/resources/queue/index.d.ts +4 -0
  90. package/dist/nodes/Fal/resources/queue/index.d.ts.map +1 -0
  91. package/dist/nodes/Fal/resources/queue/index.js +9 -0
  92. package/dist/nodes/Fal/resources/queue/index.js.map +1 -0
  93. package/dist/nodes/Fal/resources/queue/models.d.ts +75 -0
  94. package/dist/nodes/Fal/resources/queue/models.d.ts.map +1 -0
  95. package/dist/nodes/Fal/resources/queue/models.js +12 -0
  96. package/dist/nodes/Fal/resources/queue/models.js.map +1 -0
  97. package/dist/nodes/Fal/resources/text-to-image/description.d.ts +5 -0
  98. package/dist/nodes/Fal/resources/text-to-image/description.d.ts.map +1 -0
  99. package/dist/nodes/Fal/resources/text-to-image/description.js +165 -0
  100. package/dist/nodes/Fal/resources/text-to-image/description.js.map +1 -0
  101. package/dist/nodes/Fal/resources/text-to-image/execute/index.d.ts +3 -0
  102. package/dist/nodes/Fal/resources/text-to-image/execute/index.d.ts.map +1 -0
  103. package/dist/nodes/Fal/resources/text-to-image/execute/index.js +64 -0
  104. package/dist/nodes/Fal/resources/text-to-image/execute/index.js.map +1 -0
  105. package/dist/nodes/Fal/resources/text-to-image/index.d.ts +4 -0
  106. package/dist/nodes/Fal/resources/text-to-image/index.d.ts.map +1 -0
  107. package/dist/nodes/Fal/resources/text-to-image/index.js +41 -0
  108. package/dist/nodes/Fal/resources/text-to-image/index.js.map +1 -0
  109. package/dist/nodes/Fal/resources/text-to-image/models.d.ts +6 -0
  110. package/dist/nodes/Fal/resources/text-to-image/models.d.ts.map +1 -0
  111. package/dist/nodes/Fal/resources/text-to-image/models.js +36 -0
  112. package/dist/nodes/Fal/resources/text-to-image/models.js.map +1 -0
  113. package/dist/nodes/Fal/resources/text-to-video/description.d.ts +5 -0
  114. package/dist/nodes/Fal/resources/text-to-video/description.d.ts.map +1 -0
  115. package/dist/nodes/Fal/resources/text-to-video/description.js +174 -0
  116. package/dist/nodes/Fal/resources/text-to-video/description.js.map +1 -0
  117. package/dist/nodes/Fal/resources/text-to-video/execute/index.d.ts +3 -0
  118. package/dist/nodes/Fal/resources/text-to-video/execute/index.d.ts.map +1 -0
  119. package/dist/nodes/Fal/resources/text-to-video/execute/index.js +57 -0
  120. package/dist/nodes/Fal/resources/text-to-video/execute/index.js.map +1 -0
  121. package/dist/nodes/Fal/resources/text-to-video/index.d.ts +4 -0
  122. package/dist/nodes/Fal/resources/text-to-video/index.d.ts.map +1 -0
  123. package/dist/nodes/Fal/resources/text-to-video/index.js +41 -0
  124. package/dist/nodes/Fal/resources/text-to-video/index.js.map +1 -0
  125. package/dist/nodes/Fal/resources/text-to-video/models.d.ts +6 -0
  126. package/dist/nodes/Fal/resources/text-to-video/models.d.ts.map +1 -0
  127. package/dist/nodes/Fal/resources/text-to-video/models.js +26 -0
  128. package/dist/nodes/Fal/resources/text-to-video/models.js.map +1 -0
  129. package/dist/nodes/Fal/resources/utility/description.d.ts +5 -0
  130. package/dist/nodes/Fal/resources/utility/description.d.ts.map +1 -0
  131. package/dist/nodes/Fal/resources/utility/description.js +101 -0
  132. package/dist/nodes/Fal/resources/utility/description.js.map +1 -0
  133. package/dist/nodes/Fal/resources/utility/execute/index.d.ts +3 -0
  134. package/dist/nodes/Fal/resources/utility/execute/index.d.ts.map +1 -0
  135. package/dist/nodes/Fal/resources/utility/execute/index.js +56 -0
  136. package/dist/nodes/Fal/resources/utility/execute/index.js.map +1 -0
  137. package/dist/nodes/Fal/resources/utility/index.d.ts +4 -0
  138. package/dist/nodes/Fal/resources/utility/index.d.ts.map +1 -0
  139. package/dist/nodes/Fal/resources/utility/index.js +41 -0
  140. package/dist/nodes/Fal/resources/utility/index.js.map +1 -0
  141. package/dist/nodes/Fal/resources/utility/models.d.ts +6 -0
  142. package/dist/nodes/Fal/resources/utility/models.d.ts.map +1 -0
  143. package/dist/nodes/Fal/resources/utility/models.js +31 -0
  144. package/dist/nodes/Fal/resources/utility/models.js.map +1 -0
  145. package/dist/nodes/Fal/resources/video-to-video/description.d.ts +5 -0
  146. package/dist/nodes/Fal/resources/video-to-video/description.d.ts.map +1 -0
  147. package/dist/nodes/Fal/resources/video-to-video/description.js +144 -0
  148. package/dist/nodes/Fal/resources/video-to-video/description.js.map +1 -0
  149. package/dist/nodes/Fal/resources/video-to-video/execute/index.d.ts +3 -0
  150. package/dist/nodes/Fal/resources/video-to-video/execute/index.d.ts.map +1 -0
  151. package/dist/nodes/Fal/resources/video-to-video/execute/index.js +47 -0
  152. package/dist/nodes/Fal/resources/video-to-video/execute/index.js.map +1 -0
  153. package/dist/nodes/Fal/resources/video-to-video/index.d.ts +4 -0
  154. package/dist/nodes/Fal/resources/video-to-video/index.d.ts.map +1 -0
  155. package/dist/nodes/Fal/resources/video-to-video/index.js +41 -0
  156. package/dist/nodes/Fal/resources/video-to-video/index.js.map +1 -0
  157. package/dist/nodes/Fal/resources/video-to-video/models.d.ts +6 -0
  158. package/dist/nodes/Fal/resources/video-to-video/models.d.ts.map +1 -0
  159. package/dist/nodes/Fal/resources/video-to-video/models.js +11 -0
  160. package/dist/nodes/Fal/resources/video-to-video/models.js.map +1 -0
  161. package/dist/nodes/Fal/resources/vision/description.d.ts +5 -0
  162. package/dist/nodes/Fal/resources/vision/description.d.ts.map +1 -0
  163. package/dist/nodes/Fal/resources/vision/description.js +146 -0
  164. package/dist/nodes/Fal/resources/vision/description.js.map +1 -0
  165. package/dist/nodes/Fal/resources/vision/execute/index.d.ts +3 -0
  166. package/dist/nodes/Fal/resources/vision/execute/index.d.ts.map +1 -0
  167. package/dist/nodes/Fal/resources/vision/execute/index.js +56 -0
  168. package/dist/nodes/Fal/resources/vision/execute/index.js.map +1 -0
  169. package/dist/nodes/Fal/resources/vision/index.d.ts +4 -0
  170. package/dist/nodes/Fal/resources/vision/index.d.ts.map +1 -0
  171. package/dist/nodes/Fal/resources/vision/index.js +41 -0
  172. package/dist/nodes/Fal/resources/vision/index.js.map +1 -0
  173. package/dist/nodes/Fal/resources/vision/models.d.ts +6 -0
  174. package/dist/nodes/Fal/resources/vision/models.d.ts.map +1 -0
  175. package/dist/nodes/Fal/resources/vision/models.js +46 -0
  176. package/dist/nodes/Fal/resources/vision/models.js.map +1 -0
  177. package/dist/nodes/Fal/resources/workflow/description.d.ts +4 -0
  178. package/dist/nodes/Fal/resources/workflow/description.d.ts.map +1 -0
  179. package/dist/nodes/Fal/resources/workflow/description.js +178 -0
  180. package/dist/nodes/Fal/resources/workflow/description.js.map +1 -0
  181. package/dist/nodes/Fal/resources/workflow/execute/index.d.ts +3 -0
  182. package/dist/nodes/Fal/resources/workflow/execute/index.d.ts.map +1 -0
  183. package/dist/nodes/Fal/resources/workflow/execute/index.js +120 -0
  184. package/dist/nodes/Fal/resources/workflow/execute/index.js.map +1 -0
  185. package/dist/nodes/Fal/resources/workflow/index.d.ts +4 -0
  186. package/dist/nodes/Fal/resources/workflow/index.d.ts.map +1 -0
  187. package/dist/nodes/Fal/resources/workflow/index.js +9 -0
  188. package/dist/nodes/Fal/resources/workflow/index.js.map +1 -0
  189. package/dist/nodes/Fal/resources/workflow/models.d.ts +65 -0
  190. package/dist/nodes/Fal/resources/workflow/models.d.ts.map +1 -0
  191. package/dist/nodes/Fal/resources/workflow/models.js +9 -0
  192. package/dist/nodes/Fal/resources/workflow/models.js.map +1 -0
  193. package/dist/nodes/Fal/utils/poll-queue.util.d.ts +9 -0
  194. package/dist/nodes/Fal/utils/poll-queue.util.d.ts.map +1 -0
  195. package/dist/nodes/Fal/utils/poll-queue.util.js +62 -0
  196. package/dist/nodes/Fal/utils/poll-queue.util.js.map +1 -0
  197. package/package.json +86 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeWorkflow = executeWorkflow;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const models_1 = require("../models");
6
+ const poll_queue_util_1 = require("../../../utils/poll-queue.util");
7
+ async function executeWorkflow(index) {
8
+ const operation = this.getNodeParameter('operation', index);
9
+ switch (operation) {
10
+ case models_1.WorkflowOperation.ExecuteCustom:
11
+ return await executeCustomWorkflow.call(this, index);
12
+ case models_1.WorkflowOperation.ExecutePrebuilt:
13
+ return await executePrebuiltWorkflow.call(this, index);
14
+ default:
15
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unsupported operation: ${operation}`);
16
+ }
17
+ }
18
+ async function executeCustomWorkflow(index) {
19
+ const params = this.getNodeParameter('', index);
20
+ const options = params.options || {};
21
+ let workflowDefinition;
22
+ try {
23
+ workflowDefinition = JSON.parse(params.workflowDefinition);
24
+ }
25
+ catch (error) {
26
+ const errorMessage = error instanceof Error ? error.message : String(error);
27
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid workflow definition JSON: ${errorMessage}`);
28
+ }
29
+ let workflowInput;
30
+ try {
31
+ workflowInput = JSON.parse(params.workflowInput);
32
+ }
33
+ catch (error) {
34
+ const errorMessage = error instanceof Error ? error.message : String(error);
35
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid workflow input JSON: ${errorMessage}`);
36
+ }
37
+ const body = {
38
+ input: workflowInput,
39
+ workflow: workflowDefinition,
40
+ };
41
+ return await executeWorkflowRequest.call(this, 'workflows/execute', body, options);
42
+ }
43
+ async function executePrebuiltWorkflow(index) {
44
+ const params = this.getNodeParameter('', index);
45
+ const options = params.options || {};
46
+ const body = {};
47
+ if (params.parameters?.parameter) {
48
+ for (const param of params.parameters.parameter) {
49
+ if (param.name) {
50
+ try {
51
+ body[param.name] = JSON.parse(param.value);
52
+ }
53
+ catch {
54
+ body[param.name] = param.value;
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return await executeWorkflowRequest.call(this, params.workflowEndpoint, body, options);
60
+ }
61
+ async function executeWorkflowRequest(endpoint, body, options) {
62
+ // If webhook URL is provided, use webhook mode
63
+ if (options.webhookUrl) {
64
+ return await executeWorkflowWithWebhook.call(this, endpoint, body, options.webhookUrl);
65
+ }
66
+ try {
67
+ // Submit to queue
68
+ const queueResponse = (await this.helpers.httpRequestWithAuthentication.call(this, 'falApi', {
69
+ method: 'POST',
70
+ url: `/${endpoint}`,
71
+ body,
72
+ json: true,
73
+ }));
74
+ const requestId = queueResponse.request_id;
75
+ const responseUrl = queueResponse.response_url;
76
+ // Poll for result
77
+ const result = (await poll_queue_util_1.pollQueue.call(this, requestId, responseUrl));
78
+ return [
79
+ {
80
+ json: result,
81
+ },
82
+ ];
83
+ }
84
+ catch (error) {
85
+ if (error instanceof n8n_workflow_1.NodeOperationError) {
86
+ throw error;
87
+ }
88
+ const errorMessage = error instanceof Error ? error.message : String(error);
89
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Workflow execution failed: ${errorMessage}`);
90
+ }
91
+ }
92
+ async function executeWorkflowWithWebhook(endpoint, body, webhookUrl) {
93
+ try {
94
+ // Submit to queue with webhook
95
+ const queueResponse = (await this.helpers.httpRequestWithAuthentication.call(this, 'falApi', {
96
+ method: 'POST',
97
+ url: `/${endpoint}?fal_webhook=${encodeURIComponent(webhookUrl)}`,
98
+ body,
99
+ json: true,
100
+ }));
101
+ return [
102
+ {
103
+ json: {
104
+ request_id: queueResponse.request_id,
105
+ webhook_url: webhookUrl,
106
+ status: 'queued',
107
+ message: 'Workflow queued. Results will be sent to the webhook URL.',
108
+ },
109
+ },
110
+ ];
111
+ }
112
+ catch (error) {
113
+ if (error instanceof n8n_workflow_1.NodeOperationError) {
114
+ throw error;
115
+ }
116
+ const errorMessage = error instanceof Error ? error.message : String(error);
117
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to queue workflow with webhook: ${errorMessage}`);
118
+ }
119
+ }
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../nodes/Fal/resources/workflow/execute/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { workflowOperations, workflowFields } from './description';
2
+ export { workflowOperations, workflowFields };
3
+ export { executeWorkflow } from './execute';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../nodes/Fal/resources/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeWorkflow = exports.workflowFields = exports.workflowOperations = void 0;
4
+ const description_1 = require("./description");
5
+ Object.defineProperty(exports, "workflowOperations", { enumerable: true, get: function () { return description_1.workflowOperations; } });
6
+ Object.defineProperty(exports, "workflowFields", { enumerable: true, get: function () { return description_1.workflowFields; } });
7
+ var execute_1 = require("./execute");
8
+ Object.defineProperty(exports, "executeWorkflow", { enumerable: true, get: function () { return execute_1.executeWorkflow; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../nodes/Fal/resources/workflow/index.ts"],"names":[],"mappings":";;;AAAA,+CAAmE;AAE1D,mGAFA,gCAAkB,OAEA;AAAE,+FAFA,4BAAc,OAEA;AAC3C,qCAA4C;AAAnC,0GAAA,eAAe,OAAA"}
@@ -0,0 +1,65 @@
1
+ export declare enum WorkflowOperation {
2
+ ExecuteCustom = "executeCustom",
3
+ ExecutePrebuilt = "executePrebuilt"
4
+ }
5
+ export interface WorkflowNode {
6
+ id: string;
7
+ type: 'input' | 'run' | 'display';
8
+ depends: string[];
9
+ app?: string;
10
+ input?: Record<string, any>;
11
+ fields?: Record<string, any>;
12
+ }
13
+ export interface WorkflowDefinition {
14
+ [key: string]: WorkflowNode;
15
+ }
16
+ export interface WorkflowSubmitEvent {
17
+ type: 'submit';
18
+ node_id: string;
19
+ app_id: string;
20
+ request_id: string;
21
+ }
22
+ export interface WorkflowCompletionEvent {
23
+ type: 'completion';
24
+ node_id: string;
25
+ app_id?: string;
26
+ output: any;
27
+ }
28
+ export interface WorkflowOutputEvent {
29
+ type: 'output';
30
+ output: any;
31
+ }
32
+ export interface WorkflowErrorEvent {
33
+ type: 'error';
34
+ node_id: string;
35
+ message: string;
36
+ error: {
37
+ status?: number;
38
+ body?: any;
39
+ };
40
+ }
41
+ export type WorkflowEvent = WorkflowSubmitEvent | WorkflowCompletionEvent | WorkflowOutputEvent | WorkflowErrorEvent;
42
+ export interface WorkflowExecuteCustomParams {
43
+ workflowDefinition: string;
44
+ workflowInput: string;
45
+ options?: {
46
+ includeIntermediateResults?: boolean;
47
+ webhookUrl?: string;
48
+ timeout?: number;
49
+ };
50
+ }
51
+ export interface WorkflowExecutePrebuiltParams {
52
+ workflowEndpoint: string;
53
+ parameters?: {
54
+ parameter?: Array<{
55
+ name: string;
56
+ value: any;
57
+ }>;
58
+ };
59
+ options?: {
60
+ includeIntermediateResults?: boolean;
61
+ webhookUrl?: string;
62
+ timeout?: number;
63
+ };
64
+ }
65
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../nodes/Fal/resources/workflow/models.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC5B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,GAAG,CAAC;KACX,CAAC;CACF;AAED,MAAM,MAAM,aAAa,GACtB,mBAAmB,GACnB,uBAAuB,GACvB,mBAAmB,GACnB,kBAAkB,CAAC;AAEtB,MAAM,WAAW,2BAA2B;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QACT,0BAA0B,CAAC,EAAE,OAAO,CAAC;QACrC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACF;AAED,MAAM,WAAW,6BAA6B;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE;QACZ,SAAS,CAAC,EAAE,KAAK,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,GAAG,CAAC;SACX,CAAC,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE;QACT,0BAA0B,CAAC,EAAE,OAAO,CAAC;QACrC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowOperation = void 0;
4
+ var WorkflowOperation;
5
+ (function (WorkflowOperation) {
6
+ WorkflowOperation["ExecuteCustom"] = "executeCustom";
7
+ WorkflowOperation["ExecutePrebuilt"] = "executePrebuilt";
8
+ })(WorkflowOperation || (exports.WorkflowOperation = WorkflowOperation = {}));
9
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../../nodes/Fal/resources/workflow/models.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC5B,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;AACpC,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B"}
@@ -0,0 +1,9 @@
1
+ import { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ /**
3
+ * Poll the Fal.ai queue until the request is completed or failed
4
+ * @param requestId The request ID to poll
5
+ * @param responseUrl Optional response URL from the queue submission
6
+ * @returns The final response data
7
+ */
8
+ export declare function pollQueue(this: IExecuteFunctions, requestId: string, responseUrl?: string): Promise<IDataObject>;
9
+ //# sourceMappingURL=poll-queue.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll-queue.util.d.ts","sourceRoot":"","sources":["../../../../nodes/Fal/utils/poll-queue.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAgB,MAAM,cAAc,CAAC;AAI5E;;;;;GAKG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CA+DtB"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pollQueue = pollQueue;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const enums_1 = require("../enums");
6
+ /**
7
+ * Poll the Fal.ai queue until the request is completed or failed
8
+ * @param requestId The request ID to poll
9
+ * @param responseUrl Optional response URL from the queue submission
10
+ * @returns The final response data
11
+ */
12
+ async function pollQueue(requestId, responseUrl) {
13
+ const maxAttempts = 60; // Maximum number of polling attempts
14
+ const pollInterval = 2000; // Poll every 2 seconds
15
+ let attempts = 0;
16
+ while (attempts < maxAttempts) {
17
+ attempts++;
18
+ // Get the status of the request
19
+ const statusResponse = await this.helpers.httpRequestWithAuthentication.call(this, 'falApi', {
20
+ method: 'GET',
21
+ url: `/requests/${requestId}/status`,
22
+ json: true,
23
+ });
24
+ const status = statusResponse;
25
+ if (status.status === enums_1.QueueStatus.Completed) {
26
+ // Request completed, get the result
27
+ const finalResponseUrl = status.response_url || responseUrl;
28
+ if (!finalResponseUrl) {
29
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), {
30
+ message: 'Request completed but no response URL available',
31
+ description: 'The queue processing completed but no response URL was provided',
32
+ });
33
+ }
34
+ // Fetch the final result
35
+ const result = await this.helpers.httpRequestWithAuthentication.call(this, 'falApi', {
36
+ method: 'GET',
37
+ url: finalResponseUrl.replace('https://queue.fal.run', ''),
38
+ json: true,
39
+ });
40
+ return result;
41
+ }
42
+ else if (status.status === enums_1.QueueStatus.Failed) {
43
+ // Request failed
44
+ const errorMessage = status.logs
45
+ ?.filter((log) => log.level === 'error')
46
+ .map((log) => log.message)
47
+ .join(', ') || 'Unknown error';
48
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), {
49
+ message: 'Request failed',
50
+ description: errorMessage,
51
+ });
52
+ }
53
+ // Request is still in queue or in progress, wait before polling again
54
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
55
+ }
56
+ // Max attempts reached
57
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), {
58
+ message: 'Request timeout',
59
+ description: `The request did not complete within ${(maxAttempts * pollInterval) / 1000} seconds`,
60
+ });
61
+ }
62
+ //# sourceMappingURL=poll-queue.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll-queue.util.js","sourceRoot":"","sources":["../../../../nodes/Fal/utils/poll-queue.util.ts"],"names":[],"mappings":";;AAUA,8BAmEC;AA7ED,+CAA4E;AAC5E,oCAAuC;AAGvC;;;;;GAKG;AACI,KAAK,UAAU,SAAS,CAE9B,SAAiB,EACjB,WAAoB;IAEpB,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,qCAAqC;IAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,uBAAuB;IAClD,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,QAAQ,EAAE,CAAC;QAEX,gCAAgC;QAChC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAC3E,IAAI,EACJ,QAAQ,EACR;YACC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,aAAa,SAAS,SAAS;YACpC,IAAI,EAAE,IAAI;SACV,CACD,CAAC;QAEF,MAAM,MAAM,GAAG,cAAqC,CAAC;QAErD,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAW,CAAC,SAAS,EAAE,CAAC;YAC7C,oCAAoC;YACpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,IAAI,WAAW,CAAC;YAE5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvB,MAAM,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;oBACtC,OAAO,EAAE,iDAAiD;oBAC1D,WAAW,EAAE,iEAAiE;iBAC9E,CAAC,CAAC;YACJ,CAAC;YAED,yBAAyB;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;gBACpF,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;gBAC1D,IAAI,EAAE,IAAI;aACV,CAAC,CAAC;YAEH,OAAO,MAAqB,CAAC;QAC9B,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAW,CAAC,MAAM,EAAE,CAAC;YACjD,iBAAiB;YACjB,MAAM,YAAY,GACjB,MAAM,CAAC,IAAI;gBACV,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC;iBACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;iBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;YAEjC,MAAM,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACtC,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,YAAY;aACzB,CAAC,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;QACtC,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,uCAAuC,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,IAAI,UAAU;KACjG,CAAC,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "@ibracob.dev/n8n-nodes-fal",
3
+ "version": "1.0.0",
4
+ "description": "n8n node for Fal.ai - LLM text generation, image/video generation, image editing, and vision AI models",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "fal",
9
+ "fal.ai",
10
+ "ai",
11
+ "llm",
12
+ "gpt",
13
+ "claude",
14
+ "gemini",
15
+ "openai",
16
+ "anthropic",
17
+ "google",
18
+ "text-generation",
19
+ "image-generation",
20
+ "video-generation",
21
+ "image-editing",
22
+ "video-editing",
23
+ "vision",
24
+ "workflow",
25
+ "queue",
26
+ "sora",
27
+ "veo",
28
+ "flux",
29
+ "stable-diffusion",
30
+ "upscaling",
31
+ "background-removal",
32
+ "automation",
33
+ "ml",
34
+ "machine-learning",
35
+ "deep-learning",
36
+ "diffusion"
37
+ ],
38
+ "license": "MIT",
39
+ "homepage": "https://github.com/ibraschwan/n8n-nodes-fal",
40
+ "author": {
41
+ "name": "ibracob.dev",
42
+ "email": "ben@ibracob.dev"
43
+ },
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/ibraschwan/n8n-nodes-fal.git"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/ibraschwan/n8n-nodes-fal/issues"
50
+ },
51
+ "main": "index.js",
52
+ "scripts": {
53
+ "build": "tsc && gulp build:icons",
54
+ "dev": "tsc --watch",
55
+ "format": "prettier nodes credentials --write",
56
+ "lint": "eslint nodes credentials",
57
+ "lintfix": "eslint nodes credentials --fix",
58
+ "prepublishOnly": "npm run build && gulp build:icons"
59
+ },
60
+ "files": [
61
+ "dist"
62
+ ],
63
+ "n8n": {
64
+ "n8nNodesApiVersion": 1,
65
+ "credentials": [
66
+ "dist/credentials/FalApi.credentials.js"
67
+ ],
68
+ "nodes": [
69
+ "dist/nodes/Fal/Fal.node.js"
70
+ ]
71
+ },
72
+ "devDependencies": {
73
+ "@types/node": "^20.10.0",
74
+ "@typescript-eslint/eslint-plugin": "^6.13.0",
75
+ "@typescript-eslint/parser": "^6.13.0",
76
+ "eslint": "^8.54.0",
77
+ "eslint-plugin-n8n-nodes-base": "^1.16.1",
78
+ "gulp": "^4.0.2",
79
+ "n8n-workflow": "^1.0.0",
80
+ "prettier": "^3.1.0",
81
+ "typescript": "^5.3.0"
82
+ },
83
+ "peerDependencies": {
84
+ "n8n-workflow": "*"
85
+ }
86
+ }