@morojs/moro 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -38
- package/dist/core/auth/morojs-adapter.js +95 -45
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/config-sources.js +8 -49
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.js +2 -3
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +4 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.js +2 -2
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -0
- package/dist/core/database/adapters/mongodb.js +16 -0
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -0
- package/dist/core/database/adapters/mysql.js +13 -2
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.js +2 -2
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sql-safety.js +5 -4
- package/dist/core/database/adapters/sql-safety.js.map +1 -1
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.js +11 -7
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.js +8 -6
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/schema-to-openapi.js +3 -3
- package/dist/core/docs/schema-to-openapi.js.map +1 -1
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +2 -2
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.js +14 -5
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +2 -2
- package/dist/core/framework.js +21 -14
- package/dist/core/framework.js.map +1 -1
- package/dist/core/graphql/adapter.js.map +1 -1
- package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -1
- package/dist/core/graphql/core.js.map +1 -1
- package/dist/core/graphql/index.js.map +1 -1
- package/dist/core/graphql/loader.js.map +1 -1
- package/dist/core/graphql/types.js.map +1 -1
- package/dist/core/grpc/adapters/grpc-js-adapter.js +4 -0
- package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -1
- package/dist/core/grpc/adapters/index.js.map +1 -1
- package/dist/core/grpc/grpc-adapter.js.map +1 -1
- package/dist/core/grpc/grpc-manager.js.map +1 -1
- package/dist/core/grpc/index.js.map +1 -1
- package/dist/core/grpc/middleware/auth.js +1 -1
- package/dist/core/grpc/middleware/auth.js.map +1 -1
- package/dist/core/grpc/middleware/logging.js.map +1 -1
- package/dist/core/grpc/middleware/validation.js +1 -1
- package/dist/core/grpc/middleware/validation.js.map +1 -1
- package/dist/core/grpc/types.d.ts +7 -7
- package/dist/core/grpc/types.js.map +1 -1
- package/dist/core/http/http-server.d.ts +0 -13
- package/dist/core/http/http-server.js +34 -141
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/http2-server.js +27 -5
- package/dist/core/http/http2-server.js.map +1 -1
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/moro-engine-server.d.ts +2 -2
- package/dist/core/http/moro-engine-server.js +44 -21
- package/dist/core/http/moro-engine-server.js.map +1 -1
- package/dist/core/http/utils/compression.js +3 -3
- package/dist/core/http/utils/compression.js.map +1 -1
- package/dist/core/http/utils/lazy-event-emitter.js.map +1 -1
- package/dist/core/http/utils/multipart-parser.js +7 -3
- package/dist/core/http/utils/multipart-parser.js.map +1 -1
- package/dist/core/http/utils/query-parser.js.map +1 -1
- package/dist/core/http/utils/size.js +2 -2
- package/dist/core/http/utils/size.js.map +1 -1
- package/dist/core/http/utils/ssl-config.d.ts +10 -10
- package/dist/core/http/utils/ssl-config.js.map +1 -1
- package/dist/core/http/utils/uws-worker-clustering.js +37 -30
- package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +1 -0
- package/dist/core/http/uws-http-server.js +80 -22
- package/dist/core/http/uws-http-server.js.map +1 -1
- package/dist/core/jobs/cron-parser.js +7 -5
- package/dist/core/jobs/cron-parser.js.map +1 -1
- package/dist/core/jobs/index.js.map +1 -1
- package/dist/core/jobs/job-executor.d.ts +1 -1
- package/dist/core/jobs/job-executor.js.map +1 -1
- package/dist/core/jobs/job-scheduler.d.ts +3 -3
- package/dist/core/jobs/job-scheduler.js.map +1 -1
- package/dist/core/jobs/job-state-manager.d.ts +3 -3
- package/dist/core/jobs/job-state-manager.js +25 -4
- package/dist/core/jobs/job-state-manager.js.map +1 -1
- package/dist/core/jobs/leader-election.d.ts +15 -0
- package/dist/core/jobs/leader-election.js +158 -69
- package/dist/core/jobs/leader-election.js.map +1 -1
- package/dist/core/jobs/types.d.ts +4 -4
- package/dist/core/jobs/types.js.map +1 -1
- package/dist/core/jobs/utils.d.ts +1 -1
- package/dist/core/jobs/utils.js +7 -3
- package/dist/core/jobs/utils.js.map +1 -1
- package/dist/core/logger/filters.js +3 -2
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.js +56 -25
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/mail/adapters/console-adapter.js.map +1 -1
- package/dist/core/mail/adapters/index.js.map +1 -1
- package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -1
- package/dist/core/mail/adapters/resend-adapter.js.map +1 -1
- package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -1
- package/dist/core/mail/adapters/ses-adapter.js.map +1 -1
- package/dist/core/mail/index.js.map +1 -1
- package/dist/core/mail/mail-adapter.js.map +1 -1
- package/dist/core/mail/mail-manager.d.ts +10 -0
- package/dist/core/mail/mail-manager.js +21 -5
- package/dist/core/mail/mail-manager.js.map +1 -1
- package/dist/core/mail/template-engine.js.map +1 -1
- package/dist/core/mail/types.js.map +1 -1
- package/dist/core/middleware/built-in/auth/core.js +3 -3
- package/dist/core/middleware/built-in/auth/core.js.map +1 -1
- package/dist/core/middleware/built-in/auth/helpers.js +4 -4
- package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/hook.js.map +1 -1
- package/dist/core/middleware/built-in/auth/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +4 -4
- package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
- package/dist/core/middleware/built-in/body-parsers/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/core.js +2 -2
- package/dist/core/middleware/built-in/body-size/core.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/hook.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/core.js.map +1 -1
- package/dist/core/middleware/built-in/cache/hook.js +3 -3
- package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/core.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/compression/core.js.map +1 -1
- package/dist/core/middleware/built-in/compression/hook.js.map +1 -1
- package/dist/core/middleware/built-in/compression/index.js.map +1 -1
- package/dist/core/middleware/built-in/compression/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/index.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cors/core.js.map +1 -1
- package/dist/core/middleware/built-in/cors/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cors/index.js.map +1 -1
- package/dist/core/middleware/built-in/cors/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csp/core.js.map +1 -1
- package/dist/core/middleware/built-in/csp/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csp/index.js.map +1 -1
- package/dist/core/middleware/built-in/csp/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/core.js +1 -1
- package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/index.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/core.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/hook.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/index.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/core.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/hook.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/index.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/http2/core.js.map +1 -1
- package/dist/core/middleware/built-in/http2/hook.js.map +1 -1
- package/dist/core/middleware/built-in/http2/index.js.map +1 -1
- package/dist/core/middleware/built-in/http2/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/range/core.js +4 -1
- package/dist/core/middleware/built-in/range/core.js.map +1 -1
- package/dist/core/middleware/built-in/range/hook.js.map +1 -1
- package/dist/core/middleware/built-in/range/index.js.map +1 -1
- package/dist/core/middleware/built-in/range/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/session/core.js +4 -4
- package/dist/core/middleware/built-in/session/core.js.map +1 -1
- package/dist/core/middleware/built-in/session/hook.js.map +1 -1
- package/dist/core/middleware/built-in/session/index.js.map +1 -1
- package/dist/core/middleware/built-in/session/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/sse/core.js.map +1 -1
- package/dist/core/middleware/built-in/sse/hook.js.map +1 -1
- package/dist/core/middleware/built-in/sse/index.js.map +1 -1
- package/dist/core/middleware/built-in/sse/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/static/core.js.map +1 -1
- package/dist/core/middleware/built-in/static/hook.js.map +1 -1
- package/dist/core/middleware/built-in/static/index.js.map +1 -1
- package/dist/core/middleware/built-in/static/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/template/core.js +1 -1
- package/dist/core/middleware/built-in/template/core.js.map +1 -1
- package/dist/core/middleware/built-in/template/hook.js.map +1 -1
- package/dist/core/middleware/built-in/template/index.js.map +1 -1
- package/dist/core/middleware/built-in/template/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/upload/core.js.map +1 -1
- package/dist/core/middleware/built-in/upload/hook.js.map +1 -1
- package/dist/core/middleware/built-in/upload/index.js.map +1 -1
- package/dist/core/middleware/built-in/upload/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/validation/core.js.map +1 -1
- package/dist/core/middleware/built-in/validation/hook.js.map +1 -1
- package/dist/core/middleware/built-in/validation/index.js.map +1 -1
- package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
- package/dist/core/middleware/index.js +2 -2
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.js +11 -7
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.js +18 -13
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/engine-adapter.js +1 -1
- package/dist/core/networking/adapters/engine-adapter.js.map +1 -1
- package/dist/core/networking/adapters/index.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -0
- package/dist/core/networking/adapters/socketio-adapter.js +12 -1
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.js +1 -1
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +15 -0
- package/dist/core/networking/adapters/ws-adapter.js +120 -6
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +7 -5
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.d.ts +22 -3
- package/dist/core/networking/websocket-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.js +70 -67
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.js +6 -0
- package/dist/core/pooling/object-pool-manager.js.map +1 -1
- package/dist/core/queue/adapters/bull-adapter.js.map +1 -1
- package/dist/core/queue/adapters/index.js.map +1 -1
- package/dist/core/queue/adapters/kafka-adapter.js +2 -2
- package/dist/core/queue/adapters/kafka-adapter.js.map +1 -1
- package/dist/core/queue/adapters/memory-adapter.js +6 -6
- package/dist/core/queue/adapters/memory-adapter.js.map +1 -1
- package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +50 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.js +176 -20
- package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -1
- package/dist/core/queue/adapters/sqs-adapter.d.ts +12 -2
- package/dist/core/queue/adapters/sqs-adapter.js +75 -24
- package/dist/core/queue/adapters/sqs-adapter.js.map +1 -1
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/queue/middleware/index.js.map +1 -1
- package/dist/core/queue/middleware/monitoring.d.ts +1 -1
- package/dist/core/queue/middleware/monitoring.js.map +1 -1
- package/dist/core/queue/middleware/priority.js +2 -1
- package/dist/core/queue/middleware/priority.js.map +1 -1
- package/dist/core/queue/middleware/rate-limit.js.map +1 -1
- package/dist/core/queue/queue-adapter.js.map +1 -1
- package/dist/core/queue/queue-manager.js.map +1 -1
- package/dist/core/queue/types.d.ts +8 -8
- package/dist/core/queue/types.js.map +1 -1
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/create-router.js.map +1 -1
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/path-matcher.js.map +1 -1
- package/dist/core/routing/radix-tree.js.map +1 -1
- package/dist/core/routing/router.js.map +1 -1
- package/dist/core/routing/unified-router.js +12 -4
- package/dist/core/routing/unified-router.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.js +2 -2
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js +2 -0
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.js +19 -17
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.js +2 -0
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.d.ts +1 -0
- package/dist/core/utilities/circuit-breaker.js +25 -2
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +9 -9
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.js +28 -6
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/utilities/module-path.js.map +1 -1
- package/dist/core/utilities/package-utils.js +1 -1
- package/dist/core/utilities/package-utils.js.map +1 -1
- package/dist/core/utilities/response-helpers.js +1 -1
- package/dist/core/utilities/response-helpers.js.map +1 -1
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/error-handler.js.map +1 -1
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/core/workers/facade.js.map +1 -1
- package/dist/core/workers/index.js.map +1 -1
- package/dist/core/workers/worker-entry.d.ts +1 -0
- package/dist/core/workers/worker-entry.js +12 -0
- package/dist/core/workers/worker-entry.js.map +1 -0
- package/dist/core/workers/worker-manager.d.ts +23 -2
- package/dist/core/workers/worker-manager.js +117 -17
- package/dist/core/workers/worker-manager.js.map +1 -1
- package/dist/core/workers/worker.js +8 -6
- package/dist/core/workers/worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +18 -1
- package/dist/moro.js +168 -50
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.d.ts +4 -4
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js.map +1 -1
- package/dist/types/cdn.js.map +1 -1
- package/dist/types/config.d.ts +10 -10
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/database.js.map +1 -1
- package/dist/types/discovery.js.map +1 -1
- package/dist/types/events.js.map +1 -1
- package/dist/types/hooks.js.map +1 -1
- package/dist/types/http.js.map +1 -1
- package/dist/types/logger.js.map +1 -1
- package/dist/types/module.js.map +1 -1
- package/dist/types/runtime.js.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/package.json +29 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../../src/core/config/config-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../../src/core/config/config-validator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Configuration Validator - Type-Safe Schema Validation\n *\n * This module provides runtime validation for configuration objects using\n * simple TypeScript functions that match the type definitions exactly.\n */\n\nimport { AppConfig, OriginFunction } from '../../types/config.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('ConfigValidator');\n\n/**\n * Configuration validation error with detailed context\n */\nexport class ConfigValidationError extends Error {\n constructor(\n public readonly field: string,\n public readonly value: unknown,\n public readonly expectedType: string,\n message: string\n ) {\n super(`Configuration validation failed for '${field}': ${message}`);\n this.name = 'ConfigValidationError';\n }\n}\n\n/**\n * Validate and normalize a complete configuration object\n * This ensures type safety and provides helpful error messages\n */\nexport function validateConfig(config: any): AppConfig {\n logger.debug('Validating configuration');\n\n try {\n const validatedConfig: AppConfig = {\n server: validateServerConfig(config.server, 'server'),\n serviceDiscovery: validateServiceDiscoveryConfig(config.serviceDiscovery, 'serviceDiscovery'),\n database: validateDatabaseConfig(config.database, 'database'),\n modules: validateModuleDefaultsConfig(config.modules, 'modules'),\n routing: validateRoutingConfig(config.routing, 'routing'),\n logging: validateLoggingConfig(config.logging, 'logging'),\n security: validateSecurityConfig(config.security, 'security'),\n external: validateExternalServicesConfig(config.external, 'external'),\n performance: validatePerformanceConfig(config.performance, 'performance'),\n websocket: validateWebSocketConfig(config.websocket, 'websocket'),\n jobs: validateJobsConfig(config.jobs, 'jobs'),\n queue: validateQueueConfig(config.queue, 'queue'),\n };\n\n logger.debug('Configuration validation successful');\n return validatedConfig;\n } catch (error) {\n if (error instanceof ConfigValidationError) {\n logger.error(`❌ Configuration validation failed for '${error.field}':`, error.message);\n\n // Provide helpful hints\n provideValidationHints(error);\n\n throw error;\n }\n\n logger.error('❌ Unexpected configuration validation error:', String(error));\n throw new Error(`Configuration validation failed: ${String(error)}`);\n }\n}\n\n/**\n * Validate server configuration\n */\nfunction validateServerConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Server configuration must be an object'\n );\n }\n\n const result: any = {\n port: validatePort(config.port, `${path}.port`),\n host: validateString(config.host, `${path}.host`),\n // min 0: 0 = unlimited / disabled (these were never applied before, so 0\n // preserves the historical observed behavior — see schema.ts).\n maxConnections: validateNumber(config.maxConnections, `${path}.maxConnections`, { min: 0 }),\n timeout: validateNumber(config.timeout, `${path}.timeout`, { min: 0 }),\n bodySizeLimit: validateString(config.bodySizeLimit, `${path}.bodySizeLimit`),\n maxUploadSize: validateString(config.maxUploadSize, `${path}.maxUploadSize`),\n requestTracking: {\n enabled: validateBoolean(config.requestTracking?.enabled, `${path}.requestTracking.enabled`),\n },\n requestLogging: {\n enabled: validateBoolean(config.requestLogging?.enabled, `${path}.requestLogging.enabled`),\n },\n errorBoundary: {\n enabled: validateBoolean(config.errorBoundary?.enabled, `${path}.errorBoundary.enabled`),\n },\n };\n\n // Optional per-phase timeouts (all ms, >= 0 where 0 = default/disabled).\n if (config.timeouts !== undefined) {\n result.timeouts = validateServerTimeouts(config.timeouts, `${path}.timeouts`);\n }\n // `timeout` is a deprecated alias for `timeouts.request`. Fold it forward\n // when set and the canonical field is absent (matching the useUWebSockets\n // deprecation pattern).\n if (config.timeout && config.timeout > 0 && result.timeouts?.request === undefined) {\n result.timeouts = { ...(result.timeouts ?? {}), request: result.timeout };\n if (config.timeouts?.request === undefined) {\n logger.warn(`${path}.timeout is deprecated - use ${path}.timeouts.request instead`);\n }\n }\n\n // Optional fine-grained limits.\n if (config.limits !== undefined) {\n result.limits = validateServerLimits(config.limits, `${path}.limits`);\n }\n // Optional TCP backlog.\n if (config.backlog !== undefined) {\n result.backlog = validateNumber(config.backlog, `${path}.backlog`, { min: 0 });\n }\n // Optional HTTP/2 (boolean or options object).\n if (config.http2 !== undefined) {\n result.http2 = validateHttp2Config(config.http2, `${path}.http2`);\n }\n\n // Optional HTTP engine selection ('moro' | 'node' | 'uws')\n if (config.engine !== undefined) {\n // Map legacy values from the earlier 'auto'/'native' scheme to 'moro'\n let engine = config.engine;\n if (engine === 'auto' || engine === 'native') {\n logger.warn(`${path}.engine: '${engine}' is deprecated - use 'moro' (Moro's native engine)`);\n engine = 'moro';\n }\n result.engine = validateEnum(engine, ['moro', 'node', 'uws'], `${path}.engine`);\n }\n\n // Optional uWebSockets configuration (deprecated alias for engine: 'uws')\n if (config.useUWebSockets !== undefined) {\n result.useUWebSockets = validateBoolean(config.useUWebSockets, `${path}.useUWebSockets`);\n // The default config merges useUWebSockets: false in, so only an actual\n // opt-in warrants the deprecation nudge\n if (result.useUWebSockets && config.engine === undefined) {\n logger.warn(`${path}.useUWebSockets is deprecated - use ${path}.engine: 'uws' instead`);\n }\n }\n\n // Optional SSL configuration\n if (config.ssl !== undefined) {\n result.ssl = validateSSLConfig(config.ssl, `${path}.ssl`);\n }\n\n return result;\n}\n\n/**\n * Validate the unified SSL configuration (superset of both historical\n * shapes). Passes recognized keys through, folds the legacy uWS aliases, and\n * rejects a partial key-without-cert (or vice versa) so a half-configured TLS\n * server fails loudly at boot instead of silently serving plaintext.\n */\nfunction validateSSLConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(path, config, 'object', 'SSL configuration must be an object');\n }\n\n const result: any = {};\n // File-path shape (both the uWS key_file_name and node keyFile spellings).\n if (config.keyFile !== undefined)\n result.keyFile = validateString(config.keyFile, `${path}.keyFile`);\n if (config.certFile !== undefined)\n result.certFile = validateString(config.certFile, `${path}.certFile`);\n if (config.key_file_name !== undefined) {\n result.key_file_name = validateString(config.key_file_name, `${path}.key_file_name`);\n }\n if (config.cert_file_name !== undefined) {\n result.cert_file_name = validateString(config.cert_file_name, `${path}.cert_file_name`);\n }\n if (config.ca_file_name !== undefined) result.ca_file_name = config.ca_file_name;\n if (config.caFile !== undefined) result.caFile = config.caFile;\n // Inline-PEM shape (string or Buffer — pass through without stringifying).\n if (config.key !== undefined) result.key = config.key;\n if (config.cert !== undefined) result.cert = config.cert;\n if (config.ca !== undefined) result.ca = config.ca;\n if (config.passphrase !== undefined) {\n result.passphrase = validateString(config.passphrase, `${path}.passphrase`);\n }\n if (config.minVersion !== undefined) {\n result.minVersion = validateEnum(\n config.minVersion,\n ['TLSv1.2', 'TLSv1.3'],\n `${path}.minVersion`\n );\n }\n if (config.requestCert !== undefined) {\n result.requestCert = validateBoolean(config.requestCert, `${path}.requestCert`);\n }\n if (config.rejectUnauthorized !== undefined) {\n result.rejectUnauthorized = validateBoolean(\n config.rejectUnauthorized,\n `${path}.rejectUnauthorized`\n );\n }\n\n const hasKey = Boolean(result.key || result.keyFile || result.key_file_name);\n const hasCert = Boolean(result.cert || result.certFile || result.cert_file_name);\n if (hasKey !== hasCert) {\n throw new ConfigValidationError(\n path,\n config,\n 'key + cert',\n 'SSL configuration must supply BOTH a key and a certificate (or neither)'\n );\n }\n\n return result;\n}\n\n/** Size fields accept a number of bytes or a size string ('16kb', '10mb'). */\nfunction validateSize(value: any, path: string): number | string {\n if (typeof value === 'number') return validateNumber(value, path, { min: 0 });\n if (typeof value === 'string') {\n if (!/^(\\d+(?:\\.\\d+)?)\\s*(b|kb|mb|gb)?$/i.test(value.trim())) {\n throw new ConfigValidationError(path, value, 'size', `Invalid size string: ${value}`);\n }\n return value;\n }\n throw new ConfigValidationError(\n path,\n value,\n 'number|string',\n 'Size must be a number or size string'\n );\n}\n\nfunction validateServerTimeouts(config: any, path: string) {\n if (typeof config !== 'object' || config === null) {\n throw new ConfigValidationError(path, config, 'object', 'timeouts must be an object');\n }\n const result: any = {};\n for (const key of ['request', 'idle', 'keepAlive', 'headers']) {\n if (config[key] !== undefined) {\n result[key] = validateNumber(config[key], `${path}.${key}`, { min: 0 });\n }\n }\n return result;\n}\n\nfunction validateServerLimits(config: any, path: string) {\n if (typeof config !== 'object' || config === null) {\n throw new ConfigValidationError(path, config, 'object', 'limits must be an object');\n }\n const result: any = {};\n for (const key of [\n 'maxHeaderSize',\n 'wsMaxMessageSize',\n 'wsBackpressureLimit',\n 'writeHighWaterMark',\n 'maxPendingBytes',\n ]) {\n if (config[key] !== undefined) result[key] = validateSize(config[key], `${path}.${key}`);\n }\n if (config.maxHeaders !== undefined) {\n result.maxHeaders = validateNumber(config.maxHeaders, `${path}.maxHeaders`, { min: 1 });\n }\n if (config.multipart !== undefined) {\n const m = config.multipart;\n if (typeof m !== 'object' || m === null) {\n throw new ConfigValidationError(\n `${path}.multipart`,\n m,\n 'object',\n 'multipart must be an object'\n );\n }\n const mp: any = {};\n if (m.maxParts !== undefined)\n mp.maxParts = validateNumber(m.maxParts, `${path}.multipart.maxParts`, { min: 1 });\n if (m.maxFiles !== undefined)\n mp.maxFiles = validateNumber(m.maxFiles, `${path}.multipart.maxFiles`, { min: 0 });\n if (m.maxPartHeaderBytes !== undefined)\n mp.maxPartHeaderBytes = validateSize(\n m.maxPartHeaderBytes,\n `${path}.multipart.maxPartHeaderBytes`\n );\n if (m.maxFileSize !== undefined)\n mp.maxFileSize = validateSize(m.maxFileSize, `${path}.multipart.maxFileSize`);\n result.multipart = mp;\n }\n return result;\n}\n\nfunction validateHttp2Config(config: any, path: string) {\n if (typeof config === 'boolean') return config;\n if (typeof config !== 'object' || config === null) {\n throw new ConfigValidationError(\n path,\n config,\n 'boolean|object',\n 'http2 must be a boolean or an options object'\n );\n }\n const result: any = {};\n if (config.allowHTTP1 !== undefined)\n result.allowHTTP1 = validateBoolean(config.allowHTTP1, `${path}.allowHTTP1`);\n if (config.maxSessionMemory !== undefined) {\n result.maxSessionMemory = validateNumber(config.maxSessionMemory, `${path}.maxSessionMemory`, {\n min: 1,\n });\n }\n if (config.settings !== undefined) {\n if (typeof config.settings !== 'object' || config.settings === null) {\n throw new ConfigValidationError(\n `${path}.settings`,\n config.settings,\n 'object',\n 'http2.settings must be an object'\n );\n }\n const s: any = {};\n for (const key of [\n 'maxConcurrentStreams',\n 'initialWindowSize',\n 'maxFrameSize',\n 'maxHeaderListSize',\n 'headerTableSize',\n 'maxHeaderSize',\n ]) {\n if (config.settings[key] !== undefined) {\n s[key] = validateNumber(config.settings[key], `${path}.settings.${key}`, { min: 0 });\n }\n }\n for (const key of ['enablePush', 'enableConnectProtocol']) {\n if (config.settings[key] !== undefined) {\n s[key] = validateBoolean(config.settings[key], `${path}.settings.${key}`);\n }\n }\n result.settings = s;\n }\n return result;\n}\n\n/**\n * Validate service discovery configuration\n */\nfunction validateServiceDiscoveryConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Service discovery configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n type: validateEnum(config.type, ['memory', 'consul', 'kubernetes'], `${path}.type`),\n consulUrl: validateString(config.consulUrl, `${path}.consulUrl`),\n kubernetesNamespace: validateString(config.kubernetesNamespace, `${path}.kubernetesNamespace`),\n healthCheckInterval: validateNumber(config.healthCheckInterval, `${path}.healthCheckInterval`, {\n min: 1000,\n }),\n retryAttempts: validateNumber(config.retryAttempts, `${path}.retryAttempts`, { min: 0 }),\n };\n}\n\n/**\n * Validate database configuration\n */\nfunction validateDatabaseConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Database configuration must be an object'\n );\n }\n\n const result: any = {};\n\n // Optional URL\n if (config.url !== undefined) {\n result.url = validateString(config.url, `${path}.url`);\n }\n\n // Optional Redis - only validate if present\n if (config.redis !== undefined) {\n result.redis = validateRedisConfig(config.redis, `${path}.redis`);\n }\n\n // Optional MySQL - only validate if present\n if (config.mysql !== undefined) {\n result.mysql = validateMySQLConfig(config.mysql, `${path}.mysql`);\n }\n\n // Optional PostgreSQL - only validate if present\n if (config.postgresql !== undefined) {\n result.postgresql = validatePostgreSQLConfig(config.postgresql, `${path}.postgresql`);\n }\n\n // Optional SQLite - only validate if present\n if (config.sqlite !== undefined) {\n result.sqlite = validateSQLiteConfig(config.sqlite, `${path}.sqlite`);\n }\n\n // Optional MongoDB - only validate if present\n if (config.mongodb !== undefined) {\n result.mongodb = validateMongoDBConfig(config.mongodb, `${path}.mongodb`);\n }\n\n return result;\n}\n\n/**\n * Validate Redis configuration\n */\nfunction validateRedisConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Redis configuration must be an object'\n );\n }\n\n return {\n url: validateString(config.url, `${path}.url`),\n maxRetries: validateNumber(config.maxRetries, `${path}.maxRetries`, { min: 0 }),\n retryDelay: validateNumber(config.retryDelay, `${path}.retryDelay`, { min: 0 }),\n keyPrefix: validateString(config.keyPrefix, `${path}.keyPrefix`),\n };\n}\n\n/**\n * Validate MySQL configuration\n */\nfunction validateMySQLConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'MySQL configuration must be an object'\n );\n }\n\n const result: any = {\n host: validateString(config.host, `${path}.host`),\n port: validatePort(config.port, `${path}.port`),\n connectionLimit: validateNumber(config.connectionLimit, `${path}.connectionLimit`, { min: 1 }),\n acquireTimeout: validateNumber(config.acquireTimeout, `${path}.acquireTimeout`, { min: 1000 }),\n timeout: validateNumber(config.timeout, `${path}.timeout`, { min: 1000 }),\n };\n\n // Optional fields\n if (config.database !== undefined) {\n result.database = validateString(config.database, `${path}.database`);\n }\n if (config.username !== undefined) {\n result.username = validateString(config.username, `${path}.username`);\n }\n if (config.password !== undefined) {\n result.password = validateString(config.password, `${path}.password`);\n }\n\n return result;\n}\n\n/**\n * Validate PostgreSQL configuration\n */\nfunction validatePostgreSQLConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'PostgreSQL configuration must be an object'\n );\n }\n\n const result: any = {\n host: validateString(config.host, `${path}.host`),\n port: validatePort(config.port, `${path}.port`),\n connectionLimit: validateNumber(config.connectionLimit, `${path}.connectionLimit`, { min: 1 }),\n };\n\n // Optional fields\n if (config.database !== undefined) {\n result.database = validateString(config.database, `${path}.database`);\n }\n if (config.user !== undefined) {\n result.user = validateString(config.user, `${path}.user`);\n }\n if (config.password !== undefined) {\n result.password = validateString(config.password, `${path}.password`);\n }\n if (config.ssl !== undefined) {\n result.ssl = validateBoolean(config.ssl, `${path}.ssl`);\n }\n\n return result;\n}\n\n/**\n * Validate SQLite configuration\n */\nfunction validateSQLiteConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'SQLite configuration must be an object'\n );\n }\n\n const result: any = {\n filename: validateString(config.filename, `${path}.filename`),\n };\n\n // Optional fields\n if (config.memory !== undefined) {\n result.memory = validateBoolean(config.memory, `${path}.memory`);\n }\n if (config.verbose !== undefined) {\n result.verbose = validateBoolean(config.verbose, `${path}.verbose`);\n }\n\n return result;\n}\n\n/**\n * Validate MongoDB configuration\n */\nfunction validateMongoDBConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'MongoDB configuration must be an object'\n );\n }\n\n const result: any = {};\n\n // Either url or host+port\n if (config.url !== undefined) {\n result.url = validateString(config.url, `${path}.url`);\n }\n if (config.host !== undefined) {\n result.host = validateString(config.host, `${path}.host`);\n }\n if (config.port !== undefined) {\n result.port = validatePort(config.port, `${path}.port`);\n }\n if (config.database !== undefined) {\n result.database = validateString(config.database, `${path}.database`);\n }\n if (config.username !== undefined) {\n result.username = validateString(config.username, `${path}.username`);\n }\n if (config.password !== undefined) {\n result.password = validateString(config.password, `${path}.password`);\n }\n\n return result;\n}\n\n/**\n * Validate module defaults configuration\n */\nfunction validateModuleDefaultsConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Module defaults configuration must be an object'\n );\n }\n\n const validated: any = {\n cache: validateCacheConfig(config.cache, `${path}.cache`),\n rateLimit: validateRateLimitConfig(config.rateLimit, `${path}.rateLimit`),\n validation: validateValidationConfig(config.validation, `${path}.validation`),\n autoDiscovery: validateAutoDiscoveryConfig(config.autoDiscovery, `${path}.autoDiscovery`),\n };\n\n // Optional apiPrefix\n if (config.apiPrefix !== undefined) {\n if (typeof config.apiPrefix !== 'string') {\n throw new ConfigValidationError(\n `${path}.apiPrefix`,\n config.apiPrefix,\n 'string',\n 'API prefix must be a string'\n );\n }\n validated.apiPrefix = config.apiPrefix;\n }\n\n // Optional session config\n if (config.session !== undefined) {\n validated.session = validateSessionConfig(config.session, `${path}.session`);\n }\n\n return validated;\n}\n\n/**\n * Validate file-based routing configuration.\n * Accepts a boolean shorthand (routing: true/false) or an object\n * ({ enabled, paths }). Defaults to enabled when omitted.\n */\nfunction validateRoutingConfig(\n config: any,\n path: string\n): boolean | { enabled: boolean; paths?: string[] } {\n if (config === undefined || config === null) {\n return true; // Enabled by default\n }\n\n if (typeof config === 'boolean') {\n return config;\n }\n\n if (typeof config === 'object' && !Array.isArray(config)) {\n const result: { enabled: boolean; paths?: string[] } = {\n enabled:\n config.enabled !== undefined ? validateBoolean(config.enabled, `${path}.enabled`) : true,\n };\n if (config.paths !== undefined) {\n result.paths = validateStringArray(config.paths, `${path}.paths`);\n }\n return result;\n }\n\n throw new ConfigValidationError(\n path,\n config,\n 'boolean | { enabled: boolean; paths?: string[] }',\n 'Routing must be a boolean or an object with enabled/paths'\n );\n}\n\n/**\n * Validate auto-discovery configuration\n */\nfunction validateAutoDiscoveryConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Auto-discovery configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n paths: validateStringArray(config.paths, `${path}.paths`),\n patterns: validateStringArray(config.patterns, `${path}.patterns`),\n recursive: validateBoolean(config.recursive, `${path}.recursive`),\n loadingStrategy: validateEnum(\n config.loadingStrategy,\n ['eager', 'lazy', 'conditional'],\n `${path}.loadingStrategy`\n ),\n watchForChanges: validateBoolean(config.watchForChanges, `${path}.watchForChanges`),\n ignorePatterns: validateStringArray(config.ignorePatterns, `${path}.ignorePatterns`),\n loadOrder: validateEnum(\n config.loadOrder,\n ['alphabetical', 'dependency', 'custom'],\n `${path}.loadOrder`\n ),\n failOnError: validateBoolean(config.failOnError, `${path}.failOnError`),\n maxDepth: validateNumber(config.maxDepth, `${path}.maxDepth`),\n };\n}\n\n/**\n * Validate cache configuration\n */\nfunction validateCacheConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Cache configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n defaultTtl: validateNumber(config.defaultTtl, `${path}.defaultTtl`, { min: 0 }),\n maxSize: validateNumber(config.maxSize, `${path}.maxSize`, { min: 1 }),\n strategy: validateEnum(config.strategy, ['lru', 'lfu', 'fifo'], `${path}.strategy`),\n };\n}\n\n/**\n * Validate rate limit configuration\n */\nfunction validateRateLimitConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Rate limit configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n defaultRequests: validateNumber(config.defaultRequests, `${path}.defaultRequests`, { min: 1 }),\n defaultWindow: validateNumber(config.defaultWindow, `${path}.defaultWindow`, { min: 1000 }),\n skipSuccessfulRequests: validateBoolean(\n config.skipSuccessfulRequests,\n `${path}.skipSuccessfulRequests`\n ),\n skipFailedRequests: validateBoolean(config.skipFailedRequests, `${path}.skipFailedRequests`),\n };\n}\n\n/**\n * Validate validation configuration\n */\nfunction validateValidationConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Validation configuration must be an object'\n );\n }\n\n const validated: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n stripUnknown: validateBoolean(config.stripUnknown, `${path}.stripUnknown`),\n abortEarly: validateBoolean(config.abortEarly, `${path}.abortEarly`),\n };\n\n // Optional allowUnknown\n if (config.allowUnknown !== undefined) {\n validated.allowUnknown = validateBoolean(config.allowUnknown, `${path}.allowUnknown`);\n }\n\n // Optional onError handler\n if (config.onError !== undefined) {\n if (typeof config.onError !== 'function') {\n throw new ConfigValidationError(\n `${path}.onError`,\n typeof config.onError,\n 'function',\n 'Validation error handler must be a function'\n );\n }\n validated.onError = config.onError;\n }\n\n return validated;\n}\n\n/**\n * Validate session configuration\n */\nfunction validateSessionConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Session configuration must be an object'\n );\n }\n\n const validated: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n store: validateEnum(config.store, ['memory', 'redis', 'file'], `${path}.store`),\n };\n\n // Optional fields\n if (config.storeOptions !== undefined) {\n validated.storeOptions = config.storeOptions; // Complex object, allow through\n }\n if (config.secret !== undefined) {\n validated.secret = validateString(config.secret, `${path}.secret`);\n }\n if (config.name !== undefined) {\n validated.name = validateString(config.name, `${path}.name`);\n }\n if (config.rolling !== undefined) {\n validated.rolling = validateBoolean(config.rolling, `${path}.rolling`);\n }\n if (config.resave !== undefined) {\n validated.resave = validateBoolean(config.resave, `${path}.resave`);\n }\n if (config.saveUninitialized !== undefined) {\n validated.saveUninitialized = validateBoolean(\n config.saveUninitialized,\n `${path}.saveUninitialized`\n );\n }\n if (config.cookie !== undefined) {\n validated.cookie = config.cookie; // Complex object, allow through\n }\n if (config.proxy !== undefined) {\n validated.proxy = validateBoolean(config.proxy, `${path}.proxy`);\n }\n if (config.unset !== undefined) {\n validated.unset = validateEnum(config.unset, ['destroy', 'keep'], `${path}.unset`);\n }\n\n return validated;\n}\n\n/**\n * Validate logging configuration\n */\nfunction validateLoggingConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Logging configuration must be an object'\n );\n }\n\n return {\n level: validateEnum(config.level, ['debug', 'info', 'warn', 'error', 'fatal'], `${path}.level`),\n format: validateEnum(config.format, ['pretty', 'json', 'compact'], `${path}.format`),\n enableColors: validateBoolean(config.enableColors, `${path}.enableColors`),\n enableTimestamp: validateBoolean(config.enableTimestamp, `${path}.enableTimestamp`),\n enableContext: validateBoolean(config.enableContext, `${path}.enableContext`),\n enableMetadata: validateBoolean(config.enableMetadata, `${path}.enableMetadata`),\n enablePerformance: validateBoolean(config.enablePerformance, `${path}.enablePerformance`),\n outputs: validateLoggingOutputsConfig(config.outputs, `${path}.outputs`),\n };\n}\n\n/**\n * Validate logging outputs configuration\n */\nfunction validateLoggingOutputsConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Logging outputs configuration must be an object'\n );\n }\n\n return {\n console: validateBoolean(config.console, `${path}.console`),\n file: validateLoggingFileConfig(config.file, `${path}.file`),\n webhook: validateLoggingWebhookConfig(config.webhook, `${path}.webhook`),\n };\n}\n\n/**\n * Validate logging file configuration\n */\nfunction validateLoggingFileConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Logging file configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n path: validateString(config.path, `${path}.path`),\n maxSize: validateString(config.maxSize, `${path}.maxSize`),\n maxFiles: validateNumber(config.maxFiles, `${path}.maxFiles`, { min: 1 }),\n };\n}\n\n/**\n * Validate logging webhook configuration\n */\nfunction validateLoggingWebhookConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Logging webhook configuration must be an object'\n );\n }\n\n const result: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n headers: validateObject(config.headers, `${path}.headers`),\n };\n\n // Optional URL\n if (config.url !== undefined) {\n result.url = validateString(config.url, `${path}.url`);\n }\n\n return result;\n}\n\n/**\n * Validate security configuration\n */\nfunction validateSecurityConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Security configuration must be an object'\n );\n }\n\n const validated: any = {\n cors: validateCorsConfig(config.cors, `${path}.cors`),\n helmet: validateHelmetConfig(config.helmet, `${path}.helmet`),\n rateLimit: validateSecurityRateLimitConfig(config.rateLimit, `${path}.rateLimit`),\n };\n\n // Optional CSRF config\n if (config.csrf !== undefined) {\n validated.csrf = validateCsrfConfig(config.csrf, `${path}.csrf`);\n }\n\n // Optional CSP config\n if (config.csp !== undefined) {\n validated.csp = validateCspConfig(config.csp, `${path}.csp`);\n }\n\n return validated;\n}\n\n/**\n * Validate CORS configuration\n */\nfunction validateCorsConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(path, config, 'object', 'CORS configuration must be an object');\n }\n\n const validated: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n origin: validateCorsOrigin(config.origin, `${path}.origin`),\n methods: validateStringArray(config.methods, `${path}.methods`),\n allowedHeaders: validateStringArray(config.allowedHeaders, `${path}.allowedHeaders`),\n credentials: validateBoolean(config.credentials, `${path}.credentials`),\n };\n\n // Optional fields\n if (config.exposedHeaders !== undefined) {\n validated.exposedHeaders = validateStringArray(config.exposedHeaders, `${path}.exposedHeaders`);\n }\n if (config.maxAge !== undefined) {\n validated.maxAge = validateNumber(config.maxAge, `${path}.maxAge`);\n }\n if (config.preflightContinue !== undefined) {\n validated.preflightContinue = validateBoolean(\n config.preflightContinue,\n `${path}.preflightContinue`\n );\n }\n\n return validated;\n}\n\n/**\n * Validate CORS origin (can be string, array, boolean, or function)\n */\nfunction validateCorsOrigin(\n value: any,\n path: string\n): string | string[] | boolean | OriginFunction {\n if (typeof value === 'boolean' || typeof value === 'string') {\n return value;\n }\n if (typeof value === 'function') {\n return value as OriginFunction;\n }\n if (Array.isArray(value)) {\n return validateStringArray(value, path);\n }\n throw new ConfigValidationError(\n path,\n value,\n 'string | string[] | boolean | function',\n 'Must be a string, array of strings, boolean, or function'\n );\n}\n\n/**\n * Validate helmet configuration\n */\nfunction validateHelmetConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Helmet configuration must be an object'\n );\n }\n\n const validated: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n };\n\n // Simplified options (backward compatible)\n if (config.contentSecurityPolicy !== undefined) {\n if (typeof config.contentSecurityPolicy === 'boolean') {\n validated.contentSecurityPolicy = config.contentSecurityPolicy;\n } else if (typeof config.contentSecurityPolicy === 'object') {\n validated.contentSecurityPolicy = config.contentSecurityPolicy;\n }\n }\n if (config.hsts !== undefined) {\n validated.hsts = validateBoolean(config.hsts, `${path}.hsts`);\n }\n if (config.noSniff !== undefined) {\n validated.noSniff = validateBoolean(config.noSniff, `${path}.noSniff`);\n }\n if (config.frameguard !== undefined) {\n validated.frameguard = validateBoolean(config.frameguard, `${path}.frameguard`);\n }\n\n // Detailed options (for advanced configuration)\n if (config.xFrameOptions !== undefined) {\n validated.xFrameOptions = config.xFrameOptions;\n }\n if (config.xContentTypeOptions !== undefined) {\n validated.xContentTypeOptions = validateBoolean(\n config.xContentTypeOptions,\n `${path}.xContentTypeOptions`\n );\n }\n if (config.xXssProtection !== undefined) {\n validated.xXssProtection = validateBoolean(config.xXssProtection, `${path}.xXssProtection`);\n }\n if (config.referrerPolicy !== undefined) {\n validated.referrerPolicy = config.referrerPolicy;\n }\n if (config.strictTransportSecurity !== undefined) {\n validated.strictTransportSecurity = config.strictTransportSecurity;\n }\n if (config.xDownloadOptions !== undefined) {\n validated.xDownloadOptions = validateBoolean(\n config.xDownloadOptions,\n `${path}.xDownloadOptions`\n );\n }\n if (config.xPermittedCrossDomainPolicies !== undefined) {\n validated.xPermittedCrossDomainPolicies = validateBoolean(\n config.xPermittedCrossDomainPolicies,\n `${path}.xPermittedCrossDomainPolicies`\n );\n }\n\n return validated;\n}\n\n/**\n * Validate CSRF configuration\n */\nfunction validateCsrfConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(path, config, 'object', 'CSRF configuration must be an object');\n }\n\n const validated: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n };\n\n if (config.secret !== undefined) {\n validated.secret = validateString(config.secret, `${path}.secret`);\n }\n if (config.tokenLength !== undefined) {\n validated.tokenLength = validateNumber(config.tokenLength, `${path}.tokenLength`);\n }\n if (config.cookieName !== undefined) {\n validated.cookieName = validateString(config.cookieName, `${path}.cookieName`);\n }\n if (config.headerName !== undefined) {\n validated.headerName = validateString(config.headerName, `${path}.headerName`);\n }\n if (config.ignoreMethods !== undefined) {\n validated.ignoreMethods = validateStringArray(config.ignoreMethods, `${path}.ignoreMethods`);\n }\n if (config.sameSite !== undefined) {\n validated.sameSite = validateBoolean(config.sameSite, `${path}.sameSite`);\n }\n\n return validated;\n}\n\n/**\n * Validate CSP configuration\n */\nfunction validateCspConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(path, config, 'object', 'CSP configuration must be an object');\n }\n\n const validated: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n };\n\n if (config.directives !== undefined) {\n validated.directives = config.directives; // Complex object, allow through\n }\n if (config.reportOnly !== undefined) {\n validated.reportOnly = validateBoolean(config.reportOnly, `${path}.reportOnly`);\n }\n if (config.reportUri !== undefined) {\n validated.reportUri = validateString(config.reportUri, `${path}.reportUri`);\n }\n if (config.nonce !== undefined) {\n validated.nonce = validateBoolean(config.nonce, `${path}.nonce`);\n }\n\n return validated;\n}\n\n/**\n * Validate security rate limit configuration\n */\nfunction validateSecurityRateLimitConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Security rate limit configuration must be an object'\n );\n }\n\n return {\n global: validateGlobalRateLimitConfig(config.global, `${path}.global`),\n };\n}\n\n/**\n * Validate global rate limit configuration\n */\nfunction validateGlobalRateLimitConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Global rate limit configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n requests: validateNumber(config.requests, `${path}.requests`, { min: 1 }),\n window: validateNumber(config.window, `${path}.window`, { min: 1000 }),\n };\n}\n\n/**\n * Validate external services configuration\n */\nfunction validateExternalServicesConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'External services configuration must be an object'\n );\n }\n\n const result: any = {};\n\n // Optional services - only validate if present\n if (config.stripe !== undefined) {\n result.stripe = validateStripeConfig(config.stripe, `${path}.stripe`);\n }\n if (config.paypal !== undefined) {\n result.paypal = validatePayPalConfig(config.paypal, `${path}.paypal`);\n }\n if (config.smtp !== undefined) {\n result.smtp = validateSMTPConfig(config.smtp, `${path}.smtp`);\n }\n\n return result;\n}\n\n/**\n * Validate Stripe configuration\n */\nfunction validateStripeConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Stripe configuration must be an object'\n );\n }\n\n const result: any = {};\n\n // Optional fields\n if (config.secretKey !== undefined) {\n result.secretKey = validateString(config.secretKey, `${path}.secretKey`);\n }\n if (config.publishableKey !== undefined) {\n result.publishableKey = validateString(config.publishableKey, `${path}.publishableKey`);\n }\n if (config.webhookSecret !== undefined) {\n result.webhookSecret = validateString(config.webhookSecret, `${path}.webhookSecret`);\n }\n if (config.apiVersion !== undefined) {\n result.apiVersion = validateString(config.apiVersion, `${path}.apiVersion`);\n } else {\n result.apiVersion = '2023-10-16'; // Default API version\n }\n\n return result;\n}\n\n/**\n * Validate PayPal configuration\n */\nfunction validatePayPalConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'PayPal configuration must be an object'\n );\n }\n\n const result: any = {\n environment: validateEnum(config.environment, ['sandbox', 'production'], `${path}.environment`),\n };\n\n // Optional fields\n if (config.clientId !== undefined) {\n result.clientId = validateString(config.clientId, `${path}.clientId`);\n }\n if (config.clientSecret !== undefined) {\n result.clientSecret = validateString(config.clientSecret, `${path}.clientSecret`);\n }\n if (config.webhookId !== undefined) {\n result.webhookId = validateString(config.webhookId, `${path}.webhookId`);\n }\n\n return result;\n}\n\n/**\n * Validate SMTP configuration\n */\nfunction validateSMTPConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(path, config, 'object', 'SMTP configuration must be an object');\n }\n\n const result: any = {\n port: validatePort(config.port, `${path}.port`),\n secure: validateBoolean(config.secure, `${path}.secure`),\n };\n\n // Optional fields\n if (config.host !== undefined) {\n result.host = validateString(config.host, `${path}.host`);\n }\n if (config.username !== undefined) {\n result.username = validateString(config.username, `${path}.username`);\n }\n if (config.password !== undefined) {\n result.password = validateString(config.password, `${path}.password`);\n }\n\n return result;\n}\n\n/**\n * Validate performance configuration\n */\nfunction validatePerformanceConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Performance configuration must be an object'\n );\n }\n\n return {\n compression: validateCompressionConfig(config.compression, `${path}.compression`),\n circuitBreaker: validateCircuitBreakerConfig(config.circuitBreaker, `${path}.circuitBreaker`),\n clustering: validateClusteringConfig(config.clustering, `${path}.clustering`),\n };\n}\n\n/**\n * Validate compression configuration\n */\nfunction validateCompressionConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Compression configuration must be an object'\n );\n }\n\n const result: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n level: validateNumber(config.level, `${path}.level`, { min: 1, max: 9 }),\n threshold: validateNumber(config.threshold, `${path}.threshold`, { min: 0 }),\n };\n if (config.encodings !== undefined) {\n if (!Array.isArray(config.encodings)) {\n throw new ConfigValidationError(\n `${path}.encodings`,\n config.encodings,\n 'array',\n 'encodings must be an array'\n );\n }\n result.encodings = config.encodings.map((e: any) =>\n validateEnum(e, ['br', 'gzip', 'deflate'], `${path}.encodings[]`)\n );\n }\n return result;\n}\n\n/**\n * Validate circuit breaker configuration\n */\nfunction validateCircuitBreakerConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Circuit breaker configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n failureThreshold: validateNumber(config.failureThreshold, `${path}.failureThreshold`, {\n min: 1,\n }),\n resetTimeout: validateNumber(config.resetTimeout, `${path}.resetTimeout`, { min: 1000 }),\n monitoringPeriod: validateNumber(config.monitoringPeriod, `${path}.monitoringPeriod`, {\n min: 1000,\n }),\n };\n}\n\n/**\n * Validate clustering configuration\n */\nfunction validateClusteringConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Clustering configuration must be an object'\n );\n }\n\n const result: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n };\n\n // Workers can be number or 'auto'\n if (typeof config.workers === 'string' && config.workers === 'auto') {\n result.workers = 'auto';\n } else {\n result.workers = validateNumber(config.workers, `${path}.workers`, { min: 1 });\n }\n\n // Optional memoryPerWorkerGB\n if (config.memoryPerWorkerGB !== undefined) {\n result.memoryPerWorkerGB = validateNumber(\n config.memoryPerWorkerGB,\n `${path}.memoryPerWorkerGB`,\n { min: 0.1 }\n );\n }\n\n // Optional mode (reuseport or proxy)\n if (config.mode !== undefined) {\n if (config.mode !== 'reuseport' && config.mode !== 'proxy') {\n throw new ConfigValidationError(\n `${path}.mode`,\n config.mode,\n \"'reuseport' or 'proxy'\",\n \"Clustering mode must be 'reuseport' (fast, connection hashing) or 'proxy' (slower, strict round-robin)\"\n );\n }\n result.mode = config.mode;\n } else {\n result.mode = 'reuseport'; // Default to reuseport for performance\n }\n\n return result;\n}\n\n/**\n * Validate WebSocket configuration\n */\nfunction validateWebSocketConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'WebSocket configuration must be an object'\n );\n }\n\n const result: any = {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n };\n\n // Optional fields\n if (config.adapter !== undefined) {\n result.adapter = validateString(config.adapter, `${path}.adapter`);\n }\n if (config.compression !== undefined) {\n result.compression = validateBoolean(config.compression, `${path}.compression`);\n }\n if (config.customIdGenerator !== undefined) {\n result.customIdGenerator = config.customIdGenerator; // Function - no validation needed\n }\n if (config.options !== undefined) {\n result.options = validateWebSocketOptions(config.options, `${path}.options`);\n }\n\n return result;\n}\n\n/**\n * Validate WebSocket options\n */\nfunction validateWebSocketOptions(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(path, config, 'object', 'WebSocket options must be an object');\n }\n\n const result: any = {};\n\n if (config.cors !== undefined) {\n result.cors = validateWebSocketCorsOptions(config.cors, `${path}.cors`);\n }\n if (config.path !== undefined) {\n result.path = validateString(config.path, `${path}.path`);\n }\n if (config.maxPayloadLength !== undefined) {\n result.maxPayloadLength = validateNumber(config.maxPayloadLength, `${path}.maxPayloadLength`, {\n min: 1024,\n });\n }\n\n return result;\n}\n\n/**\n * Validate WebSocket CORS options\n */\nfunction validateWebSocketCorsOptions(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'WebSocket CORS options must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.origin !== undefined) {\n result.origin = validateCorsOrigin(config.origin, `${path}.origin`);\n }\n if (config.credentials !== undefined) {\n result.credentials = validateBoolean(config.credentials, `${path}.credentials`);\n }\n\n return result;\n}\n\n// Basic validation functions\n\nfunction validatePort(value: any, path: string): number {\n const num = Number(value);\n if (isNaN(num) || num < 1 || num > 65535) {\n throw new ConfigValidationError(\n path,\n value,\n 'number (1-65535)',\n 'Must be a number between 1 and 65535'\n );\n }\n return num;\n}\n\nfunction validateBoolean(value: any, path: string): boolean {\n if (value === 'true' || value === true) return true;\n if (value === 'false' || value === false) return false;\n if (value === '1' || value === 1) return true;\n if (value === '0' || value === 0) return false;\n throw new ConfigValidationError(\n path,\n value,\n 'boolean',\n 'Must be a boolean (true/false) or numeric (1/0)'\n );\n}\n\nfunction validateNumber(\n value: any,\n path: string,\n options: { min?: number; max?: number } = {}\n): number {\n const num = Number(value);\n if (isNaN(num)) {\n throw new ConfigValidationError(path, value, 'number', 'Must be a valid number');\n }\n if (options.min !== undefined && num < options.min) {\n throw new ConfigValidationError(\n path,\n value,\n `number >= ${options.min}`,\n `Must be at least ${options.min}`\n );\n }\n if (options.max !== undefined && num > options.max) {\n throw new ConfigValidationError(\n path,\n value,\n `number <= ${options.max}`,\n `Must be at most ${options.max}`\n );\n }\n return num;\n}\n\nfunction validateString(value: any, path: string): string {\n if (typeof value !== 'string') {\n throw new ConfigValidationError(path, value, 'string', 'Must be a string');\n }\n return value;\n}\n\nfunction validateEnum<T extends string>(value: any, validValues: readonly T[], path: string): T {\n const str = validateString(value, path);\n\n // For small arrays (< 10 items), linear search is faster than Set\n // For larger arrays, we could use Set, but most enums in config are small\n let found = false;\n const len = validValues.length;\n for (let i = 0; i < len; i++) {\n if (validValues[i] === str) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n throw new ConfigValidationError(\n path,\n value,\n `one of: ${validValues.join(', ')}`,\n `Must be one of: ${validValues.join(', ')}`\n );\n }\n return str as T;\n}\n\nfunction validateStringArray(value: any, path: string): string[] {\n if (!Array.isArray(value)) {\n // Try to parse comma-separated string\n if (typeof value === 'string') {\n // Avoid chained map().filter() - use single pass\n const parts = value.split(',');\n const result: string[] = [];\n for (const part of parts) {\n const trimmed = part.trim();\n if (trimmed.length > 0) {\n result.push(trimmed);\n }\n }\n return result;\n }\n throw new ConfigValidationError(\n path,\n value,\n 'string[]',\n 'Must be an array or comma-separated string'\n );\n }\n\n // Avoid creating intermediate arrays with map\n const len = value.length;\n const result: string[] = new Array(len);\n for (let i = 0; i < len; i++) {\n result[i] = validateString(value[i], `${path}[${i}]`);\n }\n return result;\n}\n\nfunction validateObject(value: any, path: string): Record<string, string> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new ConfigValidationError(path, value, 'object', 'Must be an object');\n }\n return value;\n}\n\n/**\n * Validate queue configuration\n */\nfunction validateQueueConfig(config: any, path: string) {\n if (config === undefined || config === null) {\n return undefined;\n }\n\n if (typeof config !== 'object' || Array.isArray(config)) {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Queue configuration must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.adapter !== undefined) {\n const validAdapters = ['bull', 'rabbitmq', 'sqs', 'kafka', 'memory'];\n if (!validAdapters.includes(config.adapter)) {\n throw new ConfigValidationError(\n `${path}.adapter`,\n config.adapter,\n 'string',\n `Must be one of: ${validAdapters.join(', ')}`\n );\n }\n result.adapter = config.adapter;\n }\n\n if (config.connection !== undefined) {\n result.connection = validateQueueConnectionConfig(config.connection, `${path}.connection`);\n }\n\n if (config.concurrency !== undefined) {\n result.concurrency = validateNumber(config.concurrency, `${path}.concurrency`, { min: 1 });\n }\n\n if (config.retry !== undefined) {\n result.retry = validateQueueRetryConfig(config.retry, `${path}.retry`);\n }\n\n if (config.deadLetterQueue !== undefined) {\n result.deadLetterQueue = validateQueueDeadLetterConfig(\n config.deadLetterQueue,\n `${path}.deadLetterQueue`\n );\n }\n\n if (config.defaultJobOptions !== undefined) {\n result.defaultJobOptions = validateQueueDefaultJobOptions(\n config.defaultJobOptions,\n `${path}.defaultJobOptions`\n );\n }\n\n if (config.prefix !== undefined) {\n result.prefix = validateString(config.prefix, `${path}.prefix`);\n }\n\n if (config.limiter !== undefined) {\n result.limiter = validateQueueLimiterConfig(config.limiter, `${path}.limiter`);\n }\n\n return result;\n}\n\n/**\n * Validate queue connection configuration\n */\nfunction validateQueueConnectionConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Queue connection configuration must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.host !== undefined) {\n result.host = validateString(config.host, `${path}.host`);\n }\n\n if (config.port !== undefined) {\n result.port = validatePort(config.port, `${path}.port`);\n }\n\n if (config.username !== undefined) {\n result.username = validateString(config.username, `${path}.username`);\n }\n\n if (config.password !== undefined) {\n result.password = validateString(config.password, `${path}.password`);\n }\n\n if (config.database !== undefined) {\n result.database = validateNumber(config.database, `${path}.database`, { min: 0 });\n }\n\n if (config.brokers !== undefined) {\n result.brokers = validateStringArray(config.brokers, `${path}.brokers`);\n }\n\n if (config.groupId !== undefined) {\n result.groupId = validateString(config.groupId, `${path}.groupId`);\n }\n\n if (config.region !== undefined) {\n result.region = validateString(config.region, `${path}.region`);\n }\n\n if (config.queueUrl !== undefined) {\n result.queueUrl = validateString(config.queueUrl, `${path}.queueUrl`);\n }\n\n return result;\n}\n\n/**\n * Validate queue retry configuration\n */\nfunction validateQueueRetryConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Queue retry configuration must be an object'\n );\n }\n\n const validBackoffStrategies = ['fixed', 'exponential', 'linear'];\n\n return {\n maxAttempts: validateNumber(config.maxAttempts, `${path}.maxAttempts`, { min: 1 }),\n backoff:\n config.backoff && validBackoffStrategies.includes(config.backoff)\n ? config.backoff\n : (() => {\n throw new ConfigValidationError(\n `${path}.backoff`,\n config.backoff,\n 'string',\n `Must be one of: ${validBackoffStrategies.join(', ')}`\n );\n })(),\n initialDelay: validateNumber(config.initialDelay, `${path}.initialDelay`, { min: 0 }),\n maxDelay:\n config.maxDelay !== undefined\n ? validateNumber(config.maxDelay, `${path}.maxDelay`, { min: 0 })\n : undefined,\n };\n}\n\n/**\n * Validate queue dead letter queue configuration\n */\nfunction validateQueueDeadLetterConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Queue dead letter configuration must be an object'\n );\n }\n\n return {\n enabled: validateBoolean(config.enabled, `${path}.enabled`),\n maxRetries: validateNumber(config.maxRetries, `${path}.maxRetries`, { min: 1 }),\n queueName:\n config.queueName !== undefined\n ? validateString(config.queueName, `${path}.queueName`)\n : undefined,\n };\n}\n\n/**\n * Validate queue default job options\n */\nfunction validateQueueDefaultJobOptions(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Queue default job options must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.removeOnComplete !== undefined) {\n result.removeOnComplete =\n typeof config.removeOnComplete === 'boolean'\n ? config.removeOnComplete\n : validateNumber(config.removeOnComplete, `${path}.removeOnComplete`, { min: 0 });\n }\n\n if (config.removeOnFail !== undefined) {\n result.removeOnFail =\n typeof config.removeOnFail === 'boolean'\n ? config.removeOnFail\n : validateNumber(config.removeOnFail, `${path}.removeOnFail`, { min: 0 });\n }\n\n if (config.attempts !== undefined) {\n result.attempts = validateNumber(config.attempts, `${path}.attempts`, { min: 1 });\n }\n\n if (config.backoff !== undefined) {\n const validBackoffTypes = ['fixed', 'exponential', 'linear'];\n if (!config.backoff.type || !validBackoffTypes.includes(config.backoff.type)) {\n throw new ConfigValidationError(\n `${path}.backoff.type`,\n config.backoff.type,\n 'string',\n `Must be one of: ${validBackoffTypes.join(', ')}`\n );\n }\n result.backoff = {\n type: config.backoff.type,\n delay: validateNumber(config.backoff.delay, `${path}.backoff.delay`, { min: 0 }),\n };\n }\n\n return result;\n}\n\n/**\n * Validate queue limiter configuration\n */\nfunction validateQueueLimiterConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Queue limiter configuration must be an object'\n );\n }\n\n return {\n max: validateNumber(config.max, `${path}.max`, { min: 1 }),\n duration: validateNumber(config.duration, `${path}.duration`, { min: 1 }),\n };\n}\n\n/**\n * Validate jobs configuration\n */\nfunction validateJobsConfig(config: any, path: string) {\n if (config === undefined || config === null) {\n return undefined;\n }\n\n if (typeof config !== 'object' || Array.isArray(config)) {\n throw new ConfigValidationError(path, config, 'object', 'Jobs configuration must be an object');\n }\n\n const result: any = {};\n\n if (config.enabled !== undefined) {\n result.enabled = validateBoolean(config.enabled, `${path}.enabled`);\n }\n if (config.maxConcurrentJobs !== undefined) {\n result.maxConcurrentJobs = validateNumber(\n config.maxConcurrentJobs,\n `${path}.maxConcurrentJobs`,\n { min: 1 }\n );\n }\n if (config.gracefulShutdownTimeout !== undefined) {\n result.gracefulShutdownTimeout = validateNumber(\n config.gracefulShutdownTimeout,\n `${path}.gracefulShutdownTimeout`,\n { min: 0 }\n );\n }\n if (config.leaderElection !== undefined) {\n result.leaderElection = validateJobsLeaderElectionConfig(\n config.leaderElection,\n `${path}.leaderElection`\n );\n }\n if (config.executor !== undefined) {\n result.executor = validateJobsExecutorConfig(config.executor, `${path}.executor`);\n }\n if (config.stateManager !== undefined) {\n result.stateManager = validateJobsStateManagerConfig(\n config.stateManager,\n `${path}.stateManager`\n );\n }\n\n return result;\n}\n\n/**\n * Validate jobs leader election configuration\n */\nfunction validateJobsLeaderElectionConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Jobs leader election configuration must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.enabled !== undefined) {\n result.enabled = validateBoolean(config.enabled, `${path}.enabled`);\n }\n if (config.strategy !== undefined) {\n result.strategy = validateEnum(config.strategy, ['file', 'redis', 'none'], `${path}.strategy`);\n }\n if (config.lockPath !== undefined) {\n result.lockPath = validateString(config.lockPath, `${path}.lockPath`);\n }\n if (config.lockTimeout !== undefined) {\n result.lockTimeout = validateNumber(config.lockTimeout, `${path}.lockTimeout`, { min: 1000 });\n }\n if (config.heartbeatInterval !== undefined) {\n result.heartbeatInterval = validateNumber(\n config.heartbeatInterval,\n `${path}.heartbeatInterval`,\n { min: 1000 }\n );\n }\n\n return result;\n}\n\n/**\n * Validate jobs executor configuration\n */\nfunction validateJobsExecutorConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Jobs executor configuration must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.maxRetries !== undefined) {\n result.maxRetries = validateNumber(config.maxRetries, `${path}.maxRetries`, { min: 0 });\n }\n if (config.retryDelay !== undefined) {\n result.retryDelay = validateNumber(config.retryDelay, `${path}.retryDelay`, { min: 0 });\n }\n if (config.retryBackoff !== undefined) {\n result.retryBackoff = validateEnum(\n config.retryBackoff,\n ['linear', 'exponential'],\n `${path}.retryBackoff`\n );\n }\n if (config.retryBackoffMultiplier !== undefined) {\n result.retryBackoffMultiplier = validateNumber(\n config.retryBackoffMultiplier,\n `${path}.retryBackoffMultiplier`,\n { min: 1 }\n );\n }\n if (config.maxRetryDelay !== undefined) {\n result.maxRetryDelay = validateNumber(config.maxRetryDelay, `${path}.maxRetryDelay`, {\n min: 0,\n });\n }\n if (config.timeout !== undefined) {\n result.timeout = validateNumber(config.timeout, `${path}.timeout`, { min: 0 });\n }\n if (config.enableCircuitBreaker !== undefined) {\n result.enableCircuitBreaker = validateBoolean(\n config.enableCircuitBreaker,\n `${path}.enableCircuitBreaker`\n );\n }\n if (config.circuitBreakerThreshold !== undefined) {\n result.circuitBreakerThreshold = validateNumber(\n config.circuitBreakerThreshold,\n `${path}.circuitBreakerThreshold`,\n { min: 1 }\n );\n }\n if (config.circuitBreakerResetTimeout !== undefined) {\n result.circuitBreakerResetTimeout = validateNumber(\n config.circuitBreakerResetTimeout,\n `${path}.circuitBreakerResetTimeout`,\n { min: 1000 }\n );\n }\n if (config.enableMemoryMonitoring !== undefined) {\n result.enableMemoryMonitoring = validateBoolean(\n config.enableMemoryMonitoring,\n `${path}.enableMemoryMonitoring`\n );\n }\n if (config.memoryThreshold !== undefined) {\n result.memoryThreshold = validateNumber(config.memoryThreshold, `${path}.memoryThreshold`, {\n min: 1,\n });\n }\n\n return result;\n}\n\n/**\n * Validate jobs state manager configuration\n */\nfunction validateJobsStateManagerConfig(config: any, path: string) {\n if (!config || typeof config !== 'object') {\n throw new ConfigValidationError(\n path,\n config,\n 'object',\n 'Jobs state manager configuration must be an object'\n );\n }\n\n const result: any = {};\n\n if (config.persistPath !== undefined) {\n result.persistPath = validateString(config.persistPath, `${path}.persistPath`);\n }\n if (config.historySize !== undefined) {\n result.historySize = validateNumber(config.historySize, `${path}.historySize`, { min: 1 });\n }\n if (config.persistInterval !== undefined) {\n result.persistInterval = validateNumber(config.persistInterval, `${path}.persistInterval`, {\n min: 1000,\n });\n }\n if (config.enableAutoPersist !== undefined) {\n result.enableAutoPersist = validateBoolean(\n config.enableAutoPersist,\n `${path}.enableAutoPersist`\n );\n }\n if (config.enableRecovery !== undefined) {\n result.enableRecovery = validateBoolean(config.enableRecovery, `${path}.enableRecovery`);\n }\n\n return result;\n}\n\n/**\n * Provide helpful validation hints based on the error\n */\nfunction provideValidationHints(error: ConfigValidationError): void {\n if (error.field.includes('port')) {\n logger.error(' 💡 Hint: Ports must be numbers between 1 and 65535');\n }\n if (error.field.includes('url')) {\n logger.error(' 💡 Hint: URLs must include protocol (http:// or https://)');\n }\n if (error.field.includes('environment')) {\n logger.error(' 💡 Hint: NODE_ENV must be one of: development, staging, production');\n }\n if (error.field.includes('level')) {\n logger.error(' 💡 Hint: Log level must be one of: debug, info, warn, error, fatal');\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../../src/core/config/file-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../../src/core/config/file-loader.ts"],"names":[],"mappings":"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","sourcesContent":["// Configuration File Loader - Load moro.config.js/ts files\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { createRequire } from 'module';\nimport { AppConfig, DeepPartial } from '../../types/config.js';\nimport { createFrameworkLogger } from '../logger/index.js';\nimport { filePathToImportURL } from '../utilities/package-utils.js';\n\nconst logger = createFrameworkLogger('ConfigFile');\n\n// Create require function for ESM to enable synchronous config loading\n// Use process.cwd() as base since we're loading with absolute paths anyway\nconst moduleRequire = createRequire(join(process.cwd(), 'index.js'));\n\n/**\n * Supported configuration file names in order of preference.\n *\n * moro.config.cjs is checked first — users in ESM projects (\"type\":\"module\")\n * should name their config file .cjs to guarantee CJS loading via require().\n *\n * moro.config.js is checked second. If the project has \"type\":\"module\" this\n * file will be ESM and cannot be require()'d. The error is caught and logged\n * as a clear warning — the pipeline then falls back to env vars + createApp().\n */\nconst CONFIG_FILES = ['moro.config.cjs', 'moro.config.js', 'moro.config.ts'] as const;\n\n/**\n * Find and load configuration from moro.config.cjs / moro.config.js (synchronously).\n *\n * Note on ESM projects: if your project has \"type\":\"module\" in package.json,\n * the compiled moro.config.js will be treated as ESM by Node.js and cannot be\n * loaded with require(). In that case this function logs a clear warning and\n * returns null. Configuration still works via environment variables and\n * createApp() options. To use a config file, rename it moro.config.cjs and\n * use module.exports = { ... }.\n *\n * @param cwd Current working directory to search for config files\n * @returns DeepPartial configuration object or null if no config file found\n */\nexport function loadConfigFileSync(cwd: string = process.cwd()): DeepPartial<AppConfig> | null {\n const configFile = findConfigFile(cwd);\n\n if (!configFile) {\n logger.debug('No configuration file found');\n return null;\n }\n\n logger.debug(`Loading configuration from: ${configFile}`);\n\n try {\n // Use createRequire to enable synchronous loading in ESM\n // Clear the require cache to ensure fresh config on each load\n delete moduleRequire.cache[moduleRequire.resolve(configFile)];\n\n const configModule = moduleRequire(configFile);\n\n // Handle ES module default export\n const config = configModule.default || configModule;\n\n if (!config || typeof config !== 'object') {\n logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);\n return null;\n }\n\n logger.info(`Configuration loaded from: ${configFile}`);\n return config;\n } catch (error) {\n const isEsmError =\n error instanceof Error &&\n ((error as NodeJS.ErrnoException).code === 'ERR_REQUIRE_ESM' ||\n error.message.includes('ERR_REQUIRE_ESM'));\n\n if (isEsmError) {\n // Expected when the project has \"type\":\"module\" — the compiled .js config\n // is an ES module and cannot be loaded with require(). This is a Node.js\n // restriction, not a framework bug. Config from env vars still applies.\n logger.warn(\n `Config file ${configFile} is an ES module (your project has \"type\":\"module\") ` +\n `and cannot be loaded synchronously. Configuration will be read from environment ` +\n `variables and createApp() options. To use a config file, rename it to ` +\n `moro.config.cjs and export with module.exports = { ... }.`\n );\n } else {\n logger.error(`Failed to load configuration file ${configFile}:`, String(error));\n logger.warn('Falling back to environment variable configuration');\n }\n\n return null;\n }\n}\n\n/**\n * Find and load configuration from moro.config.js or moro.config.ts (async).\n * Uses dynamic import() so it works with both CJS and ESM config files.\n *\n * @param cwd Current working directory to search for config files\n * @returns DeepPartial configuration object or null if no config file found\n */\nexport async function loadConfigFile(\n cwd: string = process.cwd()\n): Promise<DeepPartial<AppConfig> | null> {\n const configFile = findConfigFile(cwd);\n\n if (!configFile) {\n logger.debug('No configuration file found');\n return null;\n }\n\n logger.debug(`Loading configuration from: ${configFile}`);\n\n try {\n const config = await importConfigFile(configFile);\n\n if (!config || typeof config !== 'object') {\n logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);\n return null;\n }\n\n logger.info(`Configuration loaded from: ${configFile}`);\n return config;\n } catch (error) {\n logger.error(`Failed to load configuration file ${configFile}:`, String(error));\n logger.warn('Falling back to environment variable configuration');\n return null;\n }\n}\n\n/**\n * Find the first existing configuration file in the given directory\n */\nfunction findConfigFile(cwd: string): string | null {\n for (const fileName of CONFIG_FILES) {\n const filePath = join(cwd, fileName);\n if (existsSync(filePath)) {\n return filePath;\n }\n }\n return null;\n}\n\n/**\n * Dynamically import a configuration file\n */\nasync function importConfigFile(filePath: string): Promise<DeepPartial<AppConfig> | null> {\n const isTypeScript = filePath.endsWith('.ts');\n\n if (isTypeScript) {\n await setupTypeScriptLoader();\n }\n\n try {\n const importURL = filePathToImportURL(filePath);\n const configModule = await import(importURL);\n\n // Handle both default export and module.exports\n const config = configModule.default || configModule;\n\n return config;\n } catch (error) {\n if (\n isTypeScript &&\n error instanceof Error &&\n error.message.includes('Unknown file extension')\n ) {\n throw new Error(\n `Failed to load TypeScript config file. Run your application with tsx or ts-node: \"tsx your-app.ts\" or \"ts-node your-app.ts\"`\n );\n }\n throw error;\n }\n}\n\n/**\n * Setup TypeScript loader for .ts config files.\n * TypeScript loading is delegated to the runtime environment (tsx, ts-node).\n */\nasync function setupTypeScriptLoader(): Promise<void> {\n logger.debug('TypeScript config loading delegated to runtime environment');\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,mCAAmC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AAGjC,mEAAmE;AACnE,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,8CAA8C;AAC9C,cAAc,YAAY,CAAC;AAI3B,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EACL,uBAAuB,EACvB,eAAe,IAAI,SAAS,EAC5B,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAElD,6DAA6D;IAC7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEjD,oDAAoD;IACpD,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CACT,gDAAgD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,6CAA6C,CACzJ,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAqB;IAC/D,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAE5D,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CACT,gDAAgD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,6CAA6C,CACzJ,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,wBAAwB,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,qBAAqB,EAAE,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,mCAAmC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AAGjC,mEAAmE;AACnE,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,8CAA8C;AAC9C,cAAc,YAAY,CAAC;AAI3B,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EACL,uBAAuB,EACvB,eAAe,IAAI,SAAS,EAC5B,cAAc,EACd,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAElD,6DAA6D;IAC7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEjD,oDAAoD;IACpD,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CACT,gDAAgD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,6CAA6C,CACzJ,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAqB;IAC/D,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAE5D,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CACT,gDAAgD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,6CAA6C,CACzJ,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,wBAAwB,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,qBAAqB,EAAE,CAAC;AAC1B,CAAC","sourcesContent":["/**\n * Configuration System - Immutable Config with createApp Override Support\n *\n * This is the main entry point for the MoroJS configuration system.\n * It provides a clean, immutable configuration that is locked at createApp() time.\n *\n * Key Features:\n * - Immutable configuration after initialization\n * - Clear precedence: Env Vars > createApp Options > Config File > Defaults\n * - Type-safe validation\n * - Single source of truth\n */\n\n// Export types and core components\nexport * from './schema.js';\nexport * from './config-sources.js';\nexport * from './config-validator.js';\nexport * from './file-loader.js';\nexport type { OriginFunction } from '../../types/config.js';\n\n// Export specific functions from config-manager to avoid conflicts\nexport {\n initializeAndLockConfig,\n isConfigLocked,\n resetConfigForTesting,\n} from './config-manager.js';\n\n// Export utilities for backward compatibility\nexport * from './utils.js';\n\nimport { MoroOptions } from '../../types/core.js';\nimport { AppConfig } from '../../types/config.js';\nimport { loadConfigFromAllSources, loadConfigFromAllSourcesAsync } from './config-sources.js';\nimport {\n initializeAndLockConfig,\n getGlobalConfig as getConfig,\n isConfigLocked,\n resetConfigForTesting,\n} from './config-manager.js';\nimport { createFrameworkLogger } from '../logger/index.js';\n\nconst logger = createFrameworkLogger('ConfigSystem');\n\n/**\n * Initialize configuration system with createApp options\n * This is the main entry point called by createApp()\n *\n * @param options - createApp options that can override config file and defaults\n * @returns Immutable, validated configuration object\n */\nexport function initializeConfig(options?: MoroOptions): Readonly<AppConfig> {\n if (isConfigLocked()) {\n logger.debug('Configuration already locked, returning existing config');\n return getConfig();\n }\n\n logger.debug('Initializing configuration system');\n\n // Load configuration from all sources with proper precedence\n const config = loadConfigFromAllSources(options);\n\n // Lock the configuration to prevent further changes\n initializeAndLockConfig(config);\n\n logger.info(\n `Configuration system initialized and locked: ${process.env.NODE_ENV || 'development'}:${config.server.port} (sources: env + file + options + defaults)`\n );\n\n return config;\n}\n\n/**\n * Initialize configuration system asynchronously.\n * Uses dynamic import() for the config file — supports ESM config files in\n * projects with \"type\":\"module\". Called internally by the async createApp().\n *\n * @param options - createApp options that can override config file and defaults\n * @returns Immutable, validated configuration object\n */\nexport async function initializeConfigAsync(options?: MoroOptions): Promise<Readonly<AppConfig>> {\n if (isConfigLocked()) {\n logger.debug('Configuration already locked, returning existing config');\n return getConfig();\n }\n\n logger.debug('Initializing configuration system (async)');\n\n const config = await loadConfigFromAllSourcesAsync(options);\n\n initializeAndLockConfig(config);\n\n logger.info(\n `Configuration system initialized and locked: ${process.env.NODE_ENV || 'development'}:${config.server.port} (sources: env + file + options + defaults)`\n );\n\n return config;\n}\n\n/**\n * Load configuration without locking (for testing and utilities)\n * This maintains backward compatibility with existing code\n */\nexport function loadConfig(): AppConfig {\n return loadConfigFromAllSources();\n}\n\n/**\n * Load configuration with createApp options (for testing and utilities)\n * This maintains backward compatibility with existing code\n */\nexport function loadConfigWithOptions(options: MoroOptions): AppConfig {\n return loadConfigFromAllSources(options);\n}\n\n/**\n * Get the current global configuration\n * Alias for getGlobalConfig() for backward compatibility\n */\nexport function getGlobalConfig(): Readonly<AppConfig> {\n return getConfig();\n}\n\n/**\n * Check if configuration has been initialized and locked\n * Alias for isConfigLocked() for backward compatibility\n */\nexport function isConfigInitialized(): boolean {\n return isConfigLocked();\n}\n\n/**\n * Reset configuration state (for testing only)\n * @internal\n */\nexport function resetConfig(): void {\n resetConfigForTesting();\n}\n"]}
|
|
@@ -82,7 +82,10 @@ export const DEFAULT_CONFIG = {
|
|
|
82
82
|
session: {
|
|
83
83
|
enabled: false, // Opt-in
|
|
84
84
|
store: 'memory',
|
|
85
|
-
|
|
85
|
+
// No hardcoded default: a shared shipped secret is insecure. Empty means
|
|
86
|
+
// "configure one" (mirrors csrf.secret below); the session layer should
|
|
87
|
+
// warn + generate a random secret when none is set, like auth/csrf do.
|
|
88
|
+
secret: '',
|
|
86
89
|
name: 'connect.sid',
|
|
87
90
|
rolling: false,
|
|
88
91
|
resave: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/config/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/config/schema.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAI/C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,MAAM,EAAE;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,uEAAuE;QACvE,2EAA2E;QAC3E,wEAAwE;QACxE,sEAAsE;QACtE,uEAAuE;QACvE,6DAA6D;QAC7D,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,EAAE,sDAAsD;QAClE,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,OAAO,EAAE,wDAAwD;QAChF,yEAAyE;QACzE,yEAAyE;QACzE,0EAA0E;QAC1E,yDAAyD;QACzD,QAAQ,EAAE;YACR,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;SACX;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,EAAE;YACN,SAAS,EAAE;gBACT,QAAQ,EAAE,IAAI;gBACd,kBAAkB,EAAE,MAAM;aAC3B;SACF;QACD,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,cAAc,EAAE,KAAK,EAAE,qCAAqC;QAC5D,eAAe,EAAE;YACf,OAAO,EAAE,IAAI,EAAE,kCAAkC;SAClD;QACD,cAAc,EAAE;YACd,qEAAqE;YACrE,sEAAsE;YACtE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;SAC/C;QACD,aAAa,EAAE;YACb,OAAO,EAAE,IAAI,EAAE,4BAA4B;SAC5C;KACF;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,uBAAuB;QAClC,mBAAmB,EAAE,SAAS;QAC9B,mBAAmB,EAAE,KAAK;QAC1B,aAAa,EAAE,CAAC;KACjB;IACD,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE;QACP,SAAS,EAAE,OAAO,EAAE,0DAA0D;QAC9E,KAAK,EAAE;YACL,OAAO,EAAE,KAAK,EAAE,gCAAgC;YAChD,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,KAAK;SAChB;QACD,SAAS,EAAE;YACT,OAAO,EAAE,KAAK,EAAE,uCAAuC;YACvD,eAAe,EAAE,GAAG;YACpB,aAAa,EAAE,KAAK;YACpB,sBAAsB,EAAE,KAAK;YAC7B,kBAAkB,EAAE,KAAK;SAC1B;QACD,UAAU,EAAE;YACV,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;SACpB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK,EAAE,SAAS;YACzB,KAAK,EAAE,QAAQ;YACf,yEAAyE;YACzE,wEAAwE;YACxE,uEAAuE;YACvE,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,iBAAiB,EAAE,KAAK;YACxB,MAAM,EAAE;gBACN,MAAM,EAAE,QAAQ,EAAE,iBAAiB;gBACnC,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,GAAG;aACV;YACD,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,MAAM;SACd;QACD,aAAa,EAAE;YACb,OAAO,EAAE,IAAI,EAAE,kCAAkC;YACjD,KAAK,EACH,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;gBACnC,CAAC,CAAC,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,CAAC;gBACvD,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC;YACpC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;YAC5E,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,KAAK,EAAE,yBAAyB;YACjD,cAAc,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;YAChF,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,KAAK,EAAE,uBAAuB;YAC3C,QAAQ,EAAE,CAAC;SACZ;KACF;IACD,6EAA6E;IAC7E,gEAAgE;IAChE,OAAO,EAAE,IAAI;IACb,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,oFAAoF;QACpF,cAAc,EAAE,KAAK;QACrB,2EAA2E;QAC3E,uDAAuD;QACvD,iBAAiB,EAAE,KAAK;QACxB,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,CAAC;aACZ;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;aACZ;SACF;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK,EAAE,gCAAgC;YAChD,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;YAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;YACjD,cAAc,EAAE,EAAE;YAClB,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,KAAK,EAAE,WAAW;YAC1B,iBAAiB,EAAE,KAAK;SACzB;QACD,MAAM,EAAE;YACN,OAAO,EAAE,KAAK,EAAE,gCAAgC;YAChD,2CAA2C;YAC3C,qBAAqB,EAAE,IAAI;YAC3B,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,0DAA0D;YAC1D,aAAa,EAAE,MAAM;YACrB,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,iCAAiC;YACjD,uBAAuB,EAAE;gBACvB,MAAM,EAAE,QAAQ;gBAChB,iBAAiB,EAAE,IAAI;aACxB;YACD,gBAAgB,EAAE,IAAI;YACtB,6BAA6B,EAAE,IAAI;SACpC;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK,EAAE,SAAS;YACzB,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,cAAc;YAC1B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YACzC,QAAQ,EAAE,IAAI;SACf;QACD,GAAG,EAAE;YACH,OAAO,EAAE,KAAK,EAAE,SAAS;YACzB,UAAU,EAAE;gBACV,UAAU,EAAE,CAAC,QAAQ,CAAC;gBACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;gBACrC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBACtB,OAAO,EAAE,CAAC,QAAQ,CAAC;gBACnB,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,QAAQ,EAAE,CAAC,QAAQ,CAAC;aACrB;YACD,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,KAAK;SACb;QACD,SAAS,EAAE;YACT,MAAM,EAAE;gBACN,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,KAAK;aACd;SACF;KACF;IACD,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE;QACX,WAAW,EAAE;YACX,OAAO,EAAE,KAAK,EAAE,2BAA2B;YAC3C,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,IAAI;SAChB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,KAAK,EAAE,2BAA2B;YAC3C,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,KAAK;YACnB,gBAAgB,EAAE,KAAK;SACxB;QACD,UAAU,EAAE;YACV,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,CAAC;YACV,iBAAiB,EAAE,SAAS;SAC7B;KACF;IACD,SAAS,EAAE;QACT,OAAO,EAAE,KAAK,EAAE,kDAAkD;KACnE;CACF,CAAC;AAEF,0DAA0D;AAC1D,sDAAsD;AACtD,sFAAsF;AACtF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,CAAC,IAAS,EAAa,EAAE;QAC9B,iDAAiD;QACjD,yDAAyD;QACzD,OAAO,IAAiB,CAAC;IAC3B,CAAC;CACF,CAAC;AAgBF,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC","sourcesContent":["// Core Configuration Schema for Moro Framework\n\nimport type { AppConfig } from '../../types/config.js';\n\n// Minimal default configuration - performance-focused, most things opt-in\nexport const DEFAULT_CONFIG: AppConfig = {\n server: {\n port: 3001,\n host: 'localhost',\n // 0 = unlimited. Historically defaulted to 1000/30000 but those values\n // were VALIDATED-BUT-NEVER-APPLIED to any server, so the observed behavior\n // has always been \"unlimited connections, no request timeout\". Now that\n // both are actually wired through, keeping 0 preserves that behavior;\n // enforcing the old numbers would silently break existing deployments.\n // A user who sets either explicitly finally gets it applied.\n maxConnections: 0,\n timeout: 0, // deprecated alias for timeouts.request; 0 = disabled\n bodySizeLimit: '10mb',\n maxUploadSize: '100mb', // Separate limit for file uploads (multipart/form-data)\n // Per-phase timeouts. keepAlive/headers were previously hardcoded in the\n // Node server (5000/6000); they become documented, overridable defaults.\n // idle/request default to 0 = the per-server default (engine: 120s idle /\n // 300s request; Node: its built-in 5min requestTimeout).\n timeouts: {\n keepAlive: 5000,\n headers: 6000,\n idle: 0,\n request: 0,\n },\n // Fine-grained limits. Only multipart carries defaults here (matching the\n // parser's previous hardcodes); header/ws/high-water limits are left unset\n // so each runtime uses its own documented default unless overridden.\n limits: {\n multipart: {\n maxParts: 1000,\n maxPartHeaderBytes: '16kb',\n },\n },\n // engine: left unset so resolution can tell \"user chose it\" from \"default\".\n // Unset resolves to 'moro' (Moro's native engine, Node.js fallback if it\n // can't load); set 'node' to disable it or 'uws' to opt into uWebSockets.js.\n useUWebSockets: false, // Deprecated alias for engine: 'uws'\n requestTracking: {\n enabled: true, // Enable by default for debugging\n },\n requestLogging: {\n // Enabled in development; disabled in production where a per-request\n // stdout write is a real throughput cost. Set explicitly to override.\n enabled: process.env.NODE_ENV !== 'production',\n },\n errorBoundary: {\n enabled: true, // Always enabled for safety\n },\n },\n serviceDiscovery: {\n enabled: false,\n type: 'memory',\n consulUrl: 'http://localhost:8500',\n kubernetesNamespace: 'default',\n healthCheckInterval: 30000,\n retryAttempts: 3,\n },\n database: {},\n modules: {\n apiPrefix: '/api/', // Default prefix for module routes - set to '' to disable\n cache: {\n enabled: false, // Opt-in for better performance\n defaultTtl: 300,\n maxSize: 1000,\n strategy: 'lru',\n },\n rateLimit: {\n enabled: false, // Opt-in to avoid unnecessary overhead\n defaultRequests: 100,\n defaultWindow: 60000,\n skipSuccessfulRequests: false,\n skipFailedRequests: false,\n },\n validation: {\n enabled: false,\n stripUnknown: true,\n abortEarly: false,\n allowUnknown: false,\n },\n session: {\n enabled: false, // Opt-in\n store: 'memory',\n // No hardcoded default: a shared shipped secret is insecure. Empty means\n // \"configure one\" (mirrors csrf.secret below); the session layer should\n // warn + generate a random secret when none is set, like auth/csrf do.\n secret: '',\n name: 'connect.sid',\n rolling: false,\n resave: false,\n saveUninitialized: false,\n cookie: {\n maxAge: 86400000, // 24 hours in ms\n httpOnly: true,\n secure: false,\n sameSite: 'lax',\n path: '/',\n },\n proxy: false,\n unset: 'keep',\n },\n autoDiscovery: {\n enabled: true, // Enable by default for better DX\n paths:\n process.env.NODE_ENV === 'production'\n ? ['./dist/modules', './dist/src/modules', './modules']\n : ['./modules', './src/modules'],\n patterns: ['**/*.module.{ts,js}', '**/index.{ts,js}', '**/*.config.{ts,js}'],\n recursive: true,\n loadingStrategy: 'eager',\n watchForChanges: false, // Opt-in for development\n ignorePatterns: ['**/*.test.{ts,js}', '**/*.spec.{ts,js}', '**/node_modules/**'],\n loadOrder: 'dependency',\n failOnError: false, // Graceful degradation\n maxDepth: 5,\n },\n },\n // File-based auto routing: import route files under ./src/routes on startup.\n // Enabled by default; a no-op when the directory doesn't exist.\n routing: true,\n logging: {\n level: 'info',\n format: 'pretty',\n enableColors: true,\n enableTimestamp: true,\n enableContext: true,\n // Opt-in: appends JSON metadata tail in pretty logs. Off by default to avoid noise.\n enableMetadata: false,\n // Opt-in: includes (memory) perf info per log. Off by default to avoid the\n // process.memoryUsage() call and the \"(210MB)\" suffix.\n enablePerformance: false,\n outputs: {\n console: true,\n file: {\n enabled: false,\n path: './logs/moro.log',\n maxSize: '10MB',\n maxFiles: 5,\n },\n webhook: {\n enabled: false,\n headers: {},\n },\n },\n },\n security: {\n cors: {\n enabled: false, // Opt-in for better performance\n origin: '*',\n methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'Authorization'],\n exposedHeaders: [],\n credentials: false,\n maxAge: 86400, // 24 hours\n preflightContinue: false,\n },\n helmet: {\n enabled: false, // Opt-in for better performance\n // Simplified options (backward compatible)\n contentSecurityPolicy: true,\n hsts: true,\n noSniff: true,\n frameguard: true,\n // Detailed options (use these for advanced configuration)\n xFrameOptions: 'DENY',\n xContentTypeOptions: true,\n xXssProtection: true,\n referrerPolicy: 'strict-origin-when-cross-origin',\n strictTransportSecurity: {\n maxAge: 31536000,\n includeSubDomains: true,\n },\n xDownloadOptions: true,\n xPermittedCrossDomainPolicies: true,\n },\n csrf: {\n enabled: false, // Opt-in\n secret: '',\n tokenLength: 32,\n cookieName: '_csrf',\n headerName: 'x-csrf-token',\n ignoreMethods: ['GET', 'HEAD', 'OPTIONS'],\n sameSite: true,\n },\n csp: {\n enabled: false, // Opt-in\n directives: {\n defaultSrc: [\"'self'\"],\n scriptSrc: [\"'self'\"],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:', 'https:'],\n connectSrc: [\"'self'\"],\n fontSrc: [\"'self'\"],\n objectSrc: [\"'none'\"],\n mediaSrc: [\"'self'\"],\n frameSrc: [\"'none'\"],\n },\n reportOnly: false,\n nonce: false,\n },\n rateLimit: {\n global: {\n enabled: false,\n requests: 1000,\n window: 60000,\n },\n },\n },\n external: {},\n performance: {\n compression: {\n enabled: false, // Opt-in to avoid overhead\n level: 6,\n threshold: 1024,\n },\n circuitBreaker: {\n enabled: false, // Opt-in to avoid overhead\n failureThreshold: 5,\n resetTimeout: 60000,\n monitoringPeriod: 10000,\n },\n clustering: {\n enabled: false,\n workers: 1,\n memoryPerWorkerGB: undefined,\n },\n },\n websocket: {\n enabled: false, // Opt-in - user must explicitly enable WebSockets\n },\n};\n\n// Schema validation is now handled by config-validator.ts\n// This export is kept for backward compatibility only\n// Note: For actual validation, use validateConfig() from config-validator.ts directly\nexport const ConfigSchema = {\n parse: (data: any): AppConfig => {\n // Simple pass-through for backward compatibility\n // Real validation happens in the config loading pipeline\n return data as AppConfig;\n },\n};\n\n// Re-export types for backward compatibility\nexport type {\n AppConfig,\n DeepPartial,\n ServerConfig,\n ServiceDiscoveryConfig,\n DatabaseConfig,\n ModuleDefaultsConfig,\n LoggingConfig,\n SecurityConfig,\n ExternalServicesConfig,\n PerformanceConfig,\n} from '../../types/config.js';\n\n// For backward compatibility with modules that expect schema objects\nexport const ServerConfigSchema = { parse: (data: any) => data };\nexport const ServiceDiscoveryConfigSchema = { parse: (data: any) => data };\nexport const DatabaseConfigSchema = { parse: (data: any) => data };\nexport const ModuleDefaultsConfigSchema = { parse: (data: any) => data };\nexport const LoggingConfigSchema = { parse: (data: any) => data };\nexport const SecurityConfigSchema = { parse: (data: any) => data };\nexport const ExternalServicesConfigSchema = { parse: (data: any) => data };\nexport const PerformanceConfigSchema = { parse: (data: any) => data };\n"]}
|