@morojs/moro 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -38
- package/dist/core/auth/morojs-adapter.js +95 -45
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/config-sources.js +8 -49
- package/dist/core/config/config-sources.js.map +1 -1
- package/dist/core/config/config-validator.js +2 -3
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +4 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/database/adapters/drizzle.js +2 -2
- package/dist/core/database/adapters/drizzle.js.map +1 -1
- package/dist/core/database/adapters/index.js.map +1 -1
- package/dist/core/database/adapters/mongodb.d.ts +1 -0
- package/dist/core/database/adapters/mongodb.js +16 -0
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +1 -0
- package/dist/core/database/adapters/mysql.js +13 -2
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.js +2 -2
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/database/adapters/sql-safety.js +5 -4
- package/dist/core/database/adapters/sql-safety.js.map +1 -1
- package/dist/core/database/adapters/sqlite.js.map +1 -1
- package/dist/core/database/index.js.map +1 -1
- package/dist/core/docs/index.js +11 -7
- package/dist/core/docs/index.js.map +1 -1
- package/dist/core/docs/openapi-generator.js +8 -6
- package/dist/core/docs/openapi-generator.js.map +1 -1
- package/dist/core/docs/schema-to-openapi.js +3 -3
- package/dist/core/docs/schema-to-openapi.js.map +1 -1
- package/dist/core/docs/simple-docs.js.map +1 -1
- package/dist/core/docs/swagger-ui.js.map +1 -1
- package/dist/core/docs/zod-to-openapi.js +2 -2
- package/dist/core/docs/zod-to-openapi.js.map +1 -1
- package/dist/core/events/event-bus.js +14 -5
- package/dist/core/events/event-bus.js.map +1 -1
- package/dist/core/events/index.js.map +1 -1
- package/dist/core/framework.d.ts +2 -2
- package/dist/core/framework.js +21 -14
- package/dist/core/framework.js.map +1 -1
- package/dist/core/graphql/adapter.js.map +1 -1
- package/dist/core/graphql/adapters/graphql-js-adapter.js.map +1 -1
- package/dist/core/graphql/core.js.map +1 -1
- package/dist/core/graphql/index.js.map +1 -1
- package/dist/core/graphql/loader.js.map +1 -1
- package/dist/core/graphql/types.js.map +1 -1
- package/dist/core/grpc/adapters/grpc-js-adapter.js +4 -0
- package/dist/core/grpc/adapters/grpc-js-adapter.js.map +1 -1
- package/dist/core/grpc/adapters/index.js.map +1 -1
- package/dist/core/grpc/grpc-adapter.js.map +1 -1
- package/dist/core/grpc/grpc-manager.js.map +1 -1
- package/dist/core/grpc/index.js.map +1 -1
- package/dist/core/grpc/middleware/auth.js +1 -1
- package/dist/core/grpc/middleware/auth.js.map +1 -1
- package/dist/core/grpc/middleware/logging.js.map +1 -1
- package/dist/core/grpc/middleware/validation.js +1 -1
- package/dist/core/grpc/middleware/validation.js.map +1 -1
- package/dist/core/grpc/types.d.ts +7 -7
- package/dist/core/grpc/types.js.map +1 -1
- package/dist/core/http/http-server.d.ts +0 -13
- package/dist/core/http/http-server.js +34 -141
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/http2-server.js +27 -5
- package/dist/core/http/http2-server.js.map +1 -1
- package/dist/core/http/index.js.map +1 -1
- package/dist/core/http/moro-engine-server.d.ts +2 -2
- package/dist/core/http/moro-engine-server.js +44 -21
- package/dist/core/http/moro-engine-server.js.map +1 -1
- package/dist/core/http/utils/compression.js +3 -3
- package/dist/core/http/utils/compression.js.map +1 -1
- package/dist/core/http/utils/lazy-event-emitter.js.map +1 -1
- package/dist/core/http/utils/multipart-parser.js +7 -3
- package/dist/core/http/utils/multipart-parser.js.map +1 -1
- package/dist/core/http/utils/query-parser.js.map +1 -1
- package/dist/core/http/utils/size.js +2 -2
- package/dist/core/http/utils/size.js.map +1 -1
- package/dist/core/http/utils/ssl-config.d.ts +10 -10
- package/dist/core/http/utils/ssl-config.js.map +1 -1
- package/dist/core/http/utils/uws-worker-clustering.js +37 -30
- package/dist/core/http/utils/uws-worker-clustering.js.map +1 -1
- package/dist/core/http/uws-http-server.d.ts +1 -0
- package/dist/core/http/uws-http-server.js +80 -22
- package/dist/core/http/uws-http-server.js.map +1 -1
- package/dist/core/jobs/cron-parser.js +7 -5
- package/dist/core/jobs/cron-parser.js.map +1 -1
- package/dist/core/jobs/index.js.map +1 -1
- package/dist/core/jobs/job-executor.d.ts +1 -1
- package/dist/core/jobs/job-executor.js.map +1 -1
- package/dist/core/jobs/job-scheduler.d.ts +3 -3
- package/dist/core/jobs/job-scheduler.js.map +1 -1
- package/dist/core/jobs/job-state-manager.d.ts +3 -3
- package/dist/core/jobs/job-state-manager.js +25 -4
- package/dist/core/jobs/job-state-manager.js.map +1 -1
- package/dist/core/jobs/leader-election.d.ts +15 -0
- package/dist/core/jobs/leader-election.js +158 -69
- package/dist/core/jobs/leader-election.js.map +1 -1
- package/dist/core/jobs/types.d.ts +4 -4
- package/dist/core/jobs/types.js.map +1 -1
- package/dist/core/jobs/utils.d.ts +1 -1
- package/dist/core/jobs/utils.js +7 -3
- package/dist/core/jobs/utils.js.map +1 -1
- package/dist/core/logger/filters.js +3 -2
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.js +56 -25
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/mail/adapters/console-adapter.js.map +1 -1
- package/dist/core/mail/adapters/index.js.map +1 -1
- package/dist/core/mail/adapters/nodemailer-adapter.js.map +1 -1
- package/dist/core/mail/adapters/resend-adapter.js.map +1 -1
- package/dist/core/mail/adapters/sendgrid-adapter.js.map +1 -1
- package/dist/core/mail/adapters/ses-adapter.js.map +1 -1
- package/dist/core/mail/index.js.map +1 -1
- package/dist/core/mail/mail-adapter.js.map +1 -1
- package/dist/core/mail/mail-manager.d.ts +10 -0
- package/dist/core/mail/mail-manager.js +21 -5
- package/dist/core/mail/mail-manager.js.map +1 -1
- package/dist/core/mail/template-engine.js.map +1 -1
- package/dist/core/mail/types.js.map +1 -1
- package/dist/core/middleware/built-in/auth/core.js +3 -3
- package/dist/core/middleware/built-in/auth/core.js.map +1 -1
- package/dist/core/middleware/built-in/auth/helpers.js +4 -4
- package/dist/core/middleware/built-in/auth/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/hook.js.map +1 -1
- package/dist/core/middleware/built-in/auth/index.js.map +1 -1
- package/dist/core/middleware/built-in/auth/jwt-helpers.d.ts +4 -4
- package/dist/core/middleware/built-in/auth/jwt-helpers.js.map +1 -1
- package/dist/core/middleware/built-in/auth/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/auth/providers.js.map +1 -1
- package/dist/core/middleware/built-in/body-parsers/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/core.js +2 -2
- package/dist/core/middleware/built-in/body-size/core.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/hook.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/index.js.map +1 -1
- package/dist/core/middleware/built-in/body-size/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js +3 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/file.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/memory.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/cache/redis.js.map +1 -1
- package/dist/core/middleware/built-in/cache/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/core.js.map +1 -1
- package/dist/core/middleware/built-in/cache/hook.js +3 -3
- package/dist/core/middleware/built-in/cache/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cache/index.js.map +1 -1
- package/dist/core/middleware/built-in/cache/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/azure.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudflare.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/cloudfront.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/adapters/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/core.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/index.js.map +1 -1
- package/dist/core/middleware/built-in/cdn/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/compression/core.js.map +1 -1
- package/dist/core/middleware/built-in/compression/hook.js.map +1 -1
- package/dist/core/middleware/built-in/compression/index.js.map +1 -1
- package/dist/core/middleware/built-in/compression/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/core.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/index.js.map +1 -1
- package/dist/core/middleware/built-in/cookie/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/cors/core.js.map +1 -1
- package/dist/core/middleware/built-in/cors/hook.js.map +1 -1
- package/dist/core/middleware/built-in/cors/index.js.map +1 -1
- package/dist/core/middleware/built-in/cors/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csp/core.js.map +1 -1
- package/dist/core/middleware/built-in/csp/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csp/index.js.map +1 -1
- package/dist/core/middleware/built-in/csp/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/core.js +1 -1
- package/dist/core/middleware/built-in/csrf/core.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/hook.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/index.js.map +1 -1
- package/dist/core/middleware/built-in/csrf/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/index.js.map +1 -1
- package/dist/core/middleware/built-in/error-tracker/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/core.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/helpers.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/hook.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/index.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/graphql/subscriptions.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/core.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/hook.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/index.js.map +1 -1
- package/dist/core/middleware/built-in/helmet/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/http2/core.js.map +1 -1
- package/dist/core/middleware/built-in/http2/hook.js.map +1 -1
- package/dist/core/middleware/built-in/http2/index.js.map +1 -1
- package/dist/core/middleware/built-in/http2/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/index.js.map +1 -1
- package/dist/core/middleware/built-in/performance-monitor/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/range/core.js +4 -1
- package/dist/core/middleware/built-in/range/core.js.map +1 -1
- package/dist/core/middleware/built-in/range/hook.js.map +1 -1
- package/dist/core/middleware/built-in/range/index.js.map +1 -1
- package/dist/core/middleware/built-in/range/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/core.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/hook.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/index.js.map +1 -1
- package/dist/core/middleware/built-in/rate-limit/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/index.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/session/core.js +4 -4
- package/dist/core/middleware/built-in/session/core.js.map +1 -1
- package/dist/core/middleware/built-in/session/hook.js.map +1 -1
- package/dist/core/middleware/built-in/session/index.js.map +1 -1
- package/dist/core/middleware/built-in/session/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/sse/core.js.map +1 -1
- package/dist/core/middleware/built-in/sse/hook.js.map +1 -1
- package/dist/core/middleware/built-in/sse/index.js.map +1 -1
- package/dist/core/middleware/built-in/sse/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/static/core.js.map +1 -1
- package/dist/core/middleware/built-in/static/hook.js.map +1 -1
- package/dist/core/middleware/built-in/static/index.js.map +1 -1
- package/dist/core/middleware/built-in/static/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/template/core.js +1 -1
- package/dist/core/middleware/built-in/template/core.js.map +1 -1
- package/dist/core/middleware/built-in/template/hook.js.map +1 -1
- package/dist/core/middleware/built-in/template/index.js.map +1 -1
- package/dist/core/middleware/built-in/template/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/upload/core.js.map +1 -1
- package/dist/core/middleware/built-in/upload/hook.js.map +1 -1
- package/dist/core/middleware/built-in/upload/index.js.map +1 -1
- package/dist/core/middleware/built-in/upload/middleware.js.map +1 -1
- package/dist/core/middleware/built-in/validation/core.js.map +1 -1
- package/dist/core/middleware/built-in/validation/hook.js.map +1 -1
- package/dist/core/middleware/built-in/validation/index.js.map +1 -1
- package/dist/core/middleware/built-in/validation/middleware.js.map +1 -1
- package/dist/core/middleware/index.js +2 -2
- package/dist/core/middleware/index.js.map +1 -1
- package/dist/core/modules/auto-discovery.js +11 -7
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/index.js.map +1 -1
- package/dist/core/modules/modules.js +18 -13
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/engine-adapter.js +1 -1
- package/dist/core/networking/adapters/engine-adapter.js.map +1 -1
- package/dist/core/networking/adapters/index.js.map +1 -1
- package/dist/core/networking/adapters/socketio-adapter.d.ts +1 -0
- package/dist/core/networking/adapters/socketio-adapter.js +12 -1
- package/dist/core/networking/adapters/socketio-adapter.js.map +1 -1
- package/dist/core/networking/adapters/uws-adapter.js +1 -1
- package/dist/core/networking/adapters/uws-adapter.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +15 -0
- package/dist/core/networking/adapters/ws-adapter.js +120 -6
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/index.js.map +1 -1
- package/dist/core/networking/service-discovery.js +7 -5
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/networking/websocket-adapter.d.ts +22 -3
- package/dist/core/networking/websocket-adapter.js.map +1 -1
- package/dist/core/networking/websocket-manager.js +70 -67
- package/dist/core/networking/websocket-manager.js.map +1 -1
- package/dist/core/pooling/object-pool-manager.js +6 -0
- package/dist/core/pooling/object-pool-manager.js.map +1 -1
- package/dist/core/queue/adapters/bull-adapter.js.map +1 -1
- package/dist/core/queue/adapters/index.js.map +1 -1
- package/dist/core/queue/adapters/kafka-adapter.js +2 -2
- package/dist/core/queue/adapters/kafka-adapter.js.map +1 -1
- package/dist/core/queue/adapters/memory-adapter.js +6 -6
- package/dist/core/queue/adapters/memory-adapter.js.map +1 -1
- package/dist/core/queue/adapters/rabbitmq-adapter.d.ts +50 -0
- package/dist/core/queue/adapters/rabbitmq-adapter.js +176 -20
- package/dist/core/queue/adapters/rabbitmq-adapter.js.map +1 -1
- package/dist/core/queue/adapters/sqs-adapter.d.ts +12 -2
- package/dist/core/queue/adapters/sqs-adapter.js +75 -24
- package/dist/core/queue/adapters/sqs-adapter.js.map +1 -1
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/queue/middleware/index.js.map +1 -1
- package/dist/core/queue/middleware/monitoring.d.ts +1 -1
- package/dist/core/queue/middleware/monitoring.js.map +1 -1
- package/dist/core/queue/middleware/priority.js +2 -1
- package/dist/core/queue/middleware/priority.js.map +1 -1
- package/dist/core/queue/middleware/rate-limit.js.map +1 -1
- package/dist/core/queue/queue-adapter.js.map +1 -1
- package/dist/core/queue/queue-manager.js.map +1 -1
- package/dist/core/queue/types.d.ts +8 -8
- package/dist/core/queue/types.js.map +1 -1
- package/dist/core/routing/app-integration.js.map +1 -1
- package/dist/core/routing/create-router.js.map +1 -1
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/routing/path-matcher.js.map +1 -1
- package/dist/core/routing/radix-tree.js.map +1 -1
- package/dist/core/routing/router.js.map +1 -1
- package/dist/core/routing/unified-router.js +12 -4
- package/dist/core/routing/unified-router.js.map +1 -1
- package/dist/core/runtime/aws-lambda-adapter.js.map +1 -1
- package/dist/core/runtime/base-adapter.js +2 -2
- package/dist/core/runtime/base-adapter.js.map +1 -1
- package/dist/core/runtime/cloudflare-workers-adapter.js +2 -0
- package/dist/core/runtime/cloudflare-workers-adapter.js.map +1 -1
- package/dist/core/runtime/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.js +19 -17
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/core/runtime/vercel-edge-adapter.js +2 -0
- package/dist/core/runtime/vercel-edge-adapter.js.map +1 -1
- package/dist/core/utilities/circuit-breaker.d.ts +1 -0
- package/dist/core/utilities/circuit-breaker.js +25 -2
- package/dist/core/utilities/circuit-breaker.js.map +1 -1
- package/dist/core/utilities/container.js +9 -9
- package/dist/core/utilities/container.js.map +1 -1
- package/dist/core/utilities/hooks.js +28 -6
- package/dist/core/utilities/hooks.js.map +1 -1
- package/dist/core/utilities/index.js.map +1 -1
- package/dist/core/utilities/module-path.js.map +1 -1
- package/dist/core/utilities/package-utils.js +1 -1
- package/dist/core/utilities/package-utils.js.map +1 -1
- package/dist/core/utilities/response-helpers.js +1 -1
- package/dist/core/utilities/response-helpers.js.map +1 -1
- package/dist/core/validation/adapters.js.map +1 -1
- package/dist/core/validation/error-handler.js.map +1 -1
- package/dist/core/validation/index.js.map +1 -1
- package/dist/core/validation/schema-interface.js.map +1 -1
- package/dist/core/workers/facade.js.map +1 -1
- package/dist/core/workers/index.js.map +1 -1
- package/dist/core/workers/worker-entry.d.ts +1 -0
- package/dist/core/workers/worker-entry.js +12 -0
- package/dist/core/workers/worker-entry.js.map +1 -0
- package/dist/core/workers/worker-manager.d.ts +23 -2
- package/dist/core/workers/worker-manager.js +117 -17
- package/dist/core/workers/worker-manager.js.map +1 -1
- package/dist/core/workers/worker.js +8 -6
- package/dist/core/workers/worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/moro.d.ts +18 -1
- package/dist/moro.js +168 -50
- package/dist/moro.js.map +1 -1
- package/dist/types/auth.d.ts +4 -4
- package/dist/types/auth.js.map +1 -1
- package/dist/types/cache.js.map +1 -1
- package/dist/types/cdn.js.map +1 -1
- package/dist/types/config.d.ts +10 -10
- package/dist/types/config.js.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/database.js.map +1 -1
- package/dist/types/discovery.js.map +1 -1
- package/dist/types/events.js.map +1 -1
- package/dist/types/hooks.js.map +1 -1
- package/dist/types/http.js.map +1 -1
- package/dist/types/logger.js.map +1 -1
- package/dist/types/module.js.map +1 -1
- package/dist/types/runtime.js.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/package.json +29 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-adapter.js","sourceRoot":"","sources":["../../../../src/core/networking/adapters/ws-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ws-adapter.js","sourceRoot":"","sources":["../../../../src/core/networking/adapters/ws-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Native WebSocket Adapter for Moro Framework\n// Implements the WebSocket adapter interface using the 'ws' library\n\nimport { resolveUserPackage } from '../../utilities/package-utils.js';\nimport {\n WebSocketAdapter,\n WebSocketAdapterOptions,\n WebSocketNamespace,\n WebSocketConnection,\n WebSocketEmitter,\n WebSocketMiddleware,\n} from '../websocket-adapter.js';\nimport { createFrameworkLogger } from '../../logger/index.js';\n\n/**\n * Native WebSocket adapter using the 'ws' library\n * Provides a lightweight, standards-compliant WebSocket implementation\n */\nexport class WSAdapter implements WebSocketAdapter {\n private wss: any; // WebSocket server instance\n private namespaces = new Map<string, WSNamespaceWrapper>();\n private connections = new Map<string, WSConnectionWrapper>();\n private wsLogger = createFrameworkLogger('WEBSOCKET_ADAPTER');\n private customIdGenerator?: () => string;\n private connectionCounter = 0;\n private heartbeatTimer?: ReturnType<typeof setInterval> | undefined;\n\n async initialize(httpServer: any, options: WebSocketAdapterOptions = {}): Promise<void> {\n try {\n // Dynamic import from user's context to find their installed ws library\n const wsPath = resolveUserPackage('ws');\n const { WebSocketServer } = await import(wsPath);\n\n this.wss = new WebSocketServer({\n server: httpServer,\n path: options.path || '/ws',\n // Matches the ws library's own default (100 MiB) so behavior is\n // unchanged; apps concerned about per-message buffering can lower it\n // via maxPayloadLength.\n maxPayload: options.maxPayloadLength || 100 * 1024 * 1024,\n // Origin allowlist + optional custom upgrade-auth hook. Without this a\n // cookie-authenticated app is open to cross-site WebSocket hijacking:\n // the browser sends auth cookies on a ws:// upgrade from any page.\n verifyClient: this.buildVerifyClient(options),\n // Note: ws doesn't have built-in compression like socket.io\n // but browsers handle compression at the transport level\n });\n\n // Setup connection handling\n this.wss.on('connection', (ws: any, request: any) => {\n this.handleConnection(ws, request);\n });\n\n // Protocol-level ping/pong dead-peer detection: terminate half-open\n // sockets that stop answering so they neither leak nor block close().\n const heartbeatMs =\n options.idleTimeout && options.idleTimeout > 0 ? options.idleTimeout : 30000;\n this.heartbeatTimer = setInterval(() => {\n for (const ws of this.wss.clients) {\n if (ws.isAlive === false) {\n ws.terminate();\n continue;\n }\n ws.isAlive = false;\n try {\n ws.ping();\n } catch {\n // socket already going away\n }\n }\n }, heartbeatMs);\n this.heartbeatTimer.unref?.();\n\n // Setup default namespace\n this.createNamespace('/');\n } catch {\n throw new Error(\n 'ws library not found. Install it with: npm install ws @types/ws\\n' +\n 'Or use a different WebSocket adapter.'\n );\n }\n }\n\n /**\n * Build a `ws` verifyClient callback enforcing the configured CORS origin\n * allowlist and any user-supplied upgrade-auth hook (`options.verifyClient`).\n *\n * `cors.origin` accepts:\n * - undefined / true / '*' -> allow any origin (permissive, back-compat)\n * - false -> same-origin only\n * - string -> that exact origin\n * - string[] -> any origin in the list\n * - (requestOrigin) => ... -> dynamic: return true (allow), false (deny),\n * '*' (allow), or the allowed origin string\n * (allowed when it equals the request origin).\n */\n private buildVerifyClient(\n options: WebSocketAdapterOptions\n ): ((info: { origin?: string; req: any; secure: boolean }) => boolean) | undefined {\n const corsOrigin = options.cors?.origin;\n const userVerify =\n typeof (options as any).verifyClient === 'function'\n ? ((options as any).verifyClient as (info: any) => boolean)\n : undefined;\n\n // Allow-all cases need no enforcement at all.\n const allowAll = corsOrigin === undefined || corsOrigin === true || corsOrigin === '*';\n if (allowAll && !userVerify) {\n return undefined;\n }\n\n return (info: { origin?: string; req: any; secure: boolean }): boolean => {\n // allowAll (undefined/true/'*') is handled above; here corsOrigin is a\n // specific rule to enforce.\n if (!allowAll) {\n const origin = info.origin;\n let ok = false;\n if (corsOrigin === false) {\n // Same-origin only: no Origin header (non-browser client) or the\n // Origin host equals the request Host.\n if (!origin) {\n ok = true;\n } else {\n try {\n const host = info.req?.headers?.host;\n ok = !!host && new URL(origin).host === host;\n } catch {\n ok = false;\n }\n }\n } else if (typeof corsOrigin === 'function') {\n // Dynamic: allow based on the function's decision for this origin.\n const decision = (corsOrigin as (o: string | undefined) => boolean | string)(origin);\n ok = decision === true || decision === '*' || (!!origin && decision === origin);\n } else if (corsOrigin instanceof RegExp) {\n ok = !!origin && corsOrigin.test(origin);\n } else if (typeof corsOrigin === 'string') {\n ok = origin === corsOrigin;\n } else if (Array.isArray(corsOrigin)) {\n ok = !!origin && corsOrigin.includes(origin);\n }\n if (!ok) {\n this.wsLogger.warn(\n `Rejected WebSocket upgrade from disallowed origin: ${origin ?? '(none)'}`\n );\n return false;\n }\n }\n return userVerify ? userVerify(info) : true;\n };\n }\n\n private handleConnection(ws: any, request: any): void {\n const id = this.generateId();\n const connection = new WSConnectionWrapper(id, ws, request);\n\n // Liveness tracking for the heartbeat sweep (see initialize()).\n ws.isAlive = true;\n ws.on('pong', () => {\n ws.isAlive = true;\n });\n\n this.connections.set(id, connection);\n\n // Parse namespace from URL path or default to '/'\n const url = new URL(request.url || '/', `http://${request.headers.host}`);\n const namespacePath = url.pathname === '/ws' ? '/' : url.pathname.replace('/ws', '') || '/';\n\n const namespace = this.namespaces.get(namespacePath);\n if (namespace) {\n namespace.handleConnection(connection);\n }\n\n // Clean up on disconnect\n ws.on('close', () => {\n this.connections.delete(id);\n });\n }\n\n createNamespace(namespace: string): WebSocketNamespace {\n if (!this.namespaces.has(namespace)) {\n const ns = new WSNamespaceWrapper(namespace, this);\n this.namespaces.set(namespace, ns);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.namespaces.get(namespace)!;\n }\n\n getDefaultNamespace(): WebSocketNamespace {\n return this.createNamespace('/');\n }\n\n async close(): Promise<void> {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = undefined;\n }\n if (this.wss) {\n // Terminate live clients first: wss.close() only stops accepting new\n // connections and does not resolve while sockets remain open, which would\n // otherwise stall the app's graceful shutdown until its timeout.\n for (const ws of this.wss.clients) {\n try {\n ws.terminate();\n } catch {\n // socket already going away\n }\n }\n return new Promise(resolve => {\n this.wss.close(() => {\n this.connections.clear();\n this.namespaces.clear();\n resolve();\n });\n });\n }\n }\n\n setCompression(enabled: boolean, _options: any = {}): void {\n // ws library handles compression at the browser level\n // This is a no-op but kept for interface compatibility\n if (enabled) {\n this.wsLogger.warn('Compression is handled automatically by the ws library and browsers');\n }\n }\n\n setCustomIdGenerator(generator: () => string): void {\n this.customIdGenerator = generator;\n }\n\n getAdapterName(): string {\n return 'ws';\n }\n\n getConnectionCount(): number {\n return this.connections.size;\n }\n\n generateId(): string {\n if (this.customIdGenerator) {\n return this.customIdGenerator();\n }\n return `ws_${++this.connectionCounter}_${Date.now()}`;\n }\n\n addConnection(id: string, connection: WSConnectionWrapper): void {\n this.connections.set(id, connection);\n }\n\n removeConnection(id: string): void {\n this.connections.delete(id);\n }\n\n getAllConnections(): Map<string, WSConnectionWrapper> {\n return this.connections;\n }\n}\n\n/**\n * WebSocket namespace wrapper\n */\nclass WSNamespaceWrapper implements WebSocketNamespace {\n private connectionHandlers: ((socket: WebSocketConnection) => void)[] = [];\n private middlewares: WebSocketMiddleware[] = [];\n private connections = new Map<string, WSConnectionWrapper>();\n\n constructor(\n private namespacePath: string,\n private adapter: WSAdapter\n ) {}\n\n handleConnection(connection: WSConnectionWrapper): void {\n this.connections.set(connection.id, connection);\n\n // Run middlewares\n this.runMiddlewares(connection, () => {\n // Notify connection handlers - optimized with for loop\n const handlers = this.connectionHandlers;\n const len = handlers.length;\n for (let i = 0; i < len; i++) {\n handlers[i]?.(connection);\n }\n });\n\n // Clean up on disconnect\n connection.on('close', () => {\n this.connections.delete(connection.id);\n });\n }\n\n private runMiddlewares(connection: WSConnectionWrapper, callback: () => void): void {\n let index = 0;\n\n const next = (err?: Error) => {\n if (err || index >= this.middlewares.length) {\n if (!err) callback();\n return;\n }\n\n const middleware = this.middlewares[index++];\n middleware?.(connection, next);\n };\n\n next();\n }\n\n on(event: 'connection', handler: (socket: WebSocketConnection) => void): void {\n this.connectionHandlers.push(handler);\n }\n\n emit(event: string, data: any): void {\n const message = JSON.stringify({ event, data });\n for (const connection of this.connections.values()) {\n if (connection.connected) {\n connection.ws.send(message);\n }\n }\n }\n\n to(room: string | string[]): WebSocketEmitter {\n return new WSEmitterWrapper(this.connections, room);\n }\n\n except(room: string | string[]): WebSocketEmitter {\n return new WSEmitterWrapper(this.connections, undefined, room);\n }\n\n getSockets(): WebSocketConnection[] {\n return Array.from(this.connections.values());\n }\n\n getConnectionCount(): number {\n return this.connections.size;\n }\n\n use(middleware: WebSocketMiddleware): void {\n this.middlewares.push(middleware);\n }\n}\n\n/**\n * WebSocket connection wrapper\n */\nclass WSConnectionWrapper implements WebSocketConnection {\n public data: Record<string, any> = {};\n private eventHandlers = new Map<string, CallableFunction[]>();\n private anyHandlers: CallableFunction[] = [];\n private rooms = new Set<string>();\n private _connected = true;\n\n constructor(\n public readonly id: string,\n public readonly ws: any,\n private request: any\n ) {\n // Setup message handling\n this.ws.on('message', (data: Buffer) => {\n this.handleMessage(data);\n });\n\n this.ws.on('close', () => {\n this._connected = false;\n this.emit('close');\n });\n\n this.ws.on('error', (error: Error) => {\n this.emit('error', error);\n });\n }\n\n get ip(): string | undefined {\n return (\n this.request.socket?.remoteAddress || this.request.headers['x-forwarded-for']?.split(',')[0]\n );\n }\n\n get headers(): Record<string, string> | undefined {\n return this.request.headers;\n }\n\n get connected(): boolean {\n return this._connected && this.ws.readyState === 1; // WebSocket.OPEN\n }\n\n get broadcast(): WebSocketEmitter {\n // Get all connections except this one\n const allConnections = new Map();\n // This would need access to adapter's connections\n return new WSEmitterWrapper(allConnections, undefined, undefined, this.id);\n }\n\n on(event: string, handler: (data: any, callback?: (response?: any) => void) => void): void {\n if (event === 'close' || event === 'error') {\n // Special internal events\n if (!this.eventHandlers.has(event)) {\n this.eventHandlers.set(event, []);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.eventHandlers.get(event)!.push(handler);\n return;\n }\n\n if (!this.eventHandlers.has(event)) {\n this.eventHandlers.set(event, []);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.eventHandlers.get(event)!.push(handler);\n }\n\n onAny(handler: (event: string, ...args: any[]) => void): void {\n this.anyHandlers.push(handler);\n }\n\n emit(event: string, data?: any): void {\n if (event === 'close' || event === 'error') {\n // Internal events\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n const len = handlers.length;\n for (let i = 0; i < len; i++) {\n handlers[i]?.(data);\n }\n }\n return;\n }\n\n if (this.connected) {\n const message = JSON.stringify({ event, data });\n this.ws.send(message);\n }\n }\n\n compressedEmit(event: string, data: any): void {\n // ws library handles compression automatically\n this.emit(event, data);\n }\n\n join(room: string | string[]): void {\n if (Array.isArray(room)) {\n const len = room.length;\n for (let i = 0; i < len; i++) {\n this.rooms.add(room[i] as string);\n }\n } else {\n this.rooms.add(room);\n }\n }\n\n leave(room: string | string[]): void {\n if (Array.isArray(room)) {\n const len = room.length;\n for (let i = 0; i < len; i++) {\n this.rooms.delete(room[i] as string);\n }\n } else {\n this.rooms.delete(room);\n }\n }\n\n to(room: string | string[]): WebSocketEmitter {\n const connections = new Map([[this.id, this]]);\n return new WSEmitterWrapper(connections, room);\n }\n\n getRooms(): Set<string> {\n return new Set(this.rooms);\n }\n\n disconnect(close?: boolean): void {\n if (close !== false && this.ws.readyState === 1) {\n this.ws.close();\n }\n this._connected = false;\n }\n\n private handleMessage(data: Buffer): void {\n try {\n const text = data.toString();\n const parsed = JSON.parse(text);\n const { event, data: messageData, callback: callbackId } = parsed;\n\n // Create callback function if callback ID is provided\n const callback = callbackId\n ? (response: any) => {\n this.emit('callback', { id: callbackId, data: response });\n }\n : undefined;\n\n // Call any handlers - optimized with for loop\n const anyHandlers = this.anyHandlers;\n const anyLen = anyHandlers.length;\n for (let i = 0; i < anyLen; i++) {\n anyHandlers[i]?.(event, messageData);\n }\n\n // Call specific event handlers - optimized with for loop\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n const len = handlers.length;\n for (let i = 0; i < len; i++) {\n handlers[i]?.(messageData, callback);\n }\n }\n } catch {\n // Invalid message format - ignore\n }\n }\n}\n\n/**\n * WebSocket emitter wrapper\n */\nclass WSEmitterWrapper implements WebSocketEmitter {\n constructor(\n private connections: Map<string, WSConnectionWrapper>,\n private targetRooms?: string | string[],\n private excludeRooms?: string | string[],\n private excludeId?: string\n ) {}\n\n emit(event: string, data: any): void {\n const message = JSON.stringify({ event, data });\n\n for (const connection of this.connections.values()) {\n if (this.excludeId && connection.id === this.excludeId) {\n continue;\n }\n\n if (this.shouldIncludeConnection(connection) && connection.connected) {\n connection.ws.send(message);\n }\n }\n }\n\n to(room: string | string[]): WebSocketEmitter {\n return new WSEmitterWrapper(this.connections, room, this.excludeRooms, this.excludeId);\n }\n\n except(room: string | string[]): WebSocketEmitter {\n return new WSEmitterWrapper(this.connections, this.targetRooms, room, this.excludeId);\n }\n\n compress(_compress: boolean): WebSocketEmitter {\n // ws library handles compression automatically\n return this;\n }\n\n private shouldIncludeConnection(connection: WSConnectionWrapper): boolean {\n const rooms = connection.getRooms();\n\n // Check target rooms - avoid array wrapping and use efficient iteration\n if (this.targetRooms) {\n if (Array.isArray(this.targetRooms)) {\n let hasTargetRoom = false;\n const len = this.targetRooms.length;\n for (let i = 0; i < len; i++) {\n if (rooms.has(this.targetRooms[i] as string)) {\n hasTargetRoom = true;\n break;\n }\n }\n if (!hasTargetRoom) return false;\n } else {\n if (!rooms.has(this.targetRooms)) return false;\n }\n }\n\n // Check exclude rooms - avoid array wrapping and use efficient iteration\n if (this.excludeRooms) {\n if (Array.isArray(this.excludeRooms)) {\n const len = this.excludeRooms.length;\n for (let i = 0; i < len; i++) {\n if (rooms.has(this.excludeRooms[i] as string)) return false;\n }\n } else {\n if (rooms.has(this.excludeRooms)) return false;\n }\n }\n\n return true;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/networking/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/networking/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC","sourcesContent":["// Networking System - Centralized Exports\nexport { WebSocketManager } from './websocket-manager.js';\nexport { ServiceRegistry } from './service-discovery.js';\nexport type { ServiceInfo, ServiceDiscoveryOptions } from './service-discovery.js';\n"]}
|
|
@@ -173,7 +173,9 @@ export class ServiceRegistry {
|
|
|
173
173
|
// Health checking
|
|
174
174
|
startHealthChecks() {
|
|
175
175
|
if (this.options.healthCheckInterval) {
|
|
176
|
-
this.healthCheckInterval = setInterval(() =>
|
|
176
|
+
this.healthCheckInterval = setInterval(() => {
|
|
177
|
+
void this.performHealthChecks();
|
|
178
|
+
}, this.options.healthCheckInterval);
|
|
177
179
|
}
|
|
178
180
|
}
|
|
179
181
|
async performHealthChecks() {
|
|
@@ -218,15 +220,15 @@ export class ServiceRegistry {
|
|
|
218
220
|
}
|
|
219
221
|
switch (strategy) {
|
|
220
222
|
case 'random':
|
|
221
|
-
return services[Math.floor(Math.random() * services.length)];
|
|
223
|
+
return services[Math.floor(Math.random() * services.length)] ?? null;
|
|
222
224
|
case 'round-robin':
|
|
223
225
|
// Simple round-robin (in production, maintain state)
|
|
224
|
-
return services[Date.now() % services.length];
|
|
226
|
+
return services[Date.now() % services.length] ?? null;
|
|
225
227
|
case 'least-connections':
|
|
226
228
|
// For demo, just return the first (in production, track connections)
|
|
227
|
-
return services[0];
|
|
229
|
+
return services[0] ?? null;
|
|
228
230
|
default:
|
|
229
|
-
return services[0];
|
|
231
|
+
return services[0] ?? null;
|
|
230
232
|
}
|
|
231
233
|
}
|
|
232
234
|
// Cleanup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-discovery.js","sourceRoot":"","sources":["../../../src/core/networking/service-discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service-discovery.js","sourceRoot":"","sources":["../../../src/core/networking/service-discovery.ts"],"names":[],"mappings":"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","sourcesContent":["// Service Discovery Client for Microservices\n// Supports Consul, Kubernetes, and in-memory registry\nimport { createFrameworkLogger } from '../logger/index.js';\n\nexport interface ServiceInfo {\n name: string;\n host: string;\n port: number;\n health?: string;\n version?: string;\n tags?: string[];\n metadata?: Record<string, any>;\n}\n\nexport interface ServiceDiscoveryOptions {\n type: 'consul' | 'kubernetes' | 'memory';\n consulUrl?: string;\n kubernetesNamespace?: string;\n healthCheckInterval?: number;\n tags?: string[];\n}\n\nexport class ServiceRegistry {\n private services = new Map<string, ServiceInfo[]>();\n private options: ServiceDiscoveryOptions;\n private healthCheckInterval?: NodeJS.Timeout;\n private serviceLogger = createFrameworkLogger('SERVICE_DISCOVERY');\n\n constructor(options: ServiceDiscoveryOptions) {\n this.options = options;\n this.startHealthChecks();\n }\n\n async register(service: ServiceInfo): Promise<void> {\n const { name } = service;\n\n switch (this.options.type) {\n case 'consul':\n await this.registerWithConsul(service);\n break;\n case 'kubernetes':\n await this.registerWithKubernetes(service);\n break;\n case 'memory':\n this.registerInMemory(service);\n break;\n }\n\n this.serviceLogger.info(`Service registered: ${name}@${service.host}:${service.port}`);\n }\n\n async discover(serviceName: string): Promise<ServiceInfo[]> {\n switch (this.options.type) {\n case 'consul':\n return this.discoverFromConsul(serviceName);\n case 'kubernetes':\n return this.discoverFromKubernetes(serviceName);\n case 'memory':\n return this.discoverFromMemory(serviceName);\n default:\n return [];\n }\n }\n\n async deregister(serviceName: string): Promise<void> {\n switch (this.options.type) {\n case 'consul':\n await this.deregisterFromConsul(serviceName);\n break;\n case 'kubernetes':\n // K8s handles this automatically\n break;\n case 'memory':\n this.services.delete(serviceName);\n break;\n }\n\n this.serviceLogger.info(`Service deregistered: ${serviceName}`);\n }\n\n // In-memory registry methods\n private registerInMemory(service: ServiceInfo): void {\n const existing = this.services.get(service.name) || [];\n const updated = existing.filter(s => s.host !== service.host || s.port !== service.port);\n updated.push(service);\n this.services.set(service.name, updated);\n }\n\n private discoverFromMemory(serviceName: string): ServiceInfo[] {\n return this.services.get(serviceName) || [];\n }\n\n // Consul integration\n private async registerWithConsul(service: ServiceInfo): Promise<void> {\n if (!this.options.consulUrl) {\n throw new Error('Consul URL required for consul service discovery');\n }\n\n const consulService = {\n ID: `${service.name}-${service.host}-${service.port}`,\n Name: service.name,\n Tags: service.tags || [],\n Address: service.host,\n Port: service.port,\n Check: service.health\n ? {\n HTTP: `http://${service.host}:${service.port}${service.health}`,\n Interval: '30s',\n Timeout: '10s',\n }\n : undefined,\n Meta: service.metadata || {},\n };\n\n try {\n const response = await fetch(`${this.options.consulUrl}/v1/agent/service/register`, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(consulService),\n });\n\n if (!response.ok) {\n throw new Error(`Consul registration failed: ${response.statusText}`);\n }\n } catch (error) {\n this.serviceLogger.error('Failed to register with Consul', 'SERVICE_DISCOVERY', {\n error: error instanceof Error ? error.message : String(error),\n });\n // Fallback to in-memory\n this.registerInMemory(service);\n }\n }\n\n private async discoverFromConsul(serviceName: string): Promise<ServiceInfo[]> {\n if (!this.options.consulUrl) {\n return this.discoverFromMemory(serviceName);\n }\n\n try {\n const response = await fetch(\n `${this.options.consulUrl}/v1/health/service/${serviceName}?passing=true`\n );\n\n if (!response.ok) {\n throw new Error(`Consul discovery failed: ${response.statusText}`);\n }\n\n const services = (await response.json()) as any[];\n return services.map((entry: any) => ({\n name: entry.Service.Service,\n host: entry.Service.Address,\n port: entry.Service.Port,\n tags: entry.Service.Tags,\n metadata: entry.Service.Meta,\n }));\n } catch (error) {\n this.serviceLogger.error('Failed to discover from Consul', 'SERVICE_DISCOVERY', {\n error: error instanceof Error ? error.message : String(error),\n });\n return this.discoverFromMemory(serviceName);\n }\n }\n\n private async deregisterFromConsul(serviceName: string): Promise<void> {\n if (!this.options.consulUrl) return;\n\n try {\n await fetch(`${this.options.consulUrl}/v1/agent/service/deregister/${serviceName}`, {\n method: 'PUT',\n });\n } catch (error) {\n this.serviceLogger.error('Failed to deregister from Consul', 'SERVICE_DISCOVERY', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n // Kubernetes integration\n private async registerWithKubernetes(service: ServiceInfo): Promise<void> {\n // In Kubernetes, services are registered via Service/Endpoints resources\n // This would typically be handled by the K8s API, not application code\n this.serviceLogger.info(`K8s service registration: ${service.name} (handled by Kubernetes)`);\n\n // Fallback to in-memory for local development\n this.registerInMemory(service);\n }\n\n private async discoverFromKubernetes(serviceName: string): Promise<ServiceInfo[]> {\n // In K8s, we can discover services via DNS or the K8s API\n const namespace = this.options.kubernetesNamespace || 'default';\n\n try {\n // Try K8s service DNS resolution\n const host = `${serviceName}.${namespace}.svc.cluster.local`;\n\n // For demo purposes, return the service info\n // In production, you'd query the K8s API or use DNS\n return [\n {\n name: serviceName,\n host,\n port: 80, // Default port, should be discovered from service definition\n metadata: { discovered: 'kubernetes' },\n },\n ];\n } catch (error) {\n this.serviceLogger.error('Failed to discover from Kubernetes', 'SERVICE_DISCOVERY', {\n error: error instanceof Error ? error.message : String(error),\n });\n return this.discoverFromMemory(serviceName);\n }\n }\n\n // Health checking\n private startHealthChecks(): void {\n if (this.options.healthCheckInterval) {\n this.healthCheckInterval = setInterval(() => {\n void this.performHealthChecks();\n }, this.options.healthCheckInterval);\n }\n }\n\n private async performHealthChecks(): Promise<void> {\n for (const [serviceName, services] of this.services.entries()) {\n for (const service of services) {\n if (service.health) {\n try {\n const response = await fetch(\n `http://${service.host}:${service.port}${service.health}`,\n {\n timeout: 5000,\n } as any\n );\n\n if (!response.ok) {\n this.serviceLogger.warn(\n `Health check failed for ${serviceName}: ${response.statusText}`\n );\n // Remove unhealthy service\n this.removeUnhealthyService(serviceName, service);\n }\n } catch (error) {\n this.serviceLogger.warn(`Health check failed for ${serviceName}`, 'SERVICE_DISCOVERY', {\n error: error instanceof Error ? error.message : String(error),\n });\n this.removeUnhealthyService(serviceName, service);\n }\n }\n }\n }\n }\n\n private removeUnhealthyService(serviceName: string, unhealthyService: ServiceInfo): void {\n const services = this.services.get(serviceName) || [];\n const filtered = services.filter(\n s => s.host !== unhealthyService.host || s.port !== unhealthyService.port\n );\n\n if (filtered.length === 0) {\n this.services.delete(serviceName);\n } else {\n this.services.set(serviceName, filtered);\n }\n }\n\n // Load balancing\n selectService(\n serviceName: string,\n strategy: 'round-robin' | 'random' | 'least-connections' = 'round-robin'\n ): ServiceInfo | null {\n const services = this.services.get(serviceName) || [];\n\n if (services.length === 0) {\n return null;\n }\n\n switch (strategy) {\n case 'random':\n return services[Math.floor(Math.random() * services.length)] ?? null;\n case 'round-robin':\n // Simple round-robin (in production, maintain state)\n return services[Date.now() % services.length] ?? null;\n case 'least-connections':\n // For demo, just return the first (in production, track connections)\n return services[0] ?? null;\n default:\n return services[0] ?? null;\n }\n }\n\n // Cleanup\n destroy(): void {\n if (this.healthCheckInterval) {\n clearInterval(this.healthCheckInterval);\n }\n }\n\n // Get all registered services\n getAllServices(): Record<string, ServiceInfo[]> {\n return Object.fromEntries(this.services.entries());\n }\n}\n"]}
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
export interface WebSocketAdapterOptions {
|
|
2
2
|
compression?: boolean;
|
|
3
3
|
cors?: {
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Allowed origin(s) for cross-origin WebSocket upgrades.
|
|
6
|
+
* - `undefined` / `true` / `'*'` — allow any origin
|
|
7
|
+
* - `false` — same-origin only
|
|
8
|
+
* - `string` / `string[]` — exact origin(s)
|
|
9
|
+
* - `RegExp` — matched origin (Socket.IO)
|
|
10
|
+
* - function — dynamic: the `ws` adapter calls it `(requestOrigin) => boolean | string`
|
|
11
|
+
* (return `true`/`'*'` to allow, `false` to deny, or the allowed origin string);
|
|
12
|
+
* the Socket.IO adapter passes it through to Socket.IO (express-cors `(origin, callback)`).
|
|
13
|
+
*/
|
|
14
|
+
origin?: string | string[] | boolean | RegExp | ((requestOrigin: string | undefined, callback?: (err: Error | null, allow?: boolean) => void) => boolean | string | void);
|
|
5
15
|
methods?: string[];
|
|
6
16
|
credentials?: boolean;
|
|
7
17
|
};
|
|
8
18
|
path?: string;
|
|
9
19
|
maxPayloadLength?: number;
|
|
10
20
|
idleTimeout?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Optional upgrade-time authentication hook (ws adapter). Return false to
|
|
23
|
+
* reject the handshake. Runs after the CORS origin check passes.
|
|
24
|
+
*/
|
|
25
|
+
verifyClient?: (info: {
|
|
26
|
+
origin?: string;
|
|
27
|
+
req: any;
|
|
28
|
+
secure: boolean;
|
|
29
|
+
}) => boolean;
|
|
11
30
|
[key: string]: any;
|
|
12
31
|
}
|
|
13
32
|
/**
|
|
@@ -90,9 +109,9 @@ export interface WebSocketConnection {
|
|
|
90
109
|
/** Unique connection ID */
|
|
91
110
|
id: string;
|
|
92
111
|
/** Client IP address */
|
|
93
|
-
ip?: string;
|
|
112
|
+
ip?: string | undefined;
|
|
94
113
|
/** Connection headers */
|
|
95
|
-
headers?: Record<string, string
|
|
114
|
+
headers?: Record<string, string> | undefined;
|
|
96
115
|
/** Custom data storage */
|
|
97
116
|
data: Record<string, any>;
|
|
98
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-adapter.js","sourceRoot":"","sources":["../../../src/core/networking/websocket-adapter.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,sEAAsE;
|
|
1
|
+
{"version":3,"file":"websocket-adapter.js","sourceRoot":"","sources":["../../../src/core/networking/websocket-adapter.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,sEAAsE;AAgPtE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAQ,EAAE,IAAS;IACtD,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,OAAO;QACL,GAAG,CAAC;QACJ,GAAG,CAAC;QACJ,OAAO,EAAE;YACP,GAAG,KAAK;YACR,GAAG,KAAK;YACR,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;SACvD;KACF,CAAC;AACJ,CAAC","sourcesContent":["// WebSocket Adapter Interface for Moro Framework\n// Provides a common interface for different WebSocket implementations\n\nexport interface WebSocketAdapterOptions {\n compression?: boolean;\n cors?: {\n /**\n * Allowed origin(s) for cross-origin WebSocket upgrades.\n * - `undefined` / `true` / `'*'` — allow any origin\n * - `false` — same-origin only\n * - `string` / `string[]` — exact origin(s)\n * - `RegExp` — matched origin (Socket.IO)\n * - function — dynamic: the `ws` adapter calls it `(requestOrigin) => boolean | string`\n * (return `true`/`'*'` to allow, `false` to deny, or the allowed origin string);\n * the Socket.IO adapter passes it through to Socket.IO (express-cors `(origin, callback)`).\n */\n origin?:\n | string\n | string[]\n | boolean\n | RegExp\n | ((\n requestOrigin: string | undefined,\n callback?: (err: Error | null, allow?: boolean) => void\n ) => boolean | string | void);\n methods?: string[];\n credentials?: boolean;\n };\n path?: string;\n maxPayloadLength?: number;\n idleTimeout?: number;\n /**\n * Optional upgrade-time authentication hook (ws adapter). Return false to\n * reject the handshake. Runs after the CORS origin check passes.\n */\n verifyClient?: (info: { origin?: string; req: any; secure: boolean }) => boolean;\n [key: string]: any; // Allow adapter-specific options\n}\n\n/**\n * Abstract WebSocket adapter interface\n * Allows the framework to work with different WebSocket implementations\n */\nexport interface WebSocketAdapter {\n /**\n * Initialize the WebSocket server with the given HTTP server\n */\n initialize(httpServer: any, options?: WebSocketAdapterOptions): Promise<void>;\n\n /**\n * Create a namespace for organizing WebSocket connections\n */\n createNamespace(namespace: string): WebSocketNamespace;\n\n /**\n * Get the default namespace (usually '/')\n */\n getDefaultNamespace(): WebSocketNamespace;\n\n /**\n * Close the WebSocket server and all connections\n */\n close(): Promise<void>;\n\n /**\n * Set compression configuration\n */\n setCompression(enabled: boolean, options?: any): void;\n\n /**\n * Set custom ID generator for connections\n */\n setCustomIdGenerator(generator: () => string): void;\n\n /**\n * Get adapter name/type\n */\n getAdapterName(): string;\n\n /**\n * Get connection count across all namespaces\n */\n getConnectionCount(): number;\n}\n\n/**\n * WebSocket namespace interface\n * Represents a logical grouping of WebSocket connections\n */\nexport interface WebSocketNamespace {\n /**\n * Listen for connection events\n */\n on(event: 'connection', handler: (socket: WebSocketConnection) => void): void;\n\n /**\n * Emit event to all connected sockets in this namespace\n */\n emit(event: string, data: any): void;\n\n /**\n * Emit to specific room(s)\n */\n to(room: string | string[]): WebSocketEmitter;\n\n /**\n * Emit to sockets except those in specified room(s)\n */\n except(room: string | string[]): WebSocketEmitter;\n\n /**\n * Get all connected sockets\n */\n getSockets(): WebSocketConnection[];\n\n /**\n * Get connection count for this namespace\n */\n getConnectionCount(): number;\n\n /**\n * Use middleware for this namespace\n */\n use(middleware: (socket: WebSocketConnection, next: (err?: Error) => void) => void): void;\n}\n\n/**\n * WebSocket connection interface\n * Represents an individual client connection\n */\nexport interface WebSocketConnection {\n /** Unique connection ID */\n id: string;\n\n /** Client IP address */\n ip?: string | undefined;\n\n /** Connection headers */\n headers?: Record<string, string> | undefined;\n\n /** Custom data storage */\n data: Record<string, any>;\n\n /**\n * Listen for events from this socket\n */\n on(event: string, handler: (data: any, callback?: (response?: any) => void) => void): void;\n\n /**\n * Listen for any event from this socket\n */\n onAny(handler: (event: string, ...args: any[]) => void): void;\n\n /**\n * Emit event to this socket\n */\n emit(event: string, data: any): void;\n\n /**\n * Emit with compression\n */\n compressedEmit?(event: string, data: any): void;\n\n /**\n * Join a room\n */\n join(room: string | string[]): void;\n\n /**\n * Leave a room\n */\n leave(room: string | string[]): void;\n\n /**\n * Emit to specific room(s)\n */\n to(room: string | string[]): WebSocketEmitter;\n\n /**\n * Emit to all sockets except this one\n */\n broadcast: WebSocketEmitter;\n\n /**\n * Get rooms this socket has joined\n */\n getRooms(): Set<string>;\n\n /**\n * Disconnect this socket\n */\n disconnect(close?: boolean): void;\n\n /**\n * Check if socket is connected\n */\n connected: boolean;\n}\n\n/**\n * WebSocket emitter interface for chaining operations\n */\nexport interface WebSocketEmitter {\n /**\n * Emit to target sockets\n */\n emit(event: string, data: any): void;\n\n /**\n * Target specific room(s)\n */\n to(room: string | string[]): WebSocketEmitter;\n\n /**\n * Exclude specific room(s)\n */\n except(room: string | string[]): WebSocketEmitter;\n\n /**\n * Use compression for this emit\n */\n compress(compress: boolean): WebSocketEmitter;\n}\n\n/**\n * WebSocket middleware function type\n */\nexport type WebSocketMiddleware = (\n socket: WebSocketConnection,\n next: (err?: Error) => void\n) => void;\n\n/**\n * WebSocket event handler type\n */\nexport type WebSocketEventHandler = (\n socket: WebSocketConnection,\n data: any,\n callback?: (response?: any) => void\n) => void | Promise<void>;\n\n/**\n * Merge WebSocket config from moro.config.ts with per-call createApp() options.\n * createApp() options take precedence over config for top-level and nested keys,\n * so `options.path` overrides `config.options.path` and same for cors fields.\n * @internal\n */\nexport function mergeWebSocketConfig(cfg: any, opts: any): any {\n const c = cfg || {};\n const o = opts || {};\n const cOpts = c.options || {};\n const oOpts = o.options || {};\n return {\n ...c,\n ...o,\n options: {\n ...cOpts,\n ...oOpts,\n cors: { ...(cOpts.cors || {}), ...(oOpts.cors || {}) },\n },\n };\n}\n"]}
|
|
@@ -91,38 +91,17 @@ export class WebSocketManager {
|
|
|
91
91
|
* Setup handlers for a specific WebSocket configuration
|
|
92
92
|
*/
|
|
93
93
|
setupSocketHandlers(socket, wsConfig, moduleConfig) {
|
|
94
|
-
socket.on(wsConfig.event,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
error: 'Rate limit exceeded',
|
|
102
|
-
code: 'RATE_LIMIT',
|
|
103
|
-
};
|
|
104
|
-
if (callback)
|
|
105
|
-
callback(error);
|
|
106
|
-
else
|
|
107
|
-
socket.emit('error', error);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
// Universal validation (works with any ValidationSchema)
|
|
111
|
-
if (wsConfig.validation) {
|
|
112
|
-
try {
|
|
113
|
-
data = await wsConfig.validation.parseAsync(data);
|
|
114
|
-
}
|
|
115
|
-
catch (validationError) {
|
|
116
|
-
// Handle universal validation errors
|
|
117
|
-
const normalizedError = normalizeValidationError(validationError);
|
|
94
|
+
socket.on(wsConfig.event, (data, callback) => {
|
|
95
|
+
void (async () => {
|
|
96
|
+
const handlerKey = `${moduleConfig.name}.${wsConfig.handler}`;
|
|
97
|
+
try {
|
|
98
|
+
// Rate limiting
|
|
99
|
+
if (wsConfig.rateLimit &&
|
|
100
|
+
!this.checkRateLimit(socket.id, handlerKey, wsConfig.rateLimit)) {
|
|
118
101
|
const error = {
|
|
119
102
|
success: false,
|
|
120
|
-
error: '
|
|
121
|
-
|
|
122
|
-
field: issue.path.length > 0 ? issue.path.join('.') : 'data',
|
|
123
|
-
message: issue.message,
|
|
124
|
-
code: issue.code,
|
|
125
|
-
})),
|
|
103
|
+
error: 'Rate limit exceeded',
|
|
104
|
+
code: 'RATE_LIMIT',
|
|
126
105
|
};
|
|
127
106
|
if (callback)
|
|
128
107
|
callback(error);
|
|
@@ -130,45 +109,69 @@ export class WebSocketManager {
|
|
|
130
109
|
socket.emit('error', error);
|
|
131
110
|
return;
|
|
132
111
|
}
|
|
112
|
+
// Universal validation (works with any ValidationSchema)
|
|
113
|
+
if (wsConfig.validation) {
|
|
114
|
+
try {
|
|
115
|
+
data = await wsConfig.validation.parseAsync(data);
|
|
116
|
+
}
|
|
117
|
+
catch (validationError) {
|
|
118
|
+
// Handle universal validation errors
|
|
119
|
+
const normalizedError = normalizeValidationError(validationError);
|
|
120
|
+
const error = {
|
|
121
|
+
success: false,
|
|
122
|
+
error: 'Validation failed',
|
|
123
|
+
details: normalizedError.issues.map((issue) => ({
|
|
124
|
+
field: issue.path.length > 0 ? issue.path.join('.') : 'data',
|
|
125
|
+
message: issue.message,
|
|
126
|
+
code: issue.code,
|
|
127
|
+
})),
|
|
128
|
+
};
|
|
129
|
+
if (callback)
|
|
130
|
+
callback(error);
|
|
131
|
+
else
|
|
132
|
+
socket.emit('error', error);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Circuit breaker protection
|
|
137
|
+
const circuitBreaker = this.getCircuitBreaker(handlerKey);
|
|
138
|
+
const result = await circuitBreaker.execute(async () => {
|
|
139
|
+
const controller = this.container.resolve(moduleConfig.name);
|
|
140
|
+
return await controller[wsConfig.handler](socket, data);
|
|
141
|
+
});
|
|
142
|
+
// Handle response
|
|
143
|
+
if (callback) {
|
|
144
|
+
callback({ success: true, data: result });
|
|
145
|
+
}
|
|
146
|
+
else if (result !== undefined) {
|
|
147
|
+
socket.emit(`${wsConfig.event}:response`, { success: true, data: result });
|
|
148
|
+
}
|
|
149
|
+
// Handle room operations
|
|
150
|
+
if (wsConfig.rooms) {
|
|
151
|
+
wsConfig.rooms.forEach(room => socket.join(room));
|
|
152
|
+
}
|
|
153
|
+
// Handle broadcasting
|
|
154
|
+
if (wsConfig.broadcast && result !== undefined) {
|
|
155
|
+
socket.broadcast.emit(wsConfig.event, { success: true, data: result });
|
|
156
|
+
}
|
|
133
157
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
wsConfig.rooms.forEach(room => socket.join(room));
|
|
150
|
-
}
|
|
151
|
-
// Handle broadcasting
|
|
152
|
-
if (wsConfig.broadcast && result !== undefined) {
|
|
153
|
-
socket.broadcast.emit(wsConfig.event, { success: true, data: result });
|
|
158
|
+
catch (error) {
|
|
159
|
+
this.logger.error('WebSocket handler error', 'HandlerError', {
|
|
160
|
+
handler: handlerKey,
|
|
161
|
+
error: error instanceof Error ? error.message : String(error),
|
|
162
|
+
socketId: socket.id,
|
|
163
|
+
});
|
|
164
|
+
const errorResponse = {
|
|
165
|
+
success: false,
|
|
166
|
+
error: 'Internal server error',
|
|
167
|
+
code: 'HANDLER_ERROR',
|
|
168
|
+
};
|
|
169
|
+
if (callback)
|
|
170
|
+
callback(errorResponse);
|
|
171
|
+
else
|
|
172
|
+
socket.emit('error', errorResponse);
|
|
154
173
|
}
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
this.logger.error('WebSocket handler error', 'HandlerError', {
|
|
158
|
-
handler: handlerKey,
|
|
159
|
-
error: error instanceof Error ? error.message : String(error),
|
|
160
|
-
socketId: socket.id,
|
|
161
|
-
});
|
|
162
|
-
const errorResponse = {
|
|
163
|
-
success: false,
|
|
164
|
-
error: 'Internal server error',
|
|
165
|
-
code: 'HANDLER_ERROR',
|
|
166
|
-
};
|
|
167
|
-
if (callback)
|
|
168
|
-
callback(errorResponse);
|
|
169
|
-
else
|
|
170
|
-
socket.emit('error', errorResponse);
|
|
171
|
-
}
|
|
174
|
+
})();
|
|
172
175
|
});
|
|
173
176
|
}
|
|
174
177
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-manager.js","sourceRoot":"","sources":["../../../src/core/networking/websocket-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"websocket-manager.js","sourceRoot":"","sources":["../../../src/core/networking/websocket-manager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,yDAAyD;AACzD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,OAAO,gBAAgB;IAMjB;IACA;IANF,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IACpD,YAAY,GAAG,IAAI,GAAG,EAA6D,CAAC;IACpF,MAAM,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAE3D,YACU,OAAyB,EACzB,SAAoB;QADpB,YAAO,GAAP,OAAO,CAAkB;QACzB,cAAS,GAAT,SAAS,CAAW;QAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,SAAuB;QAC1C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAa;QAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAiB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,SAA6B,EAC7B,QAA6B,EAC7B,YAA0B;QAE1B,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAA2B,EAAE,EAAE;YACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE;gBAC9D,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI;gBACrC,MAAM,EAAE,YAAY,CAAC,IAAI;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAA2B,EAAE,UAAkB;QAC3E,oCAAoC;QACpC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAErC,+BAA+B;QAC/B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;gBACzC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,iBAAiB,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa;YAExB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;gBAC3B,aAAa,CAAC,iBAAiB,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE;gBACnE,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW;aAC/C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,MAA2B,EAC3B,QAA6B,EAC7B,YAA0B;QAE1B,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAS,EAAE,QAA2B,EAAE,EAAE;YACnE,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAE9D,IAAI,CAAC;oBACH,gBAAgB;oBAChB,IACE,QAAQ,CAAC,SAAS;wBAClB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC/D,CAAC;wBACD,MAAM,KAAK,GAAG;4BACZ,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,qBAAqB;4BAC5B,IAAI,EAAE,YAAY;yBACnB,CAAC;wBACF,IAAI,QAAQ;4BAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;;4BACzB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBACjC,OAAO;oBACT,CAAC;oBAED,yDAAyD;oBACzD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACxB,IAAI,CAAC;4BACH,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBACpD,CAAC;wBAAC,OAAO,eAAoB,EAAE,CAAC;4BAC9B,qCAAqC;4BACrC,MAAM,eAAe,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;4BAClE,MAAM,KAAK,GAAG;gCACZ,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,mBAAmB;gCAC1B,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;oCACnD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;oCAC5D,OAAO,EAAE,KAAK,CAAC,OAAO;oCACtB,IAAI,EAAE,KAAK,CAAC,IAAI;iCACjB,CAAC,CAAC;6BACJ,CAAC;4BACF,IAAI,QAAQ;gCAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;;gCACzB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;4BACjC,OAAO;wBACT,CAAC;oBACH,CAAC;oBAED,6BAA6B;oBAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;oBAE1D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBAC7D,OAAO,MAAO,UAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACnE,CAAC,CAAC,CAAC;oBAEH,kBAAkB;oBAClB,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC5C,CAAC;yBAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC7E,CAAC;oBAED,yBAAyB;oBACzB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACnB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACpD,CAAC;oBAED,sBAAsB;oBACtB,IAAI,QAAQ,CAAC,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC/C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,cAAc,EAAE;wBAC3D,OAAO,EAAE,UAAU;wBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;wBAC7D,QAAQ,EAAE,MAAM,CAAC,EAAE;qBACpB,CAAC,CAAC;oBAEH,MAAM,aAAa,GAAG;wBACpB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,uBAAuB;wBAC9B,IAAI,EAAE,eAAe;qBACtB,CAAC;oBAEF,IAAI,QAAQ;wBAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;;wBACjC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,UAAkB;QAC1C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;gBACxC,gBAAgB,EAAE,CAAC;gBACnB,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC;QACD,oEAAoE;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,QAAgB,EAChB,UAAkB,EAClB,SAA+C;QAE/C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;QAE3C,oBAAoB;QACpB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC;gBACjC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,UAAU,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC;YACvC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;YACrB,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAc;QACtC,6DAA6D;QAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAEvC,2BAA2B;QAC3B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,uBAAuB;YACvB,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAS;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QAE1D,sBAAsB;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE1B,yBAAyB;QACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,gBAAgB;QAChB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF","sourcesContent":["// WebSocket Manager for Moro Framework\n// Manages WebSocket connections using pluggable adapters\nimport * as zlib from 'zlib';\nimport { Container } from '../utilities/index.js';\nimport { CircuitBreaker } from '../utilities/index.js';\nimport { ModuleConfig, WebSocketDefinition } from '../../types/module.js';\nimport { WebSocketAdapter, WebSocketNamespace, WebSocketConnection } from './websocket-adapter.js';\nimport { createFrameworkLogger } from '../logger/index.js';\nimport { normalizeValidationError } from '../validation/schema-interface.js';\n\nexport class WebSocketManager {\n private circuitBreakers = new Map<string, CircuitBreaker>();\n private rateLimiters = new Map<string, Map<string, { count: number; resetTime: number }>>();\n private logger = createFrameworkLogger('WebSocketManager');\n\n constructor(\n private adapter: WebSocketAdapter,\n private container: Container\n ) {\n this.logger.info(`Initialized with ${adapter.getAdapterName()} adapter`, 'AdapterInit');\n }\n\n /**\n * Set custom ID generator for the adapter\n */\n setCustomIdGenerator(generator: () => string): void {\n this.adapter.setCustomIdGenerator(generator);\n }\n\n /**\n * Enable compression for the adapter\n */\n enableCompression(options?: any): void {\n this.adapter.setCompression(true, options);\n }\n\n /**\n * Get the underlying adapter\n */\n getAdapter(): WebSocketAdapter {\n return this.adapter;\n }\n\n /**\n * Get connection count across all namespaces\n */\n getConnectionCount(): number {\n return this.adapter.getConnectionCount();\n }\n\n /**\n * Create or get a namespace\n */\n getNamespace(namespace: string): WebSocketNamespace {\n return this.adapter.createNamespace(namespace);\n }\n\n /**\n * Register WebSocket handlers for a module\n */\n async registerHandler(\n namespace: WebSocketNamespace,\n wsConfig: WebSocketDefinition,\n moduleConfig: ModuleConfig\n ): Promise<void> {\n namespace.on('connection', (socket: WebSocketConnection) => {\n this.logger.debug(`New connection: ${socket.id}`, 'Connection', {\n namespace: namespace.constructor.name,\n module: moduleConfig.name,\n });\n\n this.setupSocketMiddleware(socket, moduleConfig.name);\n this.setupSocketHandlers(socket, wsConfig, moduleConfig);\n });\n }\n\n /**\n * Setup socket-specific middleware\n */\n private setupSocketMiddleware(socket: WebSocketConnection, moduleName: string): void {\n // Add module context to socket data\n socket.data.module = moduleName;\n socket.data.connectedAt = Date.now();\n\n // Setup heartbeat if supported\n if (socket.compressedEmit) {\n const heartbeatInterval = setInterval(() => {\n if (socket.connected) {\n socket.emit('heartbeat', { timestamp: Date.now() });\n } else {\n clearInterval(heartbeatInterval);\n }\n }, 30000); // 30 seconds\n\n socket.on('disconnect', () => {\n clearInterval(heartbeatInterval);\n });\n }\n\n // Log disconnection\n socket.on('disconnect', () => {\n this.logger.debug(`Socket disconnected: ${socket.id}`, 'Disconnect', {\n module: moduleName,\n duration: Date.now() - socket.data.connectedAt,\n });\n });\n }\n\n /**\n * Setup handlers for a specific WebSocket configuration\n */\n private setupSocketHandlers(\n socket: WebSocketConnection,\n wsConfig: WebSocketDefinition,\n moduleConfig: ModuleConfig\n ): void {\n socket.on(wsConfig.event, (data: any, callback?: CallableFunction) => {\n void (async () => {\n const handlerKey = `${moduleConfig.name}.${wsConfig.handler}`;\n\n try {\n // Rate limiting\n if (\n wsConfig.rateLimit &&\n !this.checkRateLimit(socket.id, handlerKey, wsConfig.rateLimit)\n ) {\n const error = {\n success: false,\n error: 'Rate limit exceeded',\n code: 'RATE_LIMIT',\n };\n if (callback) callback(error);\n else socket.emit('error', error);\n return;\n }\n\n // Universal validation (works with any ValidationSchema)\n if (wsConfig.validation) {\n try {\n data = await wsConfig.validation.parseAsync(data);\n } catch (validationError: any) {\n // Handle universal validation errors\n const normalizedError = normalizeValidationError(validationError);\n const error = {\n success: false,\n error: 'Validation failed',\n details: normalizedError.issues.map((issue: any) => ({\n field: issue.path.length > 0 ? issue.path.join('.') : 'data',\n message: issue.message,\n code: issue.code,\n })),\n };\n if (callback) callback(error);\n else socket.emit('error', error);\n return;\n }\n }\n\n // Circuit breaker protection\n const circuitBreaker = this.getCircuitBreaker(handlerKey);\n\n const result = await circuitBreaker.execute(async () => {\n const controller = this.container.resolve(moduleConfig.name);\n return await (controller as any)[wsConfig.handler](socket, data);\n });\n\n // Handle response\n if (callback) {\n callback({ success: true, data: result });\n } else if (result !== undefined) {\n socket.emit(`${wsConfig.event}:response`, { success: true, data: result });\n }\n\n // Handle room operations\n if (wsConfig.rooms) {\n wsConfig.rooms.forEach(room => socket.join(room));\n }\n\n // Handle broadcasting\n if (wsConfig.broadcast && result !== undefined) {\n socket.broadcast.emit(wsConfig.event, { success: true, data: result });\n }\n } catch (error) {\n this.logger.error('WebSocket handler error', 'HandlerError', {\n handler: handlerKey,\n error: error instanceof Error ? error.message : String(error),\n socketId: socket.id,\n });\n\n const errorResponse = {\n success: false,\n error: 'Internal server error',\n code: 'HANDLER_ERROR',\n };\n\n if (callback) callback(errorResponse);\n else socket.emit('error', errorResponse);\n }\n })();\n });\n }\n\n /**\n * Get or create circuit breaker for handler\n */\n private getCircuitBreaker(handlerKey: string): CircuitBreaker {\n if (!this.circuitBreakers.has(handlerKey)) {\n const circuitBreaker = new CircuitBreaker({\n failureThreshold: 5,\n resetTimeout: 60000,\n monitoringPeriod: 10000,\n });\n this.circuitBreakers.set(handlerKey, circuitBreaker);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.circuitBreakers.get(handlerKey)!;\n }\n\n /**\n * Check rate limit for socket and handler\n */\n private checkRateLimit(\n socketId: string,\n handlerKey: string,\n rateLimit: { requests: number; window: number }\n ): boolean {\n if (!this.rateLimiters.has(handlerKey)) {\n this.rateLimiters.set(handlerKey, new Map());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const handlerLimiter = this.rateLimiters.get(handlerKey)!;\n const now = Date.now();\n const windowStart = now - rateLimit.window;\n\n // Clean old entries\n for (const [id, data] of handlerLimiter.entries()) {\n if (data.resetTime < windowStart) {\n handlerLimiter.delete(id);\n }\n }\n\n // Check current socket\n const socketData = handlerLimiter.get(socketId);\n if (!socketData) {\n handlerLimiter.set(socketId, { count: 1, resetTime: now });\n return true;\n }\n\n if (socketData.resetTime < windowStart) {\n socketData.count = 1;\n socketData.resetTime = now;\n return true;\n }\n\n if (socketData.count >= rateLimit.requests) {\n return false;\n }\n\n socketData.count++;\n return true;\n }\n\n /**\n * Process binary data efficiently\n */\n private processBinaryData(buffer: Buffer): any {\n // Example binary processing - can be extended based on needs\n if (buffer.length === 0) return buffer;\n\n // Simple compression check\n if (buffer[0] === 0x1f && buffer[1] === 0x8b) {\n // This is gzipped data\n try {\n return zlib.gunzipSync(buffer);\n } catch {\n return buffer;\n }\n }\n\n return buffer;\n }\n\n /**\n * Check if data should be compressed\n */\n private shouldCompress(data: any): boolean {\n if (typeof data === 'string') {\n return data.length > 1024;\n }\n if (Buffer.isBuffer(data)) {\n return data.length > 1024;\n }\n if (typeof data === 'object') {\n return JSON.stringify(data).length > 1024;\n }\n return false;\n }\n\n /**\n * Close the WebSocket manager and underlying adapter\n */\n async close(): Promise<void> {\n this.logger.info('Closing WebSocket manager', 'Shutdown');\n\n // Clear rate limiters\n this.rateLimiters.clear();\n\n // Clear circuit breakers\n this.circuitBreakers.clear();\n\n // Close adapter\n await this.adapter.close();\n }\n}\n"]}
|
|
@@ -183,6 +183,8 @@ export class ObjectPoolManager {
|
|
|
183
183
|
const bufferSizesLen = this.bufferSizes.length;
|
|
184
184
|
for (let i = 0; i < bufferSizesLen; i++) {
|
|
185
185
|
const size = this.bufferSizes[i];
|
|
186
|
+
if (size === undefined)
|
|
187
|
+
continue;
|
|
186
188
|
this.bufferPools.set(size, new ObjectPool(() => Buffer.allocUnsafe(size), this.getOptimalPoolSize(size)));
|
|
187
189
|
}
|
|
188
190
|
// Initialize caches with enhanced statistics
|
|
@@ -221,6 +223,8 @@ export class ObjectPoolManager {
|
|
|
221
223
|
const bufferSizesLen = this.bufferSizes.length;
|
|
222
224
|
for (let i = 0; i < bufferSizesLen; i++) {
|
|
223
225
|
const size = this.bufferSizes[i];
|
|
226
|
+
if (size === undefined)
|
|
227
|
+
continue;
|
|
224
228
|
const pool = this.bufferPools.get(size);
|
|
225
229
|
if (pool) {
|
|
226
230
|
const warmCount = bufferSizes[size] ?? Math.min(25, pool.stats.maxSize);
|
|
@@ -414,6 +418,8 @@ export class ObjectPoolManager {
|
|
|
414
418
|
const bufferSizesLen = this.bufferSizes.length;
|
|
415
419
|
for (let i = 0; i < bufferSizesLen; i++) {
|
|
416
420
|
const size = this.bufferSizes[i];
|
|
421
|
+
if (size === undefined)
|
|
422
|
+
continue;
|
|
417
423
|
const poolKey = `buffer_${size}`;
|
|
418
424
|
const history = this.poolUsageHistory.get(poolKey) || [];
|
|
419
425
|
if (history.length >= 10) {
|