n8n 1.99.1 → 1.100.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 (96) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/commands/base-command.d.ts +1 -3
  3. package/dist/commands/base-command.js +3 -15
  4. package/dist/commands/base-command.js.map +1 -1
  5. package/dist/commands/import/credentials.js.map +1 -1
  6. package/dist/controllers/project.controller.js +1 -1
  7. package/dist/controllers/project.controller.js.map +1 -1
  8. package/dist/controllers/users.controller.d.ts +40 -4
  9. package/dist/controllers/users.controller.js +27 -17
  10. package/dist/controllers/users.controller.js.map +1 -1
  11. package/dist/credentials/credentials.service.js.map +1 -1
  12. package/dist/credentials-helper.js.map +1 -1
  13. package/dist/databases/db-connection-options.d.ts +1 -1
  14. package/dist/databases/db-connection-options.js +2 -2
  15. package/dist/databases/db-connection-options.js.map +1 -1
  16. package/dist/environments.ee/source-control/source-control-export.service.ee.js +6 -2
  17. package/dist/environments.ee/source-control/source-control-export.service.ee.js.map +1 -1
  18. package/dist/environments.ee/source-control/source-control-import.service.ee.d.ts +3 -7
  19. package/dist/environments.ee/source-control/source-control-import.service.ee.js +110 -25
  20. package/dist/environments.ee/source-control/source-control-import.service.ee.js.map +1 -1
  21. package/dist/environments.ee/source-control/source-control-scoped.service.d.ts +1 -1
  22. package/dist/environments.ee/source-control/source-control-scoped.service.js +11 -2
  23. package/dist/environments.ee/source-control/source-control-scoped.service.js.map +1 -1
  24. package/dist/environments.ee/source-control/source-control.controller.ee.d.ts +55 -10
  25. package/dist/environments.ee/source-control/source-control.controller.ee.js +1 -1
  26. package/dist/environments.ee/source-control/source-control.controller.ee.js.map +1 -1
  27. package/dist/environments.ee/source-control/source-control.service.ee.d.ts +14 -10
  28. package/dist/environments.ee/source-control/source-control.service.ee.js +9 -2
  29. package/dist/environments.ee/source-control/source-control.service.ee.js.map +1 -1
  30. package/dist/environments.ee/source-control/types/exportable-credential.d.ts +6 -2
  31. package/dist/environments.ee/source-control/types/exportable-workflow.d.ts +2 -2
  32. package/dist/environments.ee/source-control/types/resource-owner.d.ts +8 -1
  33. package/dist/environments.ee/source-control/types/source-control-workflow-version-id.d.ts +2 -0
  34. package/dist/eventbus/event-message-classes/event-message-queue.d.ts +21 -0
  35. package/dist/eventbus/event-message-classes/event-message-queue.js +29 -0
  36. package/dist/eventbus/event-message-classes/event-message-queue.js.map +1 -0
  37. package/dist/eventbus/event-message-classes/index.d.ts +6 -3
  38. package/dist/eventbus/event-message-classes/index.js +9 -1
  39. package/dist/eventbus/event-message-classes/index.js.map +1 -1
  40. package/dist/eventbus/message-event-bus/message-event-bus.d.ts +2 -0
  41. package/dist/eventbus/message-event-bus/message-event-bus.js +4 -0
  42. package/dist/eventbus/message-event-bus/message-event-bus.js.map +1 -1
  43. package/dist/events/maps/relay.event-map.d.ts +18 -0
  44. package/dist/events/relays/log-streaming.event-relay.d.ts +6 -1
  45. package/dist/events/relays/log-streaming.event-relay.js +50 -3
  46. package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
  47. package/dist/events/relays/telemetry.event-relay.js +1 -0
  48. package/dist/events/relays/telemetry.event-relay.js.map +1 -1
  49. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +75 -4
  50. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  51. package/dist/manual-execution.service.js +6 -1
  52. package/dist/manual-execution.service.js.map +1 -1
  53. package/dist/modules/external-secrets.ee/external-secrets.module.js +1 -1
  54. package/dist/modules/external-secrets.ee/external-secrets.module.js.map +1 -1
  55. package/dist/modules/insights/insights.constants.d.ts +2 -0
  56. package/dist/modules/insights/insights.constants.js +22 -0
  57. package/dist/modules/insights/insights.constants.js.map +1 -0
  58. package/dist/modules/insights/insights.controller.d.ts +5 -0
  59. package/dist/modules/insights/insights.controller.js +11 -3
  60. package/dist/modules/insights/insights.controller.js.map +1 -1
  61. package/dist/modules/insights/insights.module.d.ts +9 -0
  62. package/dist/modules/insights/insights.module.js +5 -1
  63. package/dist/modules/insights/insights.module.js.map +1 -1
  64. package/dist/modules/insights/insights.service.d.ts +12 -0
  65. package/dist/modules/insights/insights.service.js +21 -3
  66. package/dist/modules/insights/insights.service.js.map +1 -1
  67. package/dist/public-api/v1/handlers/workflows/workflows.service.js.map +1 -1
  68. package/dist/scaling/scaling.service.js +12 -0
  69. package/dist/scaling/scaling.service.js.map +1 -1
  70. package/dist/scaling/scaling.types.d.ts +1 -0
  71. package/dist/server.js +1 -0
  72. package/dist/server.js.map +1 -1
  73. package/dist/services/frontend.service.d.ts +6 -4
  74. package/dist/services/frontend.service.js +8 -18
  75. package/dist/services/frontend.service.js.map +1 -1
  76. package/dist/services/import.service.js.map +1 -1
  77. package/dist/services/project.service.ee.js.map +1 -1
  78. package/dist/services/public-api-key.service.js.map +1 -1
  79. package/dist/webhooks/webhook.service.d.ts +1 -0
  80. package/dist/webhooks/webhook.service.js +8 -1
  81. package/dist/webhooks/webhook.service.js.map +1 -1
  82. package/dist/workflow-runner.d.ts +3 -1
  83. package/dist/workflow-runner.js +15 -4
  84. package/dist/workflow-runner.js.map +1 -1
  85. package/dist/workflows/workflow.service.ee.js.map +1 -1
  86. package/dist/workflows/workflows.controller.js.map +1 -1
  87. package/package.json +17 -17
  88. package/dist/modules/insights/insights-helpers.d.ts +0 -4
  89. package/dist/modules/insights/insights-helpers.js +0 -26
  90. package/dist/modules/insights/insights-helpers.js.map +0 -1
  91. package/dist/modules/module-registry.d.ts +0 -15
  92. package/dist/modules/module-registry.js +0 -103
  93. package/dist/modules/module-registry.js.map +0 -1
  94. package/dist/modules/modules.config.d.ts +0 -22
  95. package/dist/modules/modules.config.js +0 -56
  96. package/dist/modules/modules.config.js.map +0 -1
