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.
- package/dist/AbstractServer.d.ts +4 -4
- package/dist/AbstractServer.js +39 -8
- package/dist/AbstractServer.js.map +1 -1
- package/dist/ActiveWebhooks.d.ts +20 -0
- package/dist/ActiveWebhooks.js +142 -0
- package/dist/ActiveWebhooks.js.map +1 -0
- package/dist/ActiveWorkflowRunner.d.ts +7 -19
- package/dist/ActiveWorkflowRunner.js +28 -131
- package/dist/ActiveWorkflowRunner.js.map +1 -1
- package/dist/ExternalHooks.d.ts +2 -2
- package/dist/ExternalHooks.js.map +1 -1
- package/dist/ExternalSecrets/ExternalSecrets.controller.ee.js +0 -2
- package/dist/ExternalSecrets/ExternalSecrets.controller.ee.js.map +1 -1
- package/dist/GenericHelpers.d.ts +2 -3
- package/dist/GenericHelpers.js +1 -16
- package/dist/GenericHelpers.js.map +1 -1
- package/dist/Interfaces.d.ts +5 -139
- package/dist/Interfaces.js.map +1 -1
- package/dist/InternalHooks.d.ts +2 -2
- package/dist/InternalHooks.js.map +1 -1
- package/dist/License.d.ts +1 -0
- package/dist/License.js +14 -0
- package/dist/License.js.map +1 -1
- package/dist/LoadNodesAndCredentials.js.map +1 -1
- package/dist/PublicApi/index.js +3 -3
- package/dist/PublicApi/index.js.map +1 -1
- package/dist/PublicApi/v1/handlers/workflows/workflows.handler.js +7 -4
- package/dist/PublicApi/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.d.ts +3 -10
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.js +2 -28
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.js.map +1 -1
- package/dist/ResponseHelper.js +13 -1
- package/dist/ResponseHelper.js.map +1 -1
- package/dist/Server.d.ts +0 -4
- package/dist/Server.js +57 -92
- package/dist/Server.js.map +1 -1
- package/dist/TestWebhooks.d.ts +8 -7
- package/dist/TestWebhooks.js +71 -83
- package/dist/TestWebhooks.js.map +1 -1
- package/dist/UserManagement/PermissionChecker.js +2 -9
- package/dist/UserManagement/PermissionChecker.js.map +1 -1
- package/dist/UserManagement/UserManagementHelper.d.ts +0 -12
- package/dist/UserManagement/UserManagementHelper.js +1 -27
- package/dist/UserManagement/UserManagementHelper.js.map +1 -1
- package/dist/WaitTracker.js +1 -21
- package/dist/WaitTracker.js.map +1 -1
- package/dist/WebhookHelpers.d.ts +0 -1
- package/dist/WebhookHelpers.js +1 -11
- package/dist/WebhookHelpers.js.map +1 -1
- package/dist/WebhookServer.js +16 -2
- package/dist/WebhookServer.js.map +1 -1
- package/dist/WorkflowExecuteAdditionalData.js +3 -3
- package/dist/WorkflowExecuteAdditionalData.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/collaboration/collaboration.service.d.ts +3 -1
- package/dist/collaboration/collaboration.service.js +6 -3
- package/dist/collaboration/collaboration.service.js.map +1 -1
- package/dist/commands/BaseCommand.d.ts +5 -3
- package/dist/commands/BaseCommand.js +5 -4
- package/dist/commands/BaseCommand.js.map +1 -1
- package/dist/commands/export/credentials.js +1 -5
- package/dist/commands/export/credentials.js.map +1 -1
- package/dist/commands/export/workflow.js +1 -5
- package/dist/commands/export/workflow.js.map +1 -1
- package/dist/commands/ldap/reset.js +1 -2
- package/dist/commands/ldap/reset.js.map +1 -1
- package/dist/commands/list/workflow.js +4 -5
- package/dist/commands/list/workflow.js.map +1 -1
- package/dist/commands/start.js +8 -13
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/update/workflow.js +3 -6
- package/dist/commands/update/workflow.js.map +1 -1
- package/dist/commands/user-management/reset.js +6 -7
- package/dist/commands/user-management/reset.js.map +1 -1
- package/dist/commands/webhook.js +1 -1
- package/dist/commands/webhook.js.map +1 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/controllers/activeWorkflows.controller.d.ts +8 -0
- package/dist/controllers/activeWorkflows.controller.js +45 -0
- package/dist/controllers/activeWorkflows.controller.js.map +1 -0
- package/dist/controllers/auth.controller.d.ts +3 -1
- package/dist/controllers/auth.controller.js +6 -9
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/binaryData.controller.d.ts +1 -1
- package/dist/controllers/binaryData.controller.js +0 -2
- package/dist/controllers/binaryData.controller.js.map +1 -1
- package/dist/controllers/communityPackages.controller.d.ts +3 -3
- package/dist/controllers/communityPackages.controller.js +0 -2
- package/dist/controllers/communityPackages.controller.js.map +1 -1
- package/dist/controllers/debug.controller.d.ts +8 -1
- package/dist/controllers/debug.controller.js +7 -8
- package/dist/controllers/debug.controller.js.map +1 -1
- package/dist/controllers/dynamicNodeParameters.controller.js +0 -2
- package/dist/controllers/dynamicNodeParameters.controller.js.map +1 -1
- package/dist/controllers/invitation.controller.d.ts +6 -5
- package/dist/controllers/invitation.controller.js +15 -36
- package/dist/controllers/invitation.controller.js.map +1 -1
- package/dist/controllers/ldap.controller.d.ts +2 -4
- package/dist/controllers/ldap.controller.js +6 -8
- package/dist/controllers/ldap.controller.js.map +1 -1
- package/dist/controllers/me.controller.d.ts +3 -1
- package/dist/controllers/me.controller.js +14 -8
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/mfa.controller.js +0 -2
- package/dist/controllers/mfa.controller.js.map +1 -1
- package/dist/controllers/nodeTypes.controller.d.ts +1 -3
- package/dist/controllers/nodeTypes.controller.js +4 -4
- package/dist/controllers/nodeTypes.controller.js.map +1 -1
- package/dist/controllers/oauth/abstractOAuth.controller.d.ts +3 -1
- package/dist/controllers/oauth/abstractOAuth.controller.js +6 -4
- package/dist/controllers/oauth/abstractOAuth.controller.js.map +1 -1
- package/dist/controllers/oauth/oAuth1Credential.controller.js +0 -2
- package/dist/controllers/oauth/oAuth1Credential.controller.js.map +1 -1
- package/dist/controllers/oauth/oAuth2Credential.controller.js +0 -2
- package/dist/controllers/oauth/oAuth2Credential.controller.js.map +1 -1
- package/dist/controllers/orchestration.controller.js +0 -2
- package/dist/controllers/orchestration.controller.js.map +1 -1
- package/dist/controllers/owner.controller.d.ts +6 -6
- package/dist/controllers/owner.controller.js +13 -7
- package/dist/controllers/owner.controller.js.map +1 -1
- package/dist/controllers/passwordReset.controller.d.ts +5 -1
- package/dist/controllers/passwordReset.controller.js +10 -14
- package/dist/controllers/passwordReset.controller.js.map +1 -1
- package/dist/controllers/role.controller.js +0 -2
- package/dist/controllers/role.controller.js.map +1 -1
- package/dist/controllers/tags.controller.d.ts +1 -1
- package/dist/controllers/tags.controller.js +0 -2
- package/dist/controllers/tags.controller.js.map +1 -1
- package/dist/controllers/translation.controller.d.ts +3 -5
- package/dist/controllers/translation.controller.js +8 -4
- package/dist/controllers/translation.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +6 -10
- package/dist/controllers/users.controller.js +34 -78
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/controllers/workflowStatistics.controller.d.ts +2 -2
- package/dist/controllers/workflowStatistics.controller.js +2 -13
- package/dist/controllers/workflowStatistics.controller.js.map +1 -1
- package/dist/credentials/credentials.controller.ee.js +2 -4
- package/dist/credentials/credentials.controller.ee.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +0 -5
- package/dist/credentials/credentials.service.ee.d.ts +2 -3
- package/dist/credentials/credentials.service.ee.js +2 -11
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +3 -55
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/databases/entities/AbstractEntity.js.map +1 -1
- package/dist/databases/repositories/credentials.repository.d.ts +9 -0
- package/dist/databases/repositories/credentials.repository.js +58 -0
- package/dist/databases/repositories/credentials.repository.js.map +1 -1
- package/dist/databases/repositories/execution.repository.d.ts +8 -0
- package/dist/databases/repositories/execution.repository.js +77 -3
- package/dist/databases/repositories/execution.repository.js.map +1 -1
- package/dist/databases/repositories/executionData.repository.d.ts +1 -0
- package/dist/databases/repositories/executionData.repository.js +8 -0
- package/dist/databases/repositories/executionData.repository.js.map +1 -1
- package/dist/databases/repositories/sharedCredentials.repository.d.ts +5 -0
- package/dist/databases/repositories/sharedCredentials.repository.js +27 -0
- package/dist/databases/repositories/sharedCredentials.repository.js.map +1 -1
- package/dist/databases/repositories/sharedWorkflow.repository.d.ts +24 -0
- package/dist/databases/repositories/sharedWorkflow.repository.js +79 -0
- package/dist/databases/repositories/sharedWorkflow.repository.js.map +1 -1
- package/dist/databases/repositories/tag.repository.d.ts +5 -0
- package/dist/databases/repositories/tag.repository.js +43 -0
- package/dist/databases/repositories/tag.repository.js.map +1 -1
- package/dist/databases/repositories/user.repository.d.ts +9 -0
- package/dist/databases/repositories/user.repository.js +62 -0
- package/dist/databases/repositories/user.repository.js.map +1 -1
- package/dist/databases/repositories/workflow.repository.d.ts +22 -1
- package/dist/databases/repositories/workflow.repository.js +108 -0
- package/dist/databases/repositories/workflow.repository.js.map +1 -1
- package/dist/databases/repositories/workflowHistory.repository.d.ts +1 -0
- package/dist/databases/repositories/workflowHistory.repository.js +3 -0
- package/dist/databases/repositories/workflowHistory.repository.js.map +1 -1
- package/dist/decorators/OnShutdown.d.ts +1 -0
- package/dist/decorators/OnShutdown.js +19 -0
- package/dist/decorators/OnShutdown.js.map +1 -0
- package/dist/decorators/RestController.js +2 -0
- package/dist/decorators/RestController.js.map +1 -1
- package/dist/decorators/registerController.d.ts +2 -327
- package/dist/decorators/registerController.js +6 -6
- package/dist/decorators/registerController.js.map +1 -1
- package/dist/environments/sourceControl/constants.d.ts +0 -1
- package/dist/environments/sourceControl/constants.js +1 -2
- package/dist/environments/sourceControl/constants.js.map +1 -1
- package/dist/environments/sourceControl/sourceControl.controller.ee.d.ts +5 -3
- package/dist/environments/sourceControl/sourceControl.controller.ee.js +7 -7
- package/dist/environments/sourceControl/sourceControl.controller.ee.js.map +1 -1
- package/dist/environments/sourceControl/sourceControlExport.service.ee.js +3 -22
- package/dist/environments/sourceControl/sourceControlExport.service.ee.js.map +1 -1
- package/dist/environments/variables/{enviromentHelpers.js → environmentHelpers.js} +1 -1
- package/dist/environments/variables/environmentHelpers.js.map +1 -0
- package/dist/environments/variables/variables.controller.ee.d.ts +1 -1
- package/dist/environments/variables/variables.controller.ee.js +0 -2
- package/dist/environments/variables/variables.controller.ee.js.map +1 -1
- package/dist/environments/variables/variables.service.ee.js +2 -2
- package/dist/environments/variables/variables.service.ee.js.map +1 -1
- package/dist/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.d.ts +3 -4
- package/dist/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.js.map +1 -1
- package/dist/eventbus/eventBus.controller.ee.d.ts +1 -2
- package/dist/eventbus/eventBus.controller.ee.js.map +1 -1
- package/dist/license/license.controller.js +0 -2
- package/dist/license/license.controller.js.map +1 -1
- package/dist/push/abstract.push.d.ts +1 -0
- package/dist/push/abstract.push.js +5 -0
- package/dist/push/abstract.push.js.map +1 -1
- package/dist/push/index.d.ts +1 -0
- package/dist/push/index.js +10 -0
- package/dist/push/index.js.map +1 -1
- package/dist/requests.d.ts +5 -7
- package/dist/requests.js +8 -1
- package/dist/requests.js.map +1 -1
- package/dist/security-audit/risk-reporters/CredentialsRiskReporter.js +2 -18
- package/dist/security-audit/risk-reporters/CredentialsRiskReporter.js.map +1 -1
- package/dist/services/activeWorkflows.service.d.ts +15 -0
- package/dist/services/activeWorkflows.service.js +61 -0
- package/dist/services/activeWorkflows.service.js.map +1 -0
- package/dist/services/frontend.service.d.ts +6 -2
- package/dist/services/frontend.service.js +17 -12
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/import.service.d.ts +0 -1
- package/dist/services/import.service.js +1 -26
- package/dist/services/import.service.js.map +1 -1
- package/dist/services/naming.service.js +1 -5
- package/dist/services/naming.service.js.map +1 -1
- package/dist/services/pruning.service.d.ts +2 -0
- package/dist/services/pruning.service.js +23 -52
- package/dist/services/pruning.service.js.map +1 -1
- package/dist/services/role.service.d.ts +1 -0
- package/dist/services/role.service.js +4 -0
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/tag.service.d.ts +0 -5
- package/dist/services/tag.service.js +0 -9
- package/dist/services/tag.service.js.map +1 -1
- package/dist/services/url.service.d.ts +7 -0
- package/dist/services/url.service.js +50 -0
- package/dist/services/url.service.js.map +1 -0
- package/dist/services/user.service.d.ts +4 -10
- package/dist/services/user.service.js +15 -61
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/webhook.service.d.ts +1 -2
- package/dist/services/webhook.service.js.map +1 -1
- package/dist/shutdown/Shutdown.service.d.ts +25 -0
- package/dist/shutdown/Shutdown.service.js +77 -0
- package/dist/shutdown/Shutdown.service.js.map +1 -0
- package/dist/sso/saml/routes/saml.controller.ee.d.ts +6 -2
- package/dist/sso/saml/routes/saml.controller.ee.js +12 -10
- package/dist/sso/saml/routes/saml.controller.ee.js.map +1 -1
- package/dist/sso/saml/saml.service.ee.d.ts +3 -1
- package/dist/sso/saml/saml.service.ee.js +8 -6
- package/dist/sso/saml/saml.service.ee.js.map +1 -1
- package/dist/sso/saml/serviceProvider.ee.js +5 -4
- package/dist/sso/saml/serviceProvider.ee.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +5 -1
- package/dist/utils.js.map +1 -1
- package/dist/workflows/workflow.service.d.ts +0 -9
- package/dist/workflows/workflow.service.ee.d.ts +10 -13
- package/dist/workflows/workflow.service.ee.js +16 -45
- package/dist/workflows/workflow.service.ee.js.map +1 -1
- package/dist/workflows/workflow.service.js +6 -83
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflowHistory/workflowHistory.controller.ee.js +0 -2
- package/dist/workflows/workflowHistory/workflowHistory.controller.ee.js.map +1 -1
- package/dist/workflows/workflowHistory/workflowHistoryManager.ee.js +1 -4
- package/dist/workflows/workflowHistory/workflowHistoryManager.ee.js.map +1 -1
- package/dist/workflows/workflows.controller.js +92 -25
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +8 -9
- package/dist/WorkflowCredentials.d.ts +0 -2
- package/dist/WorkflowCredentials.js +0 -46
- package/dist/WorkflowCredentials.js.map +0 -1
- package/dist/environments/variables/enviromentHelpers.js.map +0 -1
- package/dist/workflows/workflows.controller.ee.d.ts +0 -1
- package/dist/workflows/workflows.controller.ee.js +0 -209
- package/dist/workflows/workflows.controller.ee.js.map +0 -1
- /package/dist/environments/variables/{enviromentHelpers.d.ts → environmentHelpers.d.ts} +0 -0
package/dist/AbstractServer.d.ts
CHANGED
|
@@ -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 {
|
|
7
|
-
import
|
|
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:
|
|
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
|
}
|
package/dist/AbstractServer.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
138
|
-
this.app.all(`/${this.endpointForm}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(
|
|
139
|
-
this.app.all(`/${this.endpointWebhook}/:path(*)`, (0, WebhookHelpers_1.webhookRequestHandler)(
|
|
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.
|
|
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":"
|
|
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":"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"}
|
|
@@ -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
|
|
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
|
|
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
|
|
15
|
+
import { ActiveWorkflowsService } from './services/activeWorkflows.service';
|
|
19
16
|
import { WorkflowStaticDataService } from './workflows/workflowStaticData.service';
|
|
20
|
-
export declare class ActiveWorkflowRunner
|
|
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
|
-
|
|
29
|
+
private readonly activeWorkflowsService;
|
|
33
30
|
private queuedActivations;
|
|
34
|
-
constructor(logger: Logger, activeExecutions: ActiveExecutions, externalHooks: ExternalHooks, nodeTypes: NodeTypes, webhookService: WebhookService, workflowRepository: WorkflowRepository,
|
|
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
|
|
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,
|
|
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.
|
|
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.
|
|
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
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
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
|