n8n 1.22.3 → 1.23.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 (277) hide show
  1. package/dist/AbstractServer.d.ts +4 -4
  2. package/dist/AbstractServer.js +39 -8
  3. package/dist/AbstractServer.js.map +1 -1
  4. package/dist/ActiveWebhooks.d.ts +20 -0
  5. package/dist/ActiveWebhooks.js +142 -0
  6. package/dist/ActiveWebhooks.js.map +1 -0
  7. package/dist/ActiveWorkflowRunner.d.ts +7 -19
  8. package/dist/ActiveWorkflowRunner.js +28 -131
  9. package/dist/ActiveWorkflowRunner.js.map +1 -1
  10. package/dist/ExternalHooks.d.ts +2 -2
  11. package/dist/ExternalHooks.js.map +1 -1
  12. package/dist/ExternalSecrets/ExternalSecrets.controller.ee.js +0 -2
  13. package/dist/ExternalSecrets/ExternalSecrets.controller.ee.js.map +1 -1
  14. package/dist/GenericHelpers.d.ts +2 -3
  15. package/dist/GenericHelpers.js +1 -16
  16. package/dist/GenericHelpers.js.map +1 -1
  17. package/dist/Interfaces.d.ts +5 -139
  18. package/dist/Interfaces.js.map +1 -1
  19. package/dist/InternalHooks.d.ts +2 -2
  20. package/dist/InternalHooks.js.map +1 -1
  21. package/dist/License.d.ts +1 -0
  22. package/dist/License.js +14 -0
  23. package/dist/License.js.map +1 -1
  24. package/dist/LoadNodesAndCredentials.js.map +1 -1
  25. package/dist/PublicApi/index.js +3 -3
  26. package/dist/PublicApi/index.js.map +1 -1
  27. package/dist/PublicApi/v1/handlers/workflows/workflows.handler.js +7 -4
  28. package/dist/PublicApi/v1/handlers/workflows/workflows.handler.js.map +1 -1
  29. package/dist/PublicApi/v1/handlers/workflows/workflows.service.d.ts +3 -10
  30. package/dist/PublicApi/v1/handlers/workflows/workflows.service.js +2 -28
  31. package/dist/PublicApi/v1/handlers/workflows/workflows.service.js.map +1 -1
  32. package/dist/ResponseHelper.js +13 -1
  33. package/dist/ResponseHelper.js.map +1 -1
  34. package/dist/Server.d.ts +0 -4
  35. package/dist/Server.js +57 -92
  36. package/dist/Server.js.map +1 -1
  37. package/dist/TestWebhooks.d.ts +8 -7
  38. package/dist/TestWebhooks.js +71 -83
  39. package/dist/TestWebhooks.js.map +1 -1
  40. package/dist/UserManagement/PermissionChecker.js +2 -9
  41. package/dist/UserManagement/PermissionChecker.js.map +1 -1
  42. package/dist/UserManagement/UserManagementHelper.d.ts +0 -12
  43. package/dist/UserManagement/UserManagementHelper.js +1 -27
  44. package/dist/UserManagement/UserManagementHelper.js.map +1 -1
  45. package/dist/WaitTracker.js +1 -21
  46. package/dist/WaitTracker.js.map +1 -1
  47. package/dist/WebhookHelpers.d.ts +0 -1
  48. package/dist/WebhookHelpers.js +1 -11
  49. package/dist/WebhookHelpers.js.map +1 -1
  50. package/dist/WebhookServer.js +16 -2
  51. package/dist/WebhookServer.js.map +1 -1
  52. package/dist/WorkflowExecuteAdditionalData.js +3 -3
  53. package/dist/WorkflowExecuteAdditionalData.js.map +1 -1
  54. package/dist/build.tsbuildinfo +1 -1
  55. package/dist/collaboration/collaboration.service.d.ts +3 -1
  56. package/dist/collaboration/collaboration.service.js +6 -3
  57. package/dist/collaboration/collaboration.service.js.map +1 -1
  58. package/dist/commands/BaseCommand.d.ts +5 -3
  59. package/dist/commands/BaseCommand.js +5 -4
  60. package/dist/commands/BaseCommand.js.map +1 -1
  61. package/dist/commands/export/credentials.js +1 -5
  62. package/dist/commands/export/credentials.js.map +1 -1
  63. package/dist/commands/export/workflow.js +1 -5
  64. package/dist/commands/export/workflow.js.map +1 -1
  65. package/dist/commands/ldap/reset.js +1 -2
  66. package/dist/commands/ldap/reset.js.map +1 -1
  67. package/dist/commands/list/workflow.js +4 -5
  68. package/dist/commands/list/workflow.js.map +1 -1
  69. package/dist/commands/start.js +8 -13
  70. package/dist/commands/start.js.map +1 -1
  71. package/dist/commands/update/workflow.js +3 -6
  72. package/dist/commands/update/workflow.js.map +1 -1
  73. package/dist/commands/user-management/reset.js +6 -7
  74. package/dist/commands/user-management/reset.js.map +1 -1
  75. package/dist/commands/webhook.js +1 -1
  76. package/dist/commands/webhook.js.map +1 -1
  77. package/dist/config/index.d.ts +0 -1
  78. package/dist/controllers/activeWorkflows.controller.d.ts +8 -0
  79. package/dist/controllers/activeWorkflows.controller.js +45 -0
  80. package/dist/controllers/activeWorkflows.controller.js.map +1 -0
  81. package/dist/controllers/auth.controller.d.ts +3 -1
  82. package/dist/controllers/auth.controller.js +6 -9
  83. package/dist/controllers/auth.controller.js.map +1 -1
  84. package/dist/controllers/binaryData.controller.d.ts +1 -1
  85. package/dist/controllers/binaryData.controller.js +0 -2
  86. package/dist/controllers/binaryData.controller.js.map +1 -1
  87. package/dist/controllers/communityPackages.controller.d.ts +3 -3
  88. package/dist/controllers/communityPackages.controller.js +0 -2
  89. package/dist/controllers/communityPackages.controller.js.map +1 -1
  90. package/dist/controllers/debug.controller.d.ts +8 -1
  91. package/dist/controllers/debug.controller.js +7 -8
  92. package/dist/controllers/debug.controller.js.map +1 -1
  93. package/dist/controllers/dynamicNodeParameters.controller.js +0 -2
  94. package/dist/controllers/dynamicNodeParameters.controller.js.map +1 -1
  95. package/dist/controllers/invitation.controller.d.ts +6 -5
  96. package/dist/controllers/invitation.controller.js +15 -36
  97. package/dist/controllers/invitation.controller.js.map +1 -1
  98. package/dist/controllers/ldap.controller.d.ts +2 -4
  99. package/dist/controllers/ldap.controller.js +6 -8
  100. package/dist/controllers/ldap.controller.js.map +1 -1
  101. package/dist/controllers/me.controller.d.ts +3 -1
  102. package/dist/controllers/me.controller.js +14 -8
  103. package/dist/controllers/me.controller.js.map +1 -1
  104. package/dist/controllers/mfa.controller.js +0 -2
  105. package/dist/controllers/mfa.controller.js.map +1 -1
  106. package/dist/controllers/nodeTypes.controller.d.ts +1 -3
  107. package/dist/controllers/nodeTypes.controller.js +4 -4
  108. package/dist/controllers/nodeTypes.controller.js.map +1 -1
  109. package/dist/controllers/oauth/abstractOAuth.controller.d.ts +3 -1
  110. package/dist/controllers/oauth/abstractOAuth.controller.js +6 -4
  111. package/dist/controllers/oauth/abstractOAuth.controller.js.map +1 -1
  112. package/dist/controllers/oauth/oAuth1Credential.controller.js +0 -2
  113. package/dist/controllers/oauth/oAuth1Credential.controller.js.map +1 -1
  114. package/dist/controllers/oauth/oAuth2Credential.controller.js +0 -2
  115. package/dist/controllers/oauth/oAuth2Credential.controller.js.map +1 -1
  116. package/dist/controllers/orchestration.controller.js +0 -2
  117. package/dist/controllers/orchestration.controller.js.map +1 -1
  118. package/dist/controllers/owner.controller.d.ts +6 -6
  119. package/dist/controllers/owner.controller.js +13 -7
  120. package/dist/controllers/owner.controller.js.map +1 -1
  121. package/dist/controllers/passwordReset.controller.d.ts +5 -1
  122. package/dist/controllers/passwordReset.controller.js +10 -14
  123. package/dist/controllers/passwordReset.controller.js.map +1 -1
  124. package/dist/controllers/role.controller.js +0 -2
  125. package/dist/controllers/role.controller.js.map +1 -1
  126. package/dist/controllers/tags.controller.d.ts +1 -1
  127. package/dist/controllers/tags.controller.js +0 -2
  128. package/dist/controllers/tags.controller.js.map +1 -1
  129. package/dist/controllers/translation.controller.d.ts +3 -5
  130. package/dist/controllers/translation.controller.js +8 -4
  131. package/dist/controllers/translation.controller.js.map +1 -1
  132. package/dist/controllers/users.controller.d.ts +6 -10
  133. package/dist/controllers/users.controller.js +34 -78
  134. package/dist/controllers/users.controller.js.map +1 -1
  135. package/dist/controllers/workflowStatistics.controller.d.ts +2 -2
  136. package/dist/controllers/workflowStatistics.controller.js +2 -13
  137. package/dist/controllers/workflowStatistics.controller.js.map +1 -1
  138. package/dist/credentials/credentials.controller.ee.js +2 -4
  139. package/dist/credentials/credentials.controller.ee.js.map +1 -1
  140. package/dist/credentials/credentials.service.d.ts +0 -5
  141. package/dist/credentials/credentials.service.ee.d.ts +2 -3
  142. package/dist/credentials/credentials.service.ee.js +2 -11
  143. package/dist/credentials/credentials.service.ee.js.map +1 -1
  144. package/dist/credentials/credentials.service.js +3 -55
  145. package/dist/credentials/credentials.service.js.map +1 -1
  146. package/dist/databases/entities/AbstractEntity.js.map +1 -1
  147. package/dist/databases/repositories/credentials.repository.d.ts +9 -0
  148. package/dist/databases/repositories/credentials.repository.js +58 -0
  149. package/dist/databases/repositories/credentials.repository.js.map +1 -1
  150. package/dist/databases/repositories/execution.repository.d.ts +8 -0
  151. package/dist/databases/repositories/execution.repository.js +77 -3
  152. package/dist/databases/repositories/execution.repository.js.map +1 -1
  153. package/dist/databases/repositories/executionData.repository.d.ts +1 -0
  154. package/dist/databases/repositories/executionData.repository.js +8 -0
  155. package/dist/databases/repositories/executionData.repository.js.map +1 -1
  156. package/dist/databases/repositories/sharedCredentials.repository.d.ts +5 -0
  157. package/dist/databases/repositories/sharedCredentials.repository.js +27 -0
  158. package/dist/databases/repositories/sharedCredentials.repository.js.map +1 -1
  159. package/dist/databases/repositories/sharedWorkflow.repository.d.ts +24 -0
  160. package/dist/databases/repositories/sharedWorkflow.repository.js +79 -0
  161. package/dist/databases/repositories/sharedWorkflow.repository.js.map +1 -1
  162. package/dist/databases/repositories/tag.repository.d.ts +5 -0
  163. package/dist/databases/repositories/tag.repository.js +43 -0
  164. package/dist/databases/repositories/tag.repository.js.map +1 -1
  165. package/dist/databases/repositories/user.repository.d.ts +9 -0
  166. package/dist/databases/repositories/user.repository.js +62 -0
  167. package/dist/databases/repositories/user.repository.js.map +1 -1
  168. package/dist/databases/repositories/workflow.repository.d.ts +22 -1
  169. package/dist/databases/repositories/workflow.repository.js +108 -0
  170. package/dist/databases/repositories/workflow.repository.js.map +1 -1
  171. package/dist/databases/repositories/workflowHistory.repository.d.ts +1 -0
  172. package/dist/databases/repositories/workflowHistory.repository.js +3 -0
  173. package/dist/databases/repositories/workflowHistory.repository.js.map +1 -1
  174. package/dist/decorators/OnShutdown.d.ts +1 -0
  175. package/dist/decorators/OnShutdown.js +19 -0
  176. package/dist/decorators/OnShutdown.js.map +1 -0
  177. package/dist/decorators/RestController.js +2 -0
  178. package/dist/decorators/RestController.js.map +1 -1
  179. package/dist/decorators/registerController.d.ts +2 -327
  180. package/dist/decorators/registerController.js +6 -6
  181. package/dist/decorators/registerController.js.map +1 -1
  182. package/dist/environments/sourceControl/constants.d.ts +0 -1
  183. package/dist/environments/sourceControl/constants.js +1 -2
  184. package/dist/environments/sourceControl/constants.js.map +1 -1
  185. package/dist/environments/sourceControl/sourceControl.controller.ee.d.ts +5 -3
  186. package/dist/environments/sourceControl/sourceControl.controller.ee.js +7 -7
  187. package/dist/environments/sourceControl/sourceControl.controller.ee.js.map +1 -1
  188. package/dist/environments/sourceControl/sourceControlExport.service.ee.js +3 -22
  189. package/dist/environments/sourceControl/sourceControlExport.service.ee.js.map +1 -1
  190. package/dist/environments/variables/{enviromentHelpers.js → environmentHelpers.js} +1 -1
  191. package/dist/environments/variables/environmentHelpers.js.map +1 -0
  192. package/dist/environments/variables/variables.controller.ee.d.ts +1 -1
  193. package/dist/environments/variables/variables.controller.ee.js +0 -2
  194. package/dist/environments/variables/variables.controller.ee.js.map +1 -1
  195. package/dist/environments/variables/variables.service.ee.js +2 -2
  196. package/dist/environments/variables/variables.service.ee.js.map +1 -1
  197. package/dist/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.d.ts +3 -4
  198. package/dist/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.js.map +1 -1
  199. package/dist/eventbus/eventBus.controller.ee.d.ts +1 -2
  200. package/dist/eventbus/eventBus.controller.ee.js.map +1 -1
  201. package/dist/license/license.controller.js +0 -2
  202. package/dist/license/license.controller.js.map +1 -1
  203. package/dist/push/abstract.push.d.ts +1 -0
  204. package/dist/push/abstract.push.js +5 -0
  205. package/dist/push/abstract.push.js.map +1 -1
  206. package/dist/push/index.d.ts +1 -0
  207. package/dist/push/index.js +10 -0
  208. package/dist/push/index.js.map +1 -1
  209. package/dist/requests.d.ts +5 -7
  210. package/dist/requests.js +8 -1
  211. package/dist/requests.js.map +1 -1
  212. package/dist/security-audit/risk-reporters/CredentialsRiskReporter.js +2 -18
  213. package/dist/security-audit/risk-reporters/CredentialsRiskReporter.js.map +1 -1
  214. package/dist/services/activeWorkflows.service.d.ts +15 -0
  215. package/dist/services/activeWorkflows.service.js +61 -0
  216. package/dist/services/activeWorkflows.service.js.map +1 -0
  217. package/dist/services/frontend.service.d.ts +6 -2
  218. package/dist/services/frontend.service.js +17 -12
  219. package/dist/services/frontend.service.js.map +1 -1
  220. package/dist/services/import.service.d.ts +0 -1
  221. package/dist/services/import.service.js +1 -26
  222. package/dist/services/import.service.js.map +1 -1
  223. package/dist/services/naming.service.js +1 -5
  224. package/dist/services/naming.service.js.map +1 -1
  225. package/dist/services/pruning.service.d.ts +2 -0
  226. package/dist/services/pruning.service.js +23 -52
  227. package/dist/services/pruning.service.js.map +1 -1
  228. package/dist/services/role.service.d.ts +1 -0
  229. package/dist/services/role.service.js +4 -0
  230. package/dist/services/role.service.js.map +1 -1
  231. package/dist/services/tag.service.d.ts +0 -5
  232. package/dist/services/tag.service.js +0 -9
  233. package/dist/services/tag.service.js.map +1 -1
  234. package/dist/services/url.service.d.ts +7 -0
  235. package/dist/services/url.service.js +50 -0
  236. package/dist/services/url.service.js.map +1 -0
  237. package/dist/services/user.service.d.ts +4 -10
  238. package/dist/services/user.service.js +15 -61
  239. package/dist/services/user.service.js.map +1 -1
  240. package/dist/services/webhook.service.d.ts +1 -2
  241. package/dist/services/webhook.service.js.map +1 -1
  242. package/dist/shutdown/Shutdown.service.d.ts +25 -0
  243. package/dist/shutdown/Shutdown.service.js +77 -0
  244. package/dist/shutdown/Shutdown.service.js.map +1 -0
  245. package/dist/sso/saml/routes/saml.controller.ee.d.ts +6 -2
  246. package/dist/sso/saml/routes/saml.controller.ee.js +12 -10
  247. package/dist/sso/saml/routes/saml.controller.ee.js.map +1 -1
  248. package/dist/sso/saml/saml.service.ee.d.ts +3 -1
  249. package/dist/sso/saml/saml.service.ee.js +8 -6
  250. package/dist/sso/saml/saml.service.ee.js.map +1 -1
  251. package/dist/sso/saml/serviceProvider.ee.js +5 -4
  252. package/dist/sso/saml/serviceProvider.ee.js.map +1 -1
  253. package/dist/utils.d.ts +1 -0
  254. package/dist/utils.js +5 -1
  255. package/dist/utils.js.map +1 -1
  256. package/dist/workflows/workflow.service.d.ts +0 -9
  257. package/dist/workflows/workflow.service.ee.d.ts +10 -13
  258. package/dist/workflows/workflow.service.ee.js +16 -45
  259. package/dist/workflows/workflow.service.ee.js.map +1 -1
  260. package/dist/workflows/workflow.service.js +6 -83
  261. package/dist/workflows/workflow.service.js.map +1 -1
  262. package/dist/workflows/workflowHistory/workflowHistory.controller.ee.js +0 -2
  263. package/dist/workflows/workflowHistory/workflowHistory.controller.ee.js.map +1 -1
  264. package/dist/workflows/workflowHistory/workflowHistoryManager.ee.js +1 -4
  265. package/dist/workflows/workflowHistory/workflowHistoryManager.ee.js.map +1 -1
  266. package/dist/workflows/workflows.controller.js +92 -25
  267. package/dist/workflows/workflows.controller.js.map +1 -1
  268. package/oclif.manifest.json +1 -1
  269. package/package.json +8 -9
  270. package/dist/WorkflowCredentials.d.ts +0 -2
  271. package/dist/WorkflowCredentials.js +0 -46
  272. package/dist/WorkflowCredentials.js.map +0 -1
  273. package/dist/environments/variables/enviromentHelpers.js.map +0 -1
  274. package/dist/workflows/workflows.controller.ee.d.ts +0 -1
  275. package/dist/workflows/workflows.controller.ee.js +0 -209
  276. package/dist/workflows/workflows.controller.ee.js.map +0 -1
  277. /package/dist/environments/variables/{enviromentHelpers.d.ts → environmentHelpers.d.ts} +0 -0
