@sinehypernova-0718/n8n-nodes-coolify 0.0.0-stage → 0.1.1

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 (230) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +410 -2
  3. package/dist/credentials/CoolifyApi.credentials.d.ts +10 -0
  4. package/dist/credentials/CoolifyApi.credentials.js +79 -0
  5. package/dist/credentials/CoolifyApi.credentials.js.map +1 -0
  6. package/dist/icons/coolify.svg +1 -0
  7. package/dist/n8n-logo-white-accent.svg +17 -0
  8. package/dist/nodes/Coolify/Coolify.node.d.ts +5 -0
  9. package/dist/nodes/Coolify/Coolify.node.js +116 -0
  10. package/dist/nodes/Coolify/Coolify.node.js.map +1 -0
  11. package/dist/nodes/Coolify/Coolify.node.json +18 -0
  12. package/dist/nodes/Coolify/descriptions/Application/ApplicationDescription.d.ts +2 -0
  13. package/dist/nodes/Coolify/descriptions/Application/ApplicationDescription.js +2118 -0
  14. package/dist/nodes/Coolify/descriptions/Application/ApplicationDescription.js.map +1 -0
  15. package/dist/nodes/Coolify/descriptions/Application/applicationCreateFields.d.ts +4 -0
  16. package/dist/nodes/Coolify/descriptions/Application/applicationCreateFields.js +61 -0
  17. package/dist/nodes/Coolify/descriptions/Application/applicationCreateFields.js.map +1 -0
  18. package/dist/nodes/Coolify/descriptions/Application/applicationFieldProperties.d.ts +8 -0
  19. package/dist/nodes/Coolify/descriptions/Application/applicationFieldProperties.js +125 -0
  20. package/dist/nodes/Coolify/descriptions/Application/applicationFieldProperties.js.map +1 -0
  21. package/dist/nodes/Coolify/descriptions/Application/applicationUpdateFields.d.ts +3 -0
  22. package/dist/nodes/Coolify/descriptions/Application/applicationUpdateFields.js +45 -0
  23. package/dist/nodes/Coolify/descriptions/Application/applicationUpdateFields.js.map +1 -0
  24. package/dist/nodes/Coolify/descriptions/Application/index.d.ts +4 -0
  25. package/dist/nodes/Coolify/descriptions/Application/index.js +14 -0
  26. package/dist/nodes/Coolify/descriptions/Application/index.js.map +1 -0
  27. package/dist/nodes/Coolify/descriptions/Application/storageBackupScheduleFields.d.ts +2 -0
  28. package/dist/nodes/Coolify/descriptions/Application/storageBackupScheduleFields.js +78 -0
  29. package/dist/nodes/Coolify/descriptions/Application/storageBackupScheduleFields.js.map +1 -0
  30. package/dist/nodes/Coolify/descriptions/AuditEvent/AuditEventDescription.d.ts +2 -0
  31. package/dist/nodes/Coolify/descriptions/AuditEvent/AuditEventDescription.js +132 -0
  32. package/dist/nodes/Coolify/descriptions/AuditEvent/AuditEventDescription.js.map +1 -0
  33. package/dist/nodes/Coolify/descriptions/AuditEvent/index.d.ts +1 -0
  34. package/dist/nodes/Coolify/descriptions/AuditEvent/index.js +6 -0
  35. package/dist/nodes/Coolify/descriptions/AuditEvent/index.js.map +1 -0
  36. package/dist/nodes/Coolify/descriptions/CloudInitScript/CloudInitScriptDescription.d.ts +2 -0
  37. package/dist/nodes/Coolify/descriptions/CloudInitScript/CloudInitScriptDescription.js +123 -0
  38. package/dist/nodes/Coolify/descriptions/CloudInitScript/CloudInitScriptDescription.js.map +1 -0
  39. package/dist/nodes/Coolify/descriptions/CloudInitScript/index.d.ts +1 -0
  40. package/dist/nodes/Coolify/descriptions/CloudInitScript/index.js +6 -0
  41. package/dist/nodes/Coolify/descriptions/CloudInitScript/index.js.map +1 -0
  42. package/dist/nodes/Coolify/descriptions/index.d.ts +3 -0
  43. package/dist/nodes/Coolify/descriptions/index.js +10 -0
  44. package/dist/nodes/Coolify/descriptions/index.js.map +1 -0
  45. package/dist/nodes/Coolify/requests/application/addDestination.d.ts +3 -0
  46. package/dist/nodes/Coolify/requests/application/addDestination.js +18 -0
  47. package/dist/nodes/Coolify/requests/application/addDestination.js.map +1 -0
  48. package/dist/nodes/Coolify/requests/application/applicationFields.d.ts +49 -0
  49. package/dist/nodes/Coolify/requests/application/applicationFields.js +513 -0
  50. package/dist/nodes/Coolify/requests/application/applicationFields.js.map +1 -0
  51. package/dist/nodes/Coolify/requests/application/applicationUpdateFields.d.ts +21 -0
  52. package/dist/nodes/Coolify/requests/application/applicationUpdateFields.js +315 -0
  53. package/dist/nodes/Coolify/requests/application/applicationUpdateFields.js.map +1 -0
  54. package/dist/nodes/Coolify/requests/application/clone.d.ts +3 -0
  55. package/dist/nodes/Coolify/requests/application/clone.js +26 -0
  56. package/dist/nodes/Coolify/requests/application/clone.js.map +1 -0
  57. package/dist/nodes/Coolify/requests/application/createDockerImage.d.ts +3 -0
  58. package/dist/nodes/Coolify/requests/application/createDockerImage.js +18 -0
  59. package/dist/nodes/Coolify/requests/application/createDockerImage.js.map +1 -0
  60. package/dist/nodes/Coolify/requests/application/createDockerfile.d.ts +3 -0
  61. package/dist/nodes/Coolify/requests/application/createDockerfile.js +19 -0
  62. package/dist/nodes/Coolify/requests/application/createDockerfile.js.map +1 -0
  63. package/dist/nodes/Coolify/requests/application/createEnv.d.ts +3 -0
  64. package/dist/nodes/Coolify/requests/application/createEnv.js +32 -0
  65. package/dist/nodes/Coolify/requests/application/createEnv.js.map +1 -0
  66. package/dist/nodes/Coolify/requests/application/createPreviewDeployment.d.ts +3 -0
  67. package/dist/nodes/Coolify/requests/application/createPreviewDeployment.js +53 -0
  68. package/dist/nodes/Coolify/requests/application/createPreviewDeployment.js.map +1 -0
  69. package/dist/nodes/Coolify/requests/application/createPrivateDeployKey.d.ts +3 -0
  70. package/dist/nodes/Coolify/requests/application/createPrivateDeployKey.js +27 -0
  71. package/dist/nodes/Coolify/requests/application/createPrivateDeployKey.js.map +1 -0
  72. package/dist/nodes/Coolify/requests/application/createPrivateGithubApp.d.ts +3 -0
  73. package/dist/nodes/Coolify/requests/application/createPrivateGithubApp.js +27 -0
  74. package/dist/nodes/Coolify/requests/application/createPrivateGithubApp.js.map +1 -0
  75. package/dist/nodes/Coolify/requests/application/createPublic.d.ts +3 -0
  76. package/dist/nodes/Coolify/requests/application/createPublic.js +24 -0
  77. package/dist/nodes/Coolify/requests/application/createPublic.js.map +1 -0
  78. package/dist/nodes/Coolify/requests/application/createStorage.d.ts +3 -0
  79. package/dist/nodes/Coolify/requests/application/createStorage.js +48 -0
  80. package/dist/nodes/Coolify/requests/application/createStorage.js.map +1 -0
  81. package/dist/nodes/Coolify/requests/application/createTag.d.ts +3 -0
  82. package/dist/nodes/Coolify/requests/application/createTag.js +41 -0
  83. package/dist/nodes/Coolify/requests/application/createTag.js.map +1 -0
  84. package/dist/nodes/Coolify/requests/application/delete.d.ts +3 -0
  85. package/dist/nodes/Coolify/requests/application/delete.js +23 -0
  86. package/dist/nodes/Coolify/requests/application/delete.js.map +1 -0
  87. package/dist/nodes/Coolify/requests/application/deleteEnv.d.ts +3 -0
  88. package/dist/nodes/Coolify/requests/application/deleteEnv.js +17 -0
  89. package/dist/nodes/Coolify/requests/application/deleteEnv.js.map +1 -0
  90. package/dist/nodes/Coolify/requests/application/deletePreviewDeployment.d.ts +3 -0
  91. package/dist/nodes/Coolify/requests/application/deletePreviewDeployment.js +17 -0
  92. package/dist/nodes/Coolify/requests/application/deletePreviewDeployment.js.map +1 -0
  93. package/dist/nodes/Coolify/requests/application/deleteStorage.d.ts +3 -0
  94. package/dist/nodes/Coolify/requests/application/deleteStorage.js +19 -0
  95. package/dist/nodes/Coolify/requests/application/deleteStorage.js.map +1 -0
  96. package/dist/nodes/Coolify/requests/application/deleteStorageBackupSchedule.d.ts +3 -0
  97. package/dist/nodes/Coolify/requests/application/deleteStorageBackupSchedule.js +17 -0
  98. package/dist/nodes/Coolify/requests/application/deleteStorageBackupSchedule.js.map +1 -0
  99. package/dist/nodes/Coolify/requests/application/deleteTag.d.ts +3 -0
  100. package/dist/nodes/Coolify/requests/application/deleteTag.js +19 -0
  101. package/dist/nodes/Coolify/requests/application/deleteTag.js.map +1 -0
  102. package/dist/nodes/Coolify/requests/application/get.d.ts +3 -0
  103. package/dist/nodes/Coolify/requests/application/get.js +12 -0
  104. package/dist/nodes/Coolify/requests/application/get.js.map +1 -0
  105. package/dist/nodes/Coolify/requests/application/getLogs.d.ts +4 -0
  106. package/dist/nodes/Coolify/requests/application/getLogs.js +47 -0
  107. package/dist/nodes/Coolify/requests/application/getLogs.js.map +1 -0
  108. package/dist/nodes/Coolify/requests/application/getPreviewDeployment.d.ts +3 -0
  109. package/dist/nodes/Coolify/requests/application/getPreviewDeployment.js +21 -0
  110. package/dist/nodes/Coolify/requests/application/getPreviewDeployment.js.map +1 -0
  111. package/dist/nodes/Coolify/requests/application/getPreviewLogs.d.ts +3 -0
  112. package/dist/nodes/Coolify/requests/application/getPreviewLogs.js +34 -0
  113. package/dist/nodes/Coolify/requests/application/getPreviewLogs.js.map +1 -0
  114. package/dist/nodes/Coolify/requests/application/index.d.ts +45 -0
  115. package/dist/nodes/Coolify/requests/application/index.js +178 -0
  116. package/dist/nodes/Coolify/requests/application/index.js.map +1 -0
  117. package/dist/nodes/Coolify/requests/application/list.d.ts +3 -0
  118. package/dist/nodes/Coolify/requests/application/list.js +15 -0
  119. package/dist/nodes/Coolify/requests/application/list.js.map +1 -0
  120. package/dist/nodes/Coolify/requests/application/listDestinations.d.ts +3 -0
  121. package/dist/nodes/Coolify/requests/application/listDestinations.js +12 -0
  122. package/dist/nodes/Coolify/requests/application/listDestinations.js.map +1 -0
  123. package/dist/nodes/Coolify/requests/application/listEnvs.d.ts +3 -0
  124. package/dist/nodes/Coolify/requests/application/listEnvs.js +12 -0
  125. package/dist/nodes/Coolify/requests/application/listEnvs.js.map +1 -0
  126. package/dist/nodes/Coolify/requests/application/listPreviewDeployments.d.ts +3 -0
  127. package/dist/nodes/Coolify/requests/application/listPreviewDeployments.js +12 -0
  128. package/dist/nodes/Coolify/requests/application/listPreviewDeployments.js.map +1 -0
  129. package/dist/nodes/Coolify/requests/application/listRollbackImages.d.ts +3 -0
  130. package/dist/nodes/Coolify/requests/application/listRollbackImages.js +12 -0
  131. package/dist/nodes/Coolify/requests/application/listRollbackImages.js.map +1 -0
  132. package/dist/nodes/Coolify/requests/application/listStorages.d.ts +3 -0
  133. package/dist/nodes/Coolify/requests/application/listStorages.js +12 -0
  134. package/dist/nodes/Coolify/requests/application/listStorages.js.map +1 -0
  135. package/dist/nodes/Coolify/requests/application/listTags.d.ts +3 -0
  136. package/dist/nodes/Coolify/requests/application/listTags.js +12 -0
  137. package/dist/nodes/Coolify/requests/application/listTags.js.map +1 -0
  138. package/dist/nodes/Coolify/requests/application/migrate.d.ts +3 -0
  139. package/dist/nodes/Coolify/requests/application/migrate.js +21 -0
  140. package/dist/nodes/Coolify/requests/application/migrate.js.map +1 -0
  141. package/dist/nodes/Coolify/requests/application/move.d.ts +3 -0
  142. package/dist/nodes/Coolify/requests/application/move.js +18 -0
  143. package/dist/nodes/Coolify/requests/application/move.js.map +1 -0
  144. package/dist/nodes/Coolify/requests/application/parameters.d.ts +4 -0
  145. package/dist/nodes/Coolify/requests/application/parameters.js +36 -0
  146. package/dist/nodes/Coolify/requests/application/parameters.js.map +1 -0
  147. package/dist/nodes/Coolify/requests/application/removeDestination.d.ts +3 -0
  148. package/dist/nodes/Coolify/requests/application/removeDestination.js +17 -0
  149. package/dist/nodes/Coolify/requests/application/removeDestination.js.map +1 -0
  150. package/dist/nodes/Coolify/requests/application/restart.d.ts +3 -0
  151. package/dist/nodes/Coolify/requests/application/restart.js +12 -0
  152. package/dist/nodes/Coolify/requests/application/restart.js.map +1 -0
  153. package/dist/nodes/Coolify/requests/application/rollback.d.ts +3 -0
  154. package/dist/nodes/Coolify/requests/application/rollback.js +22 -0
  155. package/dist/nodes/Coolify/requests/application/rollback.js.map +1 -0
  156. package/dist/nodes/Coolify/requests/application/runStorageBackup.d.ts +3 -0
  157. package/dist/nodes/Coolify/requests/application/runStorageBackup.js +19 -0
  158. package/dist/nodes/Coolify/requests/application/runStorageBackup.js.map +1 -0
  159. package/dist/nodes/Coolify/requests/application/setStorageBackupSchedule.d.ts +3 -0
  160. package/dist/nodes/Coolify/requests/application/setStorageBackupSchedule.js +72 -0
  161. package/dist/nodes/Coolify/requests/application/setStorageBackupSchedule.js.map +1 -0
  162. package/dist/nodes/Coolify/requests/application/start.d.ts +3 -0
  163. package/dist/nodes/Coolify/requests/application/start.js +23 -0
  164. package/dist/nodes/Coolify/requests/application/start.js.map +1 -0
  165. package/dist/nodes/Coolify/requests/application/stop.d.ts +3 -0
  166. package/dist/nodes/Coolify/requests/application/stop.js +16 -0
  167. package/dist/nodes/Coolify/requests/application/stop.js.map +1 -0
  168. package/dist/nodes/Coolify/requests/application/storageBackupScheduleFields.d.ts +34 -0
  169. package/dist/nodes/Coolify/requests/application/storageBackupScheduleFields.js +204 -0
  170. package/dist/nodes/Coolify/requests/application/storageBackupScheduleFields.js.map +1 -0
  171. package/dist/nodes/Coolify/requests/application/update.d.ts +3 -0
  172. package/dist/nodes/Coolify/requests/application/update.js +23 -0
  173. package/dist/nodes/Coolify/requests/application/update.js.map +1 -0
  174. package/dist/nodes/Coolify/requests/application/updateEnv.d.ts +3 -0
  175. package/dist/nodes/Coolify/requests/application/updateEnv.js +31 -0
  176. package/dist/nodes/Coolify/requests/application/updateEnv.js.map +1 -0
  177. package/dist/nodes/Coolify/requests/application/updateEnvsBulk.d.ts +3 -0
  178. package/dist/nodes/Coolify/requests/application/updateEnvsBulk.js +43 -0
  179. package/dist/nodes/Coolify/requests/application/updateEnvsBulk.js.map +1 -0
  180. package/dist/nodes/Coolify/requests/application/updatePreviewDomains.d.ts +5 -0
  181. package/dist/nodes/Coolify/requests/application/updatePreviewDomains.js +61 -0
  182. package/dist/nodes/Coolify/requests/application/updatePreviewDomains.js.map +1 -0
  183. package/dist/nodes/Coolify/requests/application/updateStorage.d.ts +3 -0
  184. package/dist/nodes/Coolify/requests/application/updateStorage.js +45 -0
  185. package/dist/nodes/Coolify/requests/application/updateStorage.js.map +1 -0
  186. package/dist/nodes/Coolify/requests/auditEvent/index.d.ts +3 -0
  187. package/dist/nodes/Coolify/requests/auditEvent/index.js +10 -0
  188. package/dist/nodes/Coolify/requests/auditEvent/index.js.map +1 -0
  189. package/dist/nodes/Coolify/requests/auditEvent/listAuditEvents.d.ts +3 -0
  190. package/dist/nodes/Coolify/requests/auditEvent/listAuditEvents.js +52 -0
  191. package/dist/nodes/Coolify/requests/auditEvent/listAuditEvents.js.map +1 -0
  192. package/dist/nodes/Coolify/requests/cloudInitScript/cloudInitScriptFields.d.ts +17 -0
  193. package/dist/nodes/Coolify/requests/cloudInitScript/cloudInitScriptFields.js +85 -0
  194. package/dist/nodes/Coolify/requests/cloudInitScript/cloudInitScriptFields.js.map +1 -0
  195. package/dist/nodes/Coolify/requests/cloudInitScript/create.d.ts +3 -0
  196. package/dist/nodes/Coolify/requests/cloudInitScript/create.js +13 -0
  197. package/dist/nodes/Coolify/requests/cloudInitScript/create.js.map +1 -0
  198. package/dist/nodes/Coolify/requests/cloudInitScript/delete.d.ts +3 -0
  199. package/dist/nodes/Coolify/requests/cloudInitScript/delete.js +13 -0
  200. package/dist/nodes/Coolify/requests/cloudInitScript/delete.js.map +1 -0
  201. package/dist/nodes/Coolify/requests/cloudInitScript/get.d.ts +3 -0
  202. package/dist/nodes/Coolify/requests/cloudInitScript/get.js +12 -0
  203. package/dist/nodes/Coolify/requests/cloudInitScript/get.js.map +1 -0
  204. package/dist/nodes/Coolify/requests/cloudInitScript/index.d.ts +9 -0
  205. package/dist/nodes/Coolify/requests/cloudInitScript/index.js +37 -0
  206. package/dist/nodes/Coolify/requests/cloudInitScript/index.js.map +1 -0
  207. package/dist/nodes/Coolify/requests/cloudInitScript/list.d.ts +3 -0
  208. package/dist/nodes/Coolify/requests/cloudInitScript/list.js +10 -0
  209. package/dist/nodes/Coolify/requests/cloudInitScript/list.js.map +1 -0
  210. package/dist/nodes/Coolify/requests/cloudInitScript/parameters.d.ts +2 -0
  211. package/dist/nodes/Coolify/requests/cloudInitScript/parameters.js +12 -0
  212. package/dist/nodes/Coolify/requests/cloudInitScript/parameters.js.map +1 -0
  213. package/dist/nodes/Coolify/requests/cloudInitScript/update.d.ts +3 -0
  214. package/dist/nodes/Coolify/requests/cloudInitScript/update.js +19 -0
  215. package/dist/nodes/Coolify/requests/cloudInitScript/update.js.map +1 -0
  216. package/dist/nodes/Coolify/requests/index.d.ts +4 -0
  217. package/dist/nodes/Coolify/requests/index.js +68 -0
  218. package/dist/nodes/Coolify/requests/index.js.map +1 -0
  219. package/dist/nodes/Coolify/requests/types.d.ts +10 -0
  220. package/dist/nodes/Coolify/requests/types.js +3 -0
  221. package/dist/nodes/Coolify/requests/types.js.map +1 -0
  222. package/dist/nodes/Coolify/shared/apiRequest.d.ts +18 -0
  223. package/dist/nodes/Coolify/shared/apiRequest.js +187 -0
  224. package/dist/nodes/Coolify/shared/apiRequest.js.map +1 -0
  225. package/dist/nodes/Coolify/shared/rateLimit.d.ts +35 -0
  226. package/dist/nodes/Coolify/shared/rateLimit.js +282 -0
  227. package/dist/nodes/Coolify/shared/rateLimit.js.map +1 -0
  228. package/dist/package.json +59 -0
  229. package/dist/tsconfig.tsbuildinfo +1 -0
  230. package/package.json +58 -5
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REQUEST_TIMEOUT_MS = exports.COOLIFY_CREDENTIAL_TYPE = void 0;
4
+ exports.coolifyApiRequest = coolifyApiRequest;
5
+ const n8n_workflow_1 = require("n8n-workflow");
6
+ const rateLimit_1 = require("./rateLimit");
7
+ exports.COOLIFY_CREDENTIAL_TYPE = 'coolifyApi';
8
+ exports.REQUEST_TIMEOUT_MS = 30000;
9
+ async function waitBeforeRetry(ctx, ms) {
10
+ const signal = 'getExecutionCancelSignal' in ctx ? ctx.getExecutionCancelSignal() : undefined;
11
+ if (signal) {
12
+ await (0, n8n_workflow_1.sleepWithAbort)(ms, signal);
13
+ return;
14
+ }
15
+ await (0, n8n_workflow_1.sleep)(ms);
16
+ }
17
+ async function buildRequestUrl(ctx, path) {
18
+ var _a;
19
+ const credentials = await ctx.getCredentials(exports.COOLIFY_CREDENTIAL_TYPE);
20
+ const baseUrl = String((_a = credentials.host) !== null && _a !== void 0 ? _a : '')
21
+ .trim()
22
+ .replace(/\/+$/, '');
23
+ if (!baseUrl) {
24
+ throw new n8n_workflow_1.NodeApiError(ctx.getNode(), { message: 'The Coolify API credential has no Base URL' }, {
25
+ message: 'The Coolify API credential is missing its Base URL',
26
+ description: 'Open the Coolify API credential and set the Base URL, for example https://app.coolify.io/api/v1, then reconnect the node.',
27
+ });
28
+ }
29
+ return `${baseUrl}/${path.replace(/^\/+/, '')}`;
30
+ }
31
+ function buildRequestOptions(method, url, options) {
32
+ var _a;
33
+ const headers = { Accept: 'application/json' };
34
+ if (options.body !== undefined) {
35
+ headers['Content-Type'] = 'application/json';
36
+ }
37
+ Object.assign(headers, (_a = options.headers) !== null && _a !== void 0 ? _a : {});
38
+ const requestOptions = {
39
+ method,
40
+ url,
41
+ headers,
42
+ json: true,
43
+ timeout: exports.REQUEST_TIMEOUT_MS,
44
+ returnFullResponse: true,
45
+ ignoreHttpStatusErrors: true,
46
+ };
47
+ if (options.qs && Object.keys(options.qs).length > 0) {
48
+ requestOptions.qs = options.qs;
49
+ }
50
+ if (options.body !== undefined) {
51
+ requestOptions.body = options.body;
52
+ }
53
+ return requestOptions;
54
+ }
55
+ function describeServerWait(failure) {
56
+ const raw = (0, rateLimit_1.getHeaderValue)(failure.headers, 'retry-after');
57
+ return raw === undefined ? undefined : raw.trim();
58
+ }
59
+ function failureTitle(failure) {
60
+ var _a;
61
+ if (failure.status === 429) {
62
+ return 'Coolify API rate limit exceeded (HTTP 429)';
63
+ }
64
+ if (failure.status !== undefined) {
65
+ return `Coolify API request failed (HTTP ${failure.status})`;
66
+ }
67
+ return `Coolify API request failed (${(_a = failure.networkCode) !== null && _a !== void 0 ? _a : 'network error'})`;
68
+ }
69
+ function attachBody(error, failure) {
70
+ if (failure.body && typeof failure.body === 'object' && !Array.isArray(failure.body)) {
71
+ error.context.data = failure.body;
72
+ }
73
+ return error;
74
+ }
75
+ function buildDefaultApiError(node, failure) {
76
+ const errorResponse = {};
77
+ if (failure.status !== undefined) {
78
+ errorResponse.httpCode = String(failure.status);
79
+ }
80
+ if (failure.bodyMessage !== undefined) {
81
+ errorResponse.message = failure.bodyMessage;
82
+ }
83
+ return attachBody(new n8n_workflow_1.NodeApiError(node, errorResponse), failure);
84
+ }
85
+ function buildCoolifyApiError(node, failure, message, description) {
86
+ const errorResponse = {};
87
+ if (failure.status !== undefined) {
88
+ errorResponse.httpCode = String(failure.status);
89
+ }
90
+ if (failure.bodyMessage !== undefined) {
91
+ errorResponse.message = failure.bodyMessage;
92
+ }
93
+ const error = new n8n_workflow_1.NodeApiError(node, errorResponse, { message, description });
94
+ return attachBody(error, failure);
95
+ }
96
+ function buildNotRetriedError(node, failure) {
97
+ const details = [];
98
+ if (failure.status === 429) {
99
+ details.push('Coolify or an upstream provider throttled the request (HTTP 429). The request was not retried automatically, because repeating a request that is not marked as safe to repeat could cause duplicate side effects.');
100
+ }
101
+ else if (failure.status !== undefined) {
102
+ details.push(`The request failed with a transient error (HTTP ${failure.status}). The request was not retried automatically, because repeating a request that is not marked as safe to repeat could cause duplicate side effects.`);
103
+ }
104
+ else {
105
+ details.push(`The request failed before the server answered${failure.networkCode ? ` (${failure.networkCode})` : ''}. The request was not retried automatically, because repeating a request that is not marked as safe to repeat could cause duplicate side effects.`);
106
+ }
107
+ const wait = describeServerWait(failure);
108
+ if (wait !== undefined) {
109
+ details.push(`Coolify asked to wait ${wait} s before the next request.`);
110
+ }
111
+ return buildCoolifyApiError(node, failure, failureTitle(failure), details.join(' '));
112
+ }
113
+ function buildExhaustedError(node, failure, attempts) {
114
+ const wait = describeServerWait(failure);
115
+ const details = [
116
+ `The request was retried ${attempts} time${attempts === 1 ? '' : 's'} without success (${attempts + 1} attempts in total).`,
117
+ ];
118
+ if (wait !== undefined) {
119
+ details.push(`The last response asked to wait ${wait} s before the next request.`);
120
+ }
121
+ if (failure.status === 429) {
122
+ details.push('Consider raising the API rate limit of the instance (API_RATE_LIMIT) or reducing the number of requests this workflow makes.');
123
+ }
124
+ return buildCoolifyApiError(node, failure, failureTitle(failure), details.join(' '));
125
+ }
126
+ function buildBudgetExceededError(node, failure, delay) {
127
+ const requestedSeconds = Math.round(delay.delayMs / 1000);
128
+ const budgetSeconds = Math.round(rateLimit_1.MAX_RETRY_AFTER_MS / 1000);
129
+ return buildCoolifyApiError(node, failure, failureTitle(failure), `Coolify asked to wait ${requestedSeconds} s before the next request, which is longer than the maximum wait of ${budgetSeconds} s this node performs for a single retry. The request was not retried, so it was not repeated before the requested wait elapsed. Retry the workflow manually after the wait.`);
130
+ }
131
+ function responseHeaders(response) {
132
+ const headers = response.headers;
133
+ return headers && Object.keys(headers).length > 0 ? headers : undefined;
134
+ }
135
+ async function coolifyApiRequest(ctx, method, path, options = {}) {
136
+ var _a, _b, _c, _d, _e;
137
+ const url = await buildRequestUrl(ctx, path);
138
+ const requestOptions = buildRequestOptions(method, url, options);
139
+ const retrySafety = (_a = options.retrySafety) !== null && _a !== void 0 ? _a : (0, rateLimit_1.defaultRetrySafety)(method);
140
+ const runtime = (_b = options.runtime) !== null && _b !== void 0 ? _b : {};
141
+ const sleepBeforeRetry = (_c = runtime.sleep) !== null && _c !== void 0 ? _c : ((ms) => waitBeforeRetry(ctx, ms));
142
+ const now = (_d = runtime.now) !== null && _d !== void 0 ? _d : (() => Date.now());
143
+ const random = (_e = runtime.random) !== null && _e !== void 0 ? _e : Math.random;
144
+ let attempt = 0;
145
+ for (;;) {
146
+ let failure;
147
+ try {
148
+ const response = (await ctx.helpers.httpRequestWithAuthentication.call(ctx, exports.COOLIFY_CREDENTIAL_TYPE, requestOptions));
149
+ if (typeof (response === null || response === void 0 ? void 0 : response.statusCode) !== 'number') {
150
+ return response;
151
+ }
152
+ if (response.statusCode >= 200 && response.statusCode < 300) {
153
+ return response.body;
154
+ }
155
+ failure = (0, rateLimit_1.classifyResponse)(response.statusCode, responseHeaders(response), response.body);
156
+ }
157
+ catch (error) {
158
+ failure = (0, rateLimit_1.classifyFailure)(error);
159
+ if (!failure.retryable) {
160
+ throw error instanceof n8n_workflow_1.ExecutionBaseError
161
+ ? error
162
+ : new n8n_workflow_1.NodeApiError(ctx.getNode(), error);
163
+ }
164
+ }
165
+ if (!failure.retryable) {
166
+ throw buildDefaultApiError(ctx.getNode(), failure);
167
+ }
168
+ if (retrySafety === 'unsafe') {
169
+ throw buildNotRetriedError(ctx.getNode(), failure);
170
+ }
171
+ if (attempt >= rateLimit_1.MAX_RETRIES) {
172
+ throw buildExhaustedError(ctx.getNode(), failure, attempt);
173
+ }
174
+ const delay = (0, rateLimit_1.computeRetryDelay)({
175
+ attempt,
176
+ headers: failure.headers,
177
+ nowMs: now(),
178
+ random,
179
+ });
180
+ if (delay.exceedsBudget) {
181
+ throw buildBudgetExceededError(ctx.getNode(), failure, delay);
182
+ }
183
+ await sleepBeforeRetry(delay.delayMs);
184
+ attempt += 1;
185
+ }
186
+ }
187
+ //# sourceMappingURL=apiRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiRequest.js","sourceRoot":"","sources":["../../../../nodes/Coolify/shared/apiRequest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export declare const MAX_RETRIES = 3;
2
+ export declare const BASE_BACKOFF_MS = 500;
3
+ export declare const MAX_BACKOFF_MS = 30000;
4
+ export declare const JITTER_MS = 500;
5
+ export declare const MAX_RETRY_AFTER_MS = 60000;
6
+ export type RetrySafety = 'safe' | 'unsafe';
7
+ export declare function defaultRetrySafety(method: string): RetrySafety;
8
+ export type HeaderMap = Record<string, string | string[] | undefined>;
9
+ export interface FailureInfo {
10
+ status?: number;
11
+ headers?: HeaderMap;
12
+ body?: unknown;
13
+ bodyMessage?: string;
14
+ networkCode?: string;
15
+ transient: boolean;
16
+ network: boolean;
17
+ retryable: boolean;
18
+ }
19
+ export declare function getHeaderValue(headers: unknown, name: string): string | undefined;
20
+ export declare function parseRetryAfterMs(headers: unknown, nowMs: number): number | undefined;
21
+ export declare function parseRateLimitResetMs(headers: unknown, nowMs: number): number | undefined;
22
+ export type RetryDelaySource = 'retry-after' | 'rate-limit-reset' | 'backoff';
23
+ export interface RetryDelay {
24
+ delayMs: number;
25
+ source: RetryDelaySource;
26
+ exceedsBudget: boolean;
27
+ }
28
+ export declare function computeRetryDelay(params: {
29
+ attempt: number;
30
+ headers?: unknown;
31
+ nowMs: number;
32
+ random: () => number;
33
+ }): RetryDelay;
34
+ export declare function classifyFailure(error: unknown): FailureInfo;
35
+ export declare function classifyResponse(status: number, headers?: HeaderMap, body?: unknown): FailureInfo;
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_RETRY_AFTER_MS = exports.JITTER_MS = exports.MAX_BACKOFF_MS = exports.BASE_BACKOFF_MS = exports.MAX_RETRIES = void 0;
4
+ exports.defaultRetrySafety = defaultRetrySafety;
5
+ exports.getHeaderValue = getHeaderValue;
6
+ exports.parseRetryAfterMs = parseRetryAfterMs;
7
+ exports.parseRateLimitResetMs = parseRateLimitResetMs;
8
+ exports.computeRetryDelay = computeRetryDelay;
9
+ exports.classifyFailure = classifyFailure;
10
+ exports.classifyResponse = classifyResponse;
11
+ exports.MAX_RETRIES = 3;
12
+ exports.BASE_BACKOFF_MS = 500;
13
+ exports.MAX_BACKOFF_MS = 30000;
14
+ exports.JITTER_MS = 500;
15
+ exports.MAX_RETRY_AFTER_MS = 60000;
16
+ const SAFE_METHODS = new Set(['GET', 'HEAD', 'OPTIONS']);
17
+ const TRANSIENT_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
18
+ const TRANSPORT_FAILURE_CODES = new Set([
19
+ 'ECONNRESET',
20
+ 'ETIMEDOUT',
21
+ 'ECONNABORTED',
22
+ 'ECONNREFUSED',
23
+ 'EPIPE',
24
+ 'EAI_AGAIN',
25
+ 'ENOTFOUND',
26
+ 'ENETUNREACH',
27
+ 'ENETDOWN',
28
+ 'EHOSTUNREACH',
29
+ 'EHOSTDOWN',
30
+ 'ERR_SOCKET_CONNECTION_TIMEOUT',
31
+ 'UND_ERR_BODY_TIMEOUT',
32
+ 'UND_ERR_CONNECT_TIMEOUT',
33
+ 'UND_ERR_HEADERS_TIMEOUT',
34
+ 'UND_ERR_SOCKET',
35
+ ]);
36
+ function defaultRetrySafety(method) {
37
+ return SAFE_METHODS.has(method.toUpperCase()) ? 'safe' : 'unsafe';
38
+ }
39
+ function getHeaderValue(headers, name) {
40
+ if (!headers || typeof headers !== 'object') {
41
+ return undefined;
42
+ }
43
+ const target = name.toLowerCase();
44
+ const getter = headers.get;
45
+ if (typeof getter === 'function') {
46
+ const value = getter.call(headers, target);
47
+ if (typeof value === 'string') {
48
+ return value;
49
+ }
50
+ }
51
+ for (const [key, value] of Object.entries(headers)) {
52
+ if (key.toLowerCase() !== target) {
53
+ continue;
54
+ }
55
+ const first = Array.isArray(value) ? value[0] : value;
56
+ if (typeof first === 'string') {
57
+ return first;
58
+ }
59
+ if (typeof first === 'number') {
60
+ return String(first);
61
+ }
62
+ }
63
+ return undefined;
64
+ }
65
+ function parseRetryAfterMs(headers, nowMs) {
66
+ const raw = getHeaderValue(headers, 'retry-after');
67
+ if (raw === undefined) {
68
+ return undefined;
69
+ }
70
+ const trimmed = raw.trim();
71
+ if (trimmed === '') {
72
+ return undefined;
73
+ }
74
+ if (/^\d+$/.test(trimmed)) {
75
+ const seconds = Number(trimmed);
76
+ const ms = seconds * 1000;
77
+ return Number.isSafeInteger(ms) ? ms : undefined;
78
+ }
79
+ if (!/[a-z]/i.test(trimmed)) {
80
+ return undefined;
81
+ }
82
+ const dateMs = Date.parse(trimmed);
83
+ if (Number.isNaN(dateMs)) {
84
+ return undefined;
85
+ }
86
+ return Math.max(0, dateMs - nowMs);
87
+ }
88
+ function parseRateLimitResetMs(headers, nowMs) {
89
+ const raw = getHeaderValue(headers, 'x-ratelimit-reset');
90
+ if (raw === undefined) {
91
+ return undefined;
92
+ }
93
+ const trimmed = raw.trim();
94
+ if (!/^\d+$/.test(trimmed)) {
95
+ return undefined;
96
+ }
97
+ const resetMs = Number(trimmed) * 1000;
98
+ if (!Number.isSafeInteger(resetMs)) {
99
+ return undefined;
100
+ }
101
+ return Math.max(0, resetMs - nowMs);
102
+ }
103
+ function computeRetryDelay(params) {
104
+ const retryAfterMs = parseRetryAfterMs(params.headers, params.nowMs);
105
+ if (retryAfterMs !== undefined) {
106
+ return {
107
+ delayMs: retryAfterMs,
108
+ source: 'retry-after',
109
+ exceedsBudget: retryAfterMs > exports.MAX_RETRY_AFTER_MS,
110
+ };
111
+ }
112
+ const resetMs = parseRateLimitResetMs(params.headers, params.nowMs);
113
+ if (resetMs !== undefined) {
114
+ return {
115
+ delayMs: resetMs,
116
+ source: 'rate-limit-reset',
117
+ exceedsBudget: resetMs > exports.MAX_RETRY_AFTER_MS,
118
+ };
119
+ }
120
+ const exponential = exports.BASE_BACKOFF_MS * 2 ** params.attempt;
121
+ const jitter = Math.floor(params.random() * exports.JITTER_MS);
122
+ return {
123
+ delayMs: Math.min(exports.MAX_BACKOFF_MS, exponential + jitter),
124
+ source: 'backoff',
125
+ exceedsBudget: false,
126
+ };
127
+ }
128
+ function errorChain(error, maxDepth = 5) {
129
+ const chain = [];
130
+ let current = error;
131
+ for (let depth = 0; depth < maxDepth && current && typeof current === 'object'; depth++) {
132
+ chain.push(current);
133
+ current = current.cause;
134
+ }
135
+ return chain;
136
+ }
137
+ function findStatus(chain) {
138
+ var _a, _b;
139
+ let fallback;
140
+ for (const level of chain) {
141
+ const httpCode = toHttpStatus(level.httpCode);
142
+ if (httpCode !== undefined) {
143
+ return httpCode;
144
+ }
145
+ const response = level.response;
146
+ fallback !== null && fallback !== void 0 ? fallback : (fallback = (_b = (_a = toHttpStatus(response === null || response === void 0 ? void 0 : response.status)) !== null && _a !== void 0 ? _a : toHttpStatus(response === null || response === void 0 ? void 0 : response.statusCode)) !== null && _b !== void 0 ? _b : toHttpStatus(level.statusCode));
147
+ }
148
+ return fallback;
149
+ }
150
+ function toHttpStatus(value) {
151
+ const status = typeof value === 'number'
152
+ ? value
153
+ : typeof value === 'string' && /^\d+$/.test(value.trim())
154
+ ? Number(value.trim())
155
+ : undefined;
156
+ if (status === undefined || !Number.isInteger(status) || status < 100 || status > 599) {
157
+ return undefined;
158
+ }
159
+ return status;
160
+ }
161
+ function findHeaders(chain) {
162
+ var _a, _b;
163
+ for (const level of chain) {
164
+ const headers = (_b = (_a = level.response) === null || _a === void 0 ? void 0 : _a.headers) !== null && _b !== void 0 ? _b : level.headers;
165
+ if (headers && typeof headers === 'object') {
166
+ return headers;
167
+ }
168
+ }
169
+ return undefined;
170
+ }
171
+ function findBody(chain) {
172
+ var _a, _b, _c;
173
+ for (const level of chain) {
174
+ const data = (_b = (_a = level.response) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : (_c = level.context) === null || _c === void 0 ? void 0 : _c.data;
175
+ if (data !== undefined && data !== null && data !== '') {
176
+ return data;
177
+ }
178
+ }
179
+ return undefined;
180
+ }
181
+ function findBodyMessage(body) {
182
+ if (!body || typeof body !== 'object' || Array.isArray(body)) {
183
+ return undefined;
184
+ }
185
+ const message = body.message;
186
+ return typeof message === 'string' ? message : undefined;
187
+ }
188
+ function readCode(value) {
189
+ if (typeof value !== 'string') {
190
+ return undefined;
191
+ }
192
+ const code = value.trim().toUpperCase();
193
+ return code === '' ? undefined : code;
194
+ }
195
+ function messageTexts(level) {
196
+ const texts = [];
197
+ if (typeof level.message === 'string') {
198
+ texts.push(level.message);
199
+ }
200
+ if (typeof level.description === 'string') {
201
+ texts.push(level.description);
202
+ }
203
+ if (Array.isArray(level.messages)) {
204
+ for (const message of level.messages) {
205
+ if (typeof message === 'string') {
206
+ texts.push(message);
207
+ }
208
+ }
209
+ }
210
+ return texts;
211
+ }
212
+ function codeFromMessage(text) {
213
+ if (/socket hang up/i.test(text)) {
214
+ return 'ECONNRESET';
215
+ }
216
+ if (/timeout of \d+\s*ms exceeded/i.test(text)) {
217
+ return 'ETIMEDOUT';
218
+ }
219
+ for (const code of TRANSPORT_FAILURE_CODES) {
220
+ if (new RegExp(`\\b${code}\\b`).test(text)) {
221
+ return code;
222
+ }
223
+ }
224
+ return undefined;
225
+ }
226
+ function findNetworkCode(chain) {
227
+ var _a, _b;
228
+ for (const level of chain) {
229
+ const code = (_a = readCode(level.code)) !== null && _a !== void 0 ? _a : readCode((_b = level.cause) === null || _b === void 0 ? void 0 : _b.code);
230
+ if (code !== undefined) {
231
+ return code;
232
+ }
233
+ }
234
+ for (const level of chain) {
235
+ const code = readCode(level.httpCode);
236
+ if (code !== undefined && !/^\d+$/.test(code)) {
237
+ return code;
238
+ }
239
+ }
240
+ for (const level of chain) {
241
+ for (const text of messageTexts(level)) {
242
+ const code = codeFromMessage(text);
243
+ if (code !== undefined) {
244
+ return code;
245
+ }
246
+ }
247
+ }
248
+ return undefined;
249
+ }
250
+ function classifyFailure(error) {
251
+ const chain = errorChain(error);
252
+ const status = findStatus(chain);
253
+ const headers = findHeaders(chain);
254
+ const body = findBody(chain);
255
+ const networkCode = findNetworkCode(chain);
256
+ const transient = status !== undefined && TRANSIENT_STATUS_CODES.has(status);
257
+ const network = networkCode !== undefined && TRANSPORT_FAILURE_CODES.has(networkCode);
258
+ return {
259
+ ...(status !== undefined ? { status } : {}),
260
+ ...(headers !== undefined ? { headers } : {}),
261
+ ...(body !== undefined ? { body } : {}),
262
+ ...(findBodyMessage(body) !== undefined ? { bodyMessage: findBodyMessage(body) } : {}),
263
+ ...(networkCode !== undefined ? { networkCode } : {}),
264
+ transient,
265
+ network,
266
+ retryable: transient || network,
267
+ };
268
+ }
269
+ function classifyResponse(status, headers, body) {
270
+ const transient = TRANSIENT_STATUS_CODES.has(status);
271
+ const bodyMessage = findBodyMessage(body);
272
+ return {
273
+ status,
274
+ ...(headers !== undefined ? { headers } : {}),
275
+ ...(body !== undefined ? { body } : {}),
276
+ ...(bodyMessage !== undefined ? { bodyMessage } : {}),
277
+ transient,
278
+ network: false,
279
+ retryable: transient,
280
+ };
281
+ }
282
+ //# sourceMappingURL=rateLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../../nodes/Coolify/shared/rateLimit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@sinehypernova-0718/n8n-nodes-coolify",
3
+ "version": "0.1.1",
4
+ "packageManager": "pnpm@12.4.2",
5
+ "description": "An n8n community node for managing Coolify applications, deployments, databases, services, and infrastructure through workflows.",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/sinehypernova-0718/n8n-nodes-coolify#readme",
8
+ "keywords": [
9
+ "n8n-community-node-package"
10
+ ],
11
+ "author": {
12
+ "name": "sinehypernova-0718",
13
+ "email": "srinjoy875@gmail.com"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/sinehypernova-0718/n8n-nodes-coolify.git"
18
+ },
19
+ "bugs": {
20
+ "url": "https://github.com/sinehypernova-0718/n8n-nodes-coolify/issues"
21
+ },
22
+ "scripts": {
23
+ "build": "n8n-node build",
24
+ "build:watch": "tsc --watch",
25
+ "dev": "n8n-node dev",
26
+ "lint": "n8n-node lint",
27
+ "lint:fix": "n8n-node lint --fix",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest",
30
+ "release": "n8n-node release",
31
+ "release:local": "release-it",
32
+ "prepublishOnly": "n8n-node prerelease"
33
+ },
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "n8n": {
38
+ "n8nNodesApiVersion": 1,
39
+ "strict": true,
40
+ "credentials": [
41
+ "dist/credentials/CoolifyApi.credentials.js"
42
+ ],
43
+ "nodes": [
44
+ "dist/nodes/Coolify/Coolify.node.js"
45
+ ]
46
+ },
47
+ "devDependencies": {
48
+ "@n8n/node-cli": "*",
49
+ "@types/node": "^22.20.5",
50
+ "eslint": "9.29.0",
51
+ "prettier": "3.8.3",
52
+ "release-it": "20.2.0",
53
+ "typescript": "5.9.3",
54
+ "vitest": "^4.1.12"
55
+ },
56
+ "peerDependencies": {
57
+ "n8n-workflow": "*"
58
+ }
59
+ }