@scpxl/nodejs-framework 1.0.13
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 +195 -0
- package/dist/api-requester/api-requester.d.ts +11 -0
- package/dist/api-requester/api-requester.d.ts.map +1 -0
- package/dist/api-requester/api-requester.js +59 -0
- package/dist/api-requester/api-requester.js.map +7 -0
- package/dist/api-requester/index.d.ts +2 -0
- package/dist/api-requester/index.d.ts.map +1 -0
- package/dist/api-requester/index.js +5 -0
- package/dist/api-requester/index.js.map +7 -0
- package/dist/application/base-application.d.ts +110 -0
- package/dist/application/base-application.d.ts.map +1 -0
- package/dist/application/base-application.interface.d.ts +161 -0
- package/dist/application/base-application.interface.d.ts.map +1 -0
- package/dist/application/base-application.interface.js +1 -0
- package/dist/application/base-application.interface.js.map +7 -0
- package/dist/application/base-application.js +350 -0
- package/dist/application/base-application.js.map +7 -0
- package/dist/application/command-application.d.ts +18 -0
- package/dist/application/command-application.d.ts.map +1 -0
- package/dist/application/command-application.interface.d.ts +26 -0
- package/dist/application/command-application.interface.d.ts.map +1 -0
- package/dist/application/command-application.interface.js +1 -0
- package/dist/application/command-application.interface.js.map +7 -0
- package/dist/application/command-application.js +110 -0
- package/dist/application/command-application.js.map +7 -0
- package/dist/application/index.d.ts +5 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +7 -0
- package/dist/application/index.js.map +7 -0
- package/dist/application/web-application.d.ts +43 -0
- package/dist/application/web-application.d.ts.map +1 -0
- package/dist/application/web-application.interface.d.ts +21 -0
- package/dist/application/web-application.interface.d.ts.map +1 -0
- package/dist/application/web-application.interface.js +1 -0
- package/dist/application/web-application.interface.js.map +7 -0
- package/dist/application/web-application.js +176 -0
- package/dist/application/web-application.js.map +7 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +7 -0
- package/dist/auth/jwt.d.ts +25 -0
- package/dist/auth/jwt.d.ts.map +1 -0
- package/dist/auth/jwt.js +51 -0
- package/dist/auth/jwt.js.map +7 -0
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +7 -0
- package/dist/cache/manager.d.ts +26 -0
- package/dist/cache/manager.d.ts.map +1 -0
- package/dist/cache/manager.js +54 -0
- package/dist/cache/manager.js.map +7 -0
- package/dist/cluster/cluster-manager.d.ts +15 -0
- package/dist/cluster/cluster-manager.d.ts.map +1 -0
- package/dist/cluster/cluster-manager.interface.d.ts +23 -0
- package/dist/cluster/cluster-manager.interface.d.ts.map +1 -0
- package/dist/cluster/cluster-manager.interface.js +1 -0
- package/dist/cluster/cluster-manager.interface.js.map +7 -0
- package/dist/cluster/cluster-manager.js +106 -0
- package/dist/cluster/cluster-manager.js.map +7 -0
- package/dist/cluster/index.d.ts +2 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +13 -0
- package/dist/cluster/index.js.map +7 -0
- package/dist/command/command-manager.d.ts +19 -0
- package/dist/command/command-manager.d.ts.map +1 -0
- package/dist/command/command-manager.js +42 -0
- package/dist/command/command-manager.js.map +7 -0
- package/dist/command/command.d.ts +27 -0
- package/dist/command/command.d.ts.map +1 -0
- package/dist/command/command.interface.d.ts +11 -0
- package/dist/command/command.interface.d.ts.map +1 -0
- package/dist/command/command.interface.js +1 -0
- package/dist/command/command.interface.js.map +7 -0
- package/dist/command/command.js +37 -0
- package/dist/command/command.js.map +7 -0
- package/dist/command/index.d.ts +3 -0
- package/dist/command/index.d.ts.map +1 -0
- package/dist/command/index.js +7 -0
- package/dist/command/index.js.map +7 -0
- package/dist/database/dynamic-entity-form-decorators.d.ts +31 -0
- package/dist/database/dynamic-entity-form-decorators.d.ts.map +1 -0
- package/dist/database/dynamic-entity-form-decorators.js +62 -0
- package/dist/database/dynamic-entity-form-decorators.js.map +7 -0
- package/dist/database/dynamic-entity.d.ts +15 -0
- package/dist/database/dynamic-entity.d.ts.map +1 -0
- package/dist/database/dynamic-entity.js +42 -0
- package/dist/database/dynamic-entity.js.map +7 -0
- package/dist/database/index.d.ts +5 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +12 -0
- package/dist/database/index.js.map +7 -0
- package/dist/database/instance.d.ts +36 -0
- package/dist/database/instance.d.ts.map +1 -0
- package/dist/database/instance.interface.d.ts +5 -0
- package/dist/database/instance.interface.d.ts.map +1 -0
- package/dist/database/instance.interface.js +1 -0
- package/dist/database/instance.interface.js.map +7 -0
- package/dist/database/instance.js +57 -0
- package/dist/database/instance.js.map +7 -0
- package/dist/database/manager.d.ts +27 -0
- package/dist/database/manager.d.ts.map +1 -0
- package/dist/database/manager.interface.d.ts +18 -0
- package/dist/database/manager.interface.d.ts.map +1 -0
- package/dist/database/manager.interface.js +1 -0
- package/dist/database/manager.interface.js.map +7 -0
- package/dist/database/manager.js +49 -0
- package/dist/database/manager.js.map +7 -0
- package/dist/event/controller/base.d.ts +23 -0
- package/dist/event/controller/base.d.ts.map +1 -0
- package/dist/event/controller/base.interface.d.ts +11 -0
- package/dist/event/controller/base.interface.d.ts.map +1 -0
- package/dist/event/controller/base.interface.js +1 -0
- package/dist/event/controller/base.interface.js.map +7 -0
- package/dist/event/controller/base.js +51 -0
- package/dist/event/controller/base.js.map +7 -0
- package/dist/event/index.d.ts +5 -0
- package/dist/event/index.d.ts.map +1 -0
- package/dist/event/index.js +9 -0
- package/dist/event/index.js.map +7 -0
- package/dist/event/manager.d.ts +21 -0
- package/dist/event/manager.d.ts.map +1 -0
- package/dist/event/manager.interface.d.ts +134 -0
- package/dist/event/manager.interface.d.ts.map +1 -0
- package/dist/event/manager.interface.js +1 -0
- package/dist/event/manager.interface.js.map +7 -0
- package/dist/event/manager.js +134 -0
- package/dist/event/manager.js.map +7 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +7 -0
- package/dist/logger/index.d.ts +2 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +5 -0
- package/dist/logger/index.js.map +7 -0
- package/dist/logger/logger.d.ts +51 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.interface.d.ts +2 -0
- package/dist/logger/logger.interface.d.ts.map +1 -0
- package/dist/logger/logger.interface.js +1 -0
- package/dist/logger/logger.interface.js.map +7 -0
- package/dist/logger/logger.js +168 -0
- package/dist/logger/logger.js.map +7 -0
- package/dist/performance/cache-performance.d.ts +58 -0
- package/dist/performance/cache-performance.d.ts.map +1 -0
- package/dist/performance/cache-performance.js +199 -0
- package/dist/performance/cache-performance.js.map +7 -0
- package/dist/performance/database-performance.d.ts +40 -0
- package/dist/performance/database-performance.d.ts.map +1 -0
- package/dist/performance/database-performance.js +132 -0
- package/dist/performance/database-performance.js.map +7 -0
- package/dist/performance/index.d.ts +7 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +7 -0
- package/dist/performance/index.js.map +7 -0
- package/dist/performance/performance-monitor.d.ts +68 -0
- package/dist/performance/performance-monitor.d.ts.map +1 -0
- package/dist/performance/performance-monitor.js +270 -0
- package/dist/performance/performance-monitor.js.map +7 -0
- package/dist/performance/queue-performance.d.ts +46 -0
- package/dist/performance/queue-performance.d.ts.map +1 -0
- package/dist/performance/queue-performance.js +144 -0
- package/dist/performance/queue-performance.js.map +7 -0
- package/dist/performance/webserver-performance.d.ts +69 -0
- package/dist/performance/webserver-performance.d.ts.map +1 -0
- package/dist/performance/webserver-performance.js +164 -0
- package/dist/performance/webserver-performance.js.map +7 -0
- package/dist/performance/websocket-performance.d.ts +44 -0
- package/dist/performance/websocket-performance.d.ts.map +1 -0
- package/dist/performance/websocket-performance.js +139 -0
- package/dist/performance/websocket-performance.js.map +7 -0
- package/dist/queue/index.d.ts +6 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.interface.d.ts +10 -0
- package/dist/queue/index.interface.d.ts.map +1 -0
- package/dist/queue/index.interface.js +1 -0
- package/dist/queue/index.interface.js.map +7 -0
- package/dist/queue/index.js +7 -0
- package/dist/queue/index.js.map +7 -0
- package/dist/queue/job.interface.d.ts +42 -0
- package/dist/queue/job.interface.d.ts.map +1 -0
- package/dist/queue/job.interface.js +1 -0
- package/dist/queue/job.interface.js.map +7 -0
- package/dist/queue/manager.d.ts +36 -0
- package/dist/queue/manager.d.ts.map +1 -0
- package/dist/queue/manager.interface.d.ts +18 -0
- package/dist/queue/manager.interface.d.ts.map +1 -0
- package/dist/queue/manager.interface.js +1 -0
- package/dist/queue/manager.interface.js.map +7 -0
- package/dist/queue/manager.js +244 -0
- package/dist/queue/manager.js.map +7 -0
- package/dist/queue/processor/base.d.ts +28 -0
- package/dist/queue/processor/base.d.ts.map +1 -0
- package/dist/queue/processor/base.js +46 -0
- package/dist/queue/processor/base.js.map +7 -0
- package/dist/queue/processor/processor.interface.d.ts +15 -0
- package/dist/queue/processor/processor.interface.d.ts.map +1 -0
- package/dist/queue/processor/processor.interface.js +1 -0
- package/dist/queue/processor/processor.interface.js.map +7 -0
- package/dist/queue/worker.d.ts +14 -0
- package/dist/queue/worker.d.ts.map +1 -0
- package/dist/queue/worker.interface.d.ts +13 -0
- package/dist/queue/worker.interface.d.ts.map +1 -0
- package/dist/queue/worker.interface.js +1 -0
- package/dist/queue/worker.interface.js.map +7 -0
- package/dist/queue/worker.js +72 -0
- package/dist/queue/worker.js.map +7 -0
- package/dist/redis/index.d.ts +3 -0
- package/dist/redis/index.d.ts.map +1 -0
- package/dist/redis/index.js +7 -0
- package/dist/redis/index.js.map +7 -0
- package/dist/redis/instance.d.ts +32 -0
- package/dist/redis/instance.d.ts.map +1 -0
- package/dist/redis/instance.interface.d.ts +9 -0
- package/dist/redis/instance.interface.d.ts.map +1 -0
- package/dist/redis/instance.interface.js +1 -0
- package/dist/redis/instance.interface.js.map +7 -0
- package/dist/redis/instance.js +92 -0
- package/dist/redis/instance.js.map +7 -0
- package/dist/redis/manager.d.ts +15 -0
- package/dist/redis/manager.d.ts.map +1 -0
- package/dist/redis/manager.interface.d.ts +8 -0
- package/dist/redis/manager.interface.d.ts.map +1 -0
- package/dist/redis/manager.interface.js +1 -0
- package/dist/redis/manager.interface.js.map +7 -0
- package/dist/redis/manager.js +65 -0
- package/dist/redis/manager.js.map +7 -0
- package/dist/services/aws/index.d.ts +2 -0
- package/dist/services/aws/index.d.ts.map +1 -0
- package/dist/services/aws/index.js +5 -0
- package/dist/services/aws/index.js.map +7 -0
- package/dist/services/aws/s3.d.ts +54 -0
- package/dist/services/aws/s3.d.ts.map +1 -0
- package/dist/services/aws/s3.interface.d.ts +14 -0
- package/dist/services/aws/s3.interface.d.ts.map +1 -0
- package/dist/services/aws/s3.interface.js +1 -0
- package/dist/services/aws/s3.interface.js.map +7 -0
- package/dist/services/aws/s3.js +236 -0
- package/dist/services/aws/s3.js.map +7 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +7 -0
- package/dist/util/file.d.ts +45 -0
- package/dist/util/file.d.ts.map +1 -0
- package/dist/util/file.js +105 -0
- package/dist/util/file.js.map +7 -0
- package/dist/util/helper.d.ts +37 -0
- package/dist/util/helper.d.ts.map +1 -0
- package/dist/util/helper.js +73 -0
- package/dist/util/helper.js.map +7 -0
- package/dist/util/image.d.ts +12 -0
- package/dist/util/image.d.ts.map +1 -0
- package/dist/util/image.js +35 -0
- package/dist/util/image.js.map +7 -0
- package/dist/util/index.d.ts +10 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +21 -0
- package/dist/util/index.js.map +7 -0
- package/dist/util/loader.d.ts +19 -0
- package/dist/util/loader.d.ts.map +1 -0
- package/dist/util/loader.js +84 -0
- package/dist/util/loader.js.map +7 -0
- package/dist/util/num.d.ts +13 -0
- package/dist/util/num.d.ts.map +1 -0
- package/dist/util/num.js +16 -0
- package/dist/util/num.js.map +7 -0
- package/dist/util/os.d.ts +6 -0
- package/dist/util/os.d.ts.map +1 -0
- package/dist/util/os.js +32 -0
- package/dist/util/os.js.map +7 -0
- package/dist/util/str.d.ts +39 -0
- package/dist/util/str.d.ts.map +1 -0
- package/dist/util/str.js +34 -0
- package/dist/util/str.js.map +7 -0
- package/dist/util/time.d.ts +13 -0
- package/dist/util/time.d.ts.map +1 -0
- package/dist/util/time.interface.d.ts +12 -0
- package/dist/util/time.interface.d.ts.map +1 -0
- package/dist/util/time.interface.js +1 -0
- package/dist/util/time.interface.js.map +7 -0
- package/dist/util/time.js +90 -0
- package/dist/util/time.js.map +7 -0
- package/dist/util/url.d.ts +7 -0
- package/dist/util/url.d.ts.map +1 -0
- package/dist/util/url.js +12 -0
- package/dist/util/url.js.map +7 -0
- package/dist/webserver/controller/auth-middleware.d.ts +21 -0
- package/dist/webserver/controller/auth-middleware.d.ts.map +1 -0
- package/dist/webserver/controller/auth-middleware.js +33 -0
- package/dist/webserver/controller/auth-middleware.js.map +7 -0
- package/dist/webserver/controller/base.d.ts +39 -0
- package/dist/webserver/controller/base.d.ts.map +1 -0
- package/dist/webserver/controller/base.interface.d.ts +45 -0
- package/dist/webserver/controller/base.interface.d.ts.map +1 -0
- package/dist/webserver/controller/base.interface.js +1 -0
- package/dist/webserver/controller/base.interface.js.map +7 -0
- package/dist/webserver/controller/base.js +188 -0
- package/dist/webserver/controller/base.js.map +7 -0
- package/dist/webserver/controller/entity.d.ts +94 -0
- package/dist/webserver/controller/entity.d.ts.map +1 -0
- package/dist/webserver/controller/entity.js +361 -0
- package/dist/webserver/controller/entity.js.map +7 -0
- package/dist/webserver/controller/example-auth.d.ts +12 -0
- package/dist/webserver/controller/example-auth.d.ts.map +1 -0
- package/dist/webserver/controller/example-auth.js +53 -0
- package/dist/webserver/controller/example-auth.js.map +7 -0
- package/dist/webserver/controller/health.d.ts +8 -0
- package/dist/webserver/controller/health.d.ts.map +1 -0
- package/dist/webserver/controller/health.js +50 -0
- package/dist/webserver/controller/health.js.map +7 -0
- package/dist/webserver/index.d.ts +12 -0
- package/dist/webserver/index.d.ts.map +1 -0
- package/dist/webserver/index.js +19 -0
- package/dist/webserver/index.js.map +7 -0
- package/dist/webserver/util.d.ts +10 -0
- package/dist/webserver/util.d.ts.map +1 -0
- package/dist/webserver/util.js +63 -0
- package/dist/webserver/util.js.map +7 -0
- package/dist/webserver/webserver.d.ts +65 -0
- package/dist/webserver/webserver.d.ts.map +1 -0
- package/dist/webserver/webserver.interface.d.ts +118 -0
- package/dist/webserver/webserver.interface.d.ts.map +1 -0
- package/dist/webserver/webserver.interface.js +9 -0
- package/dist/webserver/webserver.interface.js.map +7 -0
- package/dist/webserver/webserver.js +347 -0
- package/dist/webserver/webserver.js.map +7 -0
- package/dist/websocket/controller/client/base.d.ts +12 -0
- package/dist/websocket/controller/client/base.d.ts.map +1 -0
- package/dist/websocket/controller/client/base.interface.d.ts +12 -0
- package/dist/websocket/controller/client/base.interface.d.ts.map +1 -0
- package/dist/websocket/controller/client/base.interface.js +1 -0
- package/dist/websocket/controller/client/base.interface.js.map +7 -0
- package/dist/websocket/controller/client/base.js +26 -0
- package/dist/websocket/controller/client/base.js.map +7 -0
- package/dist/websocket/controller/server/base.d.ts +13 -0
- package/dist/websocket/controller/server/base.d.ts.map +1 -0
- package/dist/websocket/controller/server/base.interface.d.ts +13 -0
- package/dist/websocket/controller/server/base.interface.d.ts.map +1 -0
- package/dist/websocket/controller/server/base.interface.js +1 -0
- package/dist/websocket/controller/server/base.interface.js.map +7 -0
- package/dist/websocket/controller/server/base.js +26 -0
- package/dist/websocket/controller/server/base.js.map +7 -0
- package/dist/websocket/controllers/client/system.d.ts +6 -0
- package/dist/websocket/controllers/client/system.d.ts.map +1 -0
- package/dist/websocket/controllers/client/system.js +14 -0
- package/dist/websocket/controllers/client/system.js.map +7 -0
- package/dist/websocket/controllers/server/system.d.ts +7 -0
- package/dist/websocket/controllers/server/system.d.ts.map +1 -0
- package/dist/websocket/controllers/server/system.js +87 -0
- package/dist/websocket/controllers/server/system.js.map +7 -0
- package/dist/websocket/index.d.ts +7 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +11 -0
- package/dist/websocket/index.js.map +7 -0
- package/dist/websocket/routes/client/system.d.ts +3 -0
- package/dist/websocket/routes/client/system.d.ts.map +1 -0
- package/dist/websocket/routes/client/system.js +11 -0
- package/dist/websocket/routes/client/system.js.map +7 -0
- package/dist/websocket/routes/server/system.d.ts +3 -0
- package/dist/websocket/routes/server/system.d.ts.map +1 -0
- package/dist/websocket/routes/server/system.js +16 -0
- package/dist/websocket/routes/server/system.js.map +7 -0
- package/dist/websocket/utils.d.ts +9 -0
- package/dist/websocket/utils.d.ts.map +1 -0
- package/dist/websocket/utils.js +39 -0
- package/dist/websocket/utils.js.map +7 -0
- package/dist/websocket/websocket-base.d.ts +15 -0
- package/dist/websocket/websocket-base.d.ts.map +1 -0
- package/dist/websocket/websocket-base.js +104 -0
- package/dist/websocket/websocket-base.js.map +7 -0
- package/dist/websocket/websocket-client-manager.d.ts +53 -0
- package/dist/websocket/websocket-client-manager.d.ts.map +1 -0
- package/dist/websocket/websocket-client-manager.interface.d.ts +8 -0
- package/dist/websocket/websocket-client-manager.interface.d.ts.map +1 -0
- package/dist/websocket/websocket-client-manager.interface.js +1 -0
- package/dist/websocket/websocket-client-manager.interface.js.map +7 -0
- package/dist/websocket/websocket-client-manager.js +225 -0
- package/dist/websocket/websocket-client-manager.js.map +7 -0
- package/dist/websocket/websocket-client.d.ts +35 -0
- package/dist/websocket/websocket-client.d.ts.map +1 -0
- package/dist/websocket/websocket-client.interface.d.ts +14 -0
- package/dist/websocket/websocket-client.interface.d.ts.map +1 -0
- package/dist/websocket/websocket-client.interface.js +1 -0
- package/dist/websocket/websocket-client.interface.js.map +7 -0
- package/dist/websocket/websocket-client.js +158 -0
- package/dist/websocket/websocket-client.js.map +7 -0
- package/dist/websocket/websocket-room-manager.d.ts +32 -0
- package/dist/websocket/websocket-room-manager.d.ts.map +1 -0
- package/dist/websocket/websocket-room-manager.js +130 -0
- package/dist/websocket/websocket-room-manager.js.map +7 -0
- package/dist/websocket/websocket-server.d.ts +92 -0
- package/dist/websocket/websocket-server.d.ts.map +1 -0
- package/dist/websocket/websocket-server.interface.d.ts +16 -0
- package/dist/websocket/websocket-server.interface.d.ts.map +1 -0
- package/dist/websocket/websocket-server.interface.js +1 -0
- package/dist/websocket/websocket-server.interface.js.map +7 -0
- package/dist/websocket/websocket-server.js +686 -0
- package/dist/websocket/websocket-server.js.map +7 -0
- package/dist/websocket/websocket-service.d.ts +44 -0
- package/dist/websocket/websocket-service.d.ts.map +1 -0
- package/dist/websocket/websocket-service.js +99 -0
- package/dist/websocket/websocket-service.js.map +7 -0
- package/dist/websocket/websocket.interface.d.ts +119 -0
- package/dist/websocket/websocket.interface.d.ts.map +1 -0
- package/dist/websocket/websocket.interface.js +18 -0
- package/dist/websocket/websocket.interface.js.map +7 -0
- package/package.json +159 -0
- package/pxl.js +4 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/websocket/websocket-room-manager.ts"],
|
|
4
|
+
"sourcesContent": ["import cluster from 'cluster';\nimport { log } from './utils.js';\nimport type WebSocketClientManager from './websocket-client-manager.js';\n\nexport default class WebSocketRoomManager {\n private clientManager: WebSocketClientManager;\n\n public rooms: Map<string, Set<string>> = new Map();\n\n constructor({ clientManager }: { clientManager: WebSocketClientManager }) {\n this.clientManager = clientManager;\n }\n\n public addClientToRoom({\n clientId,\n user,\n roomName,\n broadcast,\n }: {\n clientId: string;\n user: any;\n roomName: string;\n broadcast?: boolean;\n }) {\n // Check if room exists\n if (!this.rooms.has(roomName)) {\n // Create room\n this.rooms.set(roomName, new Set());\n }\n\n // Get room from room name\n const room = this.rooms.get(roomName);\n\n if (!room) {\n log('Room not found when adding client', { Name: roomName });\n\n return;\n }\n\n // Add client to room\n room.add(clientId);\n\n // Set room name in client manager\n this.clientManager.updateClient({\n clientId,\n key: 'roomName',\n data: roomName,\n });\n\n if (broadcast !== false) {\n this.clientManager.broadcastClientList('clientAddedToRoom');\n }\n\n this.printRooms();\n\n log('Client joined room', {\n 'User Type': user?.userType ?? '-',\n Room: roomName,\n ID: clientId,\n Email: user.email ?? '-',\n });\n }\n\n public removeClientFromRoom({\n roomName,\n clientId,\n broadcast,\n }: {\n roomName: string;\n clientId: string;\n broadcast?: boolean;\n }) {\n // Get room from room name\n const room = this.rooms.get(roomName);\n\n if (!room) {\n log('Room not found when removing client', { Name: roomName });\n\n return;\n }\n\n // Get clients in room\n const clientsInRoom = this.rooms.get(roomName);\n\n if (!clientsInRoom) {\n return;\n }\n\n // Remove client from room list\n clientsInRoom.delete(clientId);\n\n // Check if there are no clients in the room\n if (clientsInRoom.size === 0) {\n // Delete room\n this.rooms.delete(roomName);\n }\n\n // Set room name in client manager\n this.clientManager.updateClient({\n clientId,\n key: 'roomName',\n data: null,\n });\n\n if (broadcast !== false) {\n this.clientManager.broadcastClientList('clientRemovedFromRoom');\n }\n\n this.printRooms();\n\n log('Client left room', { Room: roomName, ID: clientId });\n }\n\n public removeClientFromAllRooms({ clientId }: { clientId: string }) {\n this.rooms.forEach((clientsInRoom, room) => {\n if (!clientsInRoom.has(clientId)) {\n return;\n }\n\n this.removeClientFromRoom({ roomName: room, clientId, broadcast: false });\n });\n\n this.clientManager.broadcastClientList('clientRemovedFromAllRooms');\n\n this.printRooms();\n }\n\n public isClientInRoom({ clientId, roomName }: { clientId: string; roomName: string }) {\n // Get clients in room\n const clientsInRoom = this.rooms.get(roomName);\n\n if (!clientsInRoom) {\n return false;\n }\n\n // Check if client is in room\n return clientsInRoom.has(clientId);\n }\n\n public printRooms() {\n const numRooms = this.rooms.size;\n\n let logOutput = '\\n-------------------------------------------------------\\n';\n logOutput += `Rooms (Count: ${numRooms}):\\n`;\n logOutput += '-------------------------------------------------------\\n';\n\n if (numRooms > 0) {\n const workerId = cluster.isWorker && cluster.worker ? cluster.worker.id : null;\n\n // Loop through all rooms\n let roomNumber = 1;\n\n this.rooms.forEach((clientsInRoom, room) => {\n const numClientsInRoom = clientsInRoom.size;\n\n logOutput += `Room ${roomNumber} (Name: ${room} | Clients: ${numClientsInRoom}${workerId ? ` | Worker: ${workerId}` : ''}):\\n`;\n logOutput += ' Clients:\\n';\n\n // Loop through all clients in room\n clientsInRoom.forEach(clientId => {\n const client = this.clientManager.getClient({ clientId });\n\n logOutput += ` Client (ID: ${clientId} | Username: ${client?.user?.username ?? '-'} | User Type: ${client?.user?.userType ?? '-'} | Email: ${client?.user?.email ?? '-'})\\n`;\n });\n\n roomNumber++;\n });\n } else {\n logOutput += 'No rooms\\n';\n }\n\n logOutput += '\\n';\n\n log(logOutput);\n }\n\n public getRoomClients({ roomName }: { roomName: string }): string[] {\n const room = this.rooms.get(roomName);\n return room ? Array.from(room) : [];\n }\n\n public cleanup(): void {\n // Clear all rooms\n this.rooms.clear();\n log('WebSocket room manager cleaned up');\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { WebSocketServer as WS, WebSocket } from 'ws';
|
|
2
|
+
import { type WebSocketRoute, type WebSocketType } from './websocket.interface.js';
|
|
3
|
+
import type RedisInstance from '../redis/instance.js';
|
|
4
|
+
import type QueueManager from '../queue/manager.js';
|
|
5
|
+
import type DatabaseInstance from '../database/instance.js';
|
|
6
|
+
import type { WebSocketServerProps } from './websocket-server.interface.js';
|
|
7
|
+
import WebSocketClientManager from './websocket-client-manager.js';
|
|
8
|
+
import WebSocketBase from './websocket-base.js';
|
|
9
|
+
import type { FastifyInstance } from 'fastify';
|
|
10
|
+
export default class WebSocketServer extends WebSocketBase {
|
|
11
|
+
protected defaultRoutes: WebSocketRoute[];
|
|
12
|
+
private server?;
|
|
13
|
+
private checkConnectedClientsInterval?;
|
|
14
|
+
private workerId;
|
|
15
|
+
private uniqueInstanceId;
|
|
16
|
+
private applicationConfig;
|
|
17
|
+
private options;
|
|
18
|
+
clientManager: WebSocketClientManager;
|
|
19
|
+
private roomManager;
|
|
20
|
+
get rooms(): Map<string, Set<string>>;
|
|
21
|
+
private redisInstance;
|
|
22
|
+
private queueManager;
|
|
23
|
+
private databaseInstance;
|
|
24
|
+
/** Redis subscriber events */
|
|
25
|
+
private redisSubscriberEvents;
|
|
26
|
+
constructor(props: WebSocketServerProps);
|
|
27
|
+
get type(): WebSocketType;
|
|
28
|
+
private validateWebSocketAuth;
|
|
29
|
+
load(): Promise<void>;
|
|
30
|
+
start({ fastifyServer }: {
|
|
31
|
+
fastifyServer: FastifyInstance;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
server: WS;
|
|
34
|
+
}>;
|
|
35
|
+
stop(): Promise<void>;
|
|
36
|
+
protected getControllerDependencies(): {
|
|
37
|
+
webSocketServer: WebSocketServer;
|
|
38
|
+
redisInstance: RedisInstance;
|
|
39
|
+
queueManager: QueueManager;
|
|
40
|
+
databaseInstance: DatabaseInstance;
|
|
41
|
+
};
|
|
42
|
+
protected shouldPrintRoutes(): boolean;
|
|
43
|
+
private handleServerStart;
|
|
44
|
+
/**
|
|
45
|
+
* Handle subscriber message.
|
|
46
|
+
*/
|
|
47
|
+
private handleSubscriberMessage;
|
|
48
|
+
private handleServerError;
|
|
49
|
+
private handleServerClientConnection;
|
|
50
|
+
leaveRoom({ ws, roomName }: {
|
|
51
|
+
ws: WebSocket;
|
|
52
|
+
roomName: string;
|
|
53
|
+
}): void;
|
|
54
|
+
private onClientConnect;
|
|
55
|
+
private onClientDisconnect;
|
|
56
|
+
private handleServerClientDisconnection;
|
|
57
|
+
private handleClientMessage;
|
|
58
|
+
protected handleMessageError(clientId: string, error: string): void;
|
|
59
|
+
private checkInactiveClients;
|
|
60
|
+
broadcastToAllClients({ data, excludeClientId, }: {
|
|
61
|
+
data: {
|
|
62
|
+
[key: string]: any;
|
|
63
|
+
};
|
|
64
|
+
excludeClientId?: string;
|
|
65
|
+
}): void;
|
|
66
|
+
sendMessageError({ webSocketClientId, error }: {
|
|
67
|
+
webSocketClientId: string;
|
|
68
|
+
error: string;
|
|
69
|
+
}): void;
|
|
70
|
+
private onJoinRoom;
|
|
71
|
+
joinRoom({ ws, userId, userType, username, roomName, }: {
|
|
72
|
+
ws: WebSocket;
|
|
73
|
+
userId?: number;
|
|
74
|
+
userType?: string;
|
|
75
|
+
username?: string;
|
|
76
|
+
roomName: string;
|
|
77
|
+
}): Promise<true | undefined>;
|
|
78
|
+
sendClientMessage: (ws: WebSocket, data: unknown, binary?: boolean) => void;
|
|
79
|
+
sendMessage: ({ data }: {
|
|
80
|
+
data: unknown;
|
|
81
|
+
}) => void;
|
|
82
|
+
sendMessageToAll: ({ data }: {
|
|
83
|
+
data: unknown;
|
|
84
|
+
}) => void;
|
|
85
|
+
sendCustomMessage: ({ data }: {
|
|
86
|
+
data: unknown;
|
|
87
|
+
}) => void;
|
|
88
|
+
getClients({ userType }: {
|
|
89
|
+
userType?: string;
|
|
90
|
+
}): any[];
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=websocket-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-server.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpE,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,sBAAsB,MAAM,+BAA+B,CAAC;AAEnE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAMhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,aAAa;IACxD,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAWvC;IAEF,OAAO,CAAC,MAAM,CAAC,CAAK;IAEpB,OAAO,CAAC,6BAA6B,CAAC,CAAiC;IACvE,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,OAAO,CAAmB;IAC3B,aAAa,yBAAgC;IACpD,OAAO,CAAC,WAAW,CAEhB;IAEH,IAAW,KAAK,6BAEf;IACD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,8BAA8B;IAC9B,OAAO,CAAC,qBAAqB,CAY3B;gBAEU,KAAK,EAAE,oBAAoB;IAavC,IAAW,IAAI,IAAI,aAAa,CAE/B;YAEa,qBAAqB;IAoCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,KAAK,CAAC,EAAE,aAAa,EAAE,EAAE;QAAE,aAAa,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,EAAE,CAAA;KAAE,CAAC;IA4CrF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsClC,SAAS,CAAC,yBAAyB,IAAI;QACrC,eAAe,EAAE,eAAe,CAAC;QACjC,aAAa,EAAE,aAAa,CAAC;QAC7B,YAAY,EAAE,YAAY,CAAC;QAC3B,gBAAgB,EAAE,gBAAgB,CAAC;KACpC;IASD,SAAS,CAAC,iBAAiB,IAAI,OAAO;IAItC,OAAO,CAAC,iBAAiB,CA+BvB;IAEF;;OAEG;IACH,OAAO,CAAC,uBAAuB,CAsJ7B;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,4BAA4B,CAmDlC;IAEK,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAgD7E,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,+BAA+B,CAwBrC;IAEF,OAAO,CAAC,mBAAmB,CAmCzB;IAEF,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWnE,OAAO,CAAC,oBAAoB;IAoFrB,qBAAqB,CAAC,EAC3B,IAAI,EACJ,eAAe,GAChB,EAAE;QACD,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,IAAI;IAwBD,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAwCzG,OAAO,CAAC,UAAU;IAyCL,QAAQ,CAAC,EACpB,EAAE,EACF,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;QACD,EAAE,EAAE,SAAS,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAoHM,iBAAiB,GAAI,IAAI,SAAS,EAAE,MAAM,OAAO,EAAE,SAAQ,OAAe,KAAG,IAAI,CAItF;IAEK,WAAW,GAAI,UAAU;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAG,IAAI,CAUtD;IAEK,gBAAgB,GAAI,UAAU;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAG,IAAI,CAU3D;IAEK,iBAAiB,GAAI,UAAU;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,KAAG,IAAI,CAS5D;IAEK,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,GAAG,EAAE;CAG9D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApplicationConfig } from '../application/base-application.interface.js';
|
|
2
|
+
import type DatabaseInstance from '../database/instance.js';
|
|
3
|
+
import type QueueManager from '../queue/manager.js';
|
|
4
|
+
import type { RedisInstance } from '../redis/index.js';
|
|
5
|
+
import type { WebSocketOptions, WebSocketRoute } from './websocket.interface.js';
|
|
6
|
+
export interface WebSocketServerProps {
|
|
7
|
+
uniqueInstanceId: string;
|
|
8
|
+
applicationConfig: ApplicationConfig;
|
|
9
|
+
options: WebSocketOptions;
|
|
10
|
+
redisInstance: RedisInstance;
|
|
11
|
+
queueManager: QueueManager;
|
|
12
|
+
databaseInstance: DatabaseInstance;
|
|
13
|
+
routes: WebSocketRoute[];
|
|
14
|
+
workerId: number | null;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=websocket-server.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-server.interface.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-server.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=websocket-server.interface.js.map
|