@@ -3,15 +3,14 @@
3
3
  /// <reference types="n8n-workflow" />
4
4
  import type { Server } from 'http';
5
5
  import express from 'express';
6
- import { ActiveWorkflowRunner } from './ActiveWorkflowRunner';
7
- import type { N8nInstanceType, IExternalHooksClass } from './Interfaces';
6
+ import { N8nInstanceType } from './Interfaces';
7
+ import { ExternalHooks } from './ExternalHooks';
8
8
  import { Logger } from './Logger';
9
9
  export declare abstract class AbstractServer {
10
10
  protected logger: Logger;
11
11
  protected server: Server;
12
12
  readonly app: express.Application;
13
- protected externalHooks: IExternalHooksClass;
14
- protected activeWorkflowRunner: ActiveWorkflowRunner;
13
+ protected externalHooks: ExternalHooks;
15
14
  protected protocol: string;
16
15
  protected sslKey: string;
17
16
  protected sslCert: string;
@@ -34,4 +33,5 @@ export declare abstract class AbstractServer {
34
33
  private setupHealthCheck;
35
34
  init(): Promise<void>;
36
35
  start(): Promise<void>;
36
+ onShutdown(): Promise<void>;
37
37
  }
@@ -15,6 +15,12 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
18
24
  var __importStar = (this && this.__importStar) || function (mod) {
19
25
  if (mod && mod.__esModule) return mod;
20
26
  var result = {};
@@ -22,6 +28,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
28
  __setModuleDefault(result, mod);
23
29
  return result;
24
30
  };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
25
34
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
36
  };