@@ -1,103 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ModuleRegistry = void 0;
13
- const backend_common_1 = require("@n8n/backend-common");
14
- const decorators_1 = require("@n8n/decorators");
15
- const di_1 = require("@n8n/di");
16
- let ModuleRegistry = class ModuleRegistry {
17
- constructor(moduleMetadata, lifecycleMetadata, licenseState, logger) {
18
- this.moduleMetadata = moduleMetadata;
19
- this.lifecycleMetadata = lifecycleMetadata;
20
- this.licenseState = licenseState;
21
- this.logger = logger;
22
- this.entities = [];
23
- }
24
- async initModules() {
25
- for (const { class: ModuleClass, licenseFlag } of this.moduleMetadata.getEntries()) {
26
- if (licenseFlag && !this.licenseState.isLicensed(licenseFlag)) {
27
- this.logger.debug(`Skipped init for unlicensed module "${ModuleClass.name}"`);
28
- continue;
29
- }
30
- await di_1.Container.get(ModuleClass).init?.();
31
- }
32
- }
33
- addEntities() {
34
- for (const { class: ModuleClass } of this.moduleMetadata.getEntries()) {
35
- const entities = di_1.Container.get(ModuleClass).entities?.();
36
- if (!entities || entities.length === 0)
37
- continue;
38
- this.entities.push(...entities);
39
- }
40
- }
41
- registerLifecycleHooks(hooks) {
42
- const handlers = this.lifecycleMetadata.getHandlers();
43
- for (const { handlerClass, methodName, eventName } of handlers) {
44
- const instance = di_1.Container.get(handlerClass);
45
- switch (eventName) {
46
- case 'workflowExecuteAfter':
47
- hooks.addHandler(eventName, async function (runData, newStaticData) {
48
- const context = {
49
- type: 'workflowExecuteAfter',
50
- workflow: this.workflowData,
51
- runData,
52
- newStaticData,
53
- };
54
- return await instance[methodName].call(instance, context);
55
- });
56
- break;
57
- case 'nodeExecuteBefore':
58
- hooks.addHandler(eventName, async function (nodeName, taskData) {
59
- const context = {
60
- type: 'nodeExecuteBefore',
61
- workflow: this.workflowData,
62
- nodeName,
63
- taskData,
64
- };
65
- return await instance[methodName].call(instance, context);
66
- });
67
- break;
68
- case 'nodeExecuteAfter':
69
- hooks.addHandler(eventName, async function (nodeName, taskData, executionData) {
70
- const context = {
71
- type: 'nodeExecuteAfter',
72
- workflow: this.workflowData,
73
- nodeName,
74
- taskData,
75
- executionData,
76
- };
77
- return await instance[methodName].call(instance, context);
78
- });
79
- break;
80
- case 'workflowExecuteBefore':
81
- hooks.addHandler(eventName, async function (workflowInstance, executionData) {
82
- const context = {
83
- type: 'workflowExecuteBefore',
84
- workflow: this.workflowData,
85
- workflowInstance,
86
- executionData,
87
- };
88
- return await instance[methodName].call(instance, context);
89
- });
90
- break;
91
- }
92
- }
93
- }
94
- };
95
- exports.ModuleRegistry = ModuleRegistry;
96
- exports.ModuleRegistry = ModuleRegistry = __decorate([
97
- (0, di_1.Service)(),
98
- __metadata("design:paramtypes", [decorators_1.ModuleMetadata,
99
- decorators_1.LifecycleMetadata,
100
- backend_common_1.LicenseState,
101
- backend_common_1.Logger])
102
- ], ModuleRegistry);
103
- //# sourceMappingURL=module-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/modules/module-registry.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { CommaSeparatedStringArray } from '@n8n/config';
2
- import type { InstanceSettings } from 'n8n-core';
3
- export type ModulePreInitContext = {
4
- instance: InstanceSettings;
5
- };
6
- export type ModulePreInit = {
7
- shouldLoadModule: (ctx: ModulePreInitContext) => boolean;
8
- };
9
- declare const moduleNames: readonly ["insights", "external-secrets"];
10
- export type ModuleName = (typeof moduleNames)[number];
11
- declare class Modules extends CommaSeparatedStringArray<ModuleName> {
12
- constructor(str: string);
13
- }
14
- export declare class ModulesConfig {
15
- enabledModules: Modules;
16
- disabledModules: Modules;
17
- private readonly defaultModules;
18
- readonly loadedModules: Set<"insights" | "external-secrets">;
19
- get modules(): ModuleName[];
20
- addLoadedModule(module: ModuleName): void;
21
- }
22
- export {};
@@ -1,56 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ModulesConfig = void 0;
13
- const config_1 = require("@n8n/config");
14
- const n8n_workflow_1 = require("n8n-workflow");
15
- const moduleNames = ['insights', 'external-secrets'];
16
- class Modules extends config_1.CommaSeparatedStringArray {
17
- constructor(str) {
18
- super(str);
19
- for (const moduleName of this) {
20
- if (!moduleNames.includes(moduleName)) {
21
- throw new n8n_workflow_1.UnexpectedError(`Unknown module name ${moduleName}`, { level: 'fatal' });
22
- }
23
- }
24
- }
25
- }
26
- let ModulesConfig = class ModulesConfig {
27
- constructor() {
28
- this.enabledModules = [];
29
- this.disabledModules = [];
30
- this.defaultModules = ['insights', 'external-secrets'];
31
- this.loadedModules = new Set();
32
- }
33
- get modules() {
34
- if (this.enabledModules.some((module) => this.disabledModules.includes(module))) {
35
- throw new n8n_workflow_1.UnexpectedError('Module cannot be both enabled and disabled', { level: 'fatal' });
36
- }
37
- const enabledModules = Array.from(new Set(this.defaultModules.concat(this.enabledModules)));
38
- return enabledModules.filter((module) => !this.disabledModules.includes(module));
39
- }
40
- addLoadedModule(module) {
41
- this.loadedModules.add(module);
42
- }
43
- };
44
- exports.ModulesConfig = ModulesConfig;
45
- __decorate([
46
- (0, config_1.Env)('N8N_ENABLED_MODULES'),
47
- __metadata("design:type", Modules)
48
- ], ModulesConfig.prototype, "enabledModules", void 0);
49
- __decorate([
50
- (0, config_1.Env)('N8N_DISABLED_MODULES'),
51
- __metadata("design:type", Modules)
52
- ], ModulesConfig.prototype, "disabledModules", void 0);
53
- exports.ModulesConfig = ModulesConfig = __decorate([
54
- config_1.Config
55
- ], ModulesConfig);
56
- //# sourceMappingURL=modules.config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modules.config.js","sourceRoot":"","sources":["../../src/modules/modules.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAqE;AAErE,+CAA+C;AAU/C,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAU,CAAC;AAG9D,MAAM,OAAQ,SAAQ,kCAAqC;IAC1D,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,8BAAe,CAAC,uBAAuB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACpF,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAAnB;QAGN,mBAAc,GAAY,EAAE,CAAC;QAI7B,oBAAe,GAAY,EAAE,CAAC;QAGb,mBAAc,GAAiB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAGxE,kBAAa,GAAG,IAAI,GAAG,EAAc,CAAC;IAgBhD,CAAC;IAbA,IAAI,OAAO;QACV,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,8BAAe,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAE5F,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,eAAe,CAAC,MAAkB;QACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACD,CAAA;AA7BY,sCAAa;AAGzB;IADC,IAAA,YAAG,EAAC,qBAAqB,CAAC;8BACX,OAAO;qDAAM;AAI7B;IADC,IAAA,YAAG,EAAC,sBAAsB,CAAC;8BACX,OAAO;sDAAM;wBAPlB,aAAa;IADzB,eAAM;GACM,aAAa,CA6BzB"}