n8n 2.7.2 → 2.8.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/active-workflow-manager.js +0 -1
- package/dist/active-workflow-manager.js.map +1 -1
- package/dist/auth/auth-handler.registry.d.ts +15 -0
- package/dist/auth/auth-handler.registry.js +87 -0
- package/dist/auth/auth-handler.registry.js.map +1 -0
- package/dist/auth/handlers/email.auth-handler.d.ts +19 -0
- package/dist/auth/handlers/email.auth-handler.js +52 -0
- package/dist/auth/handlers/email.auth-handler.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -1
- package/dist/chat/chat-service.types.d.ts +2 -2
- package/dist/commands/base-command.js +5 -2
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/start.js +17 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/controllers/ai.controller.js +2 -0
- package/dist/controllers/ai.controller.js.map +1 -1
- package/dist/controllers/auth.controller.d.ts +8 -1
- package/dist/controllers/auth.controller.js +66 -85
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/dynamic-node-parameters.controller.d.ts +2 -2
- package/dist/controllers/dynamic-node-parameters.controller.js +13 -13
- package/dist/controllers/dynamic-node-parameters.controller.js.map +1 -1
- package/dist/controllers/e2e.controller.d.ts +4 -0
- package/dist/controllers/e2e.controller.js +18 -0
- package/dist/controllers/e2e.controller.js.map +1 -1
- package/dist/controllers/me.controller.d.ts +2 -2
- package/dist/controllers/me.controller.js +1 -1
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/mfa.controller.js +11 -0
- package/dist/controllers/mfa.controller.js.map +1 -1
- package/dist/controllers/security-settings.controller.d.ts +18 -0
- package/dist/controllers/security-settings.controller.js +96 -0
- package/dist/controllers/security-settings.controller.js.map +1 -0
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/credentials/credentials-finder.service.d.ts +1 -5
- package/dist/credentials/credentials-finder.service.js +2 -2
- package/dist/credentials/credentials-finder.service.js.map +1 -1
- package/dist/credentials/credentials.controller.js +1 -1
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +3 -2
- package/dist/credentials/credentials.service.js +32 -3
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/credentials/validation.d.ts +4 -0
- package/dist/credentials/validation.js +44 -0
- package/dist/credentials/validation.js.map +1 -0
- package/dist/eventbus/event-message-classes/event-message-audit.d.ts +4 -0
- package/dist/eventbus/event-message-classes/event-message-audit.js.map +1 -1
- package/dist/eventbus/event-message-classes/index.d.ts +2 -2
- package/dist/eventbus/event-message-classes/index.js +7 -0
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +14 -0
- package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
- package/dist/events/relays/log-streaming.event-relay.js +60 -2
- package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.d.ts +1 -0
- package/dist/events/relays/telemetry.event-relay.js +7 -0
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +14 -0
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-execution-store.service.d.ts +44 -0
- package/dist/modules/chat-hub/chat-hub-execution-store.service.js +159 -0
- package/dist/modules/chat-hub/chat-hub-execution-store.service.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub-execution-watcher.service.d.ts +25 -0
- package/dist/modules/chat-hub/chat-hub-execution-watcher.service.js +205 -0
- package/dist/modules/chat-hub/chat-hub-execution-watcher.service.js.map +1 -0
- package/dist/modules/chat-hub/chat-hub-execution.service.d.ts +10 -12
- package/dist/modules/chat-hub/chat-hub-execution.service.js +93 -187
- package/dist/modules/chat-hub/chat-hub-execution.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-title.service.js +2 -2
- package/dist/modules/chat-hub/chat-hub-title.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub-workflow.service.d.ts +1 -0
- package/dist/modules/chat-hub/chat-hub-workflow.service.js +101 -9
- package/dist/modules/chat-hub/chat-hub-workflow.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.constants.js +7 -3
- package/dist/modules/chat-hub/chat-hub.constants.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.models.service.d.ts +2 -2
- package/dist/modules/chat-hub/chat-hub.models.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.module.js +7 -0
- package/dist/modules/chat-hub/chat-hub.module.js.map +1 -1
- package/dist/modules/chat-hub/chat-hub.service.js +3 -6
- package/dist/modules/chat-hub/chat-hub.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-stream-state.service.d.ts +4 -2
- package/dist/modules/chat-hub/chat-stream-state.service.js +11 -11
- package/dist/modules/chat-hub/chat-stream-state.service.js.map +1 -1
- package/dist/modules/chat-hub/chat-stream.service.d.ts +1 -1
- package/dist/modules/chat-hub/chat-stream.service.js +1 -1
- package/dist/modules/chat-hub/chat-stream.service.js.map +1 -1
- package/dist/modules/chat-hub/dto/chat-models-request.dto.d.ts +3 -2
- package/dist/modules/chat-hub/dto/chat-models-request.dto.js +1 -2
- package/dist/modules/chat-hub/dto/chat-models-request.dto.js.map +1 -1
- package/dist/modules/community-packages/community-node-types.service.d.ts +1 -0
- package/dist/modules/community-packages/community-node-types.service.js +30 -0
- package/dist/modules/community-packages/community-node-types.service.js.map +1 -1
- package/dist/modules/data-table/data-table.controller.d.ts +4 -1
- package/dist/modules/data-table/data-table.controller.js +23 -2
- package/dist/modules/data-table/data-table.controller.js.map +1 -1
- package/dist/modules/data-table/middleware/branch-write-access-middleware.d.ts +2 -0
- package/dist/modules/data-table/middleware/branch-write-access-middleware.js +15 -0
- package/dist/modules/data-table/middleware/branch-write-access-middleware.js.map +1 -0
- package/dist/modules/dynamic-credentials.ee/credential-resolvers/identifiers/oauth2-introspection-identifier.d.ts +2 -2
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js +2 -2
- package/dist/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets-manager.ee.d.ts +16 -7
- package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js +63 -20
- package/dist/modules/external-secrets.ee/external-secrets-manager.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets-providers.ee.d.ts +2 -0
- package/dist/modules/external-secrets.ee/external-secrets-providers.ee.js +8 -0
- package/dist/modules/external-secrets.ee/external-secrets-providers.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets.controller.ee.d.ts +7 -3
- package/dist/modules/external-secrets.ee/external-secrets.module.js +1 -1
- package/dist/modules/external-secrets.ee/external-secrets.module.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets.service.ee.d.ts +10 -5
- package/dist/modules/external-secrets.ee/external-secrets.service.ee.js +7 -45
- package/dist/modules/external-secrets.ee/external-secrets.service.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/redaction.service.ee.d.ts +7 -0
- package/dist/modules/external-secrets.ee/redaction.service.ee.js +56 -0
- package/dist/modules/external-secrets.ee/redaction.service.ee.js.map +1 -0
- package/dist/modules/external-secrets.ee/secrets-providers-completions.controller.ee.d.ts +15 -0
- package/dist/modules/external-secrets.ee/secrets-providers-completions.controller.ee.js +76 -0
- package/dist/modules/external-secrets.ee/secrets-providers-completions.controller.ee.js.map +1 -0
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.d.ts +10 -12
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js +21 -42
- package/dist/modules/external-secrets.ee/secrets-providers-connections.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.d.ts +16 -3
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js +60 -5
- package/dist/modules/external-secrets.ee/secrets-providers-connections.service.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.d.ts +8 -4
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js +20 -9
- package/dist/modules/external-secrets.ee/secrets-providers-project.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers-types.controller.ee.d.ts +9 -5
- package/dist/modules/external-secrets.ee/secrets-providers-types.controller.ee.js +33 -13
- package/dist/modules/external-secrets.ee/secrets-providers-types.controller.ee.js.map +1 -1
- package/dist/modules/external-secrets.ee/secrets-providers.responses.ee.d.ts +9 -3
- package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +3 -3
- package/dist/modules/insights/insights.service.d.ts +3 -3
- package/dist/modules/ldap.ee/ldap.module.js +1 -4
- package/dist/modules/ldap.ee/ldap.module.js.map +1 -1
- package/dist/modules/ldap.ee/ldap.service.ee.d.ts +11 -4
- package/dist/modules/ldap.ee/ldap.service.ee.js +5 -2
- package/dist/modules/ldap.ee/ldap.service.ee.js.map +1 -1
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.js +1 -1
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-syslog.ee.js.map +1 -1
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.js +10 -1
- package/dist/modules/log-streaming.ee/destinations/message-event-bus-destination-webhook.ee.js.map +1 -1
- package/dist/modules/mcp/dto/approve-consent-request.dto.d.ts +3 -2
- package/dist/modules/mcp/dto/approve-consent-request.dto.js +2 -2
- package/dist/modules/mcp/dto/approve-consent-request.dto.js.map +1 -1
- package/dist/modules/mcp/dto/update-mcp-settings.dto.d.ts +3 -2
- package/dist/modules/mcp/dto/update-mcp-settings.dto.js +2 -2
- package/dist/modules/mcp/dto/update-mcp-settings.dto.js.map +1 -1
- package/dist/modules/mcp/dto/update-workflow-availability.dto.d.ts +3 -2
- package/dist/modules/mcp/dto/update-workflow-availability.dto.js +2 -2
- package/dist/modules/mcp/dto/update-workflow-availability.dto.js.map +1 -1
- package/dist/modules/mcp/mcp.service.d.ts +15 -2
- package/dist/modules/mcp/mcp.service.js +66 -3
- package/dist/modules/mcp/mcp.service.js.map +1 -1
- package/dist/modules/mcp/tools/execute-workflow.tool.d.ts +3 -2
- package/dist/modules/mcp/tools/execute-workflow.tool.js +18 -9
- package/dist/modules/mcp/tools/execute-workflow.tool.js.map +1 -1
- package/dist/modules/mcp/tools/get-workflow-details.tool.js.map +1 -1
- package/dist/modules/mcp/tools/search-workflows.tool.js +1 -1
- package/dist/modules/mcp/tools/search-workflows.tool.js.map +1 -1
- package/dist/modules/quick-connect/handlers/quick-connect.handler.d.ts +11 -0
- package/dist/modules/quick-connect/handlers/quick-connect.handler.js +26 -0
- package/dist/modules/quick-connect/handlers/quick-connect.handler.js.map +1 -0
- package/dist/modules/quick-connect/handlers/sample.handler.d.ts +7 -0
- package/dist/modules/quick-connect/handlers/sample.handler.js +27 -0
- package/dist/modules/quick-connect/handlers/sample.handler.js.map +1 -0
- package/dist/modules/quick-connect/quick-connect.config.d.ts +95 -0
- package/dist/modules/quick-connect/quick-connect.config.js +48 -0
- package/dist/modules/quick-connect/quick-connect.config.js.map +1 -0
- package/dist/modules/quick-connect/quick-connect.controller.d.ts +10 -0
- package/dist/modules/quick-connect/quick-connect.controller.js +39 -0
- package/dist/modules/quick-connect/quick-connect.controller.js.map +1 -0
- package/dist/modules/quick-connect/quick-connect.errors.d.ts +5 -0
- package/dist/modules/quick-connect/quick-connect.errors.js +12 -0
- package/dist/modules/quick-connect/quick-connect.errors.js.map +1 -0
- package/dist/modules/quick-connect/quick-connect.module.d.ts +15 -0
- package/dist/modules/quick-connect/quick-connect.module.js +70 -0
- package/dist/modules/quick-connect/quick-connect.module.js.map +1 -0
- package/dist/modules/quick-connect/quick-connect.service.d.ts +17 -0
- package/dist/modules/quick-connect/quick-connect.service.js +87 -0
- package/dist/modules/quick-connect/quick-connect.service.js.map +1 -0
- package/dist/modules/source-control.ee/constants.d.ts +2 -0
- package/dist/modules/source-control.ee/constants.js +3 -1
- package/dist/modules/source-control.ee/constants.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-export.service.ee.d.ts +6 -1
- package/dist/modules/source-control.ee/source-control-export.service.ee.js +136 -19
- package/dist/modules/source-control.ee/source-control-export.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-helper.ee.d.ts +10 -2
- package/dist/modules/source-control.ee/source-control-helper.ee.js +81 -5
- 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 +15 -1
- package/dist/modules/source-control.ee/source-control-import.service.ee.js +209 -3
- package/dist/modules/source-control.ee/source-control-import.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-scoped.service.d.ts +2 -0
- package/dist/modules/source-control.ee/source-control-scoped.service.js +8 -0
- package/dist/modules/source-control.ee/source-control-scoped.service.js.map +1 -1
- package/dist/modules/source-control.ee/source-control-status.service.ee.d.ts +3 -0
- package/dist/modules/source-control.ee/source-control-status.service.ee.js +494 -328
- 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 +2 -2
- package/dist/modules/source-control.ee/source-control.service.ee.d.ts +1 -1
- package/dist/modules/source-control.ee/source-control.service.ee.js +12 -1
- package/dist/modules/source-control.ee/source-control.service.ee.js.map +1 -1
- package/dist/modules/source-control.ee/types/exportable-data-table.d.ts +20 -0
- package/dist/modules/source-control.ee/types/exportable-data-table.js +3 -0
- package/dist/modules/source-control.ee/types/exportable-data-table.js.map +1 -0
- package/dist/modules/source-control.ee/types/source-control-get-status.d.ts +4 -0
- package/dist/modules/source-control.ee/types/source-control-get-status.js.map +1 -1
- package/dist/modules/sso-oidc/oidc.service.ee.js +7 -4
- package/dist/modules/sso-oidc/oidc.service.ee.js.map +1 -1
- package/dist/modules/sso-saml/saml.controller.ee.d.ts +10 -3
- package/dist/modules/workflow-index/workflow-index.service.d.ts +4 -2
- package/dist/modules/workflow-index/workflow-index.service.js +56 -29
- package/dist/modules/workflow-index/workflow-index.service.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +1 -0
- package/dist/oauth/oauth.service.js +24 -3
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/oauth/validate-oauth-url.d.ts +1 -0
- package/dist/oauth/validate-oauth-url.js +21 -0
- package/dist/oauth/validate-oauth-url.js.map +1 -0
- package/dist/public-api/types.d.ts +5 -0
- package/dist/public-api/v1/handlers/credentials/credentials.handler.d.ts +15 -0
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js +43 -5
- package/dist/public-api/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/credentials/credentials.service.d.ts +14 -2
- package/dist/public-api/v1/handlers/credentials/credentials.service.js +21 -2
- package/dist/public-api/v1/handlers/credentials/credentials.service.js.map +1 -1
- package/dist/public-api/v1/handlers/projects/projects.handler.d.ts +4 -0
- package/dist/public-api/v1/handlers/projects/projects.handler.js +57 -0
- package/dist/public-api/v1/handlers/projects/projects.handler.js.map +1 -1
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js +15 -15
- package/dist/public-api/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/public-api/v1/openapi.yml +187 -31
- package/dist/push/abstract.push.js +2 -0
- package/dist/push/abstract.push.js.map +1 -1
- package/dist/scaling/constants.d.ts +1 -0
- package/dist/scaling/constants.js +2 -1
- package/dist/scaling/constants.js.map +1 -1
- package/dist/scaling/job-processor.d.ts +1 -0
- package/dist/scaling/job-processor.js +106 -0
- package/dist/scaling/job-processor.js.map +1 -1
- package/dist/scaling/pubsub/publisher.service.d.ts +4 -0
- package/dist/scaling/pubsub/publisher.service.js +14 -0
- package/dist/scaling/pubsub/publisher.service.js.map +1 -1
- package/dist/scaling/pubsub/subscriber.service.d.ts +10 -0
- package/dist/scaling/pubsub/subscriber.service.js +25 -0
- package/dist/scaling/pubsub/subscriber.service.js.map +1 -1
- package/dist/scaling/scaling.service.d.ts +1 -0
- package/dist/scaling/scaling.service.js +54 -0
- package/dist/scaling/scaling.service.js.map +1 -1
- package/dist/scaling/scaling.types.d.ts +20 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/services/dynamic-node-parameters.service.d.ts +5 -3
- package/dist/services/dynamic-node-parameters.service.js +20 -3
- package/dist/services/dynamic-node-parameters.service.js.map +1 -1
- package/dist/services/folder.service.js +1 -1
- package/dist/services/folder.service.js.map +1 -1
- package/dist/services/frontend.service.d.ts +1 -0
- package/dist/services/frontend.service.js +9 -2
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/rate-limit.service.d.ts +1 -1
- package/dist/services/rate-limit.service.js +1 -1
- package/dist/services/rate-limit.service.js.map +1 -1
- package/dist/services/role.service.d.ts +6 -3
- package/dist/services/role.service.js +39 -2
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/security-settings.service.d.ts +20 -0
- package/dist/services/security-settings.service.js +68 -0
- package/dist/services/security-settings.service.js.map +1 -0
- package/dist/task-runners/task-broker/task-broker-ws-server.d.ts +4 -2
- package/dist/task-runners/task-broker/task-broker-ws-server.js +24 -2
- package/dist/task-runners/task-broker/task-broker-ws-server.js.map +1 -1
- package/dist/task-runners/task-broker/task-broker.service.d.ts +4 -0
- package/dist/task-runners/task-broker/task-broker.service.js +19 -0
- package/dist/task-runners/task-broker/task-broker.service.js.map +1 -1
- package/dist/telemetry/index.js +3 -0
- package/dist/telemetry/index.js.map +1 -1
- package/dist/webhooks/live-webhooks.js +2 -3
- package/dist/webhooks/live-webhooks.js.map +1 -1
- package/dist/webhooks/webhook-helpers.js +66 -7
- package/dist/webhooks/webhook-helpers.js.map +1 -1
- package/dist/webhooks/webhook.service.js +1 -2
- package/dist/webhooks/webhook.service.js.map +1 -1
- package/dist/workflow-runner.js +8 -3
- package/dist/workflow-runner.js.map +1 -1
- package/dist/workflows/workflow-finder.service.d.ts +2 -0
- package/dist/workflows/workflow-finder.service.js +22 -2
- package/dist/workflows/workflow-finder.service.js.map +1 -1
- package/dist/workflows/workflow-history/workflow-history-manager.d.ts +3 -1
- package/dist/workflows/workflow-history/workflow-history-manager.js +7 -3
- package/dist/workflows/workflow-history/workflow-history-manager.js.map +1 -1
- package/dist/workflows/workflow-history/workflow-history.controller.d.ts +6 -1
- package/dist/workflows/workflow-history/workflow-history.controller.js +24 -0
- package/dist/workflows/workflow-history/workflow-history.controller.js.map +1 -1
- package/dist/workflows/workflow-history/workflow-history.service.d.ts +7 -3
- package/dist/workflows/workflow-history/workflow-history.service.js +41 -4
- package/dist/workflows/workflow-history/workflow-history.service.js.map +1 -1
- package/dist/workflows/workflow-sharing.service.d.ts +1 -1
- package/dist/workflows/workflow-sharing.service.js +2 -2
- package/dist/workflows/workflow-sharing.service.js.map +1 -1
- package/dist/workflows/workflow-validation.service.d.ts +4 -2
- package/dist/workflows/workflow-validation.service.js +93 -1
- package/dist/workflows/workflow-validation.service.js.map +1 -1
- package/dist/workflows/workflow.service.d.ts +13 -6
- package/dist/workflows/workflow.service.ee.js +11 -4
- package/dist/workflows/workflow.service.ee.js.map +1 -1
- package/dist/workflows/workflow.service.js +70 -47
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +3 -3
- package/dist/workflows/workflows.controller.js +16 -8
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/package.json +28 -23
- package/templates/form-trigger-completion.handlebars +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +0 -18
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/methods/email.d.ts +0 -2
- package/dist/auth/methods/email.js +0 -26
- package/dist/auth/methods/email.js.map +0 -1
- package/dist/modules/external-secrets.ee/secrets-providers-autocomplete.controller.ee.d.ts +0 -11
- package/dist/modules/external-secrets.ee/secrets-providers-autocomplete.controller.ee.js +0 -64
- package/dist/modules/external-secrets.ee/secrets-providers-autocomplete.controller.ee.js.map +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
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.QuickConnectConfig = void 0;
|
|
13
|
+
const config_1 = require("@n8n/config");
|
|
14
|
+
const zod_1 = require("zod");
|
|
15
|
+
const backendFlowConfigSchema = zod_1.z.object({
|
|
16
|
+
secret: zod_1.z.string(),
|
|
17
|
+
});
|
|
18
|
+
const quickConnectOptionSchema = zod_1.z.object({
|
|
19
|
+
packageName: zod_1.z.string(),
|
|
20
|
+
credentialType: zod_1.z.string(),
|
|
21
|
+
text: zod_1.z.string(),
|
|
22
|
+
quickConnectType: zod_1.z.string(),
|
|
23
|
+
serviceName: zod_1.z.string(),
|
|
24
|
+
consentText: zod_1.z.string().optional(),
|
|
25
|
+
backendFlowConfig: backendFlowConfigSchema.optional(),
|
|
26
|
+
});
|
|
27
|
+
const quickConnectOptionsSchema = zod_1.z.string().pipe(zod_1.z.preprocess((input) => {
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(input);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
}, zod_1.z.array(quickConnectOptionSchema)));
|
|
35
|
+
let QuickConnectConfig = class QuickConnectConfig {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.options = [];
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.QuickConnectConfig = QuickConnectConfig;
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, config_1.Env)('N8N_QUICK_CONNECT_OPTIONS', quickConnectOptionsSchema),
|
|
43
|
+
__metadata("design:type", Array)
|
|
44
|
+
], QuickConnectConfig.prototype, "options", void 0);
|
|
45
|
+
exports.QuickConnectConfig = QuickConnectConfig = __decorate([
|
|
46
|
+
config_1.Config
|
|
47
|
+
], QuickConnectConfig);
|
|
48
|
+
//# sourceMappingURL=quick-connect.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-connect.config.js","sourceRoot":"","sources":["../../../src/modules/quick-connect/quick-connect.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA0C;AAC1C,6BAAwB;AAExB,MAAM,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,MAAM,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE;IAC1B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,iBAAiB,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAIH,MAAM,yBAAyB,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAChD,OAAC,CAAC,UAAU,CAAC,CAAC,KAAa,EAAE,EAAE;IAC9B,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC,EAAE,OAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CACrC,CAAC;AAKK,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;QAGN,YAAO,GAAwB,EAAE,CAAC;IACnC,CAAC;CAAA,CAAA;AAJY,gDAAkB;AAG9B;IADC,IAAA,YAAG,EAAC,2BAA2B,EAAE,yBAAyB,CAAC;;mDAC1B;6BAHtB,kBAAkB;IAD9B,eAAM;GACM,kBAAkB,CAI9B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CreateQuickConnectCredentialDto } from '@n8n/api-types';
|
|
2
|
+
import type { AuthenticatedRequest } from '@n8n/db';
|
|
3
|
+
import { QuickConnectService } from './quick-connect.service';
|
|
4
|
+
export declare class QuickConnectController {
|
|
5
|
+
private readonly quickConnectService;
|
|
6
|
+
constructor(quickConnectService: QuickConnectService);
|
|
7
|
+
createCredential(req: AuthenticatedRequest, _res: unknown, body: CreateQuickConnectCredentialDto): Promise<{
|
|
8
|
+
id: string;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.QuickConnectController = void 0;
|
|
16
|
+
const api_types_1 = require("@n8n/api-types");
|
|
17
|
+
const decorators_1 = require("@n8n/decorators");
|
|
18
|
+
const quick_connect_service_1 = require("./quick-connect.service");
|
|
19
|
+
let QuickConnectController = class QuickConnectController {
|
|
20
|
+
constructor(quickConnectService) {
|
|
21
|
+
this.quickConnectService = quickConnectService;
|
|
22
|
+
}
|
|
23
|
+
async createCredential(req, _res, body) {
|
|
24
|
+
return await this.quickConnectService.createCredential(body.credentialType, req.user, body.projectId);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.QuickConnectController = QuickConnectController;
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, decorators_1.Post)('/create'),
|
|
30
|
+
__param(2, decorators_1.Body),
|
|
31
|
+
__metadata("design:type", Function),
|
|
32
|
+
__metadata("design:paramtypes", [Object, Object, api_types_1.CreateQuickConnectCredentialDto]),
|
|
33
|
+
__metadata("design:returntype", Promise)
|
|
34
|
+
], QuickConnectController.prototype, "createCredential", null);
|
|
35
|
+
exports.QuickConnectController = QuickConnectController = __decorate([
|
|
36
|
+
(0, decorators_1.RestController)('/quick-connect'),
|
|
37
|
+
__metadata("design:paramtypes", [quick_connect_service_1.QuickConnectService])
|
|
38
|
+
], QuickConnectController);
|
|
39
|
+
//# sourceMappingURL=quick-connect.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-connect.controller.js","sourceRoot":"","sources":["../../../src/modules/quick-connect/quick-connect.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAAiE;AAEjE,gDAA6D;AAE7D,mEAA8D;AAGvD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAClC,YAA6B,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAGnE,AAAN,KAAK,CAAC,gBAAgB,CACrB,GAAyB,EACzB,IAAa,EACP,IAAqC;QAE3C,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CACrD,IAAI,CAAC,cAAc,EACnB,GAAG,CAAC,IAAI,EACR,IAAI,CAAC,SAAS,CACd,CAAC;IACH,CAAC;CACD,CAAA;AAfY,wDAAsB;AAI5B;IADL,IAAA,iBAAI,EAAC,SAAS,CAAC;IAId,WAAA,iBAAI,CAAA;;qDAAO,2CAA+B;;8DAO3C;iCAdW,sBAAsB;IADlC,IAAA,2BAAc,EAAC,gBAAgB,CAAC;qCAEkB,2CAAmB;GADzD,sBAAsB,CAelC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuickConnectError = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
class QuickConnectError extends n8n_workflow_1.OperationalError {
|
|
6
|
+
constructor(message, credentialType, cause) {
|
|
7
|
+
super(message, { cause, extra: { credentialType } });
|
|
8
|
+
this.credentialType = credentialType;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.QuickConnectError = QuickConnectError;
|
|
12
|
+
//# sourceMappingURL=quick-connect.errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-connect.errors.js","sourceRoot":"","sources":["../../../src/modules/quick-connect/quick-connect.errors.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAKhD,MAAa,iBAAkB,SAAQ,+BAAgB;IACtD,YACC,OAAe,EACN,cAAsB,EAC/B,KAAa;QAEb,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QAH5C,mBAAc,GAAd,cAAc,CAAQ;IAIhC,CAAC;CACD;AARD,8CAQC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ModuleInterface } from '@n8n/decorators';
|
|
2
|
+
export declare class QuickConnectModule implements ModuleInterface {
|
|
3
|
+
init(): Promise<void>;
|
|
4
|
+
settings(): Promise<{
|
|
5
|
+
options: {
|
|
6
|
+
packageName: string;
|
|
7
|
+
text: string;
|
|
8
|
+
credentialType: string;
|
|
9
|
+
quickConnectType: string;
|
|
10
|
+
serviceName: string;
|
|
11
|
+
consentText?: string | undefined;
|
|
12
|
+
}[];
|
|
13
|
+
}>;
|
|
14
|
+
private registerHandlers;
|
|
15
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.QuickConnectModule = void 0;
|
|
43
|
+
const decorators_1 = require("@n8n/decorators");
|
|
44
|
+
const di_1 = require("@n8n/di");
|
|
45
|
+
let QuickConnectModule = class QuickConnectModule {
|
|
46
|
+
async init() {
|
|
47
|
+
await this.registerHandlers();
|
|
48
|
+
await Promise.resolve().then(() => __importStar(require('./quick-connect.controller')));
|
|
49
|
+
}
|
|
50
|
+
async settings() {
|
|
51
|
+
const { QuickConnectConfig } = await Promise.resolve().then(() => __importStar(require('./quick-connect.config')));
|
|
52
|
+
const { options } = di_1.Container.get(QuickConnectConfig);
|
|
53
|
+
return {
|
|
54
|
+
options: options.map(({ backendFlowConfig, ...rest }) => ({
|
|
55
|
+
...rest,
|
|
56
|
+
})),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async registerHandlers() {
|
|
60
|
+
const { QuickConnectHandlerRegistry } = await Promise.resolve().then(() => __importStar(require('./handlers/quick-connect.handler')));
|
|
61
|
+
const { SampleHandler } = await Promise.resolve().then(() => __importStar(require('./handlers/sample.handler')));
|
|
62
|
+
const registry = di_1.Container.get(QuickConnectHandlerRegistry);
|
|
63
|
+
registry.register(di_1.Container.get(SampleHandler));
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.QuickConnectModule = QuickConnectModule;
|
|
67
|
+
exports.QuickConnectModule = QuickConnectModule = __decorate([
|
|
68
|
+
(0, decorators_1.BackendModule)({ name: 'quick-connect' })
|
|
69
|
+
], QuickConnectModule);
|
|
70
|
+
//# sourceMappingURL=quick-connect.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-connect.module.js","sourceRoot":"","sources":["../../../src/modules/quick-connect/quick-connect.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAgD;AAChD,gCAAoC;AAG7B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC9B,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,wDAAa,4BAA4B,GAAC,CAAC;IAC5C,CAAC;IAQD,KAAK,CAAC,QAAQ;QACb,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;QACtE,MAAM,EAAE,OAAO,EAAE,GAAG,cAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEtD,OAAO;YACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzD,GAAG,IAAI;aACP,CAAC,CAAC;SACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC7B,MAAM,EAAE,2BAA2B,EAAE,GAAG,wDAAa,kCAAkC,GAAC,CAAC;QACzF,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,2BAA2B,GAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,cAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC5D,QAAQ,CAAC,QAAQ,CAAC,cAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IACjD,CAAC;CACD,CAAA;AA7BY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,0BAAa,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;GAC5B,kBAAkB,CA6B9B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Logger } from '@n8n/backend-common';
|
|
2
|
+
import type { User } from '@n8n/db';
|
|
3
|
+
import { CredentialsFinderService } from '../../credentials/credentials-finder.service';
|
|
4
|
+
import { CredentialsService } from '../../credentials/credentials.service';
|
|
5
|
+
import { QuickConnectHandlerRegistry } from './handlers/quick-connect.handler';
|
|
6
|
+
import { QuickConnectConfig } from './quick-connect.config';
|
|
7
|
+
export declare class QuickConnectService {
|
|
8
|
+
private readonly credentialsService;
|
|
9
|
+
private readonly credentialsFinderService;
|
|
10
|
+
private readonly config;
|
|
11
|
+
private readonly handlerRegistry;
|
|
12
|
+
private readonly logger;
|
|
13
|
+
constructor(credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, config: QuickConnectConfig, handlerRegistry: QuickConnectHandlerRegistry, logger: Logger);
|
|
14
|
+
createCredential(credentialType: string, user: User, projectId?: string): Promise<{
|
|
15
|
+
id: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
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.QuickConnectService = void 0;
|
|
13
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
14
|
+
const di_1 = require("@n8n/di");
|
|
15
|
+
const credentials_finder_service_1 = require("../../credentials/credentials-finder.service");
|
|
16
|
+
const credentials_service_1 = require("../../credentials/credentials.service");
|
|
17
|
+
const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
|
|
18
|
+
const conflict_error_1 = require("../../errors/response-errors/conflict.error");
|
|
19
|
+
const not_found_error_1 = require("../../errors/response-errors/not-found.error");
|
|
20
|
+
const quick_connect_handler_1 = require("./handlers/quick-connect.handler");
|
|
21
|
+
const quick_connect_config_1 = require("./quick-connect.config");
|
|
22
|
+
const quick_connect_errors_1 = require("./quick-connect.errors");
|
|
23
|
+
let QuickConnectService = class QuickConnectService {
|
|
24
|
+
constructor(credentialsService, credentialsFinderService, config, handlerRegistry, logger) {
|
|
25
|
+
this.credentialsService = credentialsService;
|
|
26
|
+
this.credentialsFinderService = credentialsFinderService;
|
|
27
|
+
this.config = config;
|
|
28
|
+
this.handlerRegistry = handlerRegistry;
|
|
29
|
+
this.logger = logger;
|
|
30
|
+
this.logger = this.logger.scoped('quick-connect');
|
|
31
|
+
}
|
|
32
|
+
async createCredential(credentialType, user, projectId) {
|
|
33
|
+
const option = this.config.options.find((opt) => opt.credentialType === credentialType);
|
|
34
|
+
if (!option) {
|
|
35
|
+
throw new not_found_error_1.NotFoundError(`Quick connect is not available for credential type: ${credentialType}`);
|
|
36
|
+
}
|
|
37
|
+
const existingCredentials = await this.credentialsFinderService.findCredentialsForUser(user, [
|
|
38
|
+
'credential:read',
|
|
39
|
+
]);
|
|
40
|
+
const hasExisting = existingCredentials.some((cred) => cred.type === credentialType);
|
|
41
|
+
if (hasExisting) {
|
|
42
|
+
throw new conflict_error_1.ConflictError(`A credential of type "${credentialType}" already exists. Quick connect only allows one credential per type.`);
|
|
43
|
+
}
|
|
44
|
+
if (!option.backendFlowConfig?.secret) {
|
|
45
|
+
throw new bad_request_error_1.BadRequestError(`Quick connect is not configured for credential type: ${credentialType}`);
|
|
46
|
+
}
|
|
47
|
+
const handler = this.handlerRegistry.get(credentialType);
|
|
48
|
+
if (!handler) {
|
|
49
|
+
throw new not_found_error_1.NotFoundError(`Quick connect handler not found for: ${credentialType}`);
|
|
50
|
+
}
|
|
51
|
+
if (!handler.getCredentialData) {
|
|
52
|
+
throw new bad_request_error_1.BadRequestError(`Quick connect flow for credential type ${credentialType} is not backend-based`);
|
|
53
|
+
}
|
|
54
|
+
let credentialData;
|
|
55
|
+
try {
|
|
56
|
+
credentialData = await handler.getCredentialData(option);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.logger.error('Failed to fetch credential data from third-party', {
|
|
60
|
+
error,
|
|
61
|
+
credentialType,
|
|
62
|
+
});
|
|
63
|
+
throw new quick_connect_errors_1.QuickConnectError(`Failed to connect to ${option.serviceName}. Please try again later.`, credentialType, error instanceof Error ? error : undefined);
|
|
64
|
+
}
|
|
65
|
+
const credential = await this.credentialsService.createUnmanagedCredential({
|
|
66
|
+
name: `${option.serviceName} (Quick connect)`,
|
|
67
|
+
type: credentialType,
|
|
68
|
+
data: credentialData,
|
|
69
|
+
projectId,
|
|
70
|
+
}, user);
|
|
71
|
+
this.logger.info('Quick connect credential created', {
|
|
72
|
+
credentialId: credential.id,
|
|
73
|
+
credentialType,
|
|
74
|
+
});
|
|
75
|
+
return { id: credential.id };
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
exports.QuickConnectService = QuickConnectService;
|
|
79
|
+
exports.QuickConnectService = QuickConnectService = __decorate([
|
|
80
|
+
(0, di_1.Service)(),
|
|
81
|
+
__metadata("design:paramtypes", [credentials_service_1.CredentialsService,
|
|
82
|
+
credentials_finder_service_1.CredentialsFinderService,
|
|
83
|
+
quick_connect_config_1.QuickConnectConfig,
|
|
84
|
+
quick_connect_handler_1.QuickConnectHandlerRegistry,
|
|
85
|
+
backend_common_1.Logger])
|
|
86
|
+
], QuickConnectService);
|
|
87
|
+
//# sourceMappingURL=quick-connect.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-connect.service.js","sourceRoot":"","sources":["../../../src/modules/quick-connect/quick-connect.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAE7C,gCAAkC;AAGlC,yFAAoF;AACpF,2EAAuE;AACvE,kFAA6E;AAC7E,4EAAwE;AACxE,8EAAyE;AAEzE,4EAA+E;AAC/E,iEAA4D;AAC5D,iEAA2D;AAGpD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC/B,YACkB,kBAAsC,EACtC,wBAAkD,EAClD,MAA0B,EAC1B,eAA4C,EAC5C,MAAc;QAJd,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,WAAM,GAAN,MAAM,CAAoB;QAC1B,oBAAe,GAAf,eAAe,CAA6B;QAC5C,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,gBAAgB,CACrB,cAAsB,EACtB,IAAU,EACV,SAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,+BAAa,CACtB,uDAAuD,cAAc,EAAE,CACvE,CAAC;QACH,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,EAAE;YAC5F,iBAAiB;SACjB,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QACrF,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,8BAAa,CACtB,yBAAyB,cAAc,sEAAsE,CAC7G,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,mCAAe,CACxB,wDAAwD,cAAc,EAAE,CACxE,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,+BAAa,CAAC,wCAAwC,cAAc,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAChC,MAAM,IAAI,mCAAe,CACxB,0CAA0C,cAAc,uBAAuB,CAC/E,CAAC;QACH,CAAC;QAED,IAAI,cAA8C,CAAC;QACnD,IAAI,CAAC;YACJ,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE;gBACrE,KAAK;gBACL,cAAc;aACd,CAAC,CAAC;YACH,MAAM,IAAI,wCAAiB,CAC1B,wBAAwB,MAAM,CAAC,WAAW,2BAA2B,EACrE,cAAc,EACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC1C,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CACzE;YACC,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,kBAAkB;YAC7C,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,cAAc;YACpB,SAAS;SACT,EACD,IAAI,CACJ,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;YACpD,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,cAAc;SACd,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;IAC9B,CAAC;CACD,CAAA;AAlFY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,YAAO,GAAE;qCAG6B,wCAAkB;QACZ,qDAAwB;QAC1C,yCAAkB;QACT,mDAA2B;QACpC,uBAAM;GANpB,mBAAmB,CAkF/B"}
|
|
@@ -7,6 +7,7 @@ export declare const SOURCE_CONTROL_CREDENTIAL_EXPORT_FOLDER = "credential_stubs
|
|
|
7
7
|
export declare const SOURCE_CONTROL_VARIABLES_EXPORT_FILE = "variable_stubs.json";
|
|
8
8
|
export declare const SOURCE_CONTROL_TAGS_EXPORT_FILE = "tags.json";
|
|
9
9
|
export declare const SOURCE_CONTROL_FOLDERS_EXPORT_FILE = "folders.json";
|
|
10
|
+
export declare const SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER = "datatables";
|
|
10
11
|
export declare const SOURCE_CONTROL_OWNERS_EXPORT_FILE = "workflow_owners.json";
|
|
11
12
|
export declare const SOURCE_CONTROL_SSH_FOLDER = "ssh";
|
|
12
13
|
export declare const SOURCE_CONTROL_SSH_KEY_NAME = "key";
|
|
@@ -15,3 +16,4 @@ export declare const SOURCE_CONTROL_ORIGIN = "origin";
|
|
|
15
16
|
export declare const SOURCE_CONTROL_README = "\n# n8n Source Control\n";
|
|
16
17
|
export declare const SOURCE_CONTROL_DEFAULT_NAME = "n8n user";
|
|
17
18
|
export declare const SOURCE_CONTROL_DEFAULT_EMAIL = "n8n@example.com";
|
|
19
|
+
export declare const SOURCE_CONTROL_WRITE_FILE_BATCH_SIZE = 20;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SOURCE_CONTROL_DEFAULT_EMAIL = exports.SOURCE_CONTROL_DEFAULT_NAME = exports.SOURCE_CONTROL_README = exports.SOURCE_CONTROL_ORIGIN = exports.SOURCE_CONTROL_DEFAULT_BRANCH = exports.SOURCE_CONTROL_SSH_KEY_NAME = exports.SOURCE_CONTROL_SSH_FOLDER = exports.SOURCE_CONTROL_OWNERS_EXPORT_FILE = exports.SOURCE_CONTROL_FOLDERS_EXPORT_FILE = exports.SOURCE_CONTROL_TAGS_EXPORT_FILE = exports.SOURCE_CONTROL_VARIABLES_EXPORT_FILE = exports.SOURCE_CONTROL_CREDENTIAL_EXPORT_FOLDER = exports.SOURCE_CONTROL_PROJECT_EXPORT_FOLDER = exports.SOURCE_CONTROL_WORKFLOW_EXPORT_FOLDER = exports.SOURCE_CONTROL_GIT_KEY_COMMENT = exports.SOURCE_CONTROL_GIT_FOLDER = exports.SOURCE_CONTROL_PREFERENCES_DB_KEY = void 0;
|
|
3
|
+
exports.SOURCE_CONTROL_WRITE_FILE_BATCH_SIZE = exports.SOURCE_CONTROL_DEFAULT_EMAIL = exports.SOURCE_CONTROL_DEFAULT_NAME = exports.SOURCE_CONTROL_README = exports.SOURCE_CONTROL_ORIGIN = exports.SOURCE_CONTROL_DEFAULT_BRANCH = exports.SOURCE_CONTROL_SSH_KEY_NAME = exports.SOURCE_CONTROL_SSH_FOLDER = exports.SOURCE_CONTROL_OWNERS_EXPORT_FILE = exports.SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER = exports.SOURCE_CONTROL_FOLDERS_EXPORT_FILE = exports.SOURCE_CONTROL_TAGS_EXPORT_FILE = exports.SOURCE_CONTROL_VARIABLES_EXPORT_FILE = exports.SOURCE_CONTROL_CREDENTIAL_EXPORT_FOLDER = exports.SOURCE_CONTROL_PROJECT_EXPORT_FOLDER = exports.SOURCE_CONTROL_WORKFLOW_EXPORT_FOLDER = exports.SOURCE_CONTROL_GIT_KEY_COMMENT = exports.SOURCE_CONTROL_GIT_FOLDER = exports.SOURCE_CONTROL_PREFERENCES_DB_KEY = void 0;
|
|
4
4
|
exports.SOURCE_CONTROL_PREFERENCES_DB_KEY = 'features.sourceControl';
|
|
5
5
|
exports.SOURCE_CONTROL_GIT_FOLDER = 'git';
|
|
6
6
|
exports.SOURCE_CONTROL_GIT_KEY_COMMENT = 'n8n deploy key';
|
|
@@ -10,6 +10,7 @@ exports.SOURCE_CONTROL_CREDENTIAL_EXPORT_FOLDER = 'credential_stubs';
|
|
|
10
10
|
exports.SOURCE_CONTROL_VARIABLES_EXPORT_FILE = 'variable_stubs.json';
|
|
11
11
|
exports.SOURCE_CONTROL_TAGS_EXPORT_FILE = 'tags.json';
|
|
12
12
|
exports.SOURCE_CONTROL_FOLDERS_EXPORT_FILE = 'folders.json';
|
|
13
|
+
exports.SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER = 'datatables';
|
|
13
14
|
exports.SOURCE_CONTROL_OWNERS_EXPORT_FILE = 'workflow_owners.json';
|
|
14
15
|
exports.SOURCE_CONTROL_SSH_FOLDER = 'ssh';
|
|
15
16
|
exports.SOURCE_CONTROL_SSH_KEY_NAME = 'key';
|
|
@@ -20,4 +21,5 @@ exports.SOURCE_CONTROL_README = `
|
|
|
20
21
|
`;
|
|
21
22
|
exports.SOURCE_CONTROL_DEFAULT_NAME = 'n8n user';
|
|
22
23
|
exports.SOURCE_CONTROL_DEFAULT_EMAIL = 'n8n@example.com';
|
|
24
|
+
exports.SOURCE_CONTROL_WRITE_FILE_BATCH_SIZE = 20;
|
|
23
25
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/modules/source-control.ee/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iCAAiC,GAAG,wBAAwB,CAAC;AAC7D,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAClC,QAAA,8BAA8B,GAAG,gBAAgB,CAAC;AAClD,QAAA,qCAAqC,GAAG,WAAW,CAAC;AACpD,QAAA,oCAAoC,GAAG,UAAU,CAAC;AAClD,QAAA,uCAAuC,GAAG,kBAAkB,CAAC;AAC7D,QAAA,oCAAoC,GAAG,qBAAqB,CAAC;AAC7D,QAAA,+BAA+B,GAAG,WAAW,CAAC;AAC9C,QAAA,kCAAkC,GAAG,cAAc,CAAC;AACpD,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAClC,QAAA,2BAA2B,GAAG,KAAK,CAAC;AACpC,QAAA,6BAA6B,GAAG,MAAM,CAAC;AACvC,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AACjC,QAAA,qBAAqB,GAAG;;CAEpC,CAAC;AACW,QAAA,2BAA2B,GAAG,UAAU,CAAC;AACzC,QAAA,4BAA4B,GAAG,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/modules/source-control.ee/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iCAAiC,GAAG,wBAAwB,CAAC;AAC7D,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAClC,QAAA,8BAA8B,GAAG,gBAAgB,CAAC;AAClD,QAAA,qCAAqC,GAAG,WAAW,CAAC;AACpD,QAAA,oCAAoC,GAAG,UAAU,CAAC;AAClD,QAAA,uCAAuC,GAAG,kBAAkB,CAAC;AAC7D,QAAA,oCAAoC,GAAG,qBAAqB,CAAC;AAC7D,QAAA,+BAA+B,GAAG,WAAW,CAAC;AAC9C,QAAA,kCAAkC,GAAG,cAAc,CAAC;AACpD,QAAA,uCAAuC,GAAG,YAAY,CAAC;AACvD,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAClC,QAAA,2BAA2B,GAAG,KAAK,CAAC;AACpC,QAAA,6BAA6B,GAAG,MAAM,CAAC;AACvC,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AACjC,QAAA,qBAAqB,GAAG;;CAEpC,CAAC;AACW,QAAA,2BAA2B,GAAG,UAAU,CAAC;AACzC,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,oCAAoC,GAAG,EAAE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { SourceControlledFile } from '@n8n/api-types';
|
|
2
2
|
import { Logger } from '@n8n/backend-common';
|
|
3
3
|
import { FolderRepository, ProjectRepository, SharedCredentialsRepository, SharedWorkflowRepository, TagRepository, WorkflowRepository, WorkflowTagMappingRepository } from '@n8n/db';
|
|
4
|
+
import { DataTableRepository } from '../../modules/data-table/data-table.repository';
|
|
4
5
|
import { InstanceSettings } from 'n8n-core';
|
|
5
6
|
import { SourceControlScopedService } from './source-control-scoped.service';
|
|
6
7
|
import { VariablesService } from '../../environments.ee/variables/variables.service.ee';
|
|
@@ -17,18 +18,22 @@ export declare class SourceControlExportService {
|
|
|
17
18
|
private readonly workflowTagMappingRepository;
|
|
18
19
|
private readonly folderRepository;
|
|
19
20
|
private readonly sourceControlScopedService;
|
|
21
|
+
private readonly dataTableRepository;
|
|
20
22
|
private gitFolder;
|
|
21
23
|
private workflowExportFolder;
|
|
22
24
|
private projectExportFolder;
|
|
23
25
|
private credentialExportFolder;
|
|
24
|
-
|
|
26
|
+
private dataTableExportFolder;
|
|
27
|
+
constructor(logger: Logger, variablesService: VariablesService, tagRepository: TagRepository, projectRepository: ProjectRepository, sharedCredentialsRepository: SharedCredentialsRepository, sharedWorkflowRepository: SharedWorkflowRepository, workflowRepository: WorkflowRepository, workflowTagMappingRepository: WorkflowTagMappingRepository, folderRepository: FolderRepository, sourceControlScopedService: SourceControlScopedService, instanceSettings: InstanceSettings, dataTableRepository: DataTableRepository);
|
|
25
28
|
getWorkflowPath(workflowId: string): string;
|
|
26
29
|
getCredentialsPath(credentialsId: string): string;
|
|
30
|
+
getDataTablePath(dataTableId: string): string;
|
|
27
31
|
deleteRepositoryFolder(): Promise<void>;
|
|
28
32
|
rmFilesFromExportFolder(filesToBeDeleted: Set<string>): Promise<Set<string>>;
|
|
29
33
|
private writeExportableWorkflowsToExportFolder;
|
|
30
34
|
exportWorkflowsToWorkFolder(candidates: SourceControlledFile[]): Promise<ExportResult>;
|
|
31
35
|
exportGlobalVariablesToWorkFolder(): Promise<ExportResult>;
|
|
36
|
+
exportDataTablesToWorkFolder(candidates: SourceControlledFile[], _context: SourceControlContext): Promise<ExportResult>;
|
|
32
37
|
exportFoldersToWorkFolder(context: SourceControlContext): Promise<ExportResult>;
|
|
33
38
|
exportTagsToWorkFolder(context: SourceControlContext): Promise<ExportResult>;
|
|
34
39
|
private replaceCredentialData;
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.SourceControlExportService = void 0;
|
|
16
16
|
const backend_common_1 = require("@n8n/backend-common");
|
|
17
17
|
const db_1 = require("@n8n/db");
|
|
18
|
+
const data_table_repository_1 = require("../../modules/data-table/data-table.repository");
|
|
18
19
|
const di_1 = require("@n8n/di");
|
|
19
20
|
const permissions_1 = require("@n8n/permissions");
|
|
20
21
|
const typeorm_1 = require("@n8n/typeorm");
|
|
@@ -27,8 +28,9 @@ const constants_1 = require("./constants");
|
|
|
27
28
|
const source_control_helper_ee_1 = require("./source-control-helper.ee");
|
|
28
29
|
const source_control_scoped_service_1 = require("./source-control-scoped.service");
|
|
29
30
|
const variables_service_ee_1 = require("../../environments.ee/variables/variables.service.ee");
|
|
31
|
+
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
30
32
|
let SourceControlExportService = class SourceControlExportService {
|
|
31
|
-
constructor(logger, variablesService, tagRepository, projectRepository, sharedCredentialsRepository, sharedWorkflowRepository, workflowRepository, workflowTagMappingRepository, folderRepository, sourceControlScopedService, instanceSettings) {
|
|
33
|
+
constructor(logger, variablesService, tagRepository, projectRepository, sharedCredentialsRepository, sharedWorkflowRepository, workflowRepository, workflowTagMappingRepository, folderRepository, sourceControlScopedService, instanceSettings, dataTableRepository) {
|
|
32
34
|
this.logger = logger;
|
|
33
35
|
this.variablesService = variablesService;
|
|
34
36
|
this.tagRepository = tagRepository;
|
|
@@ -39,6 +41,7 @@ let SourceControlExportService = class SourceControlExportService {
|
|
|
39
41
|
this.workflowTagMappingRepository = workflowTagMappingRepository;
|
|
40
42
|
this.folderRepository = folderRepository;
|
|
41
43
|
this.sourceControlScopedService = sourceControlScopedService;
|
|
44
|
+
this.dataTableRepository = dataTableRepository;
|
|
42
45
|
this.replaceCredentialData = (data) => {
|
|
43
46
|
for (const [key] of Object.entries(data)) {
|
|
44
47
|
const value = data[key];
|
|
@@ -67,6 +70,7 @@ let SourceControlExportService = class SourceControlExportService {
|
|
|
67
70
|
this.workflowExportFolder = path_1.default.join(this.gitFolder, constants_1.SOURCE_CONTROL_WORKFLOW_EXPORT_FOLDER);
|
|
68
71
|
this.projectExportFolder = path_1.default.join(this.gitFolder, constants_1.SOURCE_CONTROL_PROJECT_EXPORT_FOLDER);
|
|
69
72
|
this.credentialExportFolder = path_1.default.join(this.gitFolder, constants_1.SOURCE_CONTROL_CREDENTIAL_EXPORT_FOLDER);
|
|
73
|
+
this.dataTableExportFolder = path_1.default.join(this.gitFolder, constants_1.SOURCE_CONTROL_DATATABLES_EXPORT_FOLDER);
|
|
70
74
|
}
|
|
71
75
|
getWorkflowPath(workflowId) {
|
|
72
76
|
return (0, source_control_helper_ee_1.getWorkflowExportPath)(workflowId, this.workflowExportFolder);
|
|
@@ -74,6 +78,9 @@ let SourceControlExportService = class SourceControlExportService {
|
|
|
74
78
|
getCredentialsPath(credentialsId) {
|
|
75
79
|
return (0, source_control_helper_ee_1.getCredentialExportPath)(credentialsId, this.credentialExportFolder);
|
|
76
80
|
}
|
|
81
|
+
getDataTablePath(dataTableId) {
|
|
82
|
+
return (0, source_control_helper_ee_1.getDataTableExportPath)(dataTableId, this.dataTableExportFolder);
|
|
83
|
+
}
|
|
77
84
|
async deleteRepositoryFolder() {
|
|
78
85
|
try {
|
|
79
86
|
await (0, promises_1.rm)(this.gitFolder, { recursive: true });
|
|
@@ -92,23 +99,26 @@ let SourceControlExportService = class SourceControlExportService {
|
|
|
92
99
|
return filesToBeDeleted;
|
|
93
100
|
}
|
|
94
101
|
async writeExportableWorkflowsToExportFolder(workflowsToBeExported, owners) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
102
|
+
const workflowChunks = (0, chunk_1.default)(workflowsToBeExported, constants_1.SOURCE_CONTROL_WRITE_FILE_BATCH_SIZE);
|
|
103
|
+
for (const workflowChunk of workflowChunks) {
|
|
104
|
+
await Promise.all(workflowChunk.map(async (workflow) => {
|
|
105
|
+
const fileName = this.getWorkflowPath(workflow.id);
|
|
106
|
+
const sanitizedWorkflow = {
|
|
107
|
+
id: workflow.id,
|
|
108
|
+
name: workflow.name,
|
|
109
|
+
nodes: workflow.nodes,
|
|
110
|
+
connections: workflow.connections,
|
|
111
|
+
settings: workflow.settings,
|
|
112
|
+
triggerCount: workflow.triggerCount,
|
|
113
|
+
versionId: workflow.versionId,
|
|
114
|
+
owner: owners[workflow.id],
|
|
115
|
+
parentFolderId: workflow.parentFolder?.id ?? null,
|
|
116
|
+
isArchived: workflow.isArchived,
|
|
117
|
+
};
|
|
118
|
+
this.logger.debug(`Writing workflow ${workflow.id} to ${fileName}`);
|
|
119
|
+
return await (0, promises_1.writeFile)(fileName, JSON.stringify(sanitizedWorkflow, null, 2));
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
112
122
|
}
|
|
113
123
|
async exportWorkflowsToWorkFolder(candidates) {
|
|
114
124
|
try {
|
|
@@ -201,6 +211,112 @@ let SourceControlExportService = class SourceControlExportService {
|
|
|
201
211
|
});
|
|
202
212
|
}
|
|
203
213
|
}
|
|
214
|
+
async exportDataTablesToWorkFolder(candidates, _context) {
|
|
215
|
+
try {
|
|
216
|
+
(0, source_control_helper_ee_1.sourceControlFoldersExistCheck)([this.gitFolder, this.dataTableExportFolder]);
|
|
217
|
+
if (candidates.length === 0) {
|
|
218
|
+
return {
|
|
219
|
+
count: 0,
|
|
220
|
+
folder: this.dataTableExportFolder,
|
|
221
|
+
files: [],
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
const candidateIds = candidates.map((candidate) => candidate.id);
|
|
225
|
+
const dataTables = await this.dataTableRepository.find({
|
|
226
|
+
where: {
|
|
227
|
+
id: (0, typeorm_1.In)(candidateIds),
|
|
228
|
+
},
|
|
229
|
+
relations: [
|
|
230
|
+
'columns',
|
|
231
|
+
'project',
|
|
232
|
+
'project.projectRelations',
|
|
233
|
+
'project.projectRelations.role',
|
|
234
|
+
'project.projectRelations.user',
|
|
235
|
+
],
|
|
236
|
+
select: {
|
|
237
|
+
id: true,
|
|
238
|
+
name: true,
|
|
239
|
+
projectId: true,
|
|
240
|
+
createdAt: true,
|
|
241
|
+
updatedAt: true,
|
|
242
|
+
columns: {
|
|
243
|
+
id: true,
|
|
244
|
+
name: true,
|
|
245
|
+
type: true,
|
|
246
|
+
index: true,
|
|
247
|
+
},
|
|
248
|
+
project: {
|
|
249
|
+
id: true,
|
|
250
|
+
name: true,
|
|
251
|
+
type: true,
|
|
252
|
+
projectRelations: {
|
|
253
|
+
userId: true,
|
|
254
|
+
role: {
|
|
255
|
+
slug: true,
|
|
256
|
+
},
|
|
257
|
+
user: {
|
|
258
|
+
email: true,
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
const exportedFiles = [];
|
|
265
|
+
for (const table of dataTables) {
|
|
266
|
+
let owner = null;
|
|
267
|
+
if (table.project?.type === 'personal') {
|
|
268
|
+
const ownerRelation = table.project.projectRelations?.find((pr) => pr.role.slug === permissions_1.PROJECT_OWNER_ROLE_SLUG);
|
|
269
|
+
if (ownerRelation) {
|
|
270
|
+
owner = {
|
|
271
|
+
type: 'personal',
|
|
272
|
+
projectId: table.project.id,
|
|
273
|
+
projectName: table.project.name,
|
|
274
|
+
personalEmail: ownerRelation.user.email,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else if (table.project?.type === 'team') {
|
|
279
|
+
owner = {
|
|
280
|
+
type: 'team',
|
|
281
|
+
teamId: table.project.id,
|
|
282
|
+
teamName: table.project.name,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
const exportableDataTable = {
|
|
286
|
+
id: table.id,
|
|
287
|
+
name: table.name,
|
|
288
|
+
columns: table.columns
|
|
289
|
+
.sort((a, b) => a.index - b.index)
|
|
290
|
+
.map((col) => ({
|
|
291
|
+
id: col.id,
|
|
292
|
+
name: col.name,
|
|
293
|
+
type: col.type,
|
|
294
|
+
index: col.index,
|
|
295
|
+
})),
|
|
296
|
+
ownedBy: owner,
|
|
297
|
+
createdAt: table.createdAt.toISOString(),
|
|
298
|
+
updatedAt: table.updatedAt.toISOString(),
|
|
299
|
+
};
|
|
300
|
+
const filePath = this.getDataTablePath(table.id);
|
|
301
|
+
await (0, promises_1.writeFile)(filePath, JSON.stringify(exportableDataTable, null, 2));
|
|
302
|
+
exportedFiles.push({
|
|
303
|
+
id: table.id,
|
|
304
|
+
name: filePath,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
return {
|
|
308
|
+
count: dataTables.length,
|
|
309
|
+
folder: this.dataTableExportFolder,
|
|
310
|
+
files: exportedFiles,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
this.logger.error('Failed to export data tables to work folder', { error });
|
|
315
|
+
throw new n8n_workflow_1.UnexpectedError('Failed to export data tables to work folder', {
|
|
316
|
+
cause: error,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
204
320
|
async exportFoldersToWorkFolder(context) {
|
|
205
321
|
try {
|
|
206
322
|
(0, source_control_helper_ee_1.sourceControlFoldersExistCheck)([this.gitFolder]);
|
|
@@ -421,6 +537,7 @@ exports.SourceControlExportService = SourceControlExportService = __decorate([
|
|
|
421
537
|
db_1.WorkflowTagMappingRepository,
|
|
422
538
|
db_1.FolderRepository,
|
|
423
539
|
source_control_scoped_service_1.SourceControlScopedService,
|
|
424
|
-
n8n_core_1.InstanceSettings
|
|
540
|
+
n8n_core_1.InstanceSettings,
|
|
541
|
+
data_table_repository_1.DataTableRepository])
|
|
425
542
|
], SourceControlExportService);
|
|
426
543
|
//# sourceMappingURL=source-control-export.service.ee.js.map
|