n8n 2.30.4 → 2.31.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 (518) hide show
  1. package/dist/agent-library-bundle.js +9 -0
  2. package/dist/blob-storage/azure-byte-store.ee.d.ts +1 -1
  3. package/dist/blob-storage/azure-byte-store.ee.js +3 -18
  4. package/dist/blob-storage/azure-byte-store.ee.js.map +1 -1
  5. package/dist/blob-storage/json-store.js +3 -0
  6. package/dist/blob-storage/json-store.js.map +1 -1
  7. package/dist/blob-storage/s3-byte-store.ee.d.ts +1 -1
  8. package/dist/blob-storage/s3-byte-store.ee.js +2 -17
  9. package/dist/blob-storage/s3-byte-store.ee.js.map +1 -1
  10. package/dist/build.tsbuildinfo +1 -1
  11. package/dist/commands/base-command.d.ts +2 -2
  12. package/dist/commands/base-command.js +5 -5
  13. package/dist/commands/base-command.js.map +1 -1
  14. package/dist/commands/start.js +2 -0
  15. package/dist/commands/start.js.map +1 -1
  16. package/dist/constants/workflow-reviews.d.ts +4 -0
  17. package/dist/constants/workflow-reviews.js +14 -0
  18. package/dist/constants/workflow-reviews.js.map +1 -0
  19. package/dist/constants.js +2 -0
  20. package/dist/constants.js.map +1 -1
  21. package/dist/controllers/e2e.controller.js +1 -0
  22. package/dist/controllers/e2e.controller.js.map +1 -1
  23. package/dist/controllers/security-settings.controller.d.ts +15 -10
  24. package/dist/controllers/security-settings.controller.js +41 -65
  25. package/dist/controllers/security-settings.controller.js.map +1 -1
  26. package/dist/controllers/users.controller.d.ts +2 -2
  27. package/dist/credentials/credential-connection-status-provider.interface.d.ts +2 -1
  28. package/dist/credentials/credential-connection-status-proxy.d.ts +2 -1
  29. package/dist/credentials/credential-connection-status-proxy.js +7 -2
  30. package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
  31. package/dist/credentials/credentials.controller.js +5 -5
  32. package/dist/credentials/credentials.controller.js.map +1 -1
  33. package/dist/credentials/credentials.service.d.ts +1 -0
  34. package/dist/credentials/credentials.service.ee.d.ts +3 -1
  35. package/dist/credentials/credentials.service.ee.js +10 -2
  36. package/dist/credentials/credentials.service.ee.js.map +1 -1
  37. package/dist/credentials/credentials.service.js +14 -0
  38. package/dist/credentials/credentials.service.js.map +1 -1
  39. package/dist/eventbus/event-message-classes/index.d.ts +2 -2
  40. package/dist/eventbus/event-message-classes/index.js +4 -2
  41. package/dist/eventbus/event-message-classes/index.js.map +1 -1
  42. package/dist/events/maps/relay.event-map.d.ts +19 -2
  43. package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
  44. package/dist/events/relays/log-streaming.event-relay.js +30 -2
  45. package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
  46. package/dist/events/relays/telemetry.event-relay.d.ts +3 -0
  47. package/dist/events/relays/telemetry.event-relay.js +88 -10
  48. package/dist/events/relays/telemetry.event-relay.js.map +1 -1
  49. package/dist/execution-lifecycle/execution-lifecycle-hooks.js +21 -4
  50. package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
  51. package/dist/executions/execution-data/db-store.d.ts +8 -15
  52. package/dist/executions/execution-data/db-store.js +12 -25
  53. package/dist/executions/execution-data/db-store.js.map +1 -1
  54. package/dist/executions/execution-data/execution-data-json-store.d.ts +7 -0
  55. package/dist/executions/execution-data/execution-data-json-store.js +45 -0
  56. package/dist/executions/execution-data/execution-data-json-store.js.map +1 -0
  57. package/dist/executions/execution-data/types.d.ts +3 -14
  58. package/dist/executions/execution-data/types.js.map +1 -1
  59. package/dist/executions/execution-persistence.d.ts +7 -14
  60. package/dist/executions/execution-persistence.js +40 -88
  61. package/dist/executions/execution-persistence.js.map +1 -1
  62. package/dist/interfaces.d.ts +4 -1
  63. package/dist/load-nodes-and-credentials.js +1 -1
  64. package/dist/load-nodes-and-credentials.js.map +1 -1
  65. package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
  66. package/dist/metrics/prometheus/prometheus.service.js +5 -2
  67. package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
  68. package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +35 -0
  69. package/dist/metrics/prometheus/scheduler-metrics.service.js +187 -0
  70. package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -0
  71. package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
  72. package/dist/modules/agents/adapters/agents-credential-provider.js +13 -3
  73. package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
  74. package/dist/modules/agents/agent-config.service.js +11 -1
  75. package/dist/modules/agents/agent-config.service.js.map +1 -1
  76. package/dist/modules/agents/agent-knowledge.controller.js +1 -1
  77. package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
  78. package/dist/modules/agents/agent-upload.middleware.d.ts +2 -0
  79. package/dist/modules/agents/agent-upload.middleware.js +11 -0
  80. package/dist/modules/agents/agent-upload.middleware.js.map +1 -1
  81. package/dist/modules/agents/agent-validation.service.js +19 -2
  82. package/dist/modules/agents/agent-validation.service.js.map +1 -1
  83. package/dist/modules/agents/agent-vector-stores.controller.d.ts +11 -0
  84. package/dist/modules/agents/agent-vector-stores.controller.js +41 -0
  85. package/dist/modules/agents/agent-vector-stores.controller.js.map +1 -0
  86. package/dist/modules/agents/agent-vector-stores.service.d.ts +9 -0
  87. package/dist/modules/agents/agent-vector-stores.service.js +195 -0
  88. package/dist/modules/agents/agent-vector-stores.service.js.map +1 -0
  89. package/dist/modules/agents/agents-config.controller.d.ts +112 -69
  90. package/dist/modules/agents/agents.controller.d.ts +5 -1
  91. package/dist/modules/agents/agents.controller.js +11 -0
  92. package/dist/modules/agents/agents.controller.js.map +1 -1
  93. package/dist/modules/agents/agents.module.js +1 -0
  94. package/dist/modules/agents/agents.module.js.map +1 -1
  95. package/dist/modules/agents/agents.service.d.ts +7 -2
  96. package/dist/modules/agents/agents.service.js +65 -2
  97. package/dist/modules/agents/agents.service.js.map +1 -1
  98. package/dist/modules/agents/attachable-workflows.service.d.ts +12 -0
  99. package/dist/modules/agents/attachable-workflows.service.js +58 -0
  100. package/dist/modules/agents/attachable-workflows.service.js.map +1 -0
  101. package/dist/modules/agents/builder/agents-builder-model-recommendations.js +3 -2
  102. package/dist/modules/agents/builder/agents-builder-model-recommendations.js.map +1 -1
  103. package/dist/modules/agents/builder/agents-builder-prompts.d.ts +4 -4
  104. package/dist/modules/agents/builder/agents-builder-prompts.js +40 -27
  105. package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
  106. package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +3 -5
  107. package/dist/modules/agents/builder/agents-builder-tools.service.js +48 -194
  108. package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
  109. package/dist/modules/agents/builder/agents-builder.service.d.ts +10 -3
  110. package/dist/modules/agents/builder/agents-builder.service.js +22 -12
  111. package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
  112. package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
  113. package/dist/modules/agents/builder/errors.d.ts +3 -2
  114. package/dist/modules/agents/builder/errors.js +3 -2
  115. package/dist/modules/agents/builder/errors.js.map +1 -1
  116. package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +99 -2
  117. package/dist/modules/agents/builder/get-resource-locator-options.tool.js +103 -101
  118. package/dist/modules/agents/builder/get-resource-locator-options.tool.js.map +1 -1
  119. package/dist/modules/agents/builder/interactive/ask-credential.tool.js +48 -32
  120. package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
  121. package/dist/modules/agents/builder/interactive/ask-questions.tool.d.ts +2 -0
  122. package/dist/modules/agents/builder/interactive/ask-questions.tool.js +108 -0
  123. package/dist/modules/agents/builder/interactive/ask-questions.tool.js.map +1 -0
  124. package/dist/modules/agents/builder/interactive/configure-channel.tool.d.ts +7 -0
  125. package/dist/modules/agents/builder/interactive/configure-channel.tool.js +52 -0
  126. package/dist/modules/agents/builder/interactive/configure-channel.tool.js.map +1 -0
  127. package/dist/modules/agents/builder/interactive/index.d.ts +2 -2
  128. package/dist/modules/agents/builder/interactive/index.js +5 -5
  129. package/dist/modules/agents/builder/interactive/index.js.map +1 -1
  130. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +2 -2
  131. package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
  132. package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +1 -1
  133. package/dist/modules/agents/builder/prompts/config-rules.prompt.js +2 -2
  134. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +10 -10
  135. package/dist/modules/agents/builder/prompts/llm-selection.prompt.js.map +1 -1
  136. package/dist/modules/agents/builder/prompts/memory.prompt.d.ts +1 -1
  137. package/dist/modules/agents/builder/prompts/memory.prompt.js +1 -1
  138. package/dist/modules/agents/builder/search-mcp-servers.tool.js +1 -63
  139. package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -1
  140. package/dist/modules/agents/builder/skills/index.d.ts +1 -1
  141. package/dist/modules/agents/builder/skills/index.js +5 -1
  142. package/dist/modules/agents/builder/skills/index.js.map +1 -1
  143. package/dist/modules/agents/builder/skills/integrations.skill.js +15 -6
  144. package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
  145. package/dist/modules/agents/builder/skills/mcp.skill.js +2 -2
  146. package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -1
  147. package/dist/modules/agents/builder/skills/resource-locators.skill.js +2 -2
  148. package/dist/modules/agents/builder/skills/resource-locators.skill.js.map +1 -1
  149. package/dist/modules/agents/builder/skills/sub-agents.skill.js +7 -5
  150. package/dist/modules/agents/builder/skills/sub-agents.skill.js.map +1 -1
  151. package/dist/modules/agents/builder/skills/target-skills.skill.js +5 -4
  152. package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
  153. package/dist/modules/agents/builder/skills/target-tasks.skill.js +5 -5
  154. package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
  155. package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +14 -0
  156. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +96 -0
  157. package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -0
  158. package/dist/modules/agents/integrations/integration-action-executor.d.ts +72 -72
  159. package/dist/modules/agents/integrations/integration-tool-definitions.d.ts +574 -574
  160. package/dist/modules/agents/json-config/embedding-credential.d.ts +4 -0
  161. package/dist/modules/agents/json-config/embedding-credential.js +25 -0
  162. package/dist/modules/agents/json-config/embedding-credential.js.map +1 -0
  163. package/dist/modules/agents/json-config/from-json-config.d.ts +2 -6
  164. package/dist/modules/agents/json-config/from-json-config.js +16 -16
  165. package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
  166. package/dist/modules/agents/json-config/model-config.js +2 -2
  167. package/dist/modules/agents/json-config/model-config.js.map +1 -1
  168. package/dist/modules/agents/json-config/vector-store-factory.d.ts +5 -0
  169. package/dist/modules/agents/json-config/vector-store-factory.js +138 -0
  170. package/dist/modules/agents/json-config/vector-store-factory.js.map +1 -0
  171. package/dist/modules/breaking-changes/rules/index.d.ts +8 -0
  172. package/dist/modules/breaking-changes/rules/index.js +8 -0
  173. package/dist/modules/breaking-changes/rules/index.js.map +1 -1
  174. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.d.ts +6 -0
  175. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +59 -0
  176. package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -0
  177. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.d.ts +9 -0
  178. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +57 -0
  179. package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -0
  180. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.d.ts +10 -0
  181. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +53 -0
  182. package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -0
  183. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.d.ts +9 -0
  184. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +56 -0
  185. package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -0
  186. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.d.ts +9 -0
  187. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +57 -0
  188. package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -0
  189. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.d.ts +6 -0
  190. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +50 -0
  191. package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -0
  192. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.d.ts +9 -0
  193. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +57 -0
  194. package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -0
  195. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.d.ts +6 -0
  196. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js +47 -0
  197. package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js.map +1 -0
  198. package/dist/modules/chat-hub/chat-hub.module.d.ts +1 -1
  199. package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +3 -3
  200. package/dist/modules/data-table/data-table-ddl.service.d.ts +2 -0
  201. package/dist/modules/data-table/data-table-ddl.service.js +16 -0
  202. package/dist/modules/data-table/data-table-ddl.service.js.map +1 -1
  203. package/dist/modules/data-table/data-table.service.d.ts +6 -3
  204. package/dist/modules/data-table/data-table.service.js +19 -0
  205. package/dist/modules/data-table/data-table.service.js.map +1 -1
  206. package/dist/modules/data-table/utils/sql-utils.d.ts +1 -0
  207. package/dist/modules/data-table/utils/sql-utils.js +4 -0
  208. package/dist/modules/data-table/utils/sql-utils.js.map +1 -1
  209. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.d.ts +0 -2
  210. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js +0 -13
  211. package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js.map +1 -1
  212. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +5 -3
  213. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +19 -7
  214. package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
  215. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
  216. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +1 -1
  217. package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
  218. package/dist/modules/favorites/dto/add-favorite.dto.d.ts +2 -2
  219. package/dist/modules/favorites/favorites.event-relay.js +2 -3
  220. package/dist/modules/favorites/favorites.event-relay.js.map +1 -1
  221. package/dist/modules/favorites/favorites.service.d.ts +4 -1
  222. package/dist/modules/favorites/favorites.service.js +28 -3
  223. package/dist/modules/favorites/favorites.service.js.map +1 -1
  224. package/dist/modules/instance-ai/eval/execution.service.d.ts +4 -1
  225. package/dist/modules/instance-ai/eval/execution.service.js +26 -3
  226. package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
  227. package/dist/modules/instance-ai/eval/mock-handler.js +1 -1
  228. package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
  229. package/dist/modules/instance-ai/eval/mock-quirks.js +7 -0
  230. package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
  231. package/dist/modules/instance-ai/eval/pin-data-generator.js +17 -17
  232. package/dist/modules/instance-ai/eval/pin-data-generator.js.map +1 -1
  233. package/dist/modules/instance-ai/event-bus/in-process-event-bus.d.ts +17 -6
  234. package/dist/modules/instance-ai/event-bus/in-process-event-bus.js +153 -30
  235. package/dist/modules/instance-ai/event-bus/in-process-event-bus.js.map +1 -1
  236. package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -2
  237. package/dist/modules/instance-ai/instance-ai-memory.service.js +12 -1
  238. package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
  239. package/dist/modules/instance-ai/instance-ai-settings.service.js +0 -7
  240. package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
  241. package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +89 -3
  242. package/dist/modules/instance-ai/instance-ai.adapter.service.js +264 -29
  243. package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
  244. package/dist/modules/instance-ai/instance-ai.controller.js +9 -2
  245. package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
  246. package/dist/modules/instance-ai/instance-ai.service.d.ts +0 -1
  247. package/dist/modules/instance-ai/instance-ai.service.js +45 -107
  248. package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
  249. package/dist/modules/instance-ai/workflow-templates.service.d.ts +17 -0
  250. package/dist/modules/instance-ai/workflow-templates.service.js +63 -0
  251. package/dist/modules/instance-ai/workflow-templates.service.js.map +1 -0
  252. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.d.ts +1 -0
  253. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js +2 -0
  254. package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js.map +1 -1
  255. package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +2 -0
  256. package/dist/modules/mcp/dto/update-workflows-availability.dto.js +1 -0
  257. package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -1
  258. package/dist/modules/mcp/mcp-protected-resource.d.ts +4 -1
  259. package/dist/modules/mcp/mcp-protected-resource.js +13 -3
  260. package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
  261. package/dist/modules/mcp/mcp.config.d.ts +1 -0
  262. package/dist/modules/mcp/mcp.config.js +20 -0
  263. package/dist/modules/mcp/mcp.config.js.map +1 -1
  264. package/dist/modules/mcp/mcp.module.d.ts +1 -0
  265. package/dist/modules/mcp/mcp.module.js +3 -1
  266. package/dist/modules/mcp/mcp.module.js.map +1 -1
  267. package/dist/modules/mcp/mcp.settings.service.d.ts +1 -1
  268. package/dist/modules/mcp/mcp.settings.service.js +33 -18
  269. package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
  270. package/dist/modules/mcp/tools/search-workflows.tool.js +4 -2
  271. package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
  272. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +2 -0
  273. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +10 -5
  274. package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
  275. package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js +4 -0
  276. package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js.map +1 -1
  277. package/dist/modules/mcp/tools/workflow-builder/skills-used.d.ts +1 -0
  278. package/dist/modules/mcp/tools/workflow-builder/skills-used.js +5 -1
  279. package/dist/modules/mcp/tools/workflow-builder/skills-used.js.map +1 -1
  280. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +10 -5
  281. package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
  282. package/dist/modules/mcp/tools/workflow-builder/version-metadata.d.ts +27 -0
  283. package/dist/modules/mcp/tools/workflow-builder/version-metadata.js +109 -0
  284. package/dist/modules/mcp/tools/workflow-builder/version-metadata.js.map +1 -0
  285. package/dist/modules/mcp-registry/registry/mcp-registry-search.d.ts +18 -0
  286. package/dist/modules/mcp-registry/registry/mcp-registry-search.js +64 -0
  287. package/dist/modules/mcp-registry/registry/mcp-registry-search.js.map +1 -0
  288. package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +2 -0
  289. package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
  290. package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
  291. package/dist/modules/n8n-packages/engine/import-blocked.error.js +2 -1
  292. package/dist/modules/n8n-packages/engine/import-blocked.error.js.map +1 -1
  293. package/dist/modules/n8n-packages/engine/import-orchestrator.d.ts +30 -0
  294. package/dist/modules/n8n-packages/engine/import-orchestrator.js +86 -0
  295. package/dist/modules/n8n-packages/engine/import-orchestrator.js.map +1 -0
  296. package/dist/modules/n8n-packages/engine/import-result.d.ts +14 -0
  297. package/dist/modules/n8n-packages/engine/import-result.js +43 -0
  298. package/dist/modules/n8n-packages/engine/import-result.js.map +1 -0
  299. package/dist/modules/n8n-packages/engine/n8n-package-parser.d.ts +7 -0
  300. package/dist/modules/n8n-packages/engine/n8n-package-parser.js +72 -13
  301. package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
  302. package/dist/modules/n8n-packages/engine/package-layout.d.ts +11 -0
  303. package/dist/modules/n8n-packages/engine/package-layout.js +21 -0
  304. package/dist/modules/n8n-packages/engine/package-layout.js.map +1 -0
  305. package/dist/modules/n8n-packages/engine/project-package-importer.d.ts +11 -0
  306. package/dist/modules/n8n-packages/engine/project-package-importer.js +44 -0
  307. package/dist/modules/n8n-packages/engine/project-package-importer.js.map +1 -0
  308. package/dist/modules/n8n-packages/engine/workflow-package-importer.d.ts +24 -0
  309. package/dist/modules/n8n-packages/engine/workflow-package-importer.js +168 -0
  310. package/dist/modules/n8n-packages/engine/workflow-package-importer.js.map +1 -0
  311. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.d.ts +3 -1
  312. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js +8 -2
  313. package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js.map +1 -1
  314. package/dist/modules/n8n-packages/entities/credential/credential-matcher.d.ts +6 -6
  315. package/dist/modules/n8n-packages/entities/credential/credential-matcher.js +34 -4
  316. package/dist/modules/n8n-packages/entities/credential/credential-matcher.js.map +1 -1
  317. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.d.ts +3 -0
  318. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js +27 -0
  319. package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js.map +1 -0
  320. package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +2 -0
  321. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +18 -2
  322. package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -1
  323. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.d.ts +3 -7
  324. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js +8 -23
  325. package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js.map +1 -1
  326. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.d.ts +8 -0
  327. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js +31 -0
  328. package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js.map +1 -0
  329. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.d.ts +8 -0
  330. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js +31 -0
  331. package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js.map +1 -0
  332. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.d.ts +6 -0
  333. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js +38 -0
  334. package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js.map +1 -0
  335. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.d.ts +26 -0
  336. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js +97 -0
  337. package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js.map +1 -0
  338. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.d.ts +5 -0
  339. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +31 -0
  340. package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -0
  341. package/dist/modules/n8n-packages/entities/data-table/data-table.types.d.ts +4 -0
  342. package/dist/modules/n8n-packages/entities/data-table/data-table.types.js +3 -0
  343. package/dist/modules/n8n-packages/entities/data-table/data-table.types.js.map +1 -0
  344. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.d.ts +5 -0
  345. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js +11 -0
  346. package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js.map +1 -0
  347. package/dist/modules/n8n-packages/entities/folder/folder-import.types.d.ts +20 -0
  348. package/dist/modules/n8n-packages/entities/folder/folder-import.types.js +3 -0
  349. package/dist/modules/n8n-packages/entities/folder/folder-import.types.js.map +1 -0
  350. package/dist/modules/n8n-packages/entities/folder/folder-importer.d.ts +10 -0
  351. package/dist/modules/n8n-packages/entities/folder/folder-importer.js +140 -0
  352. package/dist/modules/n8n-packages/entities/folder/folder-importer.js.map +1 -0
  353. package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +5 -2
  354. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +48 -44
  355. package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
  356. package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
  357. package/dist/modules/n8n-packages/entities/package-export.errors.d.ts +8 -0
  358. package/dist/modules/n8n-packages/entities/package-export.errors.js +27 -0
  359. package/dist/modules/n8n-packages/entities/package-export.errors.js.map +1 -0
  360. package/dist/modules/n8n-packages/entities/project/project-import.types.d.ts +15 -0
  361. package/dist/modules/n8n-packages/entities/project/project-import.types.js +3 -0
  362. package/dist/modules/n8n-packages/entities/project/project-import.types.js.map +1 -0
  363. package/dist/modules/n8n-packages/entities/project/project-importer.d.ts +13 -0
  364. package/dist/modules/n8n-packages/entities/project/project-importer.js +97 -0
  365. package/dist/modules/n8n-packages/entities/project/project-importer.js.map +1 -0
  366. package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +22 -4
  367. package/dist/modules/n8n-packages/entities/project/project.exporter.js +71 -26
  368. package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
  369. package/dist/modules/n8n-packages/entities/requirements.types.d.ts +2 -0
  370. package/dist/modules/n8n-packages/entities/requirements.types.js +1 -0
  371. package/dist/modules/n8n-packages/entities/requirements.types.js.map +1 -1
  372. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +4 -3
  373. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -17
  374. package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
  375. package/dist/modules/n8n-packages/n8n-packages.service.d.ts +12 -3
  376. package/dist/modules/n8n-packages/n8n-packages.service.js +51 -11
  377. package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
  378. package/dist/modules/n8n-packages/n8n-packages.types.d.ts +47 -22
  379. package/dist/modules/n8n-packages/n8n-packages.types.js +5 -1
  380. package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
  381. package/dist/modules/n8n-packages/package-failure-classifier.d.ts +2 -0
  382. package/dist/modules/n8n-packages/package-failure-classifier.js +29 -0
  383. package/dist/modules/n8n-packages/package-failure-classifier.js.map +1 -0
  384. package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +62 -0
  385. package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +55 -0
  386. package/dist/modules/n8n-packages/spec/requirements.schema.js +26 -15
  387. package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -1
  388. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.d.ts +49 -0
  389. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js +20 -0
  390. package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js.map +1 -0
  391. package/dist/modules/redaction/executions/execution-redaction.service.js +1 -1
  392. package/dist/modules/redaction/executions/execution-redaction.service.js.map +1 -1
  393. package/dist/modules/source-control.ee/constants.d.ts +1 -0
  394. package/dist/modules/source-control.ee/constants.js +2 -1
  395. package/dist/modules/source-control.ee/constants.js.map +1 -1
  396. package/dist/modules/source-control.ee/source-control-git.service.ee.d.ts +0 -1
  397. package/dist/modules/source-control.ee/source-control-git.service.ee.js +0 -22
  398. package/dist/modules/source-control.ee/source-control-git.service.ee.js.map +1 -1
  399. package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +3 -1
  400. package/dist/modules/source-control.ee/source-control-helper.ee.js +13 -0
  401. package/dist/modules/source-control.ee/source-control-helper.ee.js.map +1 -1
  402. package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +10 -2
  403. package/dist/modules/source-control.ee/source-control-import.service.ee.js +94 -59
  404. package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
  405. package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +0 -1
  406. package/dist/modules/source-control.ee/source-control-status.service.ee.js +30 -30
  407. package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
  408. package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +6 -6
  409. package/dist/modules/source-control.ee/source-control.service.ee.d.ts +3 -3
  410. package/dist/modules/source-control.ee/source-control.service.ee.js +8 -1
  411. package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
  412. package/dist/public-api/types.d.ts +5 -1
  413. package/dist/public-api/v1/handlers/credentials/credentials.handler.js +9 -0
  414. package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
  415. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +87 -38
  416. package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
  417. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.d.ts +8 -0
  418. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js +39 -0
  419. package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js.map +1 -0
  420. package/dist/public-api/v1/openapi.yml +243 -12
  421. package/dist/scaling/job-processor.js +44 -6
  422. package/dist/scaling/job-processor.js.map +1 -1
  423. package/dist/scaling/pubsub/pubsub.event-map.d.ts +4 -1
  424. package/dist/scheduling/durable-job-provisioner.d.ts +16 -0
  425. package/dist/scheduling/durable-job-provisioner.js +135 -0
  426. package/dist/scheduling/durable-job-provisioner.js.map +1 -0
  427. package/dist/scheduling/durable-scheduler.d.ts +16 -0
  428. package/dist/scheduling/durable-scheduler.js +117 -0
  429. package/dist/scheduling/durable-scheduler.js.map +1 -0
  430. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.d.ts +23 -0
  431. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js +149 -0
  432. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js.map +1 -0
  433. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.d.ts +10 -0
  434. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js +33 -0
  435. package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js.map +1 -0
  436. package/dist/scheduling/scheduler-tracer.d.ts +3 -0
  437. package/dist/scheduling/scheduler-tracer.js +11 -0
  438. package/dist/scheduling/scheduler-tracer.js.map +1 -0
  439. package/dist/services/folder-finder.service.d.ts +2 -0
  440. package/dist/services/folder-finder.service.js +16 -0
  441. package/dist/services/folder-finder.service.js.map +1 -1
  442. package/dist/services/folder.service.d.ts +3 -2
  443. package/dist/services/folder.service.js +11 -1
  444. package/dist/services/folder.service.js.map +1 -1
  445. package/dist/services/frontend.service.d.ts +3 -1
  446. package/dist/services/frontend.service.js +14 -2
  447. package/dist/services/frontend.service.js.map +1 -1
  448. package/dist/services/project.service.ee.d.ts +7 -1
  449. package/dist/services/project.service.ee.js +21 -4
  450. package/dist/services/project.service.ee.js.map +1 -1
  451. package/dist/services/protected-resource.registry.d.ts +1 -0
  452. package/dist/services/protected-resource.registry.js +11 -7
  453. package/dist/services/protected-resource.registry.js.map +1 -1
  454. package/dist/services/security-settings.service.d.ts +31 -1
  455. package/dist/services/security-settings.service.js +75 -2
  456. package/dist/services/security-settings.service.js.map +1 -1
  457. package/dist/services/workflow-review-policy.service.d.ts +11 -0
  458. package/dist/services/workflow-review-policy.service.js +52 -0
  459. package/dist/services/workflow-review-policy.service.js.map +1 -0
  460. package/dist/telemetry/index.js +2 -2
  461. package/dist/telemetry/index.js.map +1 -1
  462. package/dist/workflow-execute-additional-data.js +5 -4
  463. package/dist/workflow-execute-additional-data.js.map +1 -1
  464. package/dist/workflow-helpers.js +26 -0
  465. package/dist/workflow-helpers.js.map +1 -1
  466. package/dist/workflows/triggers/webhook-trigger-registrar.js +22 -15
  467. package/dist/workflows/triggers/webhook-trigger-registrar.js.map +1 -1
  468. package/dist/workflows/triggers/workflow-trigger-activator.js +1 -7
  469. package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
  470. package/dist/workflows/workflow-creation.service.d.ts +2 -0
  471. package/dist/workflows/workflow-creation.service.js +4 -2
  472. package/dist/workflows/workflow-creation.service.js.map +1 -1
  473. package/dist/workflows/workflow-execution.service.js +8 -5
  474. package/dist/workflows/workflow-execution.service.js.map +1 -1
  475. package/dist/workflows/workflow-finder.service.d.ts +5 -2
  476. package/dist/workflows/workflow-finder.service.js +25 -2
  477. package/dist/workflows/workflow-finder.service.js.map +1 -1
  478. package/dist/workflows/workflow-history/workflow-history.service.d.ts +4 -1
  479. package/dist/workflows/workflow-history/workflow-history.service.js +3 -1
  480. package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
  481. package/dist/workflows/workflow-validation.service.js +3 -3
  482. package/dist/workflows/workflow-validation.service.js.map +1 -1
  483. package/dist/workflows/workflow.request.d.ts +7 -22
  484. package/dist/workflows/workflow.service.d.ts +2 -0
  485. package/dist/workflows/workflow.service.js +4 -2
  486. package/dist/workflows/workflow.service.js.map +1 -1
  487. package/dist/workflows/workflows.controller.d.ts +1 -1
  488. package/dist/workflows/workflows.controller.js +8 -3
  489. package/dist/workflows/workflows.controller.js.map +1 -1
  490. package/package.json +43 -38
  491. package/templates/form-trigger-completion.handlebars +6 -6
  492. package/dist/executions/execution-data/azure-store.ee.d.ts +0 -15
  493. package/dist/executions/execution-data/azure-store.ee.js +0 -117
  494. package/dist/executions/execution-data/azure-store.ee.js.map +0 -1
  495. package/dist/executions/execution-data/fs-store.d.ts +0 -16
  496. package/dist/executions/execution-data/fs-store.js +0 -118
  497. package/dist/executions/execution-data/fs-store.js.map +0 -1
  498. package/dist/executions/execution-data/s3-store.ee.d.ts +0 -15
  499. package/dist/executions/execution-data/s3-store.ee.js +0 -116
  500. package/dist/executions/execution-data/s3-store.ee.js.map +0 -1
  501. package/dist/modules/agents/builder/from-ai-node-parameters.d.ts +0 -7
  502. package/dist/modules/agents/builder/from-ai-node-parameters.js +0 -43
  503. package/dist/modules/agents/builder/from-ai-node-parameters.js.map +0 -1
  504. package/dist/modules/agents/builder/interactive/ask-llm.tool.d.ts +0 -2
  505. package/dist/modules/agents/builder/interactive/ask-llm.tool.js +0 -25
  506. package/dist/modules/agents/builder/interactive/ask-llm.tool.js.map +0 -1
  507. package/dist/modules/agents/builder/interactive/ask-question.tool.d.ts +0 -2
  508. package/dist/modules/agents/builder/interactive/ask-question.tool.js +0 -27
  509. package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +0 -1
  510. package/dist/modules/agents/json-config/model-id.d.ts +0 -1
  511. package/dist/modules/agents/json-config/model-id.js +0 -8
  512. package/dist/modules/agents/json-config/model-id.js.map +0 -1
  513. package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +0 -7
  514. package/dist/modules/agents/json-config/native-web-search-provider-tools.js +0 -55
  515. package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +0 -1
  516. package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +0 -28
  517. package/dist/modules/n8n-packages/engine/import-pipeline.js +0 -204
  518. package/dist/modules/n8n-packages/engine/import-pipeline.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ import type { SerializedProject } from '../../spec/serialized/project.schema';
2
+ export interface PreparedProject {
3
+ sourceProjectId: string;
4
+ name: string;
5
+ description?: string;
6
+ icon?: SerializedProject['icon'];
7
+ }
8
+ export type ProjectPlannedAction = 'create' | 'update';
9
+ export interface ProjectPlanItem {
10
+ action: ProjectPlannedAction;
11
+ sourceProjectId: string;
12
+ name: string;
13
+ description?: string;
14
+ icon?: SerializedProject['icon'];
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=project-import.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-import.types.js","sourceRoot":"","sources":["../../../../../src/modules/n8n-packages/entities/project/project-import.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { LicenseState } from '@n8n/backend-common';
2
+ import type { User } from '@n8n/db';
3
+ import { ProjectService } from '../../../../services/project.service.ee';
4
+ import type { PreparedProject, ProjectPlanItem } from './project-import.types';
5
+ import type { ImportedProjectSummary } from '../../n8n-packages.types';
6
+ export declare class ProjectImporter {
7
+ private readonly projectService;
8
+ private readonly licenseState;
9
+ constructor(projectService: ProjectService, licenseState: LicenseState);
10
+ plan(user: User, projects: PreparedProject[]): Promise<ProjectPlanItem[]>;
11
+ apply(user: User, items: ProjectPlanItem[]): Promise<ImportedProjectSummary[]>;
12
+ private assertCanCreateProjects;
13
+ }
@@ -0,0 +1,97 @@
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.ProjectImporter = void 0;
13
+ const backend_common_1 = require("@n8n/backend-common");
14
+ const di_1 = require("@n8n/di");
15
+ const permissions_1 = require("@n8n/permissions");
16
+ const forbidden_error_1 = require("../../../../errors/response-errors/forbidden.error");
17
+ const project_service_ee_1 = require("../../../../services/project.service.ee");
18
+ let ProjectImporter = class ProjectImporter {
19
+ constructor(projectService, licenseState) {
20
+ this.projectService = projectService;
21
+ this.licenseState = licenseState;
22
+ }
23
+ async plan(user, projects) {
24
+ const items = [];
25
+ for (const project of projects) {
26
+ const existing = await this.projectService.findProject(project.sourceProjectId);
27
+ if (existing) {
28
+ if (existing.type !== 'team') {
29
+ throw new forbidden_error_1.ForbiddenError(`Cannot import project "${project.name}": its id belongs to a non-team project on this instance.`);
30
+ }
31
+ const authorized = await this.projectService.getProjectWithScope(user, existing.id, [
32
+ 'project:update',
33
+ ]);
34
+ if (!authorized) {
35
+ throw new forbidden_error_1.ForbiddenError(`You do not have permission to update the existing project "${project.name}".`);
36
+ }
37
+ items.push({ action: 'update', ...toFields(project) });
38
+ }
39
+ else {
40
+ this.assertCanCreateProjects(user);
41
+ items.push({ action: 'create', ...toFields(project) });
42
+ }
43
+ }
44
+ return items;
45
+ }
46
+ async apply(user, items) {
47
+ const summaries = [];
48
+ for (const item of items) {
49
+ if (item.action === 'create') {
50
+ const project = await this.projectService.createTeamProject(user, { name: item.name, icon: item.icon }, { id: item.sourceProjectId, description: item.description ?? null });
51
+ summaries.push({
52
+ sourceProjectId: item.sourceProjectId,
53
+ localId: project.id,
54
+ name: project.name,
55
+ status: 'created',
56
+ });
57
+ }
58
+ else {
59
+ await this.projectService.updateProject(item.sourceProjectId, {
60
+ name: item.name,
61
+ icon: item.icon,
62
+ description: item.description,
63
+ });
64
+ summaries.push({
65
+ sourceProjectId: item.sourceProjectId,
66
+ localId: item.sourceProjectId,
67
+ name: item.name,
68
+ status: 'updated',
69
+ });
70
+ }
71
+ }
72
+ return summaries;
73
+ }
74
+ assertCanCreateProjects(user) {
75
+ if (!(0, permissions_1.hasGlobalScope)(user, 'project:create')) {
76
+ throw new forbidden_error_1.ForbiddenError('You do not have permission to create projects.');
77
+ }
78
+ if (!this.licenseState.isLicensed('feat:projectRole:admin')) {
79
+ throw new forbidden_error_1.ForbiddenError('Your license does not allow creating team projects. Project import requires a license that supports team projects.');
80
+ }
81
+ }
82
+ };
83
+ exports.ProjectImporter = ProjectImporter;
84
+ exports.ProjectImporter = ProjectImporter = __decorate([
85
+ (0, di_1.Service)(),
86
+ __metadata("design:paramtypes", [project_service_ee_1.ProjectService,
87
+ backend_common_1.LicenseState])
88
+ ], ProjectImporter);
89
+ function toFields(project) {
90
+ return {
91
+ sourceProjectId: project.sourceProjectId,
92
+ name: project.name,
93
+ ...(project.description !== undefined ? { description: project.description } : {}),
94
+ ...(project.icon !== undefined ? { icon: project.icon } : {}),
95
+ };
96
+ }
97
+ //# sourceMappingURL=project-importer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-importer.js","sourceRoot":"","sources":["../../../../../src/modules/n8n-packages/entities/project/project-importer.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,38 @@
1
1
  import type { User } from '@n8n/db';
2
+ import { FolderFinderService } from '../../../../services/folder-finder.service';
3
+ import { ProjectService } from '../../../../services/project.service.ee';
4
+ import { WorkflowFinderService } from '../../../../workflows/workflow-finder.service';
2
5
  import { ProjectSerializer } from './project.serializer';
3
6
  import type { PackageWriter } from '../../io/package-writer';
4
7
  import type { ManifestEntry } from '../../spec/manifest.schema';
5
- import { ProjectService } from '../../../../services/project.service.ee';
8
+ import { FolderExporter } from '../folder/folder.exporter';
9
+ import type { WorkflowExportRequirements } from '../requirements.types';
10
+ import { WorkflowExporter } from '../workflow/workflow.exporter';
6
11
  export interface ProjectExportRequest {
7
12
  user: User;
8
13
  projectIds: string[];
9
14
  writer: PackageWriter;
10
15
  }
11
- export interface ProjectExportResult {
16
+ interface ProjectExportResult {
12
17
  entries: ManifestEntry[];
18
+ folderEntries: ManifestEntry[];
19
+ workflowEntries: ManifestEntry[];
20
+ requirements: WorkflowExportRequirements;
21
+ projectTargetsById: Map<string, string>;
13
22
  }
14
23
  export declare class ProjectExporter {
15
24
  private readonly projectService;
16
25
  private readonly projectSerializer;
17
- constructor(projectService: ProjectService, projectSerializer: ProjectSerializer);
26
+ private readonly folderFinder;
27
+ private readonly workflowFinder;
28
+ private readonly folderExporter;
29
+ private readonly workflowExporter;
30
+ constructor(projectService: ProjectService, projectSerializer: ProjectSerializer, folderFinder: FolderFinderService, workflowFinder: WorkflowFinderService, folderExporter: FolderExporter, workflowExporter: WorkflowExporter);
18
31
  export(request: ProjectExportRequest): Promise<ProjectExportResult>;
19
- private assertAllRequestedProjectsFound;
32
+ private exportProject;
33
+ private exportProjectShell;
34
+ private exportProjectFolders;
35
+ private exportProjectRootWorkflows;
36
+ private mergeProjectExportResults;
20
37
  }
38
+ export {};
@@ -11,49 +11,94 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ProjectExporter = void 0;
13
13
  const di_1 = require("@n8n/di");
14
- const n8n_workflow_1 = require("n8n-workflow");
14
+ const folder_finder_service_1 = require("../../../../services/folder-finder.service");
15
+ const project_service_ee_1 = require("../../../../services/project.service.ee");
16
+ const workflow_finder_service_1 = require("../../../../workflows/workflow-finder.service");
15
17
  const project_serializer_1 = require("./project.serializer");
16
18
  const unique_filename_allocator_1 = require("../../io/unique-filename-allocator");
17
- const project_service_ee_1 = require("../../../../services/project.service.ee");
19
+ const folder_exporter_1 = require("../folder/folder.exporter");
20
+ const package_export_errors_1 = require("../package-export.errors");
21
+ const requirements_types_1 = require("../requirements.types");
22
+ const workflow_exporter_1 = require("../workflow/workflow.exporter");
18
23
  let ProjectExporter = class ProjectExporter {
19
- constructor(projectService, projectSerializer) {
24
+ constructor(projectService, projectSerializer, folderFinder, workflowFinder, folderExporter, workflowExporter) {
20
25
  this.projectService = projectService;
21
26
  this.projectSerializer = projectSerializer;
27
+ this.folderFinder = folderFinder;
28
+ this.workflowFinder = workflowFinder;
29
+ this.folderExporter = folderExporter;
30
+ this.workflowExporter = workflowExporter;
22
31
  }
23
32
  async export(request) {
24
33
  const projects = await this.projectService.findProjectsByIdsForUser(request.user, request.projectIds, ['project:export']);
25
- this.assertAllRequestedProjectsFound(request.projectIds, projects);
26
- const entries = [];
27
- const targets = new unique_filename_allocator_1.UniqueFilenameAllocator('projects', 'project');
34
+ await (0, package_export_errors_1.assertEveryRequestedEntityAccessible)('project', request.projectIds, projects, async (ids) => await this.projectService.findExistingProjectIds(ids));
35
+ const allocator = new unique_filename_allocator_1.UniqueFilenameAllocator('projects', 'project');
36
+ const results = [];
28
37
  for (const project of projects) {
29
- const target = targets.allocate(project.name);
30
- const serialized = this.projectSerializer.serialize(project);
31
- request.writer.writeDirectory(target);
32
- request.writer.writeFile(`${target}/project.json`, JSON.stringify(serialized, null, '\t'));
33
- entries.push({
34
- id: project.id,
35
- name: project.name,
36
- target,
37
- });
38
+ const target = allocator.allocate(project.name);
39
+ results.push(await this.exportProject(project, target, request));
38
40
  }
39
- return { entries };
41
+ return this.mergeProjectExportResults(results);
42
+ }
43
+ async exportProject(project, target, request) {
44
+ this.exportProjectShell(project, target, request.writer);
45
+ const folders = await this.exportProjectFolders(project.id, target, request);
46
+ const rootWorkflows = await this.exportProjectRootWorkflows(project.id, target, request);
47
+ return {
48
+ entries: [{ id: project.id, name: project.name, target }],
49
+ folderEntries: folders.entries,
50
+ workflowEntries: [...folders.workflowEntries, ...rootWorkflows.entries],
51
+ requirements: (0, requirements_types_1.mergeRequirements)(folders.requirements, rootWorkflows.requirements),
52
+ projectTargetsById: new Map([[project.id, target]]),
53
+ };
54
+ }
55
+ exportProjectShell(project, target, writer) {
56
+ const serialized = this.projectSerializer.serialize(project);
57
+ writer.writeDirectory(target);
58
+ writer.writeFile(`${target}/project.json`, JSON.stringify(serialized, null, '\t'));
40
59
  }
41
- assertAllRequestedProjectsFound(requestedProjectIds, foundProjects) {
42
- const foundProjectIds = new Set(foundProjects.map(({ id }) => id));
43
- const missingProjectIds = requestedProjectIds.filter((id) => !foundProjectIds.has(id));
44
- if (missingProjectIds.length > 0) {
45
- const displayedProjectIds = missingProjectIds.slice(0, 20);
46
- const omittedCount = missingProjectIds.length - displayedProjectIds.length;
47
- throw new n8n_workflow_1.UserError(`${missingProjectIds.length} project(s) not found or not accessible. Export aborted.`, {
48
- description: `Missing project IDs: ${displayedProjectIds.join(', ')}${omittedCount > 0 ? `, and ${omittedCount} more` : ''}`,
49
- });
60
+ async exportProjectFolders(projectId, target, request) {
61
+ const folderIds = await this.folderFinder.findFolderIdsInProject(projectId);
62
+ if (folderIds.length === 0) {
63
+ return { entries: [], workflowEntries: [], requirements: (0, requirements_types_1.mergeRequirements)() };
50
64
  }
65
+ return await this.folderExporter.export({
66
+ user: request.user,
67
+ folderIds,
68
+ writer: request.writer,
69
+ basePrefix: target,
70
+ });
71
+ }
72
+ async exportProjectRootWorkflows(projectId, target, request) {
73
+ const rootWorkflowIds = await this.workflowFinder.findRootWorkflowIdsInProject(projectId);
74
+ if (rootWorkflowIds.length === 0) {
75
+ return { entries: [], requirements: (0, requirements_types_1.mergeRequirements)() };
76
+ }
77
+ return await this.workflowExporter.export({
78
+ user: request.user,
79
+ workflowIds: rootWorkflowIds,
80
+ writer: request.writer,
81
+ basePrefix: target,
82
+ });
83
+ }
84
+ mergeProjectExportResults(results) {
85
+ return {
86
+ entries: results.flatMap((result) => result.entries),
87
+ folderEntries: results.flatMap((result) => result.folderEntries),
88
+ workflowEntries: results.flatMap((result) => result.workflowEntries),
89
+ requirements: (0, requirements_types_1.mergeRequirements)(...results.map((result) => result.requirements)),
90
+ projectTargetsById: new Map(results.flatMap((result) => [...result.projectTargetsById])),
91
+ };
51
92
  }
52
93
  };
53
94
  exports.ProjectExporter = ProjectExporter;
54
95
  exports.ProjectExporter = ProjectExporter = __decorate([
55
96
  (0, di_1.Service)(),
56
97
  __metadata("design:paramtypes", [project_service_ee_1.ProjectService,
57
- project_serializer_1.ProjectSerializer])
98
+ project_serializer_1.ProjectSerializer,
99
+ folder_finder_service_1.FolderFinderService,
100
+ workflow_finder_service_1.WorkflowFinderService,
101
+ folder_exporter_1.FolderExporter,
102
+ workflow_exporter_1.WorkflowExporter])
58
103
  ], ProjectExporter);
59
104
  //# sourceMappingURL=project.exporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.exporter.js","sourceRoot":"","sources":["../../../../../src/modules/n8n-packages/entities/project/project.exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gCAAkC;AAClC,+CAAyC;AAEzC,6DAAyD;AAEzD,kFAA6E;AAG7E,sEAA+D;AAaxD,IAAM,eAAe,GAArB,MAAM,eAAe;IAC3B,YACkB,cAA8B,EAC9B,iBAAoC;QADpC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,sBAAiB,GAAjB,iBAAiB,CAAmB;IACnD,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,OAA6B;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAClE,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,UAAU,EAClB,CAAC,gBAAgB,CAAC,CAClB,CAAC;QAEF,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnE,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,mDAAuB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEnE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAE7D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAE3F,OAAO,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM;aACN,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,CAAC;IACpB,CAAC;IAEO,+BAA+B,CACtC,mBAA6B,EAC7B,aAAoC;QAEpC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;YAE3E,MAAM,IAAI,wBAAS,CAClB,GAAG,iBAAiB,CAAC,MAAM,0DAA0D,EACrF;gBACC,WAAW,EAAE,wBAAwB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAClE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,OAAO,CAAC,CAAC,CAAC,EACnD,EAAE;aACF,CACD,CAAC;QACH,CAAC;IACF,CAAC;CACD,CAAA;AAxDY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,YAAO,GAAE;qCAGyB,mCAAc;QACX,sCAAiB;GAH1C,eAAe,CAwD3B"}
1
+ {"version":3,"file":"project.exporter.js","sourceRoot":"","sources":["../../../../../src/modules/n8n-packages/entities/project/project.exporter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { WorkflowCredentialRequirement } from './credential/credential.types';
2
+ import type { WorkflowDataTableRequirement } from './data-table/data-table.types';
2
3
  export interface WorkflowExportRequirements {
3
4
  credentials: WorkflowCredentialRequirement[];
5
+ dataTables: WorkflowDataTableRequirement[];
4
6
  }
5
7
  export declare const mergeRequirements: (...parts: Array<WorkflowExportRequirements | undefined>) => WorkflowExportRequirements;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mergeRequirements = void 0;
4
4
  const mergeRequirements = (...parts) => ({
5
5
  credentials: parts.flatMap((part) => part?.credentials ?? []),
6
+ dataTables: parts.flatMap((part) => part?.dataTables ?? []),
6
7
  });
7
8
  exports.mergeRequirements = mergeRequirements;
8
9
  //# sourceMappingURL=requirements.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requirements.types.js","sourceRoot":"","sources":["../../../../src/modules/n8n-packages/entities/requirements.types.ts"],"names":[],"mappings":";;;AAMO,MAAM,iBAAiB,GAAG,CAChC,GAAG,KAAoD,EAC1B,EAAE,CAAC,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;CAC7D,CAAC,CAAC;AAJU,QAAA,iBAAiB,qBAI3B"}
1
+ {"version":3,"file":"requirements.types.js","sourceRoot":"","sources":["../../../../src/modules/n8n-packages/entities/requirements.types.ts"],"names":[],"mappings":";;;AAQO,MAAM,iBAAiB,GAAG,CAChC,GAAG,KAAoD,EAC1B,EAAE,CAAC,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;IAC7D,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;CAC3D,CAAC,CAAC;AALU,QAAA,iBAAiB,qBAK3B"}
@@ -1,10 +1,11 @@
1
1
  import type { User } from '@n8n/db';
2
+ import { WorkflowFinderService } from '../../../../workflows/workflow-finder.service';
2
3
  import { WorkflowSerializer } from './workflow.serializer';
3
4
  import type { PackageWriter } from '../../io/package-writer';
4
5
  import type { ManifestEntry } from '../../spec/manifest.schema';
5
6
  import { CredentialRequirementsExtractor } from '../credential/credential-requirements.extractor';
7
+ import { DataTableRequirementsExtractor } from '../data-table/data-table-requirements.extractor';
6
8
  import type { WorkflowExportRequirements } from '../requirements.types';
7
- import { WorkflowFinderService } from '../../../../workflows/workflow-finder.service';
8
9
  export interface WorkflowExportRequest {
9
10
  user: User;
10
11
  workflowIds: string[];
@@ -19,7 +20,7 @@ export declare class WorkflowExporter {
19
20
  private readonly workflowFinder;
20
21
  private readonly workflowSerializer;
21
22
  private readonly credentialRequirementsExtractor;
22
- constructor(workflowFinder: WorkflowFinderService, workflowSerializer: WorkflowSerializer, credentialRequirementsExtractor: CredentialRequirementsExtractor);
23
+ private readonly dataTableRequirementsExtractor;
24
+ constructor(workflowFinder: WorkflowFinderService, workflowSerializer: WorkflowSerializer, credentialRequirementsExtractor: CredentialRequirementsExtractor, dataTableRequirementsExtractor: DataTableRequirementsExtractor);
23
25
  export(request: WorkflowExportRequest): Promise<WorkflowExportResult>;
24
- private assertAllRequestedWorkflowsFound;
25
26
  }
@@ -11,22 +11,25 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.WorkflowExporter = void 0;
13
13
  const di_1 = require("@n8n/di");
14
- const n8n_workflow_1 = require("n8n-workflow");
14
+ const workflow_finder_service_1 = require("../../../../workflows/workflow-finder.service");
15
15
  const workflow_serializer_1 = require("./workflow.serializer");
16
16
  const unique_filename_allocator_1 = require("../../io/unique-filename-allocator");
17
17
  const credential_requirements_extractor_1 = require("../credential/credential-requirements.extractor");
18
- const workflow_finder_service_1 = require("../../../../workflows/workflow-finder.service");
18
+ const data_table_requirements_extractor_1 = require("../data-table/data-table-requirements.extractor");
19
+ const package_export_errors_1 = require("../package-export.errors");
19
20
  let WorkflowExporter = class WorkflowExporter {
20
- constructor(workflowFinder, workflowSerializer, credentialRequirementsExtractor) {
21
+ constructor(workflowFinder, workflowSerializer, credentialRequirementsExtractor, dataTableRequirementsExtractor) {
21
22
  this.workflowFinder = workflowFinder;
22
23
  this.workflowSerializer = workflowSerializer;
23
24
  this.credentialRequirementsExtractor = credentialRequirementsExtractor;
25
+ this.dataTableRequirementsExtractor = dataTableRequirementsExtractor;
24
26
  }
25
27
  async export(request) {
26
28
  const workflows = await this.workflowFinder.findWorkflowsByIdsForUser(request.workflowIds, request.user, ['workflow:export'], { includeParentFolder: true });
27
- this.assertAllRequestedWorkflowsFound(request.workflowIds, workflows);
29
+ await (0, package_export_errors_1.assertEveryRequestedEntityAccessible)('workflow', request.workflowIds, workflows, async (ids) => await this.workflowFinder.findExistingWorkflowIds(ids));
28
30
  const entries = [];
29
31
  const credentials = [];
32
+ const dataTables = [];
30
33
  const fileNames = new unique_filename_allocator_1.UniqueFilenameAllocator(request.basePrefix ? `${request.basePrefix}/workflows` : 'workflows', 'workflow');
31
34
  for (const workflow of workflows) {
32
35
  const target = fileNames.allocate(workflow.name);
@@ -39,19 +42,9 @@ let WorkflowExporter = class WorkflowExporter {
39
42
  target,
40
43
  });
41
44
  credentials.push(...this.credentialRequirementsExtractor.extract(workflow));
45
+ dataTables.push(...this.dataTableRequirementsExtractor.extract(workflow));
42
46
  }
43
- return { entries, requirements: { credentials } };
44
- }
45
- assertAllRequestedWorkflowsFound(requestedWorkflowIds, foundWorkflows) {
46
- const foundWorkflowIds = new Set(foundWorkflows.map(({ id }) => id));
47
- const missingWorkflowIds = requestedWorkflowIds.filter((id) => !foundWorkflowIds.has(id));
48
- if (missingWorkflowIds.length > 0) {
49
- const displayedWorkflowIds = missingWorkflowIds.slice(0, 20);
50
- const omittedCount = missingWorkflowIds.length - displayedWorkflowIds.length;
51
- throw new n8n_workflow_1.UserError(`${missingWorkflowIds.length} workflow(s) not found or not accessible. Export aborted.`, {
52
- description: `Missing workflow IDs: ${displayedWorkflowIds.join(', ')}${omittedCount > 0 ? `, and ${omittedCount} more` : ''}`,
53
- });
54
- }
47
+ return { entries, requirements: { credentials, dataTables } };
55
48
  }
56
49
  };
57
50
  exports.WorkflowExporter = WorkflowExporter;
@@ -59,6 +52,7 @@ exports.WorkflowExporter = WorkflowExporter = __decorate([
59
52
  (0, di_1.Service)(),
60
53
  __metadata("design:paramtypes", [workflow_finder_service_1.WorkflowFinderService,
61
54
  workflow_serializer_1.WorkflowSerializer,
62
- credential_requirements_extractor_1.CredentialRequirementsExtractor])
55
+ credential_requirements_extractor_1.CredentialRequirementsExtractor,
56
+ data_table_requirements_extractor_1.DataTableRequirementsExtractor])
63
57
  ], WorkflowExporter);
64
58
  //# sourceMappingURL=workflow.exporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.exporter.js","sourceRoot":"","sources":["../../../../../src/modules/n8n-packages/entities/workflow/workflow.exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.exporter.js","sourceRoot":"","sources":["../../../../../src/modules/n8n-packages/entities/workflow/workflow.exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gCAAkC;AAElC,iFAA4E;AAE5E,+DAA2D;AAE3D,kFAA6E;AAE7E,uGAAkG;AAElG,uGAAiG;AAEjG,oEAAgF;AAkBzE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC5B,YACkB,cAAqC,EACrC,kBAAsC,EACtC,+BAAgE,EAChE,8BAA8D;QAH9D,mBAAc,GAAd,cAAc,CAAuB;QACrC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,oCAA+B,GAA/B,+BAA+B,CAAiC;QAChE,mCAA8B,GAA9B,8BAA8B,CAAgC;IAC7E,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,OAA8B;QAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,yBAAyB,CACpE,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,IAAI,EACZ,CAAC,iBAAiB,CAAC,EACnB,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC7B,CAAC;QAEF,MAAM,IAAA,4DAAoC,EACzC,UAAU,EACV,OAAO,CAAC,WAAW,EACnB,SAAS,EACT,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,CACrE,CAAC;QAEF,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,WAAW,GAAoC,EAAE,CAAC;QACxD,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,mDAAuB,CAC5C,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,YAAY,CAAC,CAAC,CAAC,WAAW,EACpE,UAAU,CACV,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE/D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAE5F,OAAO,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM;aACN,CAAC,CAAC;YAEH,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5E,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC;IAC/D,CAAC;CACD,CAAA;AAlDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,YAAO,GAAE;qCAGyB,+CAAqB;QACjB,wCAAkB;QACL,mEAA+B;QAChC,kEAA8B;GALpE,gBAAgB,CAkD5B"}
@@ -1,11 +1,15 @@
1
1
  import { InstanceSettings } from 'n8n-core';
2
2
  import type { Readable } from 'node:stream';
3
3
  import { EventService } from '../../events/event.service';
4
- import { ImportPipeline } from './engine/import-pipeline';
4
+ import { N8nPackageParser } from './engine/n8n-package-parser';
5
+ import { ProjectPackageImporter } from './engine/project-package-importer';
6
+ import { WorkflowPackageImporter } from './engine/workflow-package-importer';
5
7
  import { CredentialExporter } from './entities/credential/credential.exporter';
8
+ import { DataTableExporter } from './entities/data-table/data-table.exporter';
6
9
  import { FolderExporter } from './entities/folder/folder.exporter';
7
10
  import { ProjectExporter } from './entities/project/project.exporter';
8
11
  import { WorkflowExporter } from './entities/workflow/workflow.exporter';
12
+ import { PackageImportConfig } from './n8n-packages.config';
9
13
  import type { ExportPackageRequest, ImportPackageRequest, ImportResult } from './n8n-packages.types';
10
14
  import { type ManifestEntry } from './spec/manifest.schema';
11
15
  export declare class N8nPackagesService {
@@ -13,11 +17,16 @@ export declare class N8nPackagesService {
13
17
  private readonly workflowExporter;
14
18
  private readonly folderExporter;
15
19
  private readonly credentialExporter;
20
+ private readonly dataTableExporter;
16
21
  private readonly instanceSettings;
17
- private readonly importPipeline;
22
+ private readonly packageParser;
23
+ private readonly packageImportConfig;
24
+ private readonly projectPackageImporter;
25
+ private readonly workflowPackageImporter;
18
26
  private readonly eventService;
19
- constructor(projectExporter: ProjectExporter, workflowExporter: WorkflowExporter, folderExporter: FolderExporter, credentialExporter: CredentialExporter, instanceSettings: InstanceSettings, importPipeline: ImportPipeline, eventService: EventService);
27
+ constructor(projectExporter: ProjectExporter, workflowExporter: WorkflowExporter, folderExporter: FolderExporter, credentialExporter: CredentialExporter, dataTableExporter: DataTableExporter, instanceSettings: InstanceSettings, packageParser: N8nPackageParser, packageImportConfig: PackageImportConfig, projectPackageImporter: ProjectPackageImporter, workflowPackageImporter: WorkflowPackageImporter, eventService: EventService);
20
28
  exportPackage(request: ExportPackageRequest): Promise<Readable>;
21
29
  importPackage(request: ImportPackageRequest): Promise<ImportResult>;
22
30
  filterWorkflowsAlreadyInFolders(workflowsInFolders: ManifestEntry[] | undefined, workflowIds: string[]): string[];
31
+ private buildManifestRequirements;
23
32
  }
@@ -14,23 +14,32 @@ const di_1 = require("@n8n/di");
14
14
  const n8n_core_1 = require("n8n-core");
15
15
  const constants_1 = require("../../constants");
16
16
  const event_service_1 = require("../../events/event.service");
17
- const import_pipeline_1 = require("./engine/import-pipeline");
17
+ const n8n_package_parser_1 = require("./engine/n8n-package-parser");
18
+ const project_package_importer_1 = require("./engine/project-package-importer");
19
+ const workflow_package_importer_1 = require("./engine/workflow-package-importer");
18
20
  const credential_exporter_1 = require("./entities/credential/credential.exporter");
21
+ const data_table_exporter_1 = require("./entities/data-table/data-table.exporter");
19
22
  const folder_exporter_1 = require("./entities/folder/folder.exporter");
20
23
  const project_exporter_1 = require("./entities/project/project.exporter");
21
24
  const requirements_types_1 = require("./entities/requirements.types");
22
25
  const workflow_exporter_1 = require("./entities/workflow/workflow.exporter");
26
+ const tar_package_reader_1 = require("./io/tar/tar-package-reader");
23
27
  const tar_package_writer_1 = require("./io/tar/tar-package-writer");
28
+ const n8n_packages_config_1 = require("./n8n-packages.config");
24
29
  const constants_2 = require("./spec/constants");
25
30
  const manifest_schema_1 = require("./spec/manifest.schema");
26
31
  let N8nPackagesService = class N8nPackagesService {
27
- constructor(projectExporter, workflowExporter, folderExporter, credentialExporter, instanceSettings, importPipeline, eventService) {
32
+ constructor(projectExporter, workflowExporter, folderExporter, credentialExporter, dataTableExporter, instanceSettings, packageParser, packageImportConfig, projectPackageImporter, workflowPackageImporter, eventService) {
28
33
  this.projectExporter = projectExporter;
29
34
  this.workflowExporter = workflowExporter;
30
35
  this.folderExporter = folderExporter;
31
36
  this.credentialExporter = credentialExporter;
37
+ this.dataTableExporter = dataTableExporter;
32
38
  this.instanceSettings = instanceSettings;
33
- this.importPipeline = importPipeline;
39
+ this.packageParser = packageParser;
40
+ this.packageImportConfig = packageImportConfig;
41
+ this.projectPackageImporter = projectPackageImporter;
42
+ this.workflowPackageImporter = workflowPackageImporter;
34
43
  this.eventService = eventService;
35
44
  }
36
45
  async exportPackage(request) {
@@ -60,16 +69,29 @@ let N8nPackagesService = class N8nPackagesService {
60
69
  writer,
61
70
  })
62
71
  : undefined;
63
- const requirements = (0, requirements_types_1.mergeRequirements)(workflowExportResult?.requirements, folderExportResult?.requirements);
72
+ const requirements = (0, requirements_types_1.mergeRequirements)(workflowExportResult?.requirements, folderExportResult?.requirements, projectExportResult?.requirements);
64
73
  const credentialExportResult = await this.credentialExporter.export({
65
74
  user: request.user,
66
75
  requirements: requirements.credentials,
67
76
  writer,
77
+ projectTargetsById: projectExportResult?.projectTargetsById,
68
78
  });
79
+ const dataTableExportResult = await this.dataTableExporter.export({
80
+ user: request.user,
81
+ requirements: requirements.dataTables,
82
+ writer,
83
+ projectTargetsById: projectExportResult?.projectTargetsById,
84
+ });
85
+ const allFolders = [
86
+ ...(folderExportResult?.entries ?? []),
87
+ ...(projectExportResult?.folderEntries ?? []),
88
+ ];
69
89
  const allWorkflowsInPackage = [
70
90
  ...(workflowExportResult?.entries ?? []),
71
91
  ...(folderExportResult?.workflowEntries ?? []),
92
+ ...(projectExportResult?.workflowEntries ?? []),
72
93
  ];
94
+ const manifestRequirements = this.buildManifestRequirements(credentialExportResult.requirements, dataTableExportResult.requirements);
73
95
  const manifest = manifest_schema_1.packageManifestSchema.parse({
74
96
  packageFormatVersion: constants_2.FORMAT_VERSION,
75
97
  exportedAt: new Date().toISOString(),
@@ -78,11 +100,9 @@ let N8nPackagesService = class N8nPackagesService {
78
100
  ...(credentialExportResult.entries.length > 0
79
101
  ? { credentials: credentialExportResult.entries }
80
102
  : {}),
81
- ...(credentialExportResult.requirements.length > 0
82
- ? { requirements: { credentials: credentialExportResult.requirements } }
83
- : {}),
103
+ ...(manifestRequirements ? { requirements: manifestRequirements } : {}),
84
104
  ...(allWorkflowsInPackage.length > 0 ? { workflows: allWorkflowsInPackage } : {}),
85
- ...(folderExportResult?.entries ? { folders: folderExportResult.entries } : {}),
105
+ ...(allFolders.length > 0 ? { folders: allFolders } : {}),
86
106
  ...(projectExportResult?.entries ? { projects: projectExportResult.entries } : {}),
87
107
  });
88
108
  writer.writeFile('manifest.json', JSON.stringify(manifest, null, '\t'));
@@ -100,19 +120,32 @@ let N8nPackagesService = class N8nPackagesService {
100
120
  : {}),
101
121
  counts: {
102
122
  workflows: allWorkflowsInPackage.length,
103
- folders: folderExportResult?.entries.length ?? 0,
123
+ folders: allFolders.length,
104
124
  credentials: credentialExportResult.entries.length,
125
+ dataTables: dataTableExportResult.entries.length,
105
126
  },
106
127
  });
107
128
  return stream;
108
129
  }
109
130
  async importPackage(request) {
110
- return await this.importPipeline.run(request);
131
+ const reader = new tar_package_reader_1.TarPackageReader(request.packageBuffer, this.packageImportConfig);
132
+ const manifest = await this.packageParser.getManifest(reader);
133
+ if (isProjectPackage(manifest)) {
134
+ return await this.projectPackageImporter.import(request, reader, manifest);
135
+ }
136
+ return await this.workflowPackageImporter.import(request, reader, manifest);
111
137
  }
112
138
  filterWorkflowsAlreadyInFolders(workflowsInFolders = [], workflowIds) {
113
139
  const folderWorkflowIds = new Set(workflowsInFolders.map((entry) => entry.id) ?? []);
114
140
  return workflowIds.filter((id) => !folderWorkflowIds.has(id));
115
141
  }
142
+ buildManifestRequirements(credentials, dataTables) {
143
+ const requirements = {
144
+ ...(credentials?.length ? { credentials } : {}),
145
+ ...(dataTables?.length ? { dataTables } : {}),
146
+ };
147
+ return Object.keys(requirements).length > 0 ? requirements : undefined;
148
+ }
116
149
  };
117
150
  exports.N8nPackagesService = N8nPackagesService;
118
151
  exports.N8nPackagesService = N8nPackagesService = __decorate([
@@ -121,8 +154,15 @@ exports.N8nPackagesService = N8nPackagesService = __decorate([
121
154
  workflow_exporter_1.WorkflowExporter,
122
155
  folder_exporter_1.FolderExporter,
123
156
  credential_exporter_1.CredentialExporter,
157
+ data_table_exporter_1.DataTableExporter,
124
158
  n8n_core_1.InstanceSettings,
125
- import_pipeline_1.ImportPipeline,
159
+ n8n_package_parser_1.N8nPackageParser,
160
+ n8n_packages_config_1.PackageImportConfig,
161
+ project_package_importer_1.ProjectPackageImporter,
162
+ workflow_package_importer_1.WorkflowPackageImporter,
126
163
  event_service_1.EventService])
127
164
  ], N8nPackagesService);
165
+ function isProjectPackage(manifest) {
166
+ return (manifest.projects?.length ?? 0) > 0;
167
+ }
128
168
  //# sourceMappingURL=n8n-packages.service.js.map