n8n-nodes-piapi 0.1.1 → 0.1.3

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 (48) hide show
  1. package/README.md +7 -5
  2. package/dist/nodes/PiAPI/DiffRhythm/DiffRhythmAudioGeneration.node.d.ts +5 -0
  3. package/dist/nodes/PiAPI/DiffRhythm/DiffRhythmAudioGeneration.node.js +259 -0
  4. package/dist/nodes/PiAPI/DiffRhythm/DiffRhythmAudioGeneration.node.js.map +1 -0
  5. package/dist/nodes/PiAPI/{Skyreels/SkytreelsImageToVideo.node.d.ts → Faceswap/FaceswapImageToImage.node.d.ts} +1 -1
  6. package/dist/nodes/PiAPI/Faceswap/FaceswapImageToImage.node.js +278 -0
  7. package/dist/nodes/PiAPI/Faceswap/FaceswapImageToImage.node.js.map +1 -0
  8. package/dist/nodes/PiAPI/Faceswap/FaceswapVideoToVideo.node.d.ts +5 -0
  9. package/dist/nodes/PiAPI/Faceswap/FaceswapVideoToVideo.node.js +297 -0
  10. package/dist/nodes/PiAPI/Faceswap/FaceswapVideoToVideo.node.js.map +1 -0
  11. package/dist/nodes/PiAPI/FileUpload/FileUpload.node.d.ts +5 -0
  12. package/dist/nodes/PiAPI/FileUpload/FileUpload.node.js +215 -0
  13. package/dist/nodes/PiAPI/FileUpload/FileUpload.node.js.map +1 -0
  14. package/dist/nodes/PiAPI/ImageUpscale/ImageUpscale.node.d.ts +5 -0
  15. package/dist/nodes/PiAPI/ImageUpscale/ImageUpscale.node.js +209 -0
  16. package/dist/nodes/PiAPI/ImageUpscale/ImageUpscale.node.js.map +1 -0
  17. package/dist/nodes/PiAPI/MMAudio/MMAudioVideoToAudio.node.d.ts +5 -0
  18. package/dist/nodes/PiAPI/MMAudio/MMAudioVideoToAudio.node.js +241 -0
  19. package/dist/nodes/PiAPI/MMAudio/MMAudioVideoToAudio.node.js.map +1 -0
  20. package/dist/nodes/PiAPI/Midjourney/PiAPIMidjourney.node.d.ts +5 -0
  21. package/dist/nodes/PiAPI/Midjourney/PiAPIMidjourney.node.js +426 -0
  22. package/dist/nodes/PiAPI/Midjourney/PiAPIMidjourney.node.js.map +1 -0
  23. package/dist/nodes/PiAPI/Qubico/QubicoSegment.node.d.ts +5 -0
  24. package/dist/nodes/PiAPI/Qubico/QubicoSegment.node.js +243 -0
  25. package/dist/nodes/PiAPI/Qubico/QubicoSegment.node.js.map +1 -0
  26. package/dist/nodes/PiAPI/RemoveBackground/RemoveBackground.node.d.ts +5 -0
  27. package/dist/nodes/PiAPI/RemoveBackground/RemoveBackground.node.js +188 -0
  28. package/dist/nodes/PiAPI/RemoveBackground/RemoveBackground.node.js.map +1 -0
  29. package/dist/nodes/PiAPI/Skyreels/PiAPISkyreels.node.d.ts +5 -0
  30. package/dist/nodes/PiAPI/Skyreels/PiAPISkyreels.node.js +335 -0
  31. package/dist/nodes/PiAPI/Skyreels/PiAPISkyreels.node.js.map +1 -0
  32. package/dist/nodes/PiAPI/Skyreels/SkyreelsImageToVideo.node.d.ts +5 -0
  33. package/dist/nodes/PiAPI/Skyreels/{SkytreelsImageToVideo.node.js → SkyreelsImageToVideo.node.js} +4 -4
  34. package/dist/nodes/PiAPI/Skyreels/SkyreelsImageToVideo.node.js.map +1 -0
  35. package/dist/nodes/PiAPI/Skyreels/index.d.ts +2 -2
  36. package/dist/nodes/PiAPI/Skyreels/index.js +3 -3
  37. package/dist/nodes/PiAPI/Skyreels/index.js.map +1 -1
  38. package/dist/nodes/PiAPI/TTS/TextToSpeech.node.d.ts +5 -0
  39. package/dist/nodes/PiAPI/TTS/TextToSpeech.node.js +214 -0
  40. package/dist/nodes/PiAPI/TTS/TextToSpeech.node.js.map +1 -0
  41. package/dist/nodes/PiAPI/VideoUpscale/VideoUpscale.node.d.ts +5 -0
  42. package/dist/nodes/PiAPI/VideoUpscale/VideoUpscale.node.js +194 -0
  43. package/dist/nodes/PiAPI/VideoUpscale/VideoUpscale.node.js.map +1 -0
  44. package/dist/nodes/PiAPI/shared/Interfaces.d.ts +179 -5
  45. package/dist/package.json +14 -3
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/package.json +14 -3
  48. package/dist/nodes/PiAPI/Skyreels/SkytreelsImageToVideo.node.js.map +0 -1
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FaceswapVideoToVideo = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const GenericFunctions_1 = require("../shared/GenericFunctions");
6
+ class FaceswapVideoToVideo {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: 'PiAPI Video Faceswap',
10
+ name: 'faceswapVideoToVideo',
11
+ icon: 'file:../piapi.svg',
12
+ group: ['transform'],
13
+ version: 1,
14
+ description: 'Swap faces from an image to a video using PiAPI Video Faceswap',
15
+ defaults: {
16
+ name: 'Video Faceswap',
17
+ },
18
+ inputs: ["main"],
19
+ outputs: ["main"],
20
+ credentials: [
21
+ {
22
+ name: 'piAPIApi',
23
+ required: true,
24
+ },
25
+ ],
26
+ properties: [
27
+ {
28
+ displayName: 'Swap Image Input Method',
29
+ name: 'swapImageInputMethod',
30
+ type: 'options',
31
+ options: [
32
+ {
33
+ name: 'URL',
34
+ value: 'url',
35
+ },
36
+ {
37
+ name: 'Binary Data',
38
+ value: 'binaryData',
39
+ },
40
+ ],
41
+ default: 'url',
42
+ description: 'Method to input the swap image data',
43
+ },
44
+ {
45
+ displayName: 'Swap Image Binary Property',
46
+ name: 'swapBinaryPropertyName',
47
+ type: 'string',
48
+ default: 'data',
49
+ required: true,
50
+ displayOptions: {
51
+ show: {
52
+ swapImageInputMethod: ['binaryData'],
53
+ },
54
+ },
55
+ description: 'Name of the binary property containing the swap image data',
56
+ },
57
+ {
58
+ displayName: 'Swap Image URL',
59
+ name: 'swapImageUrl',
60
+ type: 'string',
61
+ default: '',
62
+ required: true,
63
+ displayOptions: {
64
+ show: {
65
+ swapImageInputMethod: ['url'],
66
+ },
67
+ },
68
+ description: 'URL of the image containing the face(s) to swap',
69
+ },
70
+ {
71
+ displayName: 'Target Video Input Method',
72
+ name: 'targetVideoInputMethod',
73
+ type: 'options',
74
+ options: [
75
+ {
76
+ name: 'URL',
77
+ value: 'url',
78
+ },
79
+ {
80
+ name: 'Binary Data',
81
+ value: 'binaryData',
82
+ },
83
+ ],
84
+ default: 'url',
85
+ description: 'Method to input the target video data',
86
+ },
87
+ {
88
+ displayName: 'Target Video Binary Property',
89
+ name: 'targetVideoBinaryPropertyName',
90
+ type: 'string',
91
+ default: 'data',
92
+ required: true,
93
+ displayOptions: {
94
+ show: {
95
+ targetVideoInputMethod: ['binaryData'],
96
+ },
97
+ },
98
+ description: 'Name of the binary property containing the target video data',
99
+ },
100
+ {
101
+ displayName: 'Target Video URL',
102
+ name: 'targetVideoUrl',
103
+ type: 'string',
104
+ default: '',
105
+ required: true,
106
+ displayOptions: {
107
+ show: {
108
+ targetVideoInputMethod: ['url'],
109
+ },
110
+ },
111
+ description: 'URL of the target video that will have faces replaced (MP4 only, max 10MB, max 720p)',
112
+ },
113
+ {
114
+ displayName: 'Video Requirements',
115
+ name: 'videoRequirements',
116
+ type: 'notice',
117
+ default: 'Video must be MP4 format, maximum 10MB size, maximum 720p resolution, and maximum 600 frames.',
118
+ },
119
+ {
120
+ displayName: 'Face Indices Information',
121
+ name: 'faceIndicesInfo',
122
+ type: 'notice',
123
+ default: 'Faces are detected in order from left to right in most cases. For diagonal positioning, top-left might be 1 and bottom-right 0. Leave blank to swap all detected faces.',
124
+ },
125
+ {
126
+ displayName: 'Advanced Options',
127
+ name: 'advancedOptions',
128
+ type: 'collection',
129
+ placeholder: 'Add Option',
130
+ default: {},
131
+ options: [
132
+ {
133
+ displayName: 'Swap Faces Index',
134
+ name: 'swapFacesIndex',
135
+ type: 'string',
136
+ default: '',
137
+ placeholder: '0 or 0,1',
138
+ description: 'Index(es) of faces to use from the swap image (e.g., "0" or "1,0")',
139
+ },
140
+ {
141
+ displayName: 'Target Faces Index',
142
+ name: 'targetFacesIndex',
143
+ type: 'string',
144
+ default: '',
145
+ placeholder: '0 or 0,1',
146
+ description: 'Index(es) of faces to replace in the target video (e.g., "0" or "0,1")',
147
+ },
148
+ ],
149
+ },
150
+ {
151
+ displayName: 'Wait For Completion',
152
+ name: 'waitForCompletion',
153
+ type: 'boolean',
154
+ default: false,
155
+ description: 'Whether to wait for the face swap process to complete before continuing',
156
+ },
157
+ {
158
+ displayName: 'Max Retries',
159
+ name: 'maxRetries',
160
+ type: 'number',
161
+ default: 20,
162
+ description: 'Maximum number of retries to check task status',
163
+ displayOptions: {
164
+ show: {
165
+ waitForCompletion: [true],
166
+ },
167
+ },
168
+ },
169
+ {
170
+ displayName: 'Retry Interval',
171
+ name: 'retryInterval',
172
+ type: 'number',
173
+ default: 3000,
174
+ description: 'Interval between retries in milliseconds',
175
+ displayOptions: {
176
+ show: {
177
+ waitForCompletion: [true],
178
+ },
179
+ },
180
+ },
181
+ ],
182
+ };
183
+ }
184
+ async execute() {
185
+ var _a, _b;
186
+ const items = this.getInputData();
187
+ const returnData = [];
188
+ for (let i = 0; i < items.length; i++) {
189
+ try {
190
+ const swapImageInputMethod = this.getNodeParameter('swapImageInputMethod', i);
191
+ const targetVideoInputMethod = this.getNodeParameter('targetVideoInputMethod', i);
192
+ const waitForCompletion = this.getNodeParameter('waitForCompletion', i, false);
193
+ const advancedOptions = this.getNodeParameter('advancedOptions', i, {});
194
+ let swapImageData;
195
+ if (swapImageInputMethod === 'url') {
196
+ swapImageData = this.getNodeParameter('swapImageUrl', i);
197
+ }
198
+ else {
199
+ const swapBinaryPropertyName = this.getNodeParameter('swapBinaryPropertyName', i);
200
+ const swapBinaryData = this.helpers.assertBinaryData(i, swapBinaryPropertyName);
201
+ if (swapBinaryData.mimeType && !swapBinaryData.mimeType.includes('image')) {
202
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'The provided swap binary data is not an image', { itemIndex: i });
203
+ }
204
+ const base64String = Buffer.from(await this.helpers.getBinaryDataBuffer(i, swapBinaryPropertyName)).toString('base64');
205
+ swapImageData = `data:${swapBinaryData.mimeType};base64,${base64String}`;
206
+ }
207
+ let targetVideoData;
208
+ if (targetVideoInputMethod === 'url') {
209
+ targetVideoData = this.getNodeParameter('targetVideoUrl', i);
210
+ }
211
+ else {
212
+ const targetVideoBinaryPropertyName = this.getNodeParameter('targetVideoBinaryPropertyName', i);
213
+ const targetVideoBinaryData = this.helpers.assertBinaryData(i, targetVideoBinaryPropertyName);
214
+ if (targetVideoBinaryData.mimeType && !targetVideoBinaryData.mimeType.includes('video/mp4')) {
215
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'The provided target binary data is not an MP4 video', { itemIndex: i });
216
+ }
217
+ const base64String = Buffer.from(await this.helpers.getBinaryDataBuffer(i, targetVideoBinaryPropertyName)).toString('base64');
218
+ targetVideoData = `data:${targetVideoBinaryData.mimeType};base64,${base64String}`;
219
+ }
220
+ const requestBody = {
221
+ model: 'Qubico/video-toolkit',
222
+ task_type: 'face-swap',
223
+ input: {
224
+ swap_image: swapImageData,
225
+ target_video: targetVideoData,
226
+ },
227
+ };
228
+ if (advancedOptions.swapFacesIndex) {
229
+ requestBody.input.swap_faces_index = advancedOptions.swapFacesIndex;
230
+ }
231
+ if (advancedOptions.targetFacesIndex) {
232
+ requestBody.input.target_faces_index = advancedOptions.targetFacesIndex;
233
+ }
234
+ const response = await GenericFunctions_1.piApiRequest.call(this, 'POST', '/api/v1/task', requestBody);
235
+ const taskId = (_a = response.data) === null || _a === void 0 ? void 0 : _a.task_id;
236
+ if (!taskId) {
237
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Failed to get a valid task ID from the API');
238
+ }
239
+ let executionData;
240
+ if (waitForCompletion) {
241
+ const maxRetries = this.getNodeParameter('maxRetries', i, 20);
242
+ const retryInterval = this.getNodeParameter('retryInterval', i, 3000);
243
+ executionData = await GenericFunctions_1.waitForTaskCompletion.call(this, taskId, maxRetries, retryInterval);
244
+ }
245
+ else {
246
+ executionData = {
247
+ task_id: taskId,
248
+ status: ((_b = response.data) === null || _b === void 0 ? void 0 : _b.status) || 'pending',
249
+ };
250
+ }
251
+ returnData.push({
252
+ json: executionData,
253
+ });
254
+ }
255
+ catch (error) {
256
+ if (error.message && error.message.includes('failed to get valid image')) {
257
+ const errorMessage = 'The API could not process the provided image. Please ensure the image is accessible, in a common format (JPEG, PNG), and meets the size requirements (under 2048x2048 resolution).';
258
+ if (this.continueOnFail()) {
259
+ returnData.push({
260
+ json: {
261
+ error: errorMessage,
262
+ details: error.message,
263
+ },
264
+ });
265
+ continue;
266
+ }
267
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), errorMessage);
268
+ }
269
+ if (error.message && error.message.includes('failed to get valid video')) {
270
+ const errorMessage = 'The API could not process the provided video. Please ensure the video is accessible, in MP4 format, under 10MB, maximum 720p resolution, and maximum 600 frames.';
271
+ if (this.continueOnFail()) {
272
+ returnData.push({
273
+ json: {
274
+ error: errorMessage,
275
+ details: error.message,
276
+ },
277
+ });
278
+ continue;
279
+ }
280
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), errorMessage);
281
+ }
282
+ if (this.continueOnFail()) {
283
+ returnData.push({
284
+ json: {
285
+ error: error.message,
286
+ },
287
+ });
288
+ continue;
289
+ }
290
+ throw error;
291
+ }
292
+ }
293
+ return [returnData];
294
+ }
295
+ }
296
+ exports.FaceswapVideoToVideo = FaceswapVideoToVideo;
297
+ //# sourceMappingURL=FaceswapVideoToVideo.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaceswapVideoToVideo.node.js","sourceRoot":"","sources":["../../../../nodes/PiAPI/Faceswap/FaceswapVideoToVideo.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class FileUpload implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileUpload = void 0;
4
+ class FileUpload {
5
+ constructor() {
6
+ this.description = {
7
+ displayName: 'PiAPI File Upload',
8
+ name: 'fileUpload',
9
+ icon: 'file:../piapi.svg',
10
+ group: ['transform'],
11
+ version: 1,
12
+ description: 'Upload temporary files that will be automatically deleted after 24 hours',
13
+ defaults: {
14
+ name: 'File Upload',
15
+ },
16
+ inputs: ["main"],
17
+ outputs: ["main"],
18
+ credentials: [
19
+ {
20
+ name: 'piAPIApi',
21
+ required: true,
22
+ },
23
+ ],
24
+ properties: [
25
+ {
26
+ displayName: 'Input Method',
27
+ name: 'inputMethod',
28
+ type: 'options',
29
+ options: [
30
+ {
31
+ name: 'Binary File',
32
+ value: 'binaryFile',
33
+ },
34
+ {
35
+ name: 'URL',
36
+ value: 'url',
37
+ },
38
+ {
39
+ name: 'Manual Input',
40
+ value: 'manualInput',
41
+ },
42
+ ],
43
+ default: 'binaryFile',
44
+ description: 'How to input the file to upload',
45
+ },
46
+ {
47
+ displayName: 'Binary Property',
48
+ name: 'binaryPropertyName',
49
+ type: 'string',
50
+ default: 'data',
51
+ required: true,
52
+ displayOptions: {
53
+ show: {
54
+ inputMethod: ['binaryFile'],
55
+ },
56
+ },
57
+ description: 'The binary property containing the file to upload',
58
+ },
59
+ {
60
+ displayName: 'File Name',
61
+ name: 'fileName',
62
+ type: 'string',
63
+ default: '',
64
+ required: true,
65
+ displayOptions: {
66
+ show: {
67
+ inputMethod: ['manualInput'],
68
+ },
69
+ },
70
+ description: 'Name of the file with extension (jpg, jpeg, png, webp, mp4, wav, mp3)',
71
+ },
72
+ {
73
+ displayName: 'File Data',
74
+ name: 'fileData',
75
+ type: 'string',
76
+ typeOptions: {
77
+ rows: 4,
78
+ },
79
+ default: '',
80
+ required: true,
81
+ displayOptions: {
82
+ show: {
83
+ inputMethod: ['manualInput'],
84
+ },
85
+ },
86
+ description: 'Base64 encoded file data',
87
+ },
88
+ {
89
+ displayName: 'File URL',
90
+ name: 'fileUrl',
91
+ type: 'string',
92
+ default: '',
93
+ required: true,
94
+ displayOptions: {
95
+ show: {
96
+ inputMethod: ['url'],
97
+ },
98
+ },
99
+ description: 'URL of the file to download and upload',
100
+ },
101
+ ],
102
+ };
103
+ }
104
+ async execute() {
105
+ var _a, _b, _c;
106
+ const items = this.getInputData();
107
+ const returnData = [];
108
+ const generateHashFilename = (extension) => {
109
+ const randomHash = Math.random().toString(36).substring(2, 15) +
110
+ Math.random().toString(36).substring(2, 15);
111
+ return `${randomHash}.${extension}`;
112
+ };
113
+ const getMimeTypeExtension = (mimeType) => {
114
+ const mimeTypeToExtension = {
115
+ 'image/jpeg': 'jpg',
116
+ 'image/png': 'png',
117
+ 'image/webp': 'webp',
118
+ 'video/mp4': 'mp4',
119
+ 'audio/wav': 'wav',
120
+ 'audio/mpeg': 'mp3',
121
+ };
122
+ return mimeTypeToExtension[mimeType] || 'jpg';
123
+ };
124
+ for (let i = 0; i < items.length; i++) {
125
+ try {
126
+ const inputMethod = this.getNodeParameter('inputMethod', i);
127
+ let fileName;
128
+ let fileData;
129
+ let extension = '';
130
+ if (inputMethod === 'binaryFile') {
131
+ const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);
132
+ if (items[i].binary === undefined) {
133
+ throw new Error('No binary data exists on item!');
134
+ }
135
+ const binaryData = items[i].binary[binaryPropertyName];
136
+ if (binaryData === undefined) {
137
+ throw new Error(`No binary data found for field "${binaryPropertyName}"!`);
138
+ }
139
+ if (binaryData.fileName) {
140
+ extension = ((_a = binaryData.fileName.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) ||
141
+ getMimeTypeExtension(binaryData.mimeType);
142
+ }
143
+ else {
144
+ extension = getMimeTypeExtension(binaryData.mimeType);
145
+ }
146
+ fileName = generateHashFilename(extension);
147
+ fileData = binaryData.data;
148
+ }
149
+ else if (inputMethod === 'url') {
150
+ const fileUrl = this.getNodeParameter('fileUrl', i);
151
+ extension = ((_b = fileUrl.split('.').pop()) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || 'jpg';
152
+ if (extension.includes('?')) {
153
+ extension = extension.split('?')[0];
154
+ }
155
+ fileName = generateHashFilename(extension);
156
+ const response = await this.helpers.request({
157
+ method: 'GET',
158
+ url: fileUrl,
159
+ encoding: null,
160
+ resolveWithFullResponse: true,
161
+ });
162
+ if (response.headers['content-type']) {
163
+ const contentTypeExt = getMimeTypeExtension(response.headers['content-type']);
164
+ if (contentTypeExt) {
165
+ fileName = generateHashFilename(contentTypeExt);
166
+ }
167
+ }
168
+ const buffer = Buffer.from(response.body);
169
+ fileData = buffer.toString('base64');
170
+ }
171
+ else {
172
+ fileName = this.getNodeParameter('fileName', i);
173
+ fileData = this.getNodeParameter('fileData', i);
174
+ extension = ((_c = fileName.split('.').pop()) === null || _c === void 0 ? void 0 : _c.toLowerCase()) || '';
175
+ }
176
+ const supportedExtensions = ['jpg', 'jpeg', 'png', 'webp', 'mp4', 'wav', 'mp3'];
177
+ if (!extension || !supportedExtensions.includes(extension)) {
178
+ throw new Error(`File extension "${extension}" is not supported. Supported extensions: ${supportedExtensions.join(', ')}`);
179
+ }
180
+ const params = {
181
+ file_name: fileName,
182
+ file_data: fileData,
183
+ };
184
+ const credentials = await this.getCredentials('piAPIApi');
185
+ const response = await this.helpers.request({
186
+ method: 'POST',
187
+ url: 'https://upload.theapi.app/api/ephemeral_resource',
188
+ headers: {
189
+ 'Content-Type': 'application/json',
190
+ 'x-api-key': credentials.apiKey,
191
+ },
192
+ body: params,
193
+ json: true,
194
+ });
195
+ returnData.push({
196
+ json: response,
197
+ });
198
+ }
199
+ catch (error) {
200
+ if (this.continueOnFail()) {
201
+ returnData.push({
202
+ json: {
203
+ error: error.message,
204
+ },
205
+ });
206
+ continue;
207
+ }
208
+ throw error;
209
+ }
210
+ }
211
+ return [returnData];
212
+ }
213
+ }
214
+ exports.FileUpload = FileUpload;
215
+ //# sourceMappingURL=FileUpload.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUpload.node.js","sourceRoot":"","sources":["../../../../nodes/PiAPI/FileUpload/FileUpload.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class ImageUpscale implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }