n8n/packages/@n8n/config/src/index.ts

339 lines
10 KiB
TypeScript

import { z } from 'zod';
import { ActivityLogConfig } from './configs/activity-log.config';
import { AgentsConfig } from './configs/agents.config';
import { AiAssistantConfig } from './configs/ai-assistant.config';
import { AiBuilderConfig } from './configs/ai-builder.config';
import { AiGatewayConfig } from './configs/ai-gateway.config';
import { AiConfig } from './configs/ai.config';
import { AuthConfig } from './configs/auth.config';
import { CacheConfig } from './configs/cache.config';
import { ChatHubConfig } from './configs/chat-hub.config';
import { ChatTriggerConfig } from './configs/chat-trigger.config';
import { CollaborationConfig } from './configs/collaboration.config';
import { CompressionNodeConfig } from './configs/compression.config';
import { CredentialsConfig } from './configs/credentials.config';
import { DataTableConfig } from './configs/data-table.config';
import { DatabaseConfig } from './configs/database.config';
import { DeploymentConfig } from './configs/deployment.config';
import { DiagnosticsConfig } from './configs/diagnostics.config';
import { DynamicBannersConfig } from './configs/dynamic-banners.config';
import { EndpointsConfig, PrometheusMetricsConfig } from './configs/endpoints.config';
import { EvaluationConfig } from './configs/evaluation.config';
import { EventBusConfig } from './configs/event-bus.config';
import { ExecutionsConfig } from './configs/executions.config';
import { ExpressionEngineConfig } from './configs/expression-engine.config';
import { ExternalHooksConfig } from './configs/external-hooks.config';
import { FeatureFlagConfig } from './configs/feature-flags.config';
import { GenericConfig } from './configs/generic.config';
import { HiringBannerConfig } from './configs/hiring-banner.config';
import { HttpRequestConfig } from './configs/http-request.config';
import { InstanceAiConfig } from './configs/instance-ai.config';
import { InstanceSettingsLoaderConfig } from './configs/instance-settings-loader.config';
import { LicenseConfig } from './configs/license.config';
import { LoggingConfig } from './configs/logging.config';
import { McpClientConfig } from './configs/mcp-client.config';
import { McpServerConfig } from './configs/mcp-server.config';
import { MfaConfig } from './configs/mfa.config';
import { MultiMainSetupConfig } from './configs/multi-main-setup.config';
import { NodesConfig } from './configs/nodes.config';
import { OutboundProxyConfig } from './configs/outbound-proxy.config';
import { PersonalizationConfig } from './configs/personalization.config';
import { PublicApiConfig } from './configs/public-api.config';
import { RedisConfig } from './configs/redis.config';
import { TaskRunnersConfig } from './configs/runners.config';
import { ScalingModeConfig } from './configs/scaling-mode.config';
import { SchedulerConfig } from './configs/scheduler.config';
import { SecurityConfig } from './configs/security.config';
import { SentryConfig } from './configs/sentry.config';
import { SsoConfig } from './configs/sso.config';
import { SsrfProtectionConfig } from './configs/ssrf-protection.config';
import { TagsConfig } from './configs/tags.config';
import { TemplatesConfig } from './configs/templates.config';
import { UserManagementConfig } from './configs/user-management.config';
import { VersionNotificationsConfig } from './configs/version-notifications.config';
import { WorkflowHistoryCompactionConfig } from './configs/workflow-history-compaction.config';
import { WorkflowHistoryConfig } from './configs/workflow-history.config';
import { WorkflowsConfig } from './configs/workflows.config';
import { Config, Env, Nested } from './decorators';
export { Config, Env, Nested } from './decorators';
export { AiConfig } from './configs/ai.config';
export { DatabaseConfig, SqliteConfig } from './configs/database.config';
export { InstanceSettingsConfig } from './configs/instance-settings-config';
export { InstanceSettingsLoaderConfig } from './configs/instance-settings-loader.config';
export { sampleRateSchema } from './configs/sentry.config';
export { positiveIntSchema, nonnegativeIntSchema } from './schemas';
export type { TaskRunnerMode } from './configs/runners.config';
export { TaskRunnersConfig } from './configs/runners.config';
export { SecurityConfig } from './configs/security.config';
export {
DEFAULT_CONTENT_SECURITY_POLICY,
isLegacyBooleanSetting,
parseContentSecurityPolicy,
} from './configs/content-security-policy';
export type {
ContentSecurityPolicyReportOnlySetting,
ContentSecurityPolicySetting,
} from './configs/content-security-policy';
export {
SsrfProtectionConfig,
SSRF_DEFAULT_BLOCKED_IP_RANGES,
} from './configs/ssrf-protection.config';
export { EngineConfig } from './configs/engine.config';
export { ExecutionsConfig } from './configs/executions.config';
export { ScalingModeConfig, WorkerPoolConfig } from './configs/scaling-mode.config';
export { LOG_SCOPES } from './configs/logging.config';
export type { LogScope } from './configs/logging.config';
export { WorkflowsConfig } from './configs/workflows.config';
export * from './custom-types';
export { DeploymentConfig } from './configs/deployment.config';
export { McpClientConfig } from './configs/mcp-client.config';
export { McpServerConfig } from './configs/mcp-server.config';
export { MfaConfig } from './configs/mfa.config';
export { HiringBannerConfig } from './configs/hiring-banner.config';
export { HttpRequestConfig } from './configs/http-request.config';
export { PersonalizationConfig } from './configs/personalization.config';
export { NodesConfig } from './configs/nodes.config';
export { CronLoggingConfig } from './configs/logging.config';
export { WorkflowHistoryCompactionConfig } from './configs/workflow-history-compaction.config';
export { ChatHubConfig } from './configs/chat-hub.config';
export { ActivityLogConfig } from './configs/activity-log.config';
export { ChatTriggerConfig } from './configs/chat-trigger.config';
export { InstanceAiConfig } from './configs/instance-ai.config';
export { ExpressionEngineConfig } from './configs/expression-engine.config';
export { PasswordConfig } from './configs/password.config';
export { AgentsConfig } from './configs/agents.config';
export { CompressionNodeConfig } from './configs/compression.config';
export { RedisConfig } from './configs/redis.config';
export { SchedulerConfig } from './configs/scheduler.config';
export { EndpointsConfig, PrometheusMetricsConfig };
const protocolSchema = z.enum(['http', 'https']);
export type Protocol = z.infer<typeof protocolSchema>;
@Config
export class GlobalConfig {
@Nested
auth: AuthConfig;
@Nested
database: DatabaseConfig;
@Nested
credentials: CredentialsConfig;
@Nested
userManagement: UserManagementConfig;
@Nested
versionNotifications: VersionNotificationsConfig;
@Nested
dynamicBanners: DynamicBannersConfig;
@Nested
publicApi: PublicApiConfig;
@Nested
externalHooks: ExternalHooksConfig;
@Nested
templates: TemplatesConfig;
@Nested
eventBus: EventBusConfig;
@Nested
nodes: NodesConfig;
@Nested
workflows: WorkflowsConfig;
@Nested
sentry: SentryConfig;
/** Path n8n is deployed to */
@Env('N8N_PATH')
path: string = '/';
/** Host name n8n can be reached */
@Env('N8N_HOST')
host: string = 'localhost';
/** HTTP port n8n can be reached */
@Env('N8N_PORT')
port: number = 5678;
/** IP address n8n should listen on */
@Env('N8N_LISTEN_ADDRESS')
listen_address: string = '::';
/** HTTP Protocol via which n8n can be reached */
@Env('N8N_PROTOCOL', protocolSchema)
protocol: Protocol = 'http';
@Nested
endpoints: EndpointsConfig;
@Nested
cache: CacheConfig;
@Nested
queue: ScalingModeConfig;
@Nested
logging: LoggingConfig;
@Nested
taskRunners: TaskRunnersConfig;
@Nested
multiMainSetup: MultiMainSetupConfig;
@Nested
scheduler: SchedulerConfig;
@Nested
generic: GenericConfig;
@Nested
license: LicenseConfig;
@Nested
security: SecurityConfig;
@Nested
executions: ExecutionsConfig;
@Nested
diagnostics: DiagnosticsConfig;
@Nested
aiAssistant: AiAssistantConfig;
@Nested
aiGateway: AiGatewayConfig;
@Nested
aiBuilder: AiBuilderConfig;
@Nested
tags: TagsConfig;
@Nested
workflowHistory: WorkflowHistoryConfig;
@Nested
deployment: DeploymentConfig;
@Nested
mfa: MfaConfig;
@Nested
hiringBanner: HiringBannerConfig;
@Nested
personalization: PersonalizationConfig;
@Nested
sso: SsoConfig;
@Nested
ssrfProtection: SsrfProtectionConfig;
@Nested
httpRequest: HttpRequestConfig;
@Nested
outboundProxy: OutboundProxyConfig;
/** Default locale for the UI. */
@Env('N8N_DEFAULT_LOCALE')
defaultLocale: string = 'en';
/** Whether to hide the page that shows active workflows and executions count. */
@Env('N8N_HIDE_USAGE_PAGE')
hideUsagePage: boolean = false;
/** Number of reverse proxies n8n is running behind. */
@Env('N8N_PROXY_HOPS')
proxy_hops: number = 0;
/** SSL key for HTTPS protocol. */
@Env('N8N_SSL_KEY')
ssl_key: string = '';
/** SSL cert for HTTPS protocol. */
@Env('N8N_SSL_CERT')
ssl_cert: string = '';
/** Whether to enable canvas-only mode, hiding the chrome UI. */
@Env('N8N_CANVAS_ONLY')
canvasOnly: boolean = false;
/** Public URL where the editor is accessible. Also used for emails sent from n8n. */
@Env('N8N_EDITOR_BASE_URL')
editorBaseUrl: string = '';
/** Public base URL for both test and production webhooks. Successor to the deprecated `WEBHOOK_URL`. */
@Env('N8N_WEBHOOK_URL')
webhookUrl: string = '';
/** URLs to external frontend hooks files, separated by semicolons. */
@Env('EXTERNAL_FRONTEND_HOOKS_URLS')
externalFrontendHooksUrls: string = '';
@Nested
redis: RedisConfig;
@Nested
ai: AiConfig;
@Nested
dataTable: DataTableConfig;
@Nested
workflowHistoryCompaction: WorkflowHistoryCompactionConfig;
@Nested
chatHub: ChatHubConfig;
@Nested
chatTrigger: ChatTriggerConfig;
@Nested
collaboration: CollaborationConfig;
@Nested
compressionNode: CompressionNodeConfig;
@Nested
mcpClient: McpClientConfig;
@Nested
mcpServer: McpServerConfig;
@Nested
instanceAi: InstanceAiConfig;
@Nested
agents: AgentsConfig;
@Nested
expressionEngine: ExpressionEngineConfig;
@Nested
evaluation: EvaluationConfig;
@Nested
instanceSettingsLoader: InstanceSettingsLoaderConfig;
@Nested
featureFlags: FeatureFlagConfig;
@Nested
activityLog: ActivityLogConfig;
}