@@ -34,7 +43,6 @@ const compression_1 = __importDefault(require("compression"));
34
43
  const isbot_1 = __importDefault(require("isbot"));
35
44
  const config_1 = __importDefault(require("./config"));
36
45
  const constants_1 = require("./constants");
37
- const ActiveWorkflowRunner_1 = require("./ActiveWorkflowRunner");
38
46
  const Db = __importStar(require("./Db"));
39
47
  const ExternalHooks_1 = require("./ExternalHooks");
40
48
  const ResponseHelper_1 = require("./ResponseHelper");
@@ -46,7 +54,9 @@ const WebhookHelpers_1 = require("./WebhookHelpers");
46
54
  const generators_1 = require("./databases/utils/generators");
47
55
  const Logger_1 = require("./Logger");
48
56
  const service_unavailable_error_1 = require("./errors/response-errors/service-unavailable.error");
49
- class AbstractServer {
57
+ const OnShutdown_1 = require("./decorators/OnShutdown");
58
+ const ActiveWebhooks_1 = require("./ActiveWebhooks");
59
+ let AbstractServer = class AbstractServer {
50
60
  constructor(instanceType = 'main') {
51
61
  this.webhooksEnabled = true;
52
62
  this.testWebhooksEnabled = false;
@@ -123,7 +133,6 @@ class AbstractServer {
123
133
  });
124
134
  await new Promise((resolve) => this.server.listen(PORT, ADDRESS, () => resolve()));
125
135
  this.externalHooks = typedi_1.Container.get(ExternalHooks_1.ExternalHooks);
126
- this.activeWorkflowRunner = typedi_1.Container.get(ActiveWorkflowRunner_1.ActiveWorkflowRunner);
127
136
  await this.setupHealthCheck();
128
137
  console.log(`n8n ready on ${ADDRESS}, port ${PORT}`);
129
138
  }
@@ -134,9 +143,9 @@ class AbstractServer {
134
143
  }
135
144
  this.setupCommonMiddlewares();
136
145
  if (this.webhooksEnabled) {
137
- const activeWorkflowRunner = typedi_1.Container.get(ActiveWorkflowRunner_1.ActiveWorkflowRunner);
138
- this.app.all(`/${this.endpointForm}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(activeWorkflowRunner));
139
- this.app.all(`/${this.endpointWebhook}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(activeWorkflowRunner));
146
+ const activeWebhooks = typedi_1.Container.get(ActiveWebhooks_1.ActiveWebhooks);
147
+ this.app.all(`/${this.endpointForm}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(activeWebhooks));
148
+ this.app.all(`/${this.endpointWebhook}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(activeWebhooks));
140
149
  this.app.all(`/${this.endpointFormWaiting}/:path/:suffix?`, (0, WebhookHelpers_1.webhookRequestHandler)(typedi_1.Container.get(WaitingForms_1.WaitingForms)));
141
150
  this.app.all(`/${this.endpointWebhookWaiting}/:path/:suffix?`, (0, WebhookHelpers_1.webhookRequestHandler)(typedi_1.Container.get(WaitingWebhooks_1.WaitingWebhooks)));
142
151
  }
@@ -144,7 +153,7 @@ class AbstractServer {
144
153
  const testWebhooks = typedi_1.Container.get(TestWebhooks_1.TestWebhooks);
145
154
  this.app.all(`/${this.endpointFormTest}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(testWebhooks));
146
155
  this.app.all(`/${this.endpointWebhookTest}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(testWebhooks));
147
- this.app.delete(`/${this.restEndpoint}/test-webhook/:id`, (0, ResponseHelper_1.send)(async (req) => testWebhooks.cancelTestWebhook(req.params.id)));
156
+ this.app.delete(`/${this.restEndpoint}/test-webhook/:id`, (0, ResponseHelper_1.send)(async (req) => testWebhooks.cancelWebhook(req.params.id)));
148
157
  }
149
158
  const checkIfBot = isbot_1.default.spawn(['bot']);
150
159
  this.app.use((req, res, next) => {
@@ -170,6 +179,28 @@ class AbstractServer {
170
179
  await this.externalHooks.run('n8n.ready', [this, config_1.default]);
171
180
  }
172
181
  }
173
- }
182
+ async onShutdown() {
183
+ if (!this.server) {
184
+ return;
185
+ }
186
+ this.logger.debug(`Shutting down ${this.protocol} server`);
187
+ this.server.close((error) => {
188
+ if (error) {
189
+ this.logger.error(`Error while shutting down ${this.protocol} server`, { error });
190
+ }
191
+ this.logger.debug(`${this.protocol} server shut down`);
192
+ });
193
+ }
194
+ };
174
195
  exports.AbstractServer = AbstractServer;
196
+ __decorate([
197
+ (0, OnShutdown_1.OnShutdown)(),
198
+ __metadata("design:type", Function),
199
+ __metadata("design:paramtypes", []),
200
+ __metadata("design:returntype", Promise)
201
+ ], AbstractServer.prototype, "onShutdown", null);
202
+ exports.AbstractServer = AbstractServer = __decorate([
203
+ (0, typedi_1.Service)(),
204
+ __metadata("design:paramtypes", [String])
205
+ ], AbstractServer);
175
206
  //# sourceMappingURL=AbstractServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractServer.js","sourceRoot":"","sources":["../src/AbstractServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractServer.js","sourceRoot":"","sources":["../src/AbstractServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Response } from 'express';
2
+ import type { IHttpRequestMethods } from 'n8n-workflow';
3
+ import { WorkflowRepository } from './databases/repositories/workflow.repository';
4
+ import type { IResponseCallbackData, IWebhookManager, WebhookAccessControlOptions, WebhookRequest } from './Interfaces';
5
+ import { Logger } from './Logger';
6
+ import { NodeTypes } from './NodeTypes';
7
+ import { WebhookService } from './services/webhook.service';
8
+ import { WorkflowStaticDataService } from './workflows/workflowStaticData.service';
9
+ export declare class ActiveWebhooks implements IWebhookManager {
10
+ private readonly logger;
11
+ private readonly nodeTypes;
12
+ private readonly webhookService;
13
+ private readonly workflowRepository;
14
+ private readonly workflowStaticDataService;
15
+ constructor(logger: Logger, nodeTypes: NodeTypes, webhookService: WebhookService, workflowRepository: WorkflowRepository, workflowStaticDataService: WorkflowStaticDataService);
16
+ getWebhookMethods(path: string): Promise<IHttpRequestMethods[]>;
17
+ findAccessControlOptions(path: string, httpMethod: IHttpRequestMethods): Promise<WebhookAccessControlOptions>;
18
+ executeWebhook(request: WebhookRequest, response: Response): Promise<IResponseCallbackData>;
19
+ private findWebhook;
20
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.ActiveWebhooks = void 0;
36
+ const typedi_1 = require("typedi");
37
+ const n8n_workflow_1 = require("n8n-workflow");
38
+ const workflow_repository_1 = require("./databases/repositories/workflow.repository");
39
+ const Logger_1 = require("./Logger");
40
+ const NodeTypes_1 = require("./NodeTypes");
41
+ const webhook_service_1 = require("./services/webhook.service");
42
+ const webhook_not_found_error_1 = require("./errors/response-errors/webhook-not-found.error");
43
+ const not_found_error_1 = require("./errors/response-errors/not-found.error");
44
+ const WorkflowExecuteAdditionalData = __importStar(require("./WorkflowExecuteAdditionalData"));
45
+ const WebhookHelpers = __importStar(require("./WebhookHelpers"));
46
+ const workflowStaticData_service_1 = require("./workflows/workflowStaticData.service");
47
+ let ActiveWebhooks = class ActiveWebhooks {
48
+ constructor(logger, nodeTypes, webhookService, workflowRepository, workflowStaticDataService) {
49
+ this.logger = logger;
50
+ this.nodeTypes = nodeTypes;
51
+ this.webhookService = webhookService;
52
+ this.workflowRepository = workflowRepository;
53
+ this.workflowStaticDataService = workflowStaticDataService;
54
+ }
55
+ async getWebhookMethods(path) {
56
+ return this.webhookService.getWebhookMethods(path);
57
+ }
58
+ async findAccessControlOptions(path, httpMethod) {
59
+ var _a;
60
+ const webhook = await this.findWebhook(path, httpMethod);
61
+ const workflowData = await this.workflowRepository.findOne({
62
+ where: { id: webhook.workflowId },
63
+ select: ['nodes'],
64
+ });
65
+ const nodes = workflowData === null || workflowData === void 0 ? void 0 : workflowData.nodes;
66
+ const webhookNode = nodes === null || nodes === void 0 ? void 0 : nodes.find(({ type, parameters, typeVersion }) => {
67
+ var _a;
68
+ return (parameters === null || parameters === void 0 ? void 0 : parameters.path) === path &&
69
+ ((_a = parameters === null || parameters === void 0 ? void 0 : parameters.httpMethod) !== null && _a !== void 0 ? _a : 'GET') === httpMethod &&
70
+ 'webhook' in this.nodeTypes.getByNameAndVersion(type, typeVersion);
71
+ });
72
+ return (_a = webhookNode === null || webhookNode === void 0 ? void 0 : webhookNode.parameters) === null || _a === void 0 ? void 0 : _a.options;
73
+ }
74
+ async executeWebhook(request, response) {
75
+ const httpMethod = request.method;
76
+ const path = request.params.path;
77
+ this.logger.debug(`Received webhook "${httpMethod}" for path "${path}"`);
78
+ request.params = {};
79
+ const webhook = await this.findWebhook(path, httpMethod);
80
+ if (webhook.isDynamic) {
81
+ const pathElements = path.split('/').slice(1);
82
+ webhook.webhookPath.split('/').forEach((ele, index) => {
83
+ if (ele.startsWith(':')) {
84
+ request.params[ele.slice(1)] = pathElements[index];
85
+ }
86
+ });
87
+ }
88
+ const workflowData = await this.workflowRepository.findOne({
89
+ where: { id: webhook.workflowId },
90
+ relations: ['shared', 'shared.user', 'shared.user.globalRole'],
91
+ });
92
+ if (workflowData === null) {
93
+ throw new not_found_error_1.NotFoundError(`Could not find workflow with id "${webhook.workflowId}"`);
94
+ }
95
+ const workflow = new n8n_workflow_1.Workflow({
96
+ id: webhook.workflowId,
97
+ name: workflowData.name,
98
+ nodes: workflowData.nodes,
99
+ connections: workflowData.connections,
100
+ active: workflowData.active,
101
+ nodeTypes: this.nodeTypes,
102
+ staticData: workflowData.staticData,
103
+ settings: workflowData.settings,
104
+ });
105
+ const additionalData = await WorkflowExecuteAdditionalData.getBase(workflowData.shared[0].user.id);
106
+ const webhookData = n8n_workflow_1.NodeHelpers.getNodeWebhooks(workflow, workflow.getNode(webhook.node), additionalData).find((w) => w.httpMethod === httpMethod && w.path === webhook.webhookPath);
107
+ const workflowStartNode = workflow.getNode(webhookData.node);
108
+ if (workflowStartNode === null) {
109
+ throw new not_found_error_1.NotFoundError('Could not find node to process webhook.');
110
+ }
111
+ return new Promise((resolve, reject) => {
112
+ const executionMode = 'webhook';
113
+ void WebhookHelpers.executeWebhook(workflow, webhookData, workflowData, workflowStartNode, executionMode, undefined, undefined, undefined, request, response, async (error, data) => {
114
+ if (error !== null) {
115
+ return reject(error);
116
+ }
117
+ await this.workflowStaticDataService.saveStaticData(workflow);
118
+ resolve(data);
119
+ });
120
+ });
121
+ }
122
+ async findWebhook(path, httpMethod) {
123
+ if (path.endsWith('/')) {
124
+ path = path.slice(0, -1);
125
+ }
126
+ const webhook = await this.webhookService.findWebhook(httpMethod, path);
127
+ if (webhook === null) {
128
+ throw new webhook_not_found_error_1.WebhookNotFoundError({ path, httpMethod }, { hint: 'production' });
129
+ }
130
+ return webhook;
131
+ }
132
+ };
133
+ exports.ActiveWebhooks = ActiveWebhooks;
134
+ exports.ActiveWebhooks = ActiveWebhooks = __decorate([
135
+ (0, typedi_1.Service)(),
136
+ __metadata("design:paramtypes", [Logger_1.Logger,
137
+ NodeTypes_1.NodeTypes,
138
+ webhook_service_1.WebhookService,
139
+ workflow_repository_1.WorkflowRepository,
140
+ workflowStaticData_service_1.WorkflowStaticDataService])
141
+ ], ActiveWebhooks);
142
+ //# sourceMappingURL=ActiveWebhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActiveWebhooks.js","sourceRoot":"","sources":["../src/ActiveWebhooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,+CAAqD;AAGrD,8EAA0E;AAO1E,qCAAkC;AAClC,2CAAwC;AACxC,gEAA4D;AAC5D,8FAAwF;AACxF,8EAAyE;AACzE,+FAAiF;AACjF,iEAAmD;AACnD,uFAAmF;AAG5E,IAAM,cAAc,GAApB,MAAM,cAAc;IAC1B,YACkB,MAAc,EACd,SAAoB,EACpB,cAA8B,EAC9B,kBAAsC,EACtC,yBAAoD;QAJpD,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,8BAAyB,GAAzB,yBAAyB,CAA2B;IACnE,CAAC;IAEJ,KAAK,CAAC,iBAAiB,CAAC,IAAY;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAY,EAAE,UAA+B;;QAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC1D,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE;YACjC,MAAM,EAAE,CAAC,OAAO,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAC;QAClC,MAAM,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAC9B,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE;;YACrC,OAAA,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,MAAK,IAAI;gBACzB,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,mCAAI,KAAK,CAAC,KAAK,UAAU;gBAChD,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;SAAA,CACnE,CAAC;QACF,OAAO,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,0CAAE,OAAsC,CAAC;IACxE,CAAC;IAKD,KAAK,CAAC,cAAc,CACnB,OAAuB,EACvB,QAAkB;QAElB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,UAAU,eAAe,IAAI,GAAG,CAAC,CAAC;QAGzE,OAAO,CAAC,MAAM,GAAG,EAA8B,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAI9C,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACrD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAGzB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC1D,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE;YACjC,SAAS,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,wBAAwB,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,+BAAa,CAAC,oCAAoC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,uBAAQ,CAAC;YAC7B,EAAE,EAAE,OAAO,CAAC,UAAU;YACtB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;SAC/B,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,6BAA6B,CAAC,OAAO,CACjE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAC9B,CAAC;QAEF,MAAM,WAAW,GAAG,0BAAW,CAAC,eAAe,CAC9C,QAAQ,EACR,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAU,EACvC,cAAc,CACd,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,CAAiB,CAAC;QAI7F,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,+BAAa,CAAC,yCAAyC,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,aAAa,GAAG,SAAS,CAAC;YAChC,KAAK,cAAc,CAAC,cAAc,CACjC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EAAE,KAAmB,EAAE,IAAY,EAAE,EAAE;gBAC3C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;gBAED,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,UAA+B;QAEtE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,8CAAoB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;CACD,CAAA;AA1IY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,gBAAO,GAAE;qCAGiB,eAAM;QACH,qBAAS;QACJ,gCAAc;QACV,wCAAkB;QACX,sDAAyB;GAN1D,cAAc,CA0I1B"}
@@ -1,9 +1,7 @@
1
1
  import { ActiveWorkflows } from 'n8n-core';
2
- import type { ExecutionError, IDeferredPromise, IExecuteResponsePromiseData, IGetExecutePollFunctions, IGetExecuteTriggerFunctions, INode, INodeExecutionData, IWorkflowBase, IWorkflowExecuteAdditionalData as IWorkflowExecuteAdditionalDataWorkflow, WorkflowActivateMode, WorkflowExecuteMode, IHttpRequestMethods } from 'n8n-workflow';
2
+ import type { ExecutionError, IDeferredPromise, IExecuteResponsePromiseData, IGetExecutePollFunctions, IGetExecuteTriggerFunctions, INode, INodeExecutionData, IWorkflowBase, IWorkflowExecuteAdditionalData as IWorkflowExecuteAdditionalDataWorkflow, WorkflowActivateMode, WorkflowExecuteMode } from 'n8n-workflow';
3
3
  import { Workflow } from 'n8n-workflow';
4
- import type express from 'express';
5
- import type { IResponseCallbackData, IWebhookManager, IWorkflowDb, WebhookAccessControlOptions, WebhookRequest } from './Interfaces';
6
- import type { User } from './databases/entities/User';
4
+ import type { IWorkflowDb } from './Interfaces';
7
5
  import type { WorkflowEntity } from './databases/entities/WorkflowEntity';
8
6
  import { ActiveExecutions } from './ActiveExecutions';
9
7
  import { ExecutionsService } from './executions/executions.service';
@@ -11,43 +9,33 @@ import { NodeTypes } from './NodeTypes';
11
9
  import { ExternalHooks } from './ExternalHooks';
12
10
  import { WebhookService } from './services/webhook.service';
13
11
  import { Logger } from './Logger';
14
- import { SharedWorkflowRepository } from './databases/repositories/sharedWorkflow.repository';
15
12
  import { WorkflowRepository } from './databases/repositories/workflow.repository';
16
13
  import { MultiMainSetup } from './services/orchestration/main/MultiMainSetup.ee';
17
14
  import { ActivationErrorsService } from './ActivationErrors.service';
18
- import type { Scope } from '@n8n/permissions';
15
+ import { ActiveWorkflowsService } from './services/activeWorkflows.service';
19
16
  import { WorkflowStaticDataService } from './workflows/workflowStaticData.service';
20
- export declare class ActiveWorkflowRunner implements IWebhookManager {
17
+ export declare class ActiveWorkflowRunner {
21
18
  private readonly logger;
19
+ private readonly activeWorkflows;
22
20
  private readonly activeExecutions;
23
21
  private readonly externalHooks;
24
22
  private readonly nodeTypes;
25
23
  private readonly webhookService;
26
24
  private readonly workflowRepository;
27
- private readonly sharedWorkflowRepository;
28
25
  private readonly multiMainSetup;
29
26
  private readonly activationErrorsService;
30
27
  private readonly executionService;
31
28
  private readonly workflowStaticDataService;
32
- activeWorkflows: ActiveWorkflows;
29
+ private readonly activeWorkflowsService;
33
30
  private queuedActivations;
34
- constructor(logger: Logger, activeExecutions: ActiveExecutions, externalHooks: ExternalHooks, nodeTypes: NodeTypes, webhookService: WebhookService, workflowRepository: WorkflowRepository, sharedWorkflowRepository: SharedWorkflowRepository, multiMainSetup: MultiMainSetup, activationErrorsService: ActivationErrorsService, executionService: ExecutionsService, workflowStaticDataService: WorkflowStaticDataService);
31
+ constructor(logger: Logger, activeWorkflows: ActiveWorkflows, activeExecutions: ActiveExecutions, externalHooks: ExternalHooks, nodeTypes: NodeTypes, webhookService: WebhookService, workflowRepository: WorkflowRepository, multiMainSetup: MultiMainSetup, activationErrorsService: ActivationErrorsService, executionService: ExecutionsService, workflowStaticDataService: WorkflowStaticDataService, activeWorkflowsService: ActiveWorkflowsService);
35
32
  init(): Promise<void>;
36
33
  getAllWorkflowActivationErrors(): Promise<{
37
34
  [workflowId: string]: string;
38
35
  }>;
39
36
  removeAll(): Promise<void>;
40
- executeWebhook(request: WebhookRequest, response: express.Response): Promise<IResponseCallbackData>;
41
- getWebhookMethods(path: string): Promise<IHttpRequestMethods[]>;
42
- findAccessControlOptions(path: string, httpMethod: IHttpRequestMethods): Promise<WebhookAccessControlOptions>;
43
- private findWebhook;
44
37
  allActiveInMemory(): string[];
45
- allActiveInStorage(options?: {
46
- user: User;
47
- scope: Scope | Scope[];
48
- }): Promise<string[]>;
49
38
  isActive(workflowId: string): Promise<boolean>;
50
- getActivationError(workflowId: string): Promise<string | null>;
51
39
  addWebhooks(workflow: Workflow, additionalData: IWorkflowExecuteAdditionalDataWorkflow, mode: WorkflowExecuteMode, activation: WorkflowActivateMode): Promise<void>;
52
40
  clearWebhooks(workflowId: string): Promise<void>;
53
41
  runWorkflow(workflowData: IWorkflowDb, node: INode, data: INodeExecutionData[][], additionalData: IWorkflowExecuteAdditionalDataWorkflow, mode: WorkflowExecuteMode, responsePromise?: IDeferredPromise<IExecuteResponsePromiseData>): Promise<string>;
@@ -44,31 +44,28 @@ const constants_1 = require("./constants");
44
44
  const NodeTypes_1 = require("./NodeTypes");
45
45
  const WorkflowRunner_1 = require("./WorkflowRunner");
46
46
  const ExternalHooks_1 = require("./ExternalHooks");
47
- const UserManagementHelper_1 = require("./UserManagement/UserManagementHelper");
48
- const webhook_not_found_error_1 = require("./errors/response-errors/webhook-not-found.error");
49
- const typeorm_1 = require("typeorm");
50
47
  const webhook_service_1 = require("./services/webhook.service");
51
48
  const Logger_1 = require("./Logger");
52
- const sharedWorkflow_repository_1 = require("./databases/repositories/sharedWorkflow.repository");
53
49
  const workflow_repository_1 = require("./databases/repositories/workflow.repository");
54
50
  const MultiMainSetup_ee_1 = require("./services/orchestration/main/MultiMainSetup.ee");
55
51
  const ActivationErrors_service_1 = require("./ActivationErrors.service");
56
- const not_found_error_1 = require("./errors/response-errors/not-found.error");
52
+ const activeWorkflows_service_1 = require("./services/activeWorkflows.service");
57
53
  const workflowStaticData_service_1 = require("./workflows/workflowStaticData.service");
54
+ const OnShutdown_1 = require("./decorators/OnShutdown");
58
55
  let ActiveWorkflowRunner = class ActiveWorkflowRunner {
59
- constructor(logger, activeExecutions, externalHooks, nodeTypes, webhookService, workflowRepository, sharedWorkflowRepository, multiMainSetup, activationErrorsService, executionService, workflowStaticDataService) {
56
+ constructor(logger, activeWorkflows, activeExecutions, externalHooks, nodeTypes, webhookService, workflowRepository, multiMainSetup, activationErrorsService, executionService, workflowStaticDataService, activeWorkflowsService) {
60
57
  this.logger = logger;
58
+ this.activeWorkflows = activeWorkflows;
61
59
  this.activeExecutions = activeExecutions;
62
60
  this.externalHooks = externalHooks;
63
61
  this.nodeTypes = nodeTypes;
64
62
  this.webhookService = webhookService;
65
63
  this.workflowRepository = workflowRepository;
66
- this.sharedWorkflowRepository = sharedWorkflowRepository;
67
64
  this.multiMainSetup = multiMainSetup;
68
65
  this.activationErrorsService = activationErrorsService;
69
66
  this.executionService = executionService;
70
67
  this.workflowStaticDataService = workflowStaticDataService;
71
- this.activeWorkflows = new n8n_core_1.ActiveWorkflows();
68
+ this.activeWorkflowsService = activeWorkflowsService;
72
69
  this.queuedActivations = {};
73
70
  }
74
71
  async init() {
@@ -84,7 +81,7 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
84
81
  let activeWorkflowIds = [];
85
82
  this.logger.verbose('Call to remove all active workflows received (removeAll)');
86
83
  activeWorkflowIds.push(...this.activeWorkflows.allActiveWorkflows());
87
- const activeWorkflows = await this.allActiveInStorage();
84
+ const activeWorkflows = await this.activeWorkflowsService.getAllActiveIdsInStorage();
88
85
  activeWorkflowIds = [...activeWorkflowIds, ...activeWorkflows];
89
86
  activeWorkflowIds = Array.from(new Set(activeWorkflowIds));
90
87
  const removePromises = [];
@@ -93,117 +90,9 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
93
90
  }
94
91
  await Promise.all(removePromises);
95
92
  }
96
- async executeWebhook(request, response) {
97
- const httpMethod = request.method;
98
- const path = request.params.path;
99
- this.logger.debug(`Received webhook "${httpMethod}" for path "${path}"`);
100
- request.params = {};
101
- const webhook = await this.findWebhook(path, httpMethod);
102
- if (webhook.isDynamic) {
103
- const pathElements = path.split('/').slice(1);
104
- webhook.webhookPath.split('/').forEach((ele, index) => {
105
- if (ele.startsWith(':')) {
106
- request.params[ele.slice(1)] = pathElements[index];
107
- }
108
- });
109
- }
110
- const workflowData = await this.workflowRepository.findOne({
111
- where: { id: webhook.workflowId },
112
- relations: ['shared', 'shared.user', 'shared.user.globalRole'],
113
- });
114
- if (workflowData === null) {
115
- throw new not_found_error_1.NotFoundError(`Could not find workflow with id "${webhook.workflowId}"`);
116
- }
117
- const workflow = new n8n_workflow_1.Workflow({
118
- id: webhook.workflowId,
119
- name: workflowData.name,
120
- nodes: workflowData.nodes,
121
- connections: workflowData.connections,
122
- active: workflowData.active,
123
- nodeTypes: this.nodeTypes,
124
- staticData: workflowData.staticData,
125
- settings: workflowData.settings,
126
- });
127
- const additionalData = await WorkflowExecuteAdditionalData.getBase(workflowData.shared[0].user.id);
128
- const webhookData = n8n_workflow_1.NodeHelpers.getNodeWebhooks(workflow, workflow.getNode(webhook.node), additionalData).find((w) => w.httpMethod === httpMethod && w.path === webhook.webhookPath);
129
- const workflowStartNode = workflow.getNode(webhookData.node);
130
- if (workflowStartNode === null) {
131
- throw new not_found_error_1.NotFoundError('Could not find node to process webhook.');
132
- }
133
- return new Promise((resolve, reject) => {
134
- const executionMode = 'webhook';
135
- void WebhookHelpers.executeWebhook(workflow, webhookData, workflowData, workflowStartNode, executionMode, undefined, undefined, undefined, request, response, async (error, data) => {
136
- if (error !== null) {
137
- return reject(error);
138
- }
139
- await this.workflowStaticDataService.saveStaticData(workflow);
140
- resolve(data);
141
- });
142
- });
143
- }
144
- async getWebhookMethods(path) {
145
- return this.webhookService.getWebhookMethods(path);
146
- }
147
- async findAccessControlOptions(path, httpMethod) {
148
- var _a;
149
- const webhook = await this.findWebhook(path, httpMethod);
150
- const workflowData = await this.workflowRepository.findOne({
151
- where: { id: webhook.workflowId },
152
- select: ['nodes'],
153
- });
154
- const nodes = workflowData === null || workflowData === void 0 ? void 0 : workflowData.nodes;
155
- const webhookNode = nodes === null || nodes === void 0 ? void 0 : nodes.find(({ type, parameters, typeVersion }) => {
156
- var _a;
157
- return (parameters === null || parameters === void 0 ? void 0 : parameters.path) === path &&
158
- ((_a = parameters === null || parameters === void 0 ? void 0 : parameters.httpMethod) !== null && _a !== void 0 ? _a : 'GET') === httpMethod &&
159
- 'webhook' in this.nodeTypes.getByNameAndVersion(type, typeVersion);
160
- });
161
- return (_a = webhookNode === null || webhookNode === void 0 ? void 0 : webhookNode.parameters) === null || _a === void 0 ? void 0 : _a.options;
162
- }
163
- async findWebhook(path, httpMethod) {
164
- if (path.endsWith('/')) {
165
- path = path.slice(0, -1);
166
- }
167
- const webhook = await this.webhookService.findWebhook(httpMethod, path);
168
- if (webhook === null) {
169
- throw new webhook_not_found_error_1.WebhookNotFoundError({ path, httpMethod }, { hint: 'production' });
170
- }
171
- return webhook;
172
- }
173
93
  allActiveInMemory() {
174
94
  return this.activeWorkflows.allActiveWorkflows();
175
95
  }
176
- async allActiveInStorage(options) {
177
- const isFullAccess = !(options === null || options === void 0 ? void 0 : options.user) || options.user.hasGlobalScope(options.scope);
178
- const activationErrors = await this.activationErrorsService.getAll();
179
- if (isFullAccess) {
180
- const activeWorkflows = await this.workflowRepository.find({
181
- select: ['id'],
182
- where: { active: true },
183
- });
184
- return activeWorkflows
185
- .map((workflow) => workflow.id)
186
- .filter((workflowId) => !activationErrors[workflowId]);
187
- }
188
- const where = (0, UserManagementHelper_1.whereClause)({
189
- user: options.user,
190
- globalScope: 'workflow:list',
191
- entityType: 'workflow',
192
- });
193
- const activeWorkflows = await this.workflowRepository.find({
194
- select: ['id'],
195
- where: { active: true },
196
- });
197
- const activeIds = activeWorkflows.map((workflow) => workflow.id);
198
- Object.assign(where, { workflowId: (0, typeorm_1.In)(activeIds) });
199
- const sharings = await this.sharedWorkflowRepository.find({
200
- select: ['workflowId'],
201
- where,
202
- });
203
- return sharings
204
- .map((sharing) => sharing.workflowId)
205
- .filter((workflowId) => !activationErrors[workflowId]);
206
- }
207
96
  async isActive(workflowId) {
208
97
  const workflow = await this.workflowRepository.findOne({
209
98
  select: ['active'],
@@ -211,12 +100,12 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
211
100
  });
212
101
  return !!(workflow === null || workflow === void 0 ? void 0 : workflow.active);
213
102
  }
214
- async getActivationError(workflowId) {
215
- return this.activationErrorsService.get(workflowId);
216
- }
217
103
  async addWebhooks(workflow, additionalData, mode, activation) {
218
104
  const webhooks = WebhookHelpers.getWorkflowWebhooks(workflow, additionalData, undefined, true);
219
105
  let path = '';
106
+ if (webhooks.length === 0)
107
+ return;
108
+ this.logger.debug(`Adding webhooks for workflow "${workflow.name}" (ID ${workflow.id})`);
220
109
  for (const webhookData of webhooks) {
221
110
  const node = workflow.getNode(webhookData.node);
222
111
  node.name = webhookData.node;
@@ -452,13 +341,15 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
452
341
  let workflow;
453
342
  let shouldAddWebhooks = true;
454
343
  let shouldAddTriggersAndPollers = true;
455
- if (this.multiMainSetup.isEnabled && activationMode !== 'leadershipChange') {
456
- shouldAddWebhooks = this.multiMainSetup.isLeader;
457
- shouldAddTriggersAndPollers = this.multiMainSetup.isLeader;
458
- }
459
- if (this.multiMainSetup.isEnabled && activationMode === 'leadershipChange') {
460
- shouldAddWebhooks = false;
461
- shouldAddTriggersAndPollers = true;
344
+ if (this.multiMainSetup.isEnabled) {
345
+ if (activationMode !== 'leadershipChange') {
346
+ shouldAddWebhooks = this.multiMainSetup.isLeader;
347
+ shouldAddTriggersAndPollers = this.multiMainSetup.isLeader;
348
+ }
349
+ else {
350
+ shouldAddWebhooks = false;
351
+ shouldAddTriggersAndPollers = this.multiMainSetup.isLeader;
352
+ }
462
353
  }
463
354
  try {
464
355
  const dbWorkflow = existingWorkflow !== null && existingWorkflow !== void 0 ? existingWorkflow : (await this.workflowRepository.findById(workflowId));
@@ -485,11 +376,9 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
485
376
  }
486
377
  const additionalData = await WorkflowExecuteAdditionalData.getBase(sharing.user.id);
487
378
  if (shouldAddWebhooks) {
488
- this.logger.debug(`Adding webhooks for workflow ${dbWorkflow.display()}`);
489
379
  await this.addWebhooks(workflow, additionalData, 'trigger', activationMode);
490
380
  }
491
381
  if (shouldAddTriggersAndPollers) {
492
- this.logger.debug(`Adding triggers and pollers for workflow ${dbWorkflow.display()}`);
493
382
  await this.addTriggersAndPollers(dbWorkflow, workflow, {
494
383
  activationMode,
495
384
  executionMode: 'trigger',
@@ -586,6 +475,7 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
586
475
  const getTriggerFunctions = this.getExecuteTriggerFunctions(dbWorkflow, additionalData, executionMode, activationMode);
587
476
  const getPollFunctions = this.getExecutePollFunctions(dbWorkflow, additionalData, executionMode, activationMode);
588
477
  if (workflow.getTriggerNodes().length !== 0 || workflow.getPollNodes().length !== 0) {
478
+ this.logger.debug(`Adding triggers and pollers for workflow "${dbWorkflow.display()}"`);
589
479
  await this.activeWorkflows.add(workflow.id, workflow, additionalData, executionMode, activationMode, getTriggerFunctions, getPollFunctions);
590
480
  this.logger.verbose(`Workflow ${dbWorkflow.display()} activated`, {
591
481
  workflowId: dbWorkflow.id,
@@ -598,18 +488,25 @@ let ActiveWorkflowRunner = class ActiveWorkflowRunner {
598
488
  }
599
489
  };
600
490
  exports.ActiveWorkflowRunner = ActiveWorkflowRunner;
491
+ __decorate([
492
+ (0, OnShutdown_1.OnShutdown)(),
493
+ __metadata("design:type", Function),
494
+ __metadata("design:paramtypes", []),
495
+ __metadata("design:returntype", Promise)
496
+ ], ActiveWorkflowRunner.prototype, "removeAllTriggerAndPollerBasedWorkflows", null);
601
497
  exports.ActiveWorkflowRunner = ActiveWorkflowRunner = __decorate([
602
498
  (0, typedi_1.Service)(),
603
499
  __metadata("design:paramtypes", [Logger_1.Logger,
500
+ n8n_core_1.ActiveWorkflows,
604
501
  ActiveExecutions_1.ActiveExecutions,
605
502
  ExternalHooks_1.ExternalHooks,
606
503
  NodeTypes_1.NodeTypes,
607
504
  webhook_service_1.WebhookService,
608
505
  workflow_repository_1.WorkflowRepository,
609
- sharedWorkflow_repository_1.SharedWorkflowRepository,
610
506
  MultiMainSetup_ee_1.MultiMainSetup,
611
507
  ActivationErrors_service_1.ActivationErrorsService,
612
508
  executions_service_1.ExecutionsService,
613
- workflowStaticData_service_1.WorkflowStaticDataService])
509
+ workflowStaticData_service_1.WorkflowStaticDataService,
510
+ activeWorkflows_service_1.ActiveWorkflowsService])
614
511
  ], ActiveWorkflowRunner);
615
512
  //# sourceMappingURL=ActiveWorkflowRunner.js.map