n8n 2.14.2 → 2.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/abstract-server.js +1 -1
  2. package/dist/abstract-server.js.map +1 -1
  3. package/dist/build.tsbuildinfo +1 -1
  4. package/dist/commands/base-command.d.ts +1 -0
  5. package/dist/commands/base-command.js +8 -6
  6. package/dist/commands/base-command.js.map +1 -1
  7. package/dist/commands/execute-batch.js +2 -0
  8. package/dist/commands/execute-batch.js.map +1 -1
  9. package/dist/commands/execute.js +2 -0
  10. package/dist/commands/execute.js.map +1 -1
  11. package/dist/commands/start.js +1 -0
  12. package/dist/commands/start.js.map +1 -1
  13. package/dist/commands/webhook.js +1 -0
  14. package/dist/commands/webhook.js.map +1 -1
  15. package/dist/commands/worker.js +1 -0
  16. package/dist/commands/worker.js.map +1 -1
  17. package/dist/constants.js +1 -0
  18. package/dist/constants.js.map +1 -1
  19. package/dist/controllers/ai.controller.js +1 -1
  20. package/dist/controllers/ai.controller.js.map +1 -1
  21. package/dist/controllers/binary-data.controller.js +1 -1
  22. package/dist/controllers/binary-data.controller.js.map +1 -1
  23. package/dist/controllers/me.controller.d.ts +3 -1
  24. package/dist/controllers/me.controller.js +6 -3
  25. package/dist/controllers/me.controller.js.map +1 -1
  26. package/dist/controllers/project.controller.d.ts +2 -0
  27. package/dist/credentials/credentials.service.js +1 -1
  28. package/dist/credentials/credentials.service.js.map +1 -1
  29. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +9 -8
  30. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  31. package/dist/executions/execution-persistence.d.ts +4 -1
  32. package/dist/executions/execution-persistence.js +16 -2
  33. package/dist/executions/execution-persistence.js.map +1 -1
  34. package/dist/executions/executions.controller.d.ts +3 -5
  35. package/dist/executions/executions.controller.js +17 -9
  36. package/dist/executions/executions.controller.js.map +1 -1
  37. package/dist/modules/community-packages/community-packages.controller.d.ts +6 -19
  38. package/dist/modules/community-packages/community-packages.controller.js +8 -231
  39. package/dist/modules/community-packages/community-packages.controller.js.map +1 -1
  40. package/dist/modules/community-packages/community-packages.lifecycle.service.d.ts +32 -0
  41. package/dist/modules/community-packages/community-packages.lifecycle.service.js +282 -0
  42. package/dist/modules/community-packages/community-packages.lifecycle.service.js.map +1 -0
  43. package/dist/modules/community-packages/community-packages.service.js +8 -8
  44. package/dist/modules/community-packages/community-packages.service.js.map +1 -1
  45. package/dist/modules/community-packages/npm-utils.d.ts +4 -0
  46. package/dist/modules/community-packages/npm-utils.js +4 -0
  47. package/dist/modules/community-packages/npm-utils.js.map +1 -1
  48. package/dist/modules/dynamic-credentials.ee/context-establishment-hooks/index.d.ts +1 -0
  49. package/dist/modules/dynamic-credentials.ee/context-establishment-hooks/index.js +1 -0
  50. package/dist/modules/dynamic-credentials.ee/context-establishment-hooks/index.js.map +1 -1
  51. package/dist/modules/dynamic-credentials.ee/context-establishment-hooks/slack-signature-extractor.d.ts +11 -0
  52. package/dist/modules/dynamic-credentials.ee/context-establishment-hooks/slack-signature-extractor.js +88 -0
  53. package/dist/modules/dynamic-credentials.ee/context-establishment-hooks/slack-signature-extractor.js.map +1 -0
  54. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/slack-signature-identifier.d.ts +28 -0
  55. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/slack-signature-identifier.js +158 -0
  56. package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/slack-signature-identifier.js.map +1 -0
  57. package/dist/modules/dynamic-credentials.ee/credential-resolvers/index.d.ts +1 -0
  58. package/dist/modules/dynamic-credentials.ee/credential-resolvers/index.js +1 -0
  59. package/dist/modules/dynamic-credentials.ee/credential-resolvers/index.js.map +1 -1
  60. package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.d.ts +50 -0
  61. package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.js +118 -0
  62. package/dist/modules/dynamic-credentials.ee/credential-resolvers/slack-credential-resolver.js.map +1 -0
  63. package/dist/modules/instance-registry/storage/memory-storage.d.ts +15 -0
  64. package/dist/modules/instance-registry/storage/memory-storage.js +41 -0
  65. package/dist/modules/instance-registry/storage/memory-storage.js.map +1 -0
  66. package/dist/modules/mcp/mcp-oauth-service.d.ts +1 -1
  67. package/dist/modules/mcp/mcp-oauth-service.js +5 -1
  68. package/dist/modules/mcp/mcp-oauth-service.js.map +1 -1
  69. package/dist/modules/mcp/mcp.errors.js +1 -1
  70. package/dist/modules/mcp/mcp.oauth-clients.controller.js +1 -1
  71. package/dist/modules/mcp/mcp.oauth-clients.controller.js.map +1 -1
  72. package/dist/modules/mcp/mcp.service.d.ts +3 -1
  73. package/dist/modules/mcp/mcp.service.js +13 -4
  74. package/dist/modules/mcp/mcp.service.js.map +1 -1
  75. package/dist/modules/mcp/mcp.types.d.ts +1 -1
  76. package/dist/modules/mcp/tools/execute-workflow.tool.js +8 -44
  77. package/dist/modules/mcp/tools/execute-workflow.tool.js.map +1 -1
  78. package/dist/modules/mcp/tools/execution-utils.d.ts +5 -0
  79. package/dist/modules/mcp/tools/execution-utils.js +45 -0
  80. package/dist/modules/mcp/tools/execution-utils.js.map +1 -0
  81. package/dist/modules/mcp/tools/prepare-workflow-pin-data.tool.d.ts +31 -0
  82. package/dist/modules/mcp/tools/prepare-workflow-pin-data.tool.js +165 -0
  83. package/dist/modules/mcp/tools/prepare-workflow-pin-data.tool.js.map +1 -0
  84. package/dist/modules/mcp/tools/test-workflow.tool.d.ts +31 -0
  85. package/dist/modules/mcp/tools/test-workflow.tool.js +178 -0
  86. package/dist/modules/mcp/tools/test-workflow.tool.js.map +1 -0
  87. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +1 -0
  88. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
  89. package/dist/modules/mcp/tools/workflow-builder/credentials-auto-assign.d.ts +2 -1
  90. package/dist/modules/mcp/tools/workflow-builder/credentials-auto-assign.js +15 -0
  91. package/dist/modules/mcp/tools/workflow-builder/credentials-auto-assign.js.map +1 -1
  92. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +1 -0
  93. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
  94. package/dist/modules/otel/handlers/interfaces.d.ts +5 -0
  95. package/dist/modules/otel/handlers/interfaces.js +3 -0
  96. package/dist/modules/otel/handlers/interfaces.js.map +1 -0
  97. package/dist/modules/otel/handlers/workflow-end.handler.d.ts +7 -0
  98. package/dist/modules/otel/handlers/workflow-end.handler.js +65 -0
  99. package/dist/modules/otel/handlers/workflow-end.handler.js.map +1 -0
  100. package/dist/modules/otel/handlers/workflow-start.handler.d.ts +7 -0
  101. package/dist/modules/otel/handlers/workflow-start.handler.js +29 -0
  102. package/dist/modules/otel/handlers/workflow-start.handler.js.map +1 -0
  103. package/dist/modules/otel/n8n-instrumentation.d.ts +15 -0
  104. package/dist/modules/otel/n8n-instrumentation.js +72 -0
  105. package/dist/modules/otel/n8n-instrumentation.js.map +1 -0
  106. package/dist/modules/otel/otel.config.d.ts +9 -0
  107. package/dist/modules/otel/otel.config.js +57 -0
  108. package/dist/modules/otel/otel.config.js.map +1 -0
  109. package/dist/modules/otel/otel.constants.d.ts +15 -0
  110. package/dist/modules/otel/otel.constants.js +20 -0
  111. package/dist/modules/otel/otel.constants.js.map +1 -0
  112. package/dist/modules/otel/otel.module.d.ts +5 -0
  113. package/dist/modules/otel/otel.module.js +80 -0
  114. package/dist/modules/otel/otel.module.js.map +1 -0
  115. package/dist/modules/otel/otel.service.d.ts +18 -0
  116. package/dist/modules/otel/otel.service.js +123 -0
  117. package/dist/modules/otel/otel.service.js.map +1 -0
  118. package/dist/modules/otel/span-registry.d.ts +13 -0
  119. package/dist/modules/otel/span-registry.js +47 -0
  120. package/dist/modules/otel/span-registry.js.map +1 -0
  121. package/dist/modules/provisioning.ee/provisioning.module.js +1 -0
  122. package/dist/modules/provisioning.ee/provisioning.module.js.map +1 -1
  123. package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.d.ts +18 -0
  124. package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js +105 -0
  125. package/dist/modules/provisioning.ee/role-mapping-rule.controller.ee.js.map +1 -0
  126. package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.d.ts +34 -0
  127. package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js +221 -0
  128. package/dist/modules/provisioning.ee/role-mapping-rule.service.ee.js.map +1 -0
  129. package/dist/modules/provisioning.ee/role-mapping-rule.validation.d.ts +3 -0
  130. package/dist/modules/provisioning.ee/role-mapping-rule.validation.js +29 -0
  131. package/dist/modules/provisioning.ee/role-mapping-rule.validation.js.map +1 -0
  132. package/dist/modules/source-control.ee/source-control-import.service.ee.js +6 -0
  133. package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
  134. package/dist/modules/source-control.ee/types/source-control-preferences.js +3 -0
  135. package/dist/modules/source-control.ee/types/source-control-preferences.js.map +1 -1
  136. package/dist/modules/workflow-builder/workflow-builder-session.entity.d.ts +4 -0
  137. package/dist/modules/workflow-builder/workflow-builder-session.entity.js +8 -0
  138. package/dist/modules/workflow-builder/workflow-builder-session.entity.js.map +1 -1
  139. package/dist/modules/workflow-builder/workflow-builder-session.repository.js +14 -2
  140. package/dist/modules/workflow-builder/workflow-builder-session.repository.js.map +1 -1
  141. package/dist/modules/workflow-index/workflow-dependency-query.service.js +26 -3
  142. package/dist/modules/workflow-index/workflow-dependency-query.service.js.map +1 -1
  143. package/dist/modules/workflow-index/workflow-index.service.d.ts +1 -0
  144. package/dist/modules/workflow-index/workflow-index.service.js +15 -3
  145. package/dist/modules/workflow-index/workflow-index.service.js.map +1 -1
  146. package/dist/posthog/index.d.ts +1 -0
  147. package/dist/posthog/index.js +32 -8
  148. package/dist/posthog/index.js.map +1 -1
  149. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +6 -5
  150. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  151. package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +2 -2
  152. package/dist/public-api/v1/handlers/credentials/credentials.service.js +3 -6
  153. package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
  154. package/dist/public-api/v1/handlers/workflows/workflows.handler.d.ts +8 -0
  155. package/dist/public-api/v1/handlers/workflows/workflows.handler.js +44 -0
  156. package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
  157. package/dist/public-api/v1/openapi.yml +54 -1
  158. package/dist/scaling/job-processor.js +3 -0
  159. package/dist/scaling/job-processor.js.map +1 -1
  160. package/dist/scaling/scaling.service.js +1 -2
  161. package/dist/scaling/scaling.service.js.map +1 -1
  162. package/dist/scaling/worker-server.js +1 -1
  163. package/dist/scaling/worker-server.js.map +1 -1
  164. package/dist/services/ai-workflow-builder.service.d.ts +1 -1
  165. package/dist/services/ai-workflow-builder.service.js +3 -6
  166. package/dist/services/ai-workflow-builder.service.js.map +1 -1
  167. package/dist/services/frontend.service.js +2 -1
  168. package/dist/services/frontend.service.js.map +1 -1
  169. package/dist/utils/health-endpoint.util.d.ts +2 -1
  170. package/dist/utils/health-endpoint.util.js +11 -3
  171. package/dist/utils/health-endpoint.util.js.map +1 -1
  172. package/dist/webhooks/waiting-forms.js +3 -1
  173. package/dist/webhooks/waiting-forms.js.map +1 -1
  174. package/dist/webhooks/webhook-request-handler.js +1 -1
  175. package/dist/webhooks/webhook-request-handler.js.map +1 -1
  176. package/dist/workflows/workflow.service.d.ts +6 -1
  177. package/dist/workflows/workflow.service.js +22 -6
  178. package/dist/workflows/workflow.service.js.map +1 -1
  179. package/package.json +30 -23
