@morojs/moro 1.7.30 → 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 +89 -46
- 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 +119 -48
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.js +189 -8
- 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 +35 -4
- 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 +41 -3
- package/dist/core/framework.js +342 -95
- 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 +17 -23
- package/dist/core/http/http-server.js +109 -249
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/http2-server.d.ts +6 -16
- package/dist/core/http/http2-server.js +40 -83
- package/dist/core/http/http2-server.js.map +1 -1
- package/dist/core/http/index.d.ts +1 -0
- package/dist/core/http/index.js +3 -0
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/moro-engine-server.d.ts +263 -0
- package/dist/core/http/moro-engine-server.js +1962 -0
- package/dist/core/http/moro-engine-server.js.map +1 -0
- package/dist/core/http/utils/compression.d.ts +47 -0
- package/dist/core/http/utils/compression.js +132 -0
- package/dist/core/http/utils/compression.js.map +1 -0
- package/dist/core/http/utils/lazy-event-emitter.d.ts +11 -0
- package/dist/core/http/utils/lazy-event-emitter.js +69 -0
- package/dist/core/http/utils/lazy-event-emitter.js.map +1 -0
- package/dist/core/http/utils/multipart-parser.d.ts +32 -0
- package/dist/core/http/utils/multipart-parser.js +215 -0
- package/dist/core/http/utils/multipart-parser.js.map +1 -0
- package/dist/core/http/utils/query-parser.d.ts +1 -0
- package/dist/core/http/utils/query-parser.js +44 -0
- package/dist/core/http/utils/query-parser.js.map +1 -0
- package/dist/core/http/utils/size.d.ts +33 -0
- package/dist/core/http/utils/size.js +37 -0
- package/dist/core/http/utils/size.js.map +1 -0
- package/dist/core/http/utils/ssl-config.d.ts +69 -0
- package/dist/core/http/utils/ssl-config.js +116 -0
- package/dist/core/http/utils/ssl-config.js.map +1 -0
- package/dist/core/http/utils/uws-worker-clustering.js +45 -32
- package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +25 -3
- package/dist/core/http/uws-http-server.js +465 -86
- 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.d.ts +3 -0
- package/dist/core/middleware/built-in/compression/core.js +28 -34
- 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.d.ts +23 -0
- package/dist/core/networking/adapters/engine-adapter.js +365 -0
- package/dist/core/networking/adapters/engine-adapter.js.map +1 -0
- package/dist/core/networking/adapters/index.d.ts +1 -0
- package/dist/core/networking/adapters/index.js +1 -0
- 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 +27 -16
- 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.d.ts +68 -0
- package/dist/core/utilities/package-utils.js +198 -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 +2 -2
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +20 -1
- package/dist/moro.js +230 -70
- 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 +100 -15
- 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 +32 -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"]}
|
|
@@ -4,11 +4,39 @@ export const DEFAULT_CONFIG = {
|
|
|
4
4
|
server: {
|
|
5
5
|
port: 3001,
|
|
6
6
|
host: 'localhost',
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
// 0 = unlimited. Historically defaulted to 1000/30000 but those values
|
|
8
|
+
// were VALIDATED-BUT-NEVER-APPLIED to any server, so the observed behavior
|
|
9
|
+
// has always been "unlimited connections, no request timeout". Now that
|
|
10
|
+
// both are actually wired through, keeping 0 preserves that behavior;
|
|
11
|
+
// enforcing the old numbers would silently break existing deployments.
|
|
12
|
+
// A user who sets either explicitly finally gets it applied.
|
|
13
|
+
maxConnections: 0,
|
|
14
|
+
timeout: 0, // deprecated alias for timeouts.request; 0 = disabled
|
|
9
15
|
bodySizeLimit: '10mb',
|
|
10
16
|
maxUploadSize: '100mb', // Separate limit for file uploads (multipart/form-data)
|
|
11
|
-
|
|
17
|
+
// Per-phase timeouts. keepAlive/headers were previously hardcoded in the
|
|
18
|
+
// Node server (5000/6000); they become documented, overridable defaults.
|
|
19
|
+
// idle/request default to 0 = the per-server default (engine: 120s idle /
|
|
20
|
+
// 300s request; Node: its built-in 5min requestTimeout).
|
|
21
|
+
timeouts: {
|
|
22
|
+
keepAlive: 5000,
|
|
23
|
+
headers: 6000,
|
|
24
|
+
idle: 0,
|
|
25
|
+
request: 0,
|
|
26
|
+
},
|
|
27
|
+
// Fine-grained limits. Only multipart carries defaults here (matching the
|
|
28
|
+
// parser's previous hardcodes); header/ws/high-water limits are left unset
|
|
29
|
+
// so each runtime uses its own documented default unless overridden.
|
|
30
|
+
limits: {
|
|
31
|
+
multipart: {
|
|
32
|
+
maxParts: 1000,
|
|
33
|
+
maxPartHeaderBytes: '16kb',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
// engine: left unset so resolution can tell "user chose it" from "default".
|
|
37
|
+
// Unset resolves to 'moro' (Moro's native engine, Node.js fallback if it
|
|
38
|
+
// can't load); set 'node' to disable it or 'uws' to opt into uWebSockets.js.
|
|
39
|
+
useUWebSockets: false, // Deprecated alias for engine: 'uws'
|
|
12
40
|
requestTracking: {
|
|
13
41
|
enabled: true, // Enable by default for debugging
|
|
14
42
|
},
|
|
@@ -54,7 +82,10 @@ export const DEFAULT_CONFIG = {
|
|
|
54
82
|
session: {
|
|
55
83
|
enabled: false, // Opt-in
|
|
56
84
|
store: 'memory',
|
|
57
|
-
|
|
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: '',
|
|
58
89
|
name: 'connect.sid',
|
|
59
90
|
rolling: false,
|
|
60
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":"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","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"]}
|