n8n 1.60.1 → 1.61.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/bin/n8n +7 -0
- package/dist/active-executions.d.ts +1 -3
- package/dist/active-executions.js +24 -31
- package/dist/active-executions.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.js +0 -4
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +8 -8
- package/dist/config/schema.js +8 -8
- package/dist/config/schema.js.map +1 -1
- package/dist/controllers/me.controller.d.ts +4 -3
- package/dist/controllers/me.controller.js +13 -31
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +5 -3
- package/dist/controllers/users.controller.js +14 -18
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/credentials/credentials.service.js +1 -1
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/decorators/args.d.ts +3 -0
- package/dist/decorators/args.js +13 -0
- package/dist/decorators/args.js.map +1 -0
- package/dist/decorators/controller.registry.js +28 -2
- package/dist/decorators/controller.registry.js.map +1 -1
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.js +3 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/types.d.ts +7 -0
- package/dist/error-reporting.js +28 -27
- package/dist/error-reporting.js.map +1 -1
- package/dist/errors/execution-not-found-error.d.ts +4 -0
- package/dist/errors/execution-not-found-error.js +11 -0
- package/dist/errors/execution-not-found-error.js.map +1 -0
- package/dist/events/events.controller.d.ts +7 -0
- package/dist/events/events.controller.js +35 -0
- package/dist/events/events.controller.js.map +1 -0
- package/dist/generic-helpers.d.ts +1 -2
- package/dist/generic-helpers.js.map +1 -1
- package/dist/interfaces.d.ts +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/permissions/check-access.d.ts +2 -2
- package/dist/permissions/check-access.js +16 -35
- package/dist/permissions/check-access.js.map +1 -1
- package/dist/public-api/v1/handlers/users/users.handler.ee.d.ts +6 -6
- package/dist/public-api/v1/handlers/users/users.handler.ee.js +8 -1
- package/dist/public-api/v1/handlers/users/users.handler.ee.js.map +1 -1
- package/dist/public-api/v1/shared/middlewares/global.middleware.js +1 -1
- package/dist/public-api/v1/shared/middlewares/global.middleware.js.map +1 -1
- package/dist/requests.d.ts +4 -28
- package/dist/requests.js +0 -67
- package/dist/requests.js.map +1 -1
- package/dist/scaling/constants.d.ts +2 -0
- package/dist/scaling/constants.js +3 -1
- package/dist/scaling/constants.js.map +1 -1
- package/dist/scaling/pubsub/publisher.service.d.ts +2 -2
- package/dist/scaling/pubsub/publisher.service.js +1 -1
- package/dist/scaling/pubsub/publisher.service.js.map +1 -1
- package/dist/scaling/pubsub/pubsub.types.d.ts +57 -2
- package/dist/scaling/pubsub/subscriber.service.d.ts +5 -4
- package/dist/scaling/pubsub/subscriber.service.js +7 -3
- package/dist/scaling/pubsub/subscriber.service.js.map +1 -1
- package/dist/scaling/redis/redis-service-commands.js.map +1 -0
- package/dist/scaling/redis/redis.types.js.map +1 -0
- package/dist/scaling/scaling.service.js +1 -1
- package/dist/scaling/scaling.service.js.map +1 -1
- package/dist/scaling/scaling.types.d.ts +3 -3
- package/dist/server.d.ts +2 -1
- package/dist/server.js +13 -11
- package/dist/server.js.map +1 -1
- package/dist/services/cache/cache.service.js +1 -1
- package/dist/services/cache/cache.service.js.map +1 -1
- package/dist/services/frontend.service.d.ts +2 -5
- package/dist/services/frontend.service.js +5 -14
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/orchestration/helpers.d.ts +1 -1
- package/dist/services/orchestration/helpers.js +2 -2
- package/dist/services/orchestration/helpers.js.map +1 -1
- package/dist/services/orchestration/main/handle-command-message-main.d.ts +1 -1
- package/dist/services/orchestration/main/handle-worker-response-message-main.d.ts +1 -1
- package/dist/services/orchestration/main/handle-worker-response-message-main.js +2 -2
- package/dist/services/orchestration/main/handle-worker-response-message-main.js.map +1 -1
- package/dist/services/orchestration/main/multi-main-setup.ee.d.ts +1 -1
- package/dist/services/orchestration/main/multi-main-setup.ee.js +1 -1
- package/dist/services/orchestration/main/multi-main-setup.ee.js.map +1 -1
- package/dist/services/orchestration/main/orchestration.handler.main.service.js +3 -8
- package/dist/services/orchestration/main/orchestration.handler.main.service.js.map +1 -1
- package/dist/services/orchestration/webhook/handle-command-message-webhook.d.ts +1 -1
- package/dist/services/orchestration/webhook/orchestration.handler.webhook.service.js +1 -6
- package/dist/services/orchestration/webhook/orchestration.handler.webhook.service.js.map +1 -1
- package/dist/services/orchestration/worker/handle-command-message-worker.d.ts +1 -1
- package/dist/services/orchestration/worker/handle-command-message-worker.js +129 -133
- package/dist/services/orchestration/worker/handle-command-message-worker.js.map +1 -1
- package/dist/services/orchestration/worker/orchestration.handler.worker.service.js +3 -1
- package/dist/services/orchestration/worker/orchestration.handler.worker.service.js.map +1 -1
- package/dist/services/orchestration/worker/types.d.ts +0 -11
- package/dist/services/orchestration.service.d.ts +1 -1
- package/dist/services/orchestration.service.js.map +1 -1
- package/dist/services/{redis/redis-client.service.d.ts → redis-client.service.d.ts} +2 -2
- package/dist/services/{redis/redis-client.service.js → redis-client.service.js} +1 -1
- package/dist/services/redis-client.service.js.map +1 -0
- package/dist/subworkflows/subworkflow-policy-checker.service.d.ts +1 -3
- package/dist/subworkflows/subworkflow-policy-checker.service.js +2 -8
- package/dist/subworkflows/subworkflow-policy-checker.service.js.map +1 -1
- package/dist/webhooks/webhook-form-data.d.ts +6 -0
- package/dist/webhooks/webhook-form-data.js +34 -0
- package/dist/webhooks/webhook-form-data.js.map +1 -0
- package/dist/webhooks/webhook-helpers.js +5 -23
- package/dist/webhooks/webhook-helpers.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +3 -3
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-runner.js +13 -18
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/workflow-execution.service.d.ts +1 -1
- package/dist/workflows/workflow-execution.service.js +2 -1
- package/dist/workflows/workflow-execution.service.js.map +1 -1
- package/dist/workflows/workflow.request.d.ts +3 -1
- package/dist/workflows/workflows.controller.js +3 -1
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/package.json +10 -10
- package/dist/services/orchestration/pubsub/pubsub-message-map.d.ts +0 -54
- package/dist/services/orchestration/pubsub/pubsub-message-map.js +0 -3
- package/dist/services/orchestration/pubsub/pubsub-message-map.js.map +0 -1
- package/dist/services/redis/redis-client.service.js.map +0 -1
- package/dist/services/redis/redis-constants.d.ts +0 -2
- package/dist/services/redis/redis-constants.js +0 -6
- package/dist/services/redis/redis-constants.js.map +0 -1
- package/dist/services/redis/redis-service-base-classes.d.ts +0 -25
- package/dist/services/redis/redis-service-base-classes.js +0 -72
- package/dist/services/redis/redis-service-base-classes.js.map +0 -1
- package/dist/services/redis/redis-service-commands.js.map +0 -1
- package/dist/services/redis/redis.types.js.map +0 -1
- /package/dist/{services → scaling}/redis/redis-service-commands.d.ts +0 -0
- /package/dist/{services → scaling}/redis/redis-service-commands.js +0 -0
- /package/dist/{services → scaling}/redis/redis.types.d.ts +0 -0
- /package/dist/{services → scaling}/redis/redis.types.js +0 -0
package/bin/n8n
CHANGED
|
@@ -43,6 +43,13 @@ require('express-async-errors');
|
|
|
43
43
|
require('source-map-support').install();
|
|
44
44
|
require('reflect-metadata');
|
|
45
45
|
|
|
46
|
+
// Skip loading dotenv in e2e tests.
|
|
47
|
+
// Also, do not use `inE2ETests` from constants here, because that'd end up code that might read from `process.env` before the values are loaded from an `.env` file.
|
|
48
|
+
if (process.env.E2E_TESTS !== 'true') {
|
|
49
|
+
// Loading dotenv early ensures that `process.env` is up-to-date everywhere in code
|
|
50
|
+
require('dotenv').config();
|
|
51
|
+
}
|
|
52
|
+
|
|
46
53
|
if (process.env.NODEJS_PREFER_IPV4 === 'true') {
|
|
47
54
|
require('dns').setDefaultResultOrder('ipv4first');
|
|
48
55
|
}
|
|
@@ -15,10 +15,8 @@ export declare class ActiveExecutions {
|
|
|
15
15
|
attachWorkflowExecution(executionId: string, workflowExecution: PCancelable<IRun>): void;
|
|
16
16
|
attachResponsePromise(executionId: string, responsePromise: IDeferredPromise<IExecuteResponsePromiseData>): void;
|
|
17
17
|
resolveResponsePromise(executionId: string, response: IExecuteResponsePromiseData): void;
|
|
18
|
-
getPostExecutePromiseCount(executionId: string): number;
|
|
19
|
-
remove(executionId: string, fullRunData?: IRun): void;
|
|
20
18
|
stopExecution(executionId: string): void;
|
|
21
|
-
|
|
19
|
+
finalizeExecution(executionId: string, fullRunData?: IRun): void;
|
|
22
20
|
getPostExecutePromise(executionId: string): Promise<IRun | undefined>;
|
|
23
21
|
getActiveExecutions(): IExecutionsCurrentSummary[];
|
|
24
22
|
setStatus(executionId: string, status: ExecutionStatus): void;
|
|
@@ -17,6 +17,7 @@ const n8n_workflow_1 = require("n8n-workflow");
|
|
|
17
17
|
const node_assert_1 = require("node:assert");
|
|
18
18
|
const typedi_1 = require("typedi");
|
|
19
19
|
const execution_repository_1 = require("./databases/repositories/execution.repository");
|
|
20
|
+
const execution_not_found_error_1 = require("./errors/execution-not-found-error");
|
|
20
21
|
const logger_1 = require("./logger");
|
|
21
22
|
const utils_1 = require("./utils");
|
|
22
23
|
const concurrency_control_service_1 = require("./concurrency/concurrency-control.service");
|
|
@@ -66,12 +67,25 @@ let ActiveExecutions = class ActiveExecutions {
|
|
|
66
67
|
};
|
|
67
68
|
await this.executionRepository.updateExistingExecution(executionId, execution);
|
|
68
69
|
}
|
|
70
|
+
const postExecutePromise = (0, n8n_workflow_1.createDeferredPromise)();
|
|
69
71
|
this.activeExecutions[executionId] = {
|
|
70
72
|
executionData,
|
|
71
73
|
startedAt: new Date(),
|
|
72
|
-
|
|
74
|
+
postExecutePromise,
|
|
73
75
|
status: executionStatus,
|
|
74
76
|
};
|
|
77
|
+
void postExecutePromise.promise
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
if (error instanceof n8n_workflow_1.ExecutionCancelledError)
|
|
80
|
+
return;
|
|
81
|
+
throw error;
|
|
82
|
+
})
|
|
83
|
+
.finally(() => {
|
|
84
|
+
this.concurrencyControl.release({ mode: executionData.executionMode });
|
|
85
|
+
delete this.activeExecutions[executionId];
|
|
86
|
+
this.logger.debug('Execution removed', { executionId });
|
|
87
|
+
});
|
|
88
|
+
this.logger.debug('Execution added', { executionId });
|
|
75
89
|
return executionId;
|
|
76
90
|
}
|
|
77
91
|
attachWorkflowExecution(executionId, workflowExecution) {
|
|
@@ -84,43 +98,22 @@ let ActiveExecutions = class ActiveExecutions {
|
|
|
84
98
|
const execution = this.activeExecutions[executionId];
|
|
85
99
|
execution?.responsePromise?.resolve(response);
|
|
86
100
|
}
|
|
87
|
-
getPostExecutePromiseCount(executionId) {
|
|
88
|
-
return this.activeExecutions[executionId]?.postExecutePromises.length ?? 0;
|
|
89
|
-
}
|
|
90
|
-
remove(executionId, fullRunData) {
|
|
91
|
-
const execution = this.activeExecutions[executionId];
|
|
92
|
-
if (execution === undefined) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
for (const promise of execution.postExecutePromises) {
|
|
96
|
-
promise.resolve(fullRunData);
|
|
97
|
-
}
|
|
98
|
-
this.postExecuteCleanup(executionId);
|
|
99
|
-
}
|
|
100
101
|
stopExecution(executionId) {
|
|
101
102
|
const execution = this.activeExecutions[executionId];
|
|
102
103
|
if (execution === undefined) {
|
|
103
104
|
return;
|
|
104
105
|
}
|
|
105
|
-
execution.workflowExecution
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
promise.reject(reason);
|
|
109
|
-
}
|
|
110
|
-
this.postExecuteCleanup(executionId);
|
|
106
|
+
execution.workflowExecution?.cancel();
|
|
107
|
+
execution.postExecutePromise.reject(new n8n_workflow_1.ExecutionCancelledError(executionId));
|
|
108
|
+
this.logger.debug('Execution cancelled', { executionId });
|
|
111
109
|
}
|
|
112
|
-
|
|
113
|
-
const execution = this.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
delete this.activeExecutions[executionId];
|
|
118
|
-
this.concurrencyControl.release({ mode: execution.executionData.executionMode });
|
|
110
|
+
finalizeExecution(executionId, fullRunData) {
|
|
111
|
+
const execution = this.getExecution(executionId);
|
|
112
|
+
execution.postExecutePromise.resolve(fullRunData);
|
|
113
|
+
this.logger.debug('Execution finalized', { executionId });
|
|
119
114
|
}
|
|
120
115
|
async getPostExecutePromise(executionId) {
|
|
121
|
-
|
|
122
|
-
this.getExecution(executionId).postExecutePromises.push(waitPromise);
|
|
123
|
-
return await waitPromise.promise;
|
|
116
|
+
return await this.getExecution(executionId).postExecutePromise.promise;
|
|
124
117
|
}
|
|
125
118
|
getActiveExecutions() {
|
|
126
119
|
const returnData = [];
|
|
@@ -167,7 +160,7 @@ let ActiveExecutions = class ActiveExecutions {
|
|
|
167
160
|
getExecution(executionId) {
|
|
168
161
|
const execution = this.activeExecutions[executionId];
|
|
169
162
|
if (!execution) {
|
|
170
|
-
throw new
|
|
163
|
+
throw new execution_not_found_error_1.ExecutionNotFoundError(executionId);
|
|
171
164
|
}
|
|
172
165
|
return execution;
|
|
173
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-executions.js","sourceRoot":"","sources":["../src/active-executions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOA,+
|
|
1
|
+
{"version":3,"file":"active-executions.js","sourceRoot":"","sources":["../src/active-executions.ts"],"names":[],"mappings":"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"}
|