@@ -10,245 +10,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CommunityPackagesController = void 0;
13
- exports.isNpmError = isNpmError;
14
13
  const decorators_1 = require("@n8n/decorators");
15
- const semver_1 = require("semver");
16
- const constants_1 = require("../../constants");
17
- const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
18
- const internal_server_error_1 = require("../../errors/response-errors/internal-server.error");
19
- const event_service_1 = require("../../events/event.service");
20
- const push_1 = require("../../push");
21
- const community_node_types_service_1 = require("./community-node-types.service");
22
- const community_packages_service_1 = require("./community-packages.service");
23
- const npm_utils_1 = require("./npm-utils");
24
- const n8n_core_1 = require("n8n-core");
25
- const { PACKAGE_NOT_INSTALLED, PACKAGE_NAME_NOT_PROVIDED, PACKAGE_VERSION_NOT_FOUND, PACKAGE_DOES_NOT_CONTAIN_NODES, PACKAGE_NOT_FOUND, } = constants_1.RESPONSE_ERROR_MESSAGES;
26
- const isClientError = (error) => [PACKAGE_VERSION_NOT_FOUND, PACKAGE_DOES_NOT_CONTAIN_NODES, PACKAGE_NOT_FOUND].some((msg) => typeof error.message === 'string' && error.message.includes(msg));
27
- function isNpmError(error) {
28
- return typeof error === 'object' && error !== null && 'code' in error && 'stdout' in error;
29
- }
14
+ const community_packages_lifecycle_service_1 = require("./community-packages.lifecycle.service");
30
15
  let CommunityPackagesController = class CommunityPackagesController {
31
- constructor(push, communityPackagesService, eventService, communityNodeTypesService, instanceSettings) {
32
- this.push = push;
33
- this.communityPackagesService = communityPackagesService;
34
- this.eventService = eventService;
35
- this.communityNodeTypesService = communityNodeTypesService;
36
- this.instanceSettings = instanceSettings;
16
+ constructor(communityPackagesLifecycle) {
17
+ this.communityPackagesLifecycle = communityPackagesLifecycle;
37
18
  }
38
19
  async installPackage(req) {
39
20
  const { name, verify, version } = req.body;
40
- if (!name) {
41
- throw new bad_request_error_1.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
42
- }
43
- if (version && !(0, semver_1.valid)(version)) {
44
- throw new bad_request_error_1.BadRequestError(`Invalid version: ${version}`);
45
- }
46
- let checksum = undefined;
47
- if (verify) {
48
- checksum = this.communityNodeTypesService.findVetted(name)?.checksum;
49
- if (!checksum) {
50
- throw new bad_request_error_1.BadRequestError(`Package ${name} is not vetted for installation`);
51
- }
52
- }
53
- let parsed;
54
- try {
55
- parsed = this.communityPackagesService.parseNpmPackageName(name);
56
- }
57
- catch (error) {
58
- throw new bad_request_error_1.BadRequestError(error instanceof Error ? error.message : 'Failed to parse package name');
59
- }
60
- if (parsed.packageName === constants_1.STARTER_TEMPLATE_NAME) {
61
- throw new bad_request_error_1.BadRequestError([
62
- `Package "${parsed.packageName}" is only a template`,
63
- 'Please enter an actual package to install',
64
- ].join('.'));
65
- }
66
- const isInstalled = await this.communityPackagesService.isPackageInstalled(parsed.packageName);
67
- const hasLoaded = this.communityPackagesService.hasPackageLoaded(name);
68
- if (isInstalled && hasLoaded) {
69
- throw new bad_request_error_1.BadRequestError([
70
- `Package "${parsed.packageName}" is already installed`,
71
- 'To update it, click the corresponding button in the UI',
72
- ].join('.'));
73
- }
74
- const packageStatus = await this.communityPackagesService.checkNpmPackageStatus(name);
75
- if (packageStatus.status !== 'OK') {
76
- throw new bad_request_error_1.BadRequestError(`Package "${name}" is banned so it cannot be installed`);
77
- }
78
- const packageVersion = version ?? parsed.version;
79
- let installedPackage;
80
- try {
81
- installedPackage = await this.communityPackagesService.installPackage(parsed.packageName, packageVersion, checksum);
82
- }
83
- catch (error) {
84
- const errorMessage = error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON;
85
- this.eventService.emit('community-package-installed', {
86
- user: req.user,
87
- inputString: name,
88
- packageName: parsed.packageName,
89
- success: false,
90
- packageVersion,
91
- failureReason: errorMessage,
92
- });
93
- let message = [`Error loading package "${name}" `, errorMessage].join(':');
94
- if (error instanceof Error && error.cause instanceof Error) {
95
- message += `\nCause: ${error.cause.message}`;
96
- }
97
- const clientError = error instanceof Error ? isClientError(error) : false;
98
- throw new (clientError ? bad_request_error_1.BadRequestError : internal_server_error_1.InternalServerError)(message);
99
- }
100
- if (!hasLoaded)
101
- this.communityPackagesService.removePackageFromMissingList(name);
102
- installedPackage.installedNodes.forEach((node) => {
103
- this.push.broadcast({
104
- type: 'reloadNodeType',
105
- data: {
106
- name: node.type,
107
- version: node.latestVersion,
108
- },
109
- });
110
- });
111
- this.eventService.emit('community-package-installed', {
112
- user: req.user,
113
- inputString: name,
114
- packageName: parsed.packageName,
115
- success: true,
116
- packageVersion,
117
- packageNodeNames: installedPackage.installedNodes.map((node) => node.name),
118
- packageAuthor: installedPackage.authorName,
119
- packageAuthorEmail: installedPackage.authorEmail,
120
- });
121
- return installedPackage;
21
+ return await this.communityPackagesLifecycle.install({ name, verify, version }, req.user, 'ui');
122
22
  }
123
23
  async getInstalledPackages() {
124
- const installedPackages = await this.communityPackagesService.getAllInstalledPackages();
125
- if (installedPackages.length === 0)
126
- return [];
127
- let pendingUpdates;
128
- try {
129
- await (0, npm_utils_1.executeNpmCommand)(['outdated', '--json'], {
130
- doNotHandleError: true,
131
- cwd: this.instanceSettings.nodesDownloadDir,
132
- });
133
- }
134
- catch (error) {
135
- if (isNpmError(error) && error.code === 1) {
136
- pendingUpdates = JSON.parse(error.stdout);
137
- }
138
- }
139
- let hydratedPackages = this.communityPackagesService.matchPackagesWithUpdates(installedPackages, pendingUpdates);
140
- try {
141
- if (this.communityPackagesService.hasMissingPackages) {
142
- hydratedPackages = this.communityPackagesService.matchMissingPackages(hydratedPackages);
143
- }
144
- }
145
- catch {
146
- }
147
- return hydratedPackages;
24
+ return await this.communityPackagesLifecycle.listInstalledPackages();
148
25
  }
149
26
  async uninstallPackage(req) {
150
27
  const { name } = req.query;
151
- if (!name) {
152
- throw new bad_request_error_1.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
153
- }
154
- try {
155
- this.communityPackagesService.parseNpmPackageName(name);
156
- }
157
- catch (error) {
158
- const message = error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON;
159
- throw new bad_request_error_1.BadRequestError(message);
160
- }
161
- const installedPackage = await this.communityPackagesService.findInstalledPackage(name);
162
- if (!installedPackage) {
163
- throw new bad_request_error_1.BadRequestError(PACKAGE_NOT_INSTALLED);
164
- }
165
- try {
166
- await this.communityPackagesService.removePackage(name, installedPackage);
167
- }
168
- catch (error) {
169
- const message = [
170
- `Error removing package "${name}"`,
171
- error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON,
172
- ].join(':');
173
- throw new internal_server_error_1.InternalServerError(message, error);
174
- }
175
- installedPackage.installedNodes.forEach((node) => {
176
- this.push.broadcast({
177
- type: 'removeNodeType',
178
- data: {
179
- name: node.type,
180
- version: node.latestVersion,
181
- },
182
- });
183
- });
184
- this.eventService.emit('community-package-deleted', {
185
- user: req.user,
186
- packageName: name,
187
- packageVersion: installedPackage.installedVersion,
188
- packageNodeNames: installedPackage.installedNodes.map((node) => node.name),
189
- packageAuthor: installedPackage.authorName,
190
- packageAuthorEmail: installedPackage.authorEmail,
191
- });
28
+ await this.communityPackagesLifecycle.uninstall(name, req.user, 'badRequest');
192
29
  }
193
30
  async updatePackage(req) {
194
31
  const { name, version, checksum } = req.body;
195
- if (!name) {
196
- throw new bad_request_error_1.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
197
- }
198
- if (version && !(0, semver_1.valid)(version)) {
199
- throw new bad_request_error_1.BadRequestError(`Invalid version: ${version}`);
200
- }
201
- const previouslyInstalledPackage = await this.communityPackagesService.findInstalledPackage(name);
202
- if (!previouslyInstalledPackage) {
203
- throw new bad_request_error_1.BadRequestError(PACKAGE_NOT_INSTALLED);
204
- }
205
- try {
206
- const newInstalledPackage = await this.communityPackagesService.updatePackage(this.communityPackagesService.parseNpmPackageName(name).packageName, previouslyInstalledPackage, version, checksum);
207
- previouslyInstalledPackage.installedNodes.forEach((node) => {
208
- this.push.broadcast({
209
- type: 'removeNodeType',
210
- data: {
211
- name: node.type,
212
- version: node.latestVersion,
213
- },
214
- });
215
- });
216
- newInstalledPackage.installedNodes.forEach((node) => {
217
- this.push.broadcast({
218
- type: 'reloadNodeType',
219
- data: {
220
- name: node.type,
221
- version: node.latestVersion,
222
- },
223
- });
224
- });
225
- this.eventService.emit('community-package-updated', {
226
- user: req.user,
227
- packageName: name,
228
- packageVersionCurrent: previouslyInstalledPackage.installedVersion,
229
- packageVersionNew: newInstalledPackage.installedVersion,
230
- packageNodeNames: newInstalledPackage.installedNodes.map((n) => n.name),
231
- packageAuthor: newInstalledPackage.authorName,
232
- packageAuthorEmail: newInstalledPackage.authorEmail,
233
- });
234
- return newInstalledPackage;
235
- }
236
- catch (error) {
237
- previouslyInstalledPackage.installedNodes.forEach((node) => {
238
- this.push.broadcast({
239
- type: 'removeNodeType',
240
- data: {
241
- name: node.type,
242
- version: node.latestVersion,
243
- },
244
- });
245
- });
246
- const message = [
247
- `Error removing package "${name}"`,
248
- error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON,
249
- ].join(':');
250
- throw new internal_server_error_1.InternalServerError(message, error);
251
- }
32
+ return await this.communityPackagesLifecycle.update({ name, version, checksum }, req.user, 'badRequest');
252
33
  }
253
34
  };
254
35
  exports.CommunityPackagesController = CommunityPackagesController;
@@ -282,10 +63,6 @@ __decorate([
282
63
  ], CommunityPackagesController.prototype, "updatePackage", null);
283
64
  exports.CommunityPackagesController = CommunityPackagesController = __decorate([
284
65
  (0, decorators_1.RestController)('/community-packages'),
285
- __metadata("design:paramtypes", [push_1.Push,
286
- community_packages_service_1.CommunityPackagesService,
287
- event_service_1.EventService,
288
- community_node_types_service_1.CommunityNodeTypesService,
289
- n8n_core_1.InstanceSettings])
66
+ __metadata("design:paramtypes", [community_packages_lifecycle_service_1.CommunityPackagesLifecycleService])
290
67
  ], CommunityPackagesController);
291
68
  //# sourceMappingURL=community-packages.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"community-packages.controller.js","sourceRoot":"","sources":["../../../src/modules/community-packages/community-packages.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAkCA,gCAEC;AApCD,gDAAwF;AACxF,mCAA+B;AAE/B,2CAIqB;AACrB,kFAA6E;AAC7E,0FAAqF;AACrF,0DAAsD;AACtD,iCAA8B;AAG9B,iFAA2E;AAC3E,6EAAwE;AAGxE,2CAAgD;AAChD,uCAA4C;AAE5C,MAAM,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,iBAAiB,GACjB,GAAG,mCAAuB,CAAC;AAE5B,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE,CACtC,CAAC,yBAAyB,EAAE,8BAA8B,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAClF,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CACzE,CAAC;AAEH,SAAgB,UAAU,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC5F,CAAC;AAGM,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACvC,YACkB,IAAU,EACV,wBAAkD,EAClD,YAA0B,EAC1B,yBAAoD,EACpD,gBAAkC;QAJlC,SAAI,GAAJ,IAAI,CAAM;QACV,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,iBAAY,GAAZ,YAAY,CAAc;QAC1B,8BAAyB,GAAzB,yBAAyB,CAA2B;QACpD,qBAAgB,GAAhB,gBAAgB,CAAkB;IACjD,CAAC;IAIE,AAAN,KAAK,CAAC,cAAc,CAAC,GAAqB;QACzC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,mCAAe,CAAC,yBAAyB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,mCAAe,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,QAAQ,GAAuB,SAAS,CAAC;QAG7C,IAAI,MAAM,EAAE,CAAC;YACZ,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;YACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,IAAI,mCAAe,CAAC,WAAW,IAAI,iCAAiC,CAAC,CAAC;YAC7E,CAAC;QACF,CAAC;QAED,IAAI,MAA2C,CAAC;QAEhD,IAAI,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,mCAAe,CACxB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CACvE,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,KAAK,iCAAqB,EAAE,CAAC;YAClD,MAAM,IAAI,mCAAe,CACxB;gBACC,YAAY,MAAM,CAAC,WAAW,sBAAsB;gBACpD,2CAA2C;aAC3C,CAAC,IAAI,CAAC,GAAG,CAAC,CACX,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEvE,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,mCAAe,CACxB;gBACC,YAAY,MAAM,CAAC,WAAW,wBAAwB;gBACtD,wDAAwD;aACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACX,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEtF,IAAI,aAAa,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,mCAAe,CAAC,YAAY,IAAI,uCAAuC,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QACjD,IAAI,gBAAmC,CAAC;QACxC,IAAI,CAAC;YACJ,gBAAgB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CACpE,MAAM,CAAC,WAAW,EAClB,cAAc,EACd,QAAQ,CACR,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAsB,CAAC;YAErF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACrD,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,KAAK;gBACd,cAAc;gBACd,aAAa,EAAE,YAAY;aAC3B,CAAC,CAAC;YAEH,IAAI,OAAO,GAAG,CAAC,0BAA0B,IAAI,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC5D,OAAO,IAAI,YAAY,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9C,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,mCAAe,CAAC,CAAC,CAAC,2CAAmB,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,wBAAwB,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAGjF,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI,CAAC,aAAa;iBAC3B;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACrD,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,IAAI;YACb,cAAc;YACd,gBAAgB,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1E,aAAa,EAAE,gBAAgB,CAAC,UAAU;YAC1C,kBAAkB,EAAE,gBAAgB,CAAC,WAAW;SAChD,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB;QACzB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,CAAC;QAExF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9C,IAAI,cAA8D,CAAC;QAEnE,IAAI,CAAC;YACJ,MAAM,IAAA,6BAAiB,EAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;gBAC/C,gBAAgB,EAAE,IAAI;gBACtB,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;aAC3C,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAIhB,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3C,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAuC,CAAC;YACjF,CAAC;QACF,CAAC;QAED,IAAI,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAC5E,iBAAiB,EACjB,cAAc,CACd,CAAC;QAEF,IAAI,CAAC;YACJ,IAAI,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,CAAC;gBACtD,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YACzF,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAIK,AAAN,KAAK,CAAC,gBAAgB,CAAC,GAAuB;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,mCAAe,CAAC,yBAAyB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC;YACJ,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAsB,CAAC;YAEhF,MAAM,IAAI,mCAAe,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAExF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,IAAI,mCAAe,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG;gBACf,2BAA2B,IAAI,GAAG;gBAClC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAsB;aAC/D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,MAAM,IAAI,2CAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAGD,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI,CAAC,aAAa;iBAC3B;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACnD,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,gBAAgB,CAAC,gBAAgB;YACjD,gBAAgB,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1E,aAAa,EAAE,gBAAgB,CAAC,UAAU;YAC1C,kBAAkB,EAAE,gBAAgB,CAAC,WAAW;SAChD,CAAC,CAAC;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,aAAa,CAAC,GAAuB;QAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,mCAAe,CAAC,yBAAyB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,mCAAe,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,0BAA0B,GAC/B,MAAM,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACjC,MAAM,IAAI,mCAAe,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAC5E,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,WAAW,EACnE,0BAA0B,EAC1B,OAAO,EACP,QAAQ,CACR,CAAC;YAGF,0BAA0B,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,aAAa;qBAC3B;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,aAAa;qBAC3B;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACnD,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,IAAI;gBACjB,qBAAqB,EAAE,0BAA0B,CAAC,gBAAgB;gBAClE,iBAAiB,EAAE,mBAAmB,CAAC,gBAAgB;gBACvD,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvE,aAAa,EAAE,mBAAmB,CAAC,UAAU;gBAC7C,kBAAkB,EAAE,mBAAmB,CAAC,WAAW;aACnD,CAAC,CAAC;YAEH,OAAO,mBAAmB,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,0BAA0B,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE;wBACL,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,OAAO,EAAE,IAAI,CAAC,aAAa;qBAC3B;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG;gBACf,2BAA2B,IAAI,GAAG;gBAClC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAsB;aAC/D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,MAAM,IAAI,2CAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;CACD,CAAA;AA1SY,kEAA2B;AAWjC;IAFL,IAAA,iBAAI,EAAC,GAAG,CAAC;IACT,IAAA,wBAAW,EAAC,0BAA0B,CAAC;;;;iEAiHvC;AAIK;IAFL,IAAA,gBAAG,EAAC,GAAG,CAAC;IACR,IAAA,wBAAW,EAAC,uBAAuB,CAAC;;;;uEAoCpC;AAIK;IAFL,IAAA,mBAAM,EAAC,GAAG,CAAC;IACX,IAAA,wBAAW,EAAC,4BAA4B,CAAC;;;;mEAoDzC;AAIK;IAFL,IAAA,kBAAK,EAAC,GAAG,CAAC;IACV,IAAA,wBAAW,EAAC,yBAAyB,CAAC;;;;gEA6EtC;sCAzSW,2BAA2B;IADvC,IAAA,2BAAc,EAAC,qBAAqB,CAAC;qCAGb,WAAI;QACgB,qDAAwB;QACpC,4BAAY;QACC,wDAAyB;QAClC,2BAAgB;GANxC,2BAA2B,CA0SvC"}
1
+ {"version":3,"file":"community-packages.controller.js","sourceRoot":"","sources":["../../../src/modules/community-packages/community-packages.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAAwF;AAIxF,iGAA2F;AAGpF,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACvC,YAA6B,0BAA6D;QAA7D,+BAA0B,GAA1B,0BAA0B,CAAmC;IAAG,CAAC;IAIxF,AAAN,KAAK,CAAC,cAAc,CAAC,GAAqB;QACzC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3C,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjG,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB;QACzB,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,EAAE,CAAC;IACtE,CAAC;IAIK,AAAN,KAAK,CAAC,gBAAgB,CAAC,GAAuB;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAE3B,MAAM,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/E,CAAC;IAIK,AAAN,KAAK,CAAC,aAAa,CAAC,GAAuB;QAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE7C,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAClD,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC3B,GAAG,CAAC,IAAI,EACR,YAAY,CACZ,CAAC;IACH,CAAC;CACD,CAAA;AApCY,kEAA2B;AAKjC;IAFL,IAAA,iBAAI,EAAC,GAAG,CAAC;IACT,IAAA,wBAAW,EAAC,0BAA0B,CAAC;;;;iEAKvC;AAIK;IAFL,IAAA,gBAAG,EAAC,GAAG,CAAC;IACR,IAAA,wBAAW,EAAC,uBAAuB,CAAC;;;;uEAGpC;AAIK;IAFL,IAAA,mBAAM,EAAC,GAAG,CAAC;IACX,IAAA,wBAAW,EAAC,4BAA4B,CAAC;;;;mEAKzC;AAIK;IAFL,IAAA,kBAAK,EAAC,GAAG,CAAC;IACV,IAAA,wBAAW,EAAC,yBAAyB,CAAC;;;;gEAStC;sCAnCW,2BAA2B;IADvC,IAAA,2BAAc,EAAC,qBAAqB,CAAC;qCAEoB,wEAAiC;GAD9E,2BAA2B,CAoCvC"}
@@ -0,0 +1,32 @@
1
+ import { Logger } from '@n8n/backend-common';
2
+ import type { UserLike } from '../../events/maps/relay.event-map';
3
+ import { EventService } from '../../events/event.service';
4
+ import { Push } from '../../push';
5
+ import { InstanceSettings } from 'n8n-core';
6
+ import { type PublicInstalledPackage } from 'n8n-workflow';
7
+ import { CommunityNodeTypesService } from './community-node-types.service';
8
+ import { CommunityPackagesService } from './community-packages.service';
9
+ import type { InstalledPackages } from './installed-packages.entity';
10
+ export type CommunityPackageInstallPresentation = 'ui' | 'publicApi';
11
+ export type MissingInstalledPackageBehavior = 'badRequest' | 'notFound';
12
+ export declare class CommunityPackagesLifecycleService {
13
+ private readonly logger;
14
+ private readonly push;
15
+ private readonly communityPackagesService;
16
+ private readonly eventService;
17
+ private readonly communityNodeTypesService;
18
+ private readonly instanceSettings;
19
+ constructor(logger: Logger, push: Push, communityPackagesService: CommunityPackagesService, eventService: EventService, communityNodeTypesService: CommunityNodeTypesService, instanceSettings: InstanceSettings);
20
+ listInstalledPackages(): Promise<PublicInstalledPackage[] | InstalledPackages[]>;
21
+ install(args: {
22
+ name: string | undefined;
23
+ version?: string;
24
+ verify?: boolean;
25
+ }, user: UserLike, presentation: CommunityPackageInstallPresentation): Promise<InstalledPackages>;
26
+ update(args: {
27
+ name: string | undefined;
28
+ version?: string;
29
+ checksum?: string;
30
+ }, user: UserLike, whenMissing: MissingInstalledPackageBehavior): Promise<InstalledPackages>;
31
+ uninstall(packageName: string | undefined, user: UserLike, whenMissing: MissingInstalledPackageBehavior): Promise<void>;
32
+ }
@@ -0,0 +1,282 @@
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.CommunityPackagesLifecycleService = void 0;
13
+ const backend_common_1 = require("@n8n/backend-common");
14
+ const di_1 = require("@n8n/di");
15
+ const constants_1 = require("../../constants");
16
+ const event_service_1 = require("../../events/event.service");
17
+ const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
18
+ const internal_server_error_1 = require("../../errors/response-errors/internal-server.error");
19
+ const not_found_error_1 = require("../../errors/response-errors/not-found.error");
20
+ const push_1 = require("../../push");
21
+ const n8n_core_1 = require("n8n-core");
22
+ const semver_1 = require("semver");
23
+ const n8n_workflow_1 = require("n8n-workflow");
24
+ const community_node_types_service_1 = require("./community-node-types.service");
25
+ const community_packages_service_1 = require("./community-packages.service");
26
+ const npm_utils_1 = require("./npm-utils");
27
+ const { PACKAGE_NOT_INSTALLED, PACKAGE_NAME_NOT_PROVIDED, PACKAGE_VERSION_NOT_FOUND, PACKAGE_DOES_NOT_CONTAIN_NODES, PACKAGE_NOT_FOUND, } = constants_1.RESPONSE_ERROR_MESSAGES;
28
+ const isCommunityPackageInstallClientError = (error) => [PACKAGE_VERSION_NOT_FOUND, PACKAGE_DOES_NOT_CONTAIN_NODES, PACKAGE_NOT_FOUND].some((msg) => typeof error.message === 'string' && error.message.includes(msg));
29
+ let CommunityPackagesLifecycleService = class CommunityPackagesLifecycleService {
30
+ constructor(logger, push, communityPackagesService, eventService, communityNodeTypesService, instanceSettings) {
31
+ this.logger = logger;
32
+ this.push = push;
33
+ this.communityPackagesService = communityPackagesService;
34
+ this.eventService = eventService;
35
+ this.communityNodeTypesService = communityNodeTypesService;
36
+ this.instanceSettings = instanceSettings;
37
+ }
38
+ async listInstalledPackages() {
39
+ const installedPackages = await this.communityPackagesService.getAllInstalledPackages();
40
+ if (installedPackages.length === 0)
41
+ return [];
42
+ let pendingUpdates;
43
+ try {
44
+ await (0, npm_utils_1.executeNpmCommand)(['outdated', '--json'], {
45
+ doNotHandleError: true,
46
+ cwd: this.instanceSettings.nodesDownloadDir,
47
+ });
48
+ }
49
+ catch (error) {
50
+ if ((0, npm_utils_1.isNpmExecErrorWithStdout)(error) && error.code === 1) {
51
+ try {
52
+ pendingUpdates = (0, n8n_workflow_1.jsonParse)(error.stdout.trim());
53
+ }
54
+ catch (parseError) {
55
+ this.logger.warn('Failed to parse npm outdated output', {
56
+ error: (0, n8n_workflow_1.ensureError)(parseError),
57
+ });
58
+ }
59
+ }
60
+ }
61
+ let packages = this.communityPackagesService.matchPackagesWithUpdates(installedPackages, pendingUpdates);
62
+ try {
63
+ if (this.communityPackagesService.hasMissingPackages) {
64
+ packages = this.communityPackagesService.matchMissingPackages(packages);
65
+ }
66
+ }
67
+ catch {
68
+ }
69
+ return packages;
70
+ }
71
+ async install(args, user, presentation) {
72
+ const { name, verify, version } = args;
73
+ if (!name) {
74
+ throw new bad_request_error_1.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
75
+ }
76
+ if (version && !(0, semver_1.valid)(version)) {
77
+ throw new bad_request_error_1.BadRequestError(`Invalid version: ${version}`);
78
+ }
79
+ let checksum;
80
+ if (verify) {
81
+ checksum = this.communityNodeTypesService.findVetted(name)?.checksum;
82
+ if (!checksum) {
83
+ throw new bad_request_error_1.BadRequestError(`Package ${name} is not vetted for installation`);
84
+ }
85
+ }
86
+ let parsed;
87
+ try {
88
+ parsed = this.communityPackagesService.parseNpmPackageName(name);
89
+ }
90
+ catch (error) {
91
+ throw new bad_request_error_1.BadRequestError(error instanceof Error ? error.message : 'Failed to parse package name');
92
+ }
93
+ if (parsed.packageName === constants_1.STARTER_TEMPLATE_NAME) {
94
+ const templateMessage = presentation === 'ui'
95
+ ? [
96
+ `Package "${parsed.packageName}" is only a template`,
97
+ 'Please enter an actual package to install',
98
+ ].join('.')
99
+ : `Package "${parsed.packageName}" is only a template. Please enter an actual package to install`;
100
+ throw new bad_request_error_1.BadRequestError(templateMessage);
101
+ }
102
+ const isInstalled = await this.communityPackagesService.isPackageInstalled(parsed.packageName);
103
+ const hasLoaded = this.communityPackagesService.hasPackageLoaded(name);
104
+ if (isInstalled && hasLoaded) {
105
+ const alreadyMessage = presentation === 'ui'
106
+ ? [
107
+ `Package "${parsed.packageName}" is already installed`,
108
+ 'To update it, click the corresponding button in the UI',
109
+ ].join('.')
110
+ : `Package "${parsed.packageName}" is already installed`;
111
+ throw new bad_request_error_1.BadRequestError(alreadyMessage);
112
+ }
113
+ const packageStatus = await this.communityPackagesService.checkNpmPackageStatus(name);
114
+ if (packageStatus.status !== 'OK') {
115
+ throw new bad_request_error_1.BadRequestError(`Package "${name}" is banned so it cannot be installed`);
116
+ }
117
+ const packageVersion = version ?? parsed.version;
118
+ let installedPackage;
119
+ try {
120
+ installedPackage = await this.communityPackagesService.installPackage(parsed.packageName, packageVersion, checksum);
121
+ }
122
+ catch (error) {
123
+ const errorMessage = error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON;
124
+ this.eventService.emit('community-package-installed', {
125
+ user,
126
+ inputString: name,
127
+ packageName: parsed.packageName,
128
+ success: false,
129
+ packageVersion,
130
+ failureReason: errorMessage,
131
+ });
132
+ let message = [`Error loading package "${name}" `, errorMessage].join(':');
133
+ if (error instanceof Error && error.cause instanceof Error) {
134
+ message += `\nCause: ${error.cause.message}`;
135
+ }
136
+ const clientError = error instanceof Error ? isCommunityPackageInstallClientError(error) : false;
137
+ throw new (clientError ? bad_request_error_1.BadRequestError : internal_server_error_1.InternalServerError)(message);
138
+ }
139
+ if (!hasLoaded)
140
+ this.communityPackagesService.removePackageFromMissingList(name);
141
+ installedPackage.installedNodes.forEach((node) => {
142
+ this.push.broadcast({
143
+ type: 'reloadNodeType',
144
+ data: {
145
+ name: node.type,
146
+ version: node.latestVersion,
147
+ },
148
+ });
149
+ });
150
+ this.eventService.emit('community-package-installed', {
151
+ user,
152
+ inputString: name,
153
+ packageName: parsed.packageName,
154
+ success: true,
155
+ packageVersion,
156
+ packageNodeNames: installedPackage.installedNodes.map((node) => node.name),
157
+ packageAuthor: installedPackage.authorName,
158
+ packageAuthorEmail: installedPackage.authorEmail,
159
+ });
160
+ return installedPackage;
161
+ }
162
+ async update(args, user, whenMissing) {
163
+ const { name, version, checksum } = args;
164
+ if (!name) {
165
+ throw new bad_request_error_1.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
166
+ }
167
+ if (version && !(0, semver_1.valid)(version)) {
168
+ throw new bad_request_error_1.BadRequestError(`Invalid version: ${version}`);
169
+ }
170
+ const previouslyInstalledPackage = await this.communityPackagesService.findInstalledPackage(name);
171
+ if (!previouslyInstalledPackage) {
172
+ if (whenMissing === 'notFound') {
173
+ throw new not_found_error_1.NotFoundError(PACKAGE_NOT_INSTALLED);
174
+ }
175
+ throw new bad_request_error_1.BadRequestError(PACKAGE_NOT_INSTALLED);
176
+ }
177
+ try {
178
+ const newInstalledPackage = await this.communityPackagesService.updatePackage(this.communityPackagesService.parseNpmPackageName(name).packageName, previouslyInstalledPackage, version, checksum);
179
+ previouslyInstalledPackage.installedNodes.forEach((node) => {
180
+ this.push.broadcast({
181
+ type: 'removeNodeType',
182
+ data: {
183
+ name: node.type,
184
+ version: node.latestVersion,
185
+ },
186
+ });
187
+ });
188
+ newInstalledPackage.installedNodes.forEach((node) => {
189
+ this.push.broadcast({
190
+ type: 'reloadNodeType',
191
+ data: {
192
+ name: node.type,
193
+ version: node.latestVersion,
194
+ },
195
+ });
196
+ });
197
+ this.eventService.emit('community-package-updated', {
198
+ user,
199
+ packageName: name,
200
+ packageVersionCurrent: previouslyInstalledPackage.installedVersion,
201
+ packageVersionNew: newInstalledPackage.installedVersion,
202
+ packageNodeNames: newInstalledPackage.installedNodes.map((n) => n.name),
203
+ packageAuthor: newInstalledPackage.authorName,
204
+ packageAuthorEmail: newInstalledPackage.authorEmail,
205
+ });
206
+ return newInstalledPackage;
207
+ }
208
+ catch (error) {
209
+ previouslyInstalledPackage.installedNodes.forEach((node) => {
210
+ this.push.broadcast({
211
+ type: 'removeNodeType',
212
+ data: {
213
+ name: node.type,
214
+ version: node.latestVersion,
215
+ },
216
+ });
217
+ });
218
+ const message = [
219
+ `Error updating package "${name}"`,
220
+ error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON,
221
+ ].join(':');
222
+ throw new internal_server_error_1.InternalServerError(message, error);
223
+ }
224
+ }
225
+ async uninstall(packageName, user, whenMissing) {
226
+ if (!packageName) {
227
+ throw new bad_request_error_1.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
228
+ }
229
+ try {
230
+ this.communityPackagesService.parseNpmPackageName(packageName);
231
+ }
232
+ catch (error) {
233
+ const message = error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON;
234
+ throw new bad_request_error_1.BadRequestError(message);
235
+ }
236
+ const installedPackage = await this.communityPackagesService.findInstalledPackage(packageName);
237
+ if (!installedPackage) {
238
+ if (whenMissing === 'notFound') {
239
+ throw new not_found_error_1.NotFoundError(PACKAGE_NOT_INSTALLED);
240
+ }
241
+ throw new bad_request_error_1.BadRequestError(PACKAGE_NOT_INSTALLED);
242
+ }
243
+ try {
244
+ await this.communityPackagesService.removePackage(packageName, installedPackage);
245
+ }
246
+ catch (error) {
247
+ const message = [
248
+ `Error removing package "${packageName}"`,
249
+ error instanceof Error ? error.message : constants_1.UNKNOWN_FAILURE_REASON,
250
+ ].join(':');
251
+ throw new internal_server_error_1.InternalServerError(message, error);
252
+ }
253
+ installedPackage.installedNodes.forEach((node) => {
254
+ this.push.broadcast({
255
+ type: 'removeNodeType',
256
+ data: {
257
+ name: node.type,
258
+ version: node.latestVersion,
259
+ },
260
+ });
261
+ });
262
+ this.eventService.emit('community-package-deleted', {
263
+ user,
264
+ packageName,
265
+ packageVersion: installedPackage.installedVersion,
266
+ packageNodeNames: installedPackage.installedNodes.map((node) => node.name),
267
+ packageAuthor: installedPackage.authorName,
268
+ packageAuthorEmail: installedPackage.authorEmail,
269
+ });
270
+ }
271
+ };
272
+ exports.CommunityPackagesLifecycleService = CommunityPackagesLifecycleService;
273
+ exports.CommunityPackagesLifecycleService = CommunityPackagesLifecycleService = __decorate([
274
+ (0, di_1.Service)(),
275
+ __metadata("design:paramtypes", [backend_common_1.Logger,
276
+ push_1.Push,
277
+ community_packages_service_1.CommunityPackagesService,
278
+ event_service_1.EventService,
279
+ community_node_types_service_1.CommunityNodeTypesService,
280
+ n8n_core_1.InstanceSettings])
281
+ ], CommunityPackagesLifecycleService);
282
+ //# sourceMappingURL=community-packages.lifecycle.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community-packages.lifecycle.service.js","sourceRoot":"","sources":["../../../src/modules/community-packages/community-packages.lifecycle.service.ts"],"names":[],"mappings":"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"}
@@ -138,15 +138,15 @@ let CommunityPackagesService = class CommunityPackagesService {
138
138
  }
139
139
  })
140
140
  .filter((i) => i !== undefined);
141
- const hydratedPackageList = [];
142
- installedPackages.forEach((installedPackage) => {
143
- const hydratedInstalledPackage = { ...installedPackage };
144
- if (missingPackagesList.includes(hydratedInstalledPackage.packageName)) {
145
- hydratedInstalledPackage.failedLoading = true;
141
+ const packages = [];
142
+ for (const installedPackage of installedPackages) {
143
+ const pkg = { ...installedPackage };
144
+ if (missingPackagesList.includes(pkg.packageName)) {
145
+ pkg.failedLoading = true;
146
146
  }
147
- hydratedPackageList.push(hydratedInstalledPackage);
148
- });
149
- return hydratedPackageList;
147
+ packages.push(pkg);
148
+ }
149
+ return packages;
150
150
  }
151
151
  async checkNpmPackageStatus(packageName) {
152
152
  const N8N_BACKEND_SERVICE_URL = 'https://api.n8n.io/api/package';