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.
- package/dist/agent-library-bundle.js +9 -0
- package/dist/blob-storage/azure-byte-store.ee.d.ts +1 -1
- package/dist/blob-storage/azure-byte-store.ee.js +3 -18
- package/dist/blob-storage/azure-byte-store.ee.js.map +1 -1
- package/dist/blob-storage/json-store.js +3 -0
- package/dist/blob-storage/json-store.js.map +1 -1
- package/dist/blob-storage/s3-byte-store.ee.d.ts +1 -1
- package/dist/blob-storage/s3-byte-store.ee.js +2 -17
- package/dist/blob-storage/s3-byte-store.ee.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/commands/base-command.d.ts +2 -2
- package/dist/commands/base-command.js +5 -5
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/start.js +2 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/constants/workflow-reviews.d.ts +4 -0
- package/dist/constants/workflow-reviews.js +14 -0
- package/dist/constants/workflow-reviews.js.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/controllers/e2e.controller.js +1 -0
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/security-settings.controller.d.ts +15 -10
- package/dist/controllers/security-settings.controller.js +41 -65
- package/dist/controllers/security-settings.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +2 -2
- package/dist/credentials/credential-connection-status-provider.interface.d.ts +2 -1
- package/dist/credentials/credential-connection-status-proxy.d.ts +2 -1
- package/dist/credentials/credential-connection-status-proxy.js +7 -2
- package/dist/credentials/credential-connection-status-proxy.js.map +1 -1
- package/dist/credentials/credentials.controller.js +5 -5
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +1 -0
- package/dist/credentials/credentials.service.ee.d.ts +3 -1
- package/dist/credentials/credentials.service.ee.js +10 -2
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +14 -0
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/eventbus/event-message-classes/index.d.ts +2 -2
- package/dist/eventbus/event-message-classes/index.js +4 -2
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +19 -2
- package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
- package/dist/events/relays/log-streaming.event-relay.js +30 -2
- package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.d.ts +3 -0
- package/dist/events/relays/telemetry.event-relay.js +88 -10
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +21 -4
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/executions/execution-data/db-store.d.ts +8 -15
- package/dist/executions/execution-data/db-store.js +12 -25
- package/dist/executions/execution-data/db-store.js.map +1 -1
- package/dist/executions/execution-data/execution-data-json-store.d.ts +7 -0
- package/dist/executions/execution-data/execution-data-json-store.js +45 -0
- package/dist/executions/execution-data/execution-data-json-store.js.map +1 -0
- package/dist/executions/execution-data/types.d.ts +3 -14
- package/dist/executions/execution-data/types.js.map +1 -1
- package/dist/executions/execution-persistence.d.ts +7 -14
- package/dist/executions/execution-persistence.js +40 -88
- package/dist/executions/execution-persistence.js.map +1 -1
- package/dist/interfaces.d.ts +4 -1
- package/dist/load-nodes-and-credentials.js +1 -1
- package/dist/load-nodes-and-credentials.js.map +1 -1
- package/dist/metrics/prometheus/prometheus.service.d.ts +2 -1
- package/dist/metrics/prometheus/prometheus.service.js +5 -2
- package/dist/metrics/prometheus/prometheus.service.js.map +1 -1
- package/dist/metrics/prometheus/scheduler-metrics.service.d.ts +35 -0
- package/dist/metrics/prometheus/scheduler-metrics.service.js +187 -0
- package/dist/metrics/prometheus/scheduler-metrics.service.js.map +1 -0
- package/dist/modules/agents/adapters/agents-credential-provider.d.ts +1 -0
- package/dist/modules/agents/adapters/agents-credential-provider.js +13 -3
- package/dist/modules/agents/adapters/agents-credential-provider.js.map +1 -1
- package/dist/modules/agents/agent-config.service.js +11 -1
- package/dist/modules/agents/agent-config.service.js.map +1 -1
- package/dist/modules/agents/agent-knowledge.controller.js +1 -1
- package/dist/modules/agents/agent-knowledge.controller.js.map +1 -1
- package/dist/modules/agents/agent-upload.middleware.d.ts +2 -0
- package/dist/modules/agents/agent-upload.middleware.js +11 -0
- package/dist/modules/agents/agent-upload.middleware.js.map +1 -1
- package/dist/modules/agents/agent-validation.service.js +19 -2
- package/dist/modules/agents/agent-validation.service.js.map +1 -1
- package/dist/modules/agents/agent-vector-stores.controller.d.ts +11 -0
- package/dist/modules/agents/agent-vector-stores.controller.js +41 -0
- package/dist/modules/agents/agent-vector-stores.controller.js.map +1 -0
- package/dist/modules/agents/agent-vector-stores.service.d.ts +9 -0
- package/dist/modules/agents/agent-vector-stores.service.js +195 -0
- package/dist/modules/agents/agent-vector-stores.service.js.map +1 -0
- package/dist/modules/agents/agents-config.controller.d.ts +112 -69
- package/dist/modules/agents/agents.controller.d.ts +5 -1
- package/dist/modules/agents/agents.controller.js +11 -0
- package/dist/modules/agents/agents.controller.js.map +1 -1
- package/dist/modules/agents/agents.module.js +1 -0
- package/dist/modules/agents/agents.module.js.map +1 -1
- package/dist/modules/agents/agents.service.d.ts +7 -2
- package/dist/modules/agents/agents.service.js +65 -2
- package/dist/modules/agents/agents.service.js.map +1 -1
- package/dist/modules/agents/attachable-workflows.service.d.ts +12 -0
- package/dist/modules/agents/attachable-workflows.service.js +58 -0
- package/dist/modules/agents/attachable-workflows.service.js.map +1 -0
- package/dist/modules/agents/builder/agents-builder-model-recommendations.js +3 -2
- package/dist/modules/agents/builder/agents-builder-model-recommendations.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-prompts.d.ts +4 -4
- package/dist/modules/agents/builder/agents-builder-prompts.js +40 -27
- package/dist/modules/agents/builder/agents-builder-prompts.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder-tools.service.d.ts +3 -5
- package/dist/modules/agents/builder/agents-builder-tools.service.js +48 -194
- package/dist/modules/agents/builder/agents-builder-tools.service.js.map +1 -1
- package/dist/modules/agents/builder/agents-builder.service.d.ts +10 -3
- package/dist/modules/agents/builder/agents-builder.service.js +22 -12
- package/dist/modules/agents/builder/agents-builder.service.js.map +1 -1
- package/dist/modules/agents/builder/builder-tool-names.js.map +1 -1
- package/dist/modules/agents/builder/errors.d.ts +3 -2
- package/dist/modules/agents/builder/errors.js +3 -2
- package/dist/modules/agents/builder/errors.js.map +1 -1
- package/dist/modules/agents/builder/get-resource-locator-options.tool.d.ts +99 -2
- package/dist/modules/agents/builder/get-resource-locator-options.tool.js +103 -101
- package/dist/modules/agents/builder/get-resource-locator-options.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js +48 -32
- package/dist/modules/agents/builder/interactive/ask-credential.tool.js.map +1 -1
- package/dist/modules/agents/builder/interactive/ask-questions.tool.d.ts +2 -0
- package/dist/modules/agents/builder/interactive/ask-questions.tool.js +108 -0
- package/dist/modules/agents/builder/interactive/ask-questions.tool.js.map +1 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.d.ts +7 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.js +52 -0
- package/dist/modules/agents/builder/interactive/configure-channel.tool.js.map +1 -0
- package/dist/modules/agents/builder/interactive/index.d.ts +2 -2
- package/dist/modules/agents/builder/interactive/index.js +5 -5
- package/dist/modules/agents/builder/interactive/index.js.map +1 -1
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js +2 -2
- package/dist/modules/agents/builder/interactive/resolve-llm.tool.js.map +1 -1
- package/dist/modules/agents/builder/prompts/config-mutation.prompt.js +1 -1
- package/dist/modules/agents/builder/prompts/config-rules.prompt.js +2 -2
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js +10 -10
- package/dist/modules/agents/builder/prompts/llm-selection.prompt.js.map +1 -1
- package/dist/modules/agents/builder/prompts/memory.prompt.d.ts +1 -1
- package/dist/modules/agents/builder/prompts/memory.prompt.js +1 -1
- package/dist/modules/agents/builder/search-mcp-servers.tool.js +1 -63
- package/dist/modules/agents/builder/search-mcp-servers.tool.js.map +1 -1
- package/dist/modules/agents/builder/skills/index.d.ts +1 -1
- package/dist/modules/agents/builder/skills/index.js +5 -1
- package/dist/modules/agents/builder/skills/index.js.map +1 -1
- package/dist/modules/agents/builder/skills/integrations.skill.js +15 -6
- package/dist/modules/agents/builder/skills/integrations.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/mcp.skill.js +2 -2
- package/dist/modules/agents/builder/skills/mcp.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/resource-locators.skill.js +2 -2
- package/dist/modules/agents/builder/skills/resource-locators.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/sub-agents.skill.js +7 -5
- package/dist/modules/agents/builder/skills/sub-agents.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-skills.skill.js +5 -4
- package/dist/modules/agents/builder/skills/target-skills.skill.js.map +1 -1
- package/dist/modules/agents/builder/skills/target-tasks.skill.js +5 -5
- package/dist/modules/agents/builder/skills/target-tasks.skill.js.map +1 -1
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.d.ts +14 -0
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js +96 -0
- package/dist/modules/agents/instance-ai-builder-delegate.adapter.js.map +1 -0
- package/dist/modules/agents/integrations/integration-action-executor.d.ts +72 -72
- package/dist/modules/agents/integrations/integration-tool-definitions.d.ts +574 -574
- package/dist/modules/agents/json-config/embedding-credential.d.ts +4 -0
- package/dist/modules/agents/json-config/embedding-credential.js +25 -0
- package/dist/modules/agents/json-config/embedding-credential.js.map +1 -0
- package/dist/modules/agents/json-config/from-json-config.d.ts +2 -6
- package/dist/modules/agents/json-config/from-json-config.js +16 -16
- package/dist/modules/agents/json-config/from-json-config.js.map +1 -1
- package/dist/modules/agents/json-config/model-config.js +2 -2
- package/dist/modules/agents/json-config/model-config.js.map +1 -1
- package/dist/modules/agents/json-config/vector-store-factory.d.ts +5 -0
- package/dist/modules/agents/json-config/vector-store-factory.js +138 -0
- package/dist/modules/agents/json-config/vector-store-factory.js.map +1 -0
- package/dist/modules/breaking-changes/rules/index.d.ts +8 -0
- package/dist/modules/breaking-changes/rules/index.js +8 -0
- package/dist/modules/breaking-changes/rules/index.js.map +1 -1
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.d.ts +6 -0
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js +59 -0
- package/dist/modules/breaking-changes/rules/v3/compression-node-limits.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js +57 -0
- package/dist/modules/breaking-changes/rules/v3/docker-only-deployment.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.d.ts +10 -0
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js +53 -0
- package/dist/modules/breaking-changes/rules/v3/get-paired-item.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js +56 -0
- package/dist/modules/breaking-changes/rules/v3/in-memory-binary-data.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js +57 -0
- package/dist/modules/breaking-changes/rules/v3/offload-manual-executions.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.d.ts +6 -0
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js +50 -0
- package/dist/modules/breaking-changes/rules/v3/task-runner-task-timeout.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.d.ts +9 -0
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js +57 -0
- package/dist/modules/breaking-changes/rules/v3/unverified-packages.rule.js.map +1 -0
- package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.d.ts +6 -0
- package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js +47 -0
- package/dist/modules/breaking-changes/rules/v3/workflow-import-url-removed.rule.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub.module.d.ts +1 -1
- package/dist/modules/chat-hub/chat-hub.settings.controller.d.ts +3 -3
- package/dist/modules/data-table/data-table-ddl.service.d.ts +2 -0
- package/dist/modules/data-table/data-table-ddl.service.js +16 -0
- package/dist/modules/data-table/data-table-ddl.service.js.map +1 -1
- package/dist/modules/data-table/data-table.service.d.ts +6 -3
- package/dist/modules/data-table/data-table.service.js +19 -0
- package/dist/modules/data-table/data-table.service.js.map +1 -1
- package/dist/modules/data-table/utils/sql-utils.d.ts +1 -0
- package/dist/modules/data-table/utils/sql-utils.js +4 -0
- package/dist/modules/data-table/utils/sql-utils.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.d.ts +0 -2
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js +0 -13
- package/dist/modules/dynamic-credentials.ee/dynamic-credentials.module.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.d.ts +5 -3
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js +19 -7
- package/dist/modules/dynamic-credentials.ee/services/credential-connection-status.service.js.map +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-storage.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js +1 -1
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential.service.js.map +1 -1
- package/dist/modules/favorites/dto/add-favorite.dto.d.ts +2 -2
- package/dist/modules/favorites/favorites.event-relay.js +2 -3
- package/dist/modules/favorites/favorites.event-relay.js.map +1 -1
- package/dist/modules/favorites/favorites.service.d.ts +4 -1
- package/dist/modules/favorites/favorites.service.js +28 -3
- package/dist/modules/favorites/favorites.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/execution.service.d.ts +4 -1
- package/dist/modules/instance-ai/eval/execution.service.js +26 -3
- package/dist/modules/instance-ai/eval/execution.service.js.map +1 -1
- package/dist/modules/instance-ai/eval/mock-handler.js +1 -1
- package/dist/modules/instance-ai/eval/mock-handler.js.map +1 -1
- package/dist/modules/instance-ai/eval/mock-quirks.js +7 -0
- package/dist/modules/instance-ai/eval/mock-quirks.js.map +1 -1
- package/dist/modules/instance-ai/eval/pin-data-generator.js +17 -17
- package/dist/modules/instance-ai/eval/pin-data-generator.js.map +1 -1
- package/dist/modules/instance-ai/event-bus/in-process-event-bus.d.ts +17 -6
- package/dist/modules/instance-ai/event-bus/in-process-event-bus.js +153 -30
- package/dist/modules/instance-ai/event-bus/in-process-event-bus.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.d.ts +7 -2
- package/dist/modules/instance-ai/instance-ai-memory.service.js +12 -1
- package/dist/modules/instance-ai/instance-ai-memory.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai-settings.service.js +0 -7
- package/dist/modules/instance-ai/instance-ai-settings.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.adapter.service.d.ts +89 -3
- package/dist/modules/instance-ai/instance-ai.adapter.service.js +264 -29
- package/dist/modules/instance-ai/instance-ai.adapter.service.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.controller.js +9 -2
- package/dist/modules/instance-ai/instance-ai.controller.js.map +1 -1
- package/dist/modules/instance-ai/instance-ai.service.d.ts +0 -1
- package/dist/modules/instance-ai/instance-ai.service.js +45 -107
- package/dist/modules/instance-ai/instance-ai.service.js.map +1 -1
- package/dist/modules/instance-ai/workflow-templates.service.d.ts +17 -0
- package/dist/modules/instance-ai/workflow-templates.service.js +63 -0
- package/dist/modules/instance-ai/workflow-templates.service.js.map +1 -0
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.d.ts +1 -0
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js +2 -0
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination.ee.js.map +1 -1
- package/dist/modules/mcp/dto/update-workflows-availability.dto.d.ts +2 -0
- package/dist/modules/mcp/dto/update-workflows-availability.dto.js +1 -0
- package/dist/modules/mcp/dto/update-workflows-availability.dto.js.map +1 -1
- package/dist/modules/mcp/mcp-protected-resource.d.ts +4 -1
- package/dist/modules/mcp/mcp-protected-resource.js +13 -3
- package/dist/modules/mcp/mcp-protected-resource.js.map +1 -1
- package/dist/modules/mcp/mcp.config.d.ts +1 -0
- package/dist/modules/mcp/mcp.config.js +20 -0
- package/dist/modules/mcp/mcp.config.js.map +1 -1
- package/dist/modules/mcp/mcp.module.d.ts +1 -0
- package/dist/modules/mcp/mcp.module.js +3 -1
- package/dist/modules/mcp/mcp.module.js.map +1 -1
- package/dist/modules/mcp/mcp.settings.service.d.ts +1 -1
- package/dist/modules/mcp/mcp.settings.service.js +33 -18
- package/dist/modules/mcp/mcp.settings.service.js.map +1 -1
- package/dist/modules/mcp/tools/search-workflows.tool.js +4 -2
- package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.d.ts +2 -0
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js +10 -5
- package/dist/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js +4 -0
- package/dist/modules/mcp/tools/workflow-builder/restore-workflow-version.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/skills-used.d.ts +1 -0
- package/dist/modules/mcp/tools/workflow-builder/skills-used.js +5 -1
- package/dist/modules/mcp/tools/workflow-builder/skills-used.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js +10 -5
- package/dist/modules/mcp/tools/workflow-builder/update-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/workflow-builder/version-metadata.d.ts +27 -0
- package/dist/modules/mcp/tools/workflow-builder/version-metadata.js +109 -0
- package/dist/modules/mcp/tools/workflow-builder/version-metadata.js.map +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-search.d.ts +18 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-search.js +64 -0
- package/dist/modules/mcp-registry/registry/mcp-registry-search.js.map +1 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.d.ts +2 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js +4 -0
- package/dist/modules/mcp-registry/registry/mcp-registry.service.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-blocked.error.js +2 -1
- package/dist/modules/n8n-packages/engine/import-blocked.error.js.map +1 -1
- package/dist/modules/n8n-packages/engine/import-orchestrator.d.ts +30 -0
- package/dist/modules/n8n-packages/engine/import-orchestrator.js +86 -0
- package/dist/modules/n8n-packages/engine/import-orchestrator.js.map +1 -0
- package/dist/modules/n8n-packages/engine/import-result.d.ts +14 -0
- package/dist/modules/n8n-packages/engine/import-result.js +43 -0
- package/dist/modules/n8n-packages/engine/import-result.js.map +1 -0
- package/dist/modules/n8n-packages/engine/n8n-package-parser.d.ts +7 -0
- package/dist/modules/n8n-packages/engine/n8n-package-parser.js +72 -13
- package/dist/modules/n8n-packages/engine/n8n-package-parser.js.map +1 -1
- package/dist/modules/n8n-packages/engine/package-layout.d.ts +11 -0
- package/dist/modules/n8n-packages/engine/package-layout.js +21 -0
- package/dist/modules/n8n-packages/engine/package-layout.js.map +1 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.d.ts +11 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.js +44 -0
- package/dist/modules/n8n-packages/engine/project-package-importer.js.map +1 -0
- package/dist/modules/n8n-packages/engine/workflow-package-importer.d.ts +24 -0
- package/dist/modules/n8n-packages/engine/workflow-package-importer.js +168 -0
- package/dist/modules/n8n-packages/engine/workflow-package-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.d.ts +3 -1
- package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js +8 -2
- package/dist/modules/n8n-packages/entities/credential/credential-matcher-factory.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/credential-matcher.d.ts +6 -6
- package/dist/modules/n8n-packages/entities/credential/credential-matcher.js +34 -4
- package/dist/modules/n8n-packages/entities/credential/credential-matcher.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.d.ts +3 -0
- package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js +27 -0
- package/dist/modules/n8n-packages/entities/credential/credential-tier-selection.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.js +18 -2
- package/dist/modules/n8n-packages/entities/credential/credential.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.d.ts +3 -7
- package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js +8 -23
- package/dist/modules/n8n-packages/entities/credential/id-based-credential-matcher.js.map +1 -1
- package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.d.ts +8 -0
- package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js +31 -0
- package/dist/modules/n8n-packages/entities/credential/name-and-type-credential-matcher.js.map +1 -0
- package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.d.ts +8 -0
- package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js +31 -0
- package/dist/modules/n8n-packages/entities/credential/type-only-credential-matcher.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.d.ts +6 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js +38 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table-requirements.extractor.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.d.ts +26 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js +97 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.exporter.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.d.ts +5 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js +31 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.serializer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.types.d.ts +4 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.types.js +3 -0
- package/dist/modules/n8n-packages/entities/data-table/data-table.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.d.ts +5 -0
- package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js +11 -0
- package/dist/modules/n8n-packages/entities/folder/folder-conflict-policy.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder-import.types.d.ts +20 -0
- package/dist/modules/n8n-packages/entities/folder/folder-import.types.js +3 -0
- package/dist/modules/n8n-packages/entities/folder/folder-import.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder-importer.d.ts +10 -0
- package/dist/modules/n8n-packages/entities/folder/folder-importer.js +140 -0
- package/dist/modules/n8n-packages/entities/folder/folder-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.d.ts +5 -2
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.js +48 -44
- package/dist/modules/n8n-packages/entities/folder/folder.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/folder/folder.serializer.js.map +1 -1
- package/dist/modules/n8n-packages/entities/package-export.errors.d.ts +8 -0
- package/dist/modules/n8n-packages/entities/package-export.errors.js +27 -0
- package/dist/modules/n8n-packages/entities/package-export.errors.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project-import.types.d.ts +15 -0
- package/dist/modules/n8n-packages/entities/project/project-import.types.js +3 -0
- package/dist/modules/n8n-packages/entities/project/project-import.types.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project-importer.d.ts +13 -0
- package/dist/modules/n8n-packages/entities/project/project-importer.js +97 -0
- package/dist/modules/n8n-packages/entities/project/project-importer.js.map +1 -0
- package/dist/modules/n8n-packages/entities/project/project.exporter.d.ts +22 -4
- package/dist/modules/n8n-packages/entities/project/project.exporter.js +71 -26
- package/dist/modules/n8n-packages/entities/project/project.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/entities/requirements.types.d.ts +2 -0
- package/dist/modules/n8n-packages/entities/requirements.types.js +1 -0
- package/dist/modules/n8n-packages/entities/requirements.types.js.map +1 -1
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.d.ts +4 -3
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js +11 -17
- package/dist/modules/n8n-packages/entities/workflow/workflow.exporter.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.service.d.ts +12 -3
- package/dist/modules/n8n-packages/n8n-packages.service.js +51 -11
- package/dist/modules/n8n-packages/n8n-packages.service.js.map +1 -1
- package/dist/modules/n8n-packages/n8n-packages.types.d.ts +47 -22
- package/dist/modules/n8n-packages/n8n-packages.types.js +5 -1
- package/dist/modules/n8n-packages/n8n-packages.types.js.map +1 -1
- package/dist/modules/n8n-packages/package-failure-classifier.d.ts +2 -0
- package/dist/modules/n8n-packages/package-failure-classifier.js +29 -0
- package/dist/modules/n8n-packages/package-failure-classifier.js.map +1 -0
- package/dist/modules/n8n-packages/spec/manifest.schema.d.ts +62 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.d.ts +55 -0
- package/dist/modules/n8n-packages/spec/requirements.schema.js +26 -15
- package/dist/modules/n8n-packages/spec/requirements.schema.js.map +1 -1
- package/dist/modules/n8n-packages/spec/serialized/data-table.schema.d.ts +49 -0
- package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js +20 -0
- package/dist/modules/n8n-packages/spec/serialized/data-table.schema.js.map +1 -0
- package/dist/modules/redaction/executions/execution-redaction.service.js +1 -1
- package/dist/modules/redaction/executions/execution-redaction.service.js.map +1 -1
- package/dist/modules/source-control.ee/constants.d.ts +1 -0
- package/dist/modules/source-control.ee/constants.js +2 -1
- package/dist/modules/source-control.ee/constants.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-git.service.ee.d.ts +0 -1
- package/dist/modules/source-control.ee/source-control-git.service.ee.js +0 -22
- package/dist/modules/source-control.ee/source-control-git.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +3 -1
- package/dist/modules/source-control.ee/source-control-helper.ee.js +13 -0
- package/dist/modules/source-control.ee/source-control-helper.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-import.service.ee.d.ts +10 -2
- package/dist/modules/source-control.ee/source-control-import.service.ee.js +94 -59
- package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +0 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.js +30 -30
- package/dist/modules/source-control.ee/source-control-status.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control.controller.ee.d.ts +6 -6
- package/dist/modules/source-control.ee/source-control.service.ee.d.ts +3 -3
- package/dist/modules/source-control.ee/source-control.service.ee.js +8 -1
- package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
- package/dist/public-api/types.d.ts +5 -1
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +9 -0
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js +87 -38
- package/dist/public-api/v1/handlers/n8n-packages/n8n-packages.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/security-policy/security-policy.handler.d.ts +8 -0
- package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js +39 -0
- package/dist/public-api/v1/handlers/security-policy/security-policy.handler.js.map +1 -0
- package/dist/public-api/v1/openapi.yml +243 -12
- package/dist/scaling/job-processor.js +44 -6
- package/dist/scaling/job-processor.js.map +1 -1
- package/dist/scaling/pubsub/pubsub.event-map.d.ts +4 -1
- package/dist/scheduling/durable-job-provisioner.d.ts +16 -0
- package/dist/scheduling/durable-job-provisioner.js +135 -0
- package/dist/scheduling/durable-job-provisioner.js.map +1 -0
- package/dist/scheduling/durable-scheduler.d.ts +16 -0
- package/dist/scheduling/durable-scheduler.js +117 -0
- package/dist/scheduling/durable-scheduler.js.map +1 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.d.ts +23 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js +149 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task-handler.js.map +1 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.d.ts +10 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js +33 -0
- package/dist/scheduling/schedule-trigger-node/schedule-trigger-task.js.map +1 -0
- package/dist/scheduling/scheduler-tracer.d.ts +3 -0
- package/dist/scheduling/scheduler-tracer.js +11 -0
- package/dist/scheduling/scheduler-tracer.js.map +1 -0
- package/dist/services/folder-finder.service.d.ts +2 -0
- package/dist/services/folder-finder.service.js +16 -0
- package/dist/services/folder-finder.service.js.map +1 -1
- package/dist/services/folder.service.d.ts +3 -2
- package/dist/services/folder.service.js +11 -1
- package/dist/services/folder.service.js.map +1 -1
- package/dist/services/frontend.service.d.ts +3 -1
- package/dist/services/frontend.service.js +14 -2
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/project.service.ee.d.ts +7 -1
- package/dist/services/project.service.ee.js +21 -4
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/protected-resource.registry.d.ts +1 -0
- package/dist/services/protected-resource.registry.js +11 -7
- package/dist/services/protected-resource.registry.js.map +1 -1
- package/dist/services/security-settings.service.d.ts +31 -1
- package/dist/services/security-settings.service.js +75 -2
- package/dist/services/security-settings.service.js.map +1 -1
- package/dist/services/workflow-review-policy.service.d.ts +11 -0
- package/dist/services/workflow-review-policy.service.js +52 -0
- package/dist/services/workflow-review-policy.service.js.map +1 -0
- package/dist/telemetry/index.js +2 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/workflow-execute-additional-data.js +5 -4
- package/dist/workflow-execute-additional-data.js.map +1 -1
- package/dist/workflow-helpers.js +26 -0
- package/dist/workflow-helpers.js.map +1 -1
- package/dist/workflows/triggers/webhook-trigger-registrar.js +22 -15
- package/dist/workflows/triggers/webhook-trigger-registrar.js.map +1 -1
- package/dist/workflows/triggers/workflow-trigger-activator.js +1 -7
- package/dist/workflows/triggers/workflow-trigger-activator.js.map +1 -1
- package/dist/workflows/workflow-creation.service.d.ts +2 -0
- package/dist/workflows/workflow-creation.service.js +4 -2
- package/dist/workflows/workflow-creation.service.js.map +1 -1
- package/dist/workflows/workflow-execution.service.js +8 -5
- package/dist/workflows/workflow-execution.service.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +5 -2
- package/dist/workflows/workflow-finder.service.js +25 -2
- package/dist/workflows/workflow-finder.service.js.map +1 -1
- package/dist/workflows/workflow-history/workflow-history.service.d.ts +4 -1
- package/dist/workflows/workflow-history/workflow-history.service.js +3 -1
- package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
- package/dist/workflows/workflow-validation.service.js +3 -3
- package/dist/workflows/workflow-validation.service.js.map +1 -1
- package/dist/workflows/workflow.request.d.ts +7 -22
- package/dist/workflows/workflow.service.d.ts +2 -0
- package/dist/workflows/workflow.service.js +4 -2
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +1 -1
- package/dist/workflows/workflows.controller.js +8 -3
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/package.json +43 -38
- package/templates/form-trigger-completion.handlebars +6 -6
- package/dist/executions/execution-data/azure-store.ee.d.ts +0 -15
- package/dist/executions/execution-data/azure-store.ee.js +0 -117
- package/dist/executions/execution-data/azure-store.ee.js.map +0 -1
- package/dist/executions/execution-data/fs-store.d.ts +0 -16
- package/dist/executions/execution-data/fs-store.js +0 -118
- package/dist/executions/execution-data/fs-store.js.map +0 -1
- package/dist/executions/execution-data/s3-store.ee.d.ts +0 -15
- package/dist/executions/execution-data/s3-store.ee.js +0 -116
- package/dist/executions/execution-data/s3-store.ee.js.map +0 -1
- package/dist/modules/agents/builder/from-ai-node-parameters.d.ts +0 -7
- package/dist/modules/agents/builder/from-ai-node-parameters.js +0 -43
- package/dist/modules/agents/builder/from-ai-node-parameters.js.map +0 -1
- package/dist/modules/agents/builder/interactive/ask-llm.tool.d.ts +0 -2
- package/dist/modules/agents/builder/interactive/ask-llm.tool.js +0 -25
- package/dist/modules/agents/builder/interactive/ask-llm.tool.js.map +0 -1
- package/dist/modules/agents/builder/interactive/ask-question.tool.d.ts +0 -2
- package/dist/modules/agents/builder/interactive/ask-question.tool.js +0 -27
- package/dist/modules/agents/builder/interactive/ask-question.tool.js.map +0 -1
- package/dist/modules/agents/json-config/model-id.d.ts +0 -1
- package/dist/modules/agents/json-config/model-id.js +0 -8
- package/dist/modules/agents/json-config/model-id.js.map +0 -1
- package/dist/modules/agents/json-config/native-web-search-provider-tools.d.ts +0 -7
- package/dist/modules/agents/json-config/native-web-search-provider-tools.js +0 -55
- package/dist/modules/agents/json-config/native-web-search-provider-tools.js.map +0 -1
- package/dist/modules/n8n-packages/engine/import-pipeline.d.ts +0 -28
- package/dist/modules/n8n-packages/engine/import-pipeline.js +0 -204
- 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 @@
|
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
26
|
-
const
|
|
27
|
-
const
|
|
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 =
|
|
30
|
-
|
|
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
|
|
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
|
-
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
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;
|
|
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":";;;
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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":";;;;;;;;;;;;AACA,gCAAkC;
|
|
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 {
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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.
|
|
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
|
-
...(
|
|
82
|
-
? { requirements: { credentials: credentialExportResult.requirements } }
|
|
83
|
-
: {}),
|
|
103
|
+
...(manifestRequirements ? { requirements: manifestRequirements } : {}),
|
|
84
104
|
...(allWorkflowsInPackage.length > 0 ? { workflows: allWorkflowsInPackage } : {}),
|
|
85
|
-
...(
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|