@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,87 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import WebSocketServerBaseController from "../../controller/server/base.js";
|
|
4
|
+
import { Logger } from "../../../logger/index.js";
|
|
5
|
+
class SystemController extends WebSocketServerBaseController {
|
|
6
|
+
static {
|
|
7
|
+
__name(this, "SystemController");
|
|
8
|
+
}
|
|
9
|
+
joinRoom = /* @__PURE__ */ __name((clientWebSocket, webSocketClientId, data) => {
|
|
10
|
+
const userId = data.userId ?? webSocketClientId;
|
|
11
|
+
const userType = data.userType ?? "user";
|
|
12
|
+
const username = data.username ?? `user_${webSocketClientId.substring(0, 8)}`;
|
|
13
|
+
const roomName = data.roomName;
|
|
14
|
+
if (!roomName) {
|
|
15
|
+
return {
|
|
16
|
+
success: false,
|
|
17
|
+
error: "Room name is required",
|
|
18
|
+
clientId: webSocketClientId
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
this.webSocketServer.joinRoom({
|
|
23
|
+
ws: clientWebSocket,
|
|
24
|
+
userId,
|
|
25
|
+
userType,
|
|
26
|
+
username,
|
|
27
|
+
roomName
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
success: true,
|
|
31
|
+
message: `Successfully joined room: ${roomName}`,
|
|
32
|
+
data: {
|
|
33
|
+
userId,
|
|
34
|
+
userType,
|
|
35
|
+
username,
|
|
36
|
+
roomName,
|
|
37
|
+
joinedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
} catch (error) {
|
|
41
|
+
Logger.error({ error, message: "Failed to join room via system controller" });
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
error: "Failed to join room",
|
|
45
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
46
|
+
clientId: webSocketClientId
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}, "joinRoom");
|
|
50
|
+
leaveRoom = /* @__PURE__ */ __name((clientWebSocket, webSocketClientId, data) => {
|
|
51
|
+
const roomName = data.roomName;
|
|
52
|
+
if (!roomName) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
error: "Room name is required",
|
|
56
|
+
clientId: webSocketClientId
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
this.webSocketServer.leaveRoom({
|
|
61
|
+
ws: clientWebSocket,
|
|
62
|
+
roomName
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
message: `Successfully left room: ${roomName}`,
|
|
67
|
+
data: {
|
|
68
|
+
roomName,
|
|
69
|
+
leftAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
70
|
+
},
|
|
71
|
+
clientId: webSocketClientId
|
|
72
|
+
};
|
|
73
|
+
} catch (error) {
|
|
74
|
+
Logger.error({ error, message: "Failed to leave room via system controller" });
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
error: "Failed to leave room",
|
|
78
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
79
|
+
clientId: webSocketClientId
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}, "leaveRoom");
|
|
83
|
+
}
|
|
84
|
+
export {
|
|
85
|
+
SystemController as default
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/websocket/controllers/server/system.ts"],
|
|
4
|
+
"sourcesContent": ["import type { WebSocket } from 'ws';\nimport WebSocketServerBaseController from '../../controller/server/base.js';\nimport logger from '../../../logger/logger.js';\nimport { Logger } from '../../../logger/index.js';\n\nexport default class SystemController extends WebSocketServerBaseController {\n public joinRoom = (clientWebSocket: WebSocket, webSocketClientId: string, data: any): any => {\n const userId = data.userId ?? webSocketClientId;\n const userType = data.userType ?? 'user';\n const username = data.username ?? `user_${webSocketClientId.substring(0, 8)}`;\n const roomName = data.roomName;\n\n if (!roomName) {\n return {\n success: false,\n error: 'Room name is required',\n clientId: webSocketClientId,\n };\n }\n\n try {\n // Join room\n this.webSocketServer.joinRoom({\n ws: clientWebSocket,\n userId,\n userType,\n username,\n roomName,\n });\n\n return {\n success: true,\n message: `Successfully joined room: ${roomName}`,\n data: {\n userId,\n userType,\n username,\n roomName,\n joinedAt: new Date().toISOString(),\n },\n };\n } catch (error) {\n Logger.error({ error, message: 'Failed to join room via system controller' });\n\n return {\n success: false,\n error: 'Failed to join room',\n message: error instanceof Error ? error.message : 'Unknown error',\n clientId: webSocketClientId,\n };\n }\n };\n\n public leaveRoom = (clientWebSocket: WebSocket, webSocketClientId: string, data: any): any => {\n const roomName = data.roomName;\n\n if (!roomName) {\n return {\n success: false,\n error: 'Room name is required',\n clientId: webSocketClientId,\n };\n }\n\n try {\n // Leave room\n this.webSocketServer.leaveRoom({\n ws: clientWebSocket,\n roomName,\n });\n\n return {\n success: true,\n message: `Successfully left room: ${roomName}`,\n data: {\n roomName,\n leftAt: new Date().toISOString(),\n },\n clientId: webSocketClientId,\n };\n } catch (error) {\n Logger.error({ error, message: 'Failed to leave room via system controller' });\n\n return {\n success: false,\n error: 'Failed to leave room',\n message: error instanceof Error ? error.message : 'Unknown error',\n clientId: webSocketClientId,\n };\n }\n };\n}\n"],
|
|
5
|
+
"mappings": ";;AACA,OAAO,mCAAmC;AAE1C,SAAS,cAAc;AAEvB,MAAO,yBAAuC,8BAA8B;AAAA,EAL5E,OAK4E;AAAA;AAAA;AAAA,EACnE,WAAW,wBAAC,iBAA4B,mBAA2B,SAAmB;AAC3F,UAAM,SAAS,KAAK,UAAU;AAC9B,UAAM,WAAW,KAAK,YAAY;AAClC,UAAM,WAAW,KAAK,YAAY,QAAQ,kBAAkB,UAAU,GAAG,CAAC,CAAC;AAC3E,UAAM,WAAW,KAAK;AAEtB,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,QAAI;AAEF,WAAK,gBAAgB,SAAS;AAAA,QAC5B,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS,6BAA6B,QAAQ;AAAA,QAC9C,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,QACnC;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,4CAA4C,CAAC;AAE5E,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAClD,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF,GA7CkB;AAAA,EA+CX,YAAY,wBAAC,iBAA4B,mBAA2B,SAAmB;AAC5F,UAAM,WAAW,KAAK;AAEtB,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,QAAI;AAEF,WAAK,gBAAgB,UAAU;AAAA,QAC7B,IAAI;AAAA,QACJ;AAAA,MACF,CAAC;AAED,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS,2BAA2B,QAAQ;AAAA,QAC5C,MAAM;AAAA,UACJ;AAAA,UACA,SAAQ,oBAAI,KAAK,GAAE,YAAY;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,IACF,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,6CAA6C,CAAC;AAE7E,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAClD,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF,GArCmB;AAsCrB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { WebSocketRoute } from './websocket.interface.js';
|
|
2
|
+
export { WebSocketRedisSubscriberEvent } from './websocket.interface.js';
|
|
3
|
+
export { default as WebSocketServerBaseController } from './controller/server/base.js';
|
|
4
|
+
export { default as WebSocketClientBaseController } from './controller/client/base.js';
|
|
5
|
+
export { WebSocketService } from './websocket-service.js';
|
|
6
|
+
export type { WebSocketMessage, WebSocketServiceOptions } from './websocket-service.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/websocket/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WebSocketRedisSubscriberEvent } from "./websocket.interface.js";
|
|
2
|
+
import { default as default2 } from "./controller/server/base.js";
|
|
3
|
+
import { default as default3 } from "./controller/client/base.js";
|
|
4
|
+
import { WebSocketService } from "./websocket-service.js";
|
|
5
|
+
export {
|
|
6
|
+
default3 as WebSocketClientBaseController,
|
|
7
|
+
WebSocketRedisSubscriberEvent,
|
|
8
|
+
default2 as WebSocketServerBaseController,
|
|
9
|
+
WebSocketService
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/websocket/index.ts"],
|
|
4
|
+
"sourcesContent": ["export type { WebSocketRoute } from './websocket.interface.js';\nexport { WebSocketRedisSubscriberEvent } from './websocket.interface.js';\nexport { default as WebSocketServerBaseController } from './controller/server/base.js';\nexport { default as WebSocketClientBaseController } from './controller/client/base.js';\nexport { WebSocketService } from './websocket-service.js';\nexport type { WebSocketMessage, WebSocketServiceOptions } from './websocket-service.js';\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,qCAAqC;AAC9C,SAAoB,WAAXA,gBAAgD;AACzD,SAAoB,WAAXA,gBAAgD;AACzD,SAAS,wBAAwB;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/routes/client/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,eAAO,MAAM,2BAA2B,EAAE,cAAc,EAMvD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/websocket/routes/client/system.ts"],
|
|
4
|
+
"sourcesContent": ["import type { WebSocketRoute } from '../../websocket.interface.js';\n\nexport const webSocketSystemClientRoutes: WebSocketRoute[] = [\n {\n type: 'system',\n action: 'clientList',\n controllerName: 'system',\n },\n];\n"],
|
|
5
|
+
"mappings": "AAEO,MAAM,8BAAgD;AAAA,EAC3D;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,EAClB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/routes/server/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,eAAO,MAAM,2BAA2B,EAAE,cAAc,EAWvD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const webSocketSystemClientRoutes = [
|
|
2
|
+
{
|
|
3
|
+
type: "system",
|
|
4
|
+
action: "joinRoom",
|
|
5
|
+
controllerName: "system"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
type: "system",
|
|
9
|
+
action: "leaveRoom",
|
|
10
|
+
controllerName: "system"
|
|
11
|
+
}
|
|
12
|
+
];
|
|
13
|
+
export {
|
|
14
|
+
webSocketSystemClientRoutes
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/websocket/routes/server/system.ts"],
|
|
4
|
+
"sourcesContent": ["import type { WebSocketRoute } from '../../websocket.interface.js';\n\nexport const webSocketSystemClientRoutes: WebSocketRoute[] = [\n {\n type: 'system',\n action: 'joinRoom',\n controllerName: 'system',\n },\n {\n type: 'system',\n action: 'leaveRoom',\n controllerName: 'system',\n },\n];\n"],
|
|
5
|
+
"mappings": "AAEO,MAAM,8BAAgD;AAAA,EAC3D;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,EAClB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,gBAAgB;AAAA,EAClB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type WebSocket from 'ws';
|
|
2
|
+
export interface LogOptions {
|
|
3
|
+
muteWorker?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function generateClientId(): string;
|
|
6
|
+
export declare function log(message: string, meta?: Record<string, unknown>, options?: LogOptions): void;
|
|
7
|
+
export declare function parseServerMessage(message: WebSocket.Data): Record<string, unknown>;
|
|
8
|
+
export declare function getRouteKey(type: string, action: string): string;
|
|
9
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/websocket/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAGhC,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAE/F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBnF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { Logger } from "../logger/index.js";
|
|
4
|
+
function generateClientId() {
|
|
5
|
+
return Math.random().toString(36).substr(2, 9);
|
|
6
|
+
}
|
|
7
|
+
__name(generateClientId, "generateClientId");
|
|
8
|
+
function log(message, meta, options) {
|
|
9
|
+
Logger.custom({ level: "webSocket", message, meta, options });
|
|
10
|
+
}
|
|
11
|
+
__name(log, "log");
|
|
12
|
+
function parseServerMessage(message) {
|
|
13
|
+
let parsedMessage;
|
|
14
|
+
try {
|
|
15
|
+
parsedMessage = JSON.parse(message.toString());
|
|
16
|
+
} catch {
|
|
17
|
+
throw new Error("Failed to parse JSON");
|
|
18
|
+
}
|
|
19
|
+
if (!parsedMessage) {
|
|
20
|
+
throw new Error("Invalid WebSocket message");
|
|
21
|
+
} else if (!parsedMessage.type) {
|
|
22
|
+
throw new Error("Missing WebSocket message type");
|
|
23
|
+
} else if (!parsedMessage.action) {
|
|
24
|
+
throw new Error("Missing WebSocket message action");
|
|
25
|
+
}
|
|
26
|
+
return parsedMessage;
|
|
27
|
+
}
|
|
28
|
+
__name(parseServerMessage, "parseServerMessage");
|
|
29
|
+
function getRouteKey(type, action) {
|
|
30
|
+
return `${type}:${action}`;
|
|
31
|
+
}
|
|
32
|
+
__name(getRouteKey, "getRouteKey");
|
|
33
|
+
export {
|
|
34
|
+
generateClientId,
|
|
35
|
+
getRouteKey,
|
|
36
|
+
log,
|
|
37
|
+
parseServerMessage
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/websocket/utils.ts"],
|
|
4
|
+
"sourcesContent": ["import type WebSocket from 'ws';\nimport { Logger } from '../logger/index.js';\n\nexport interface LogOptions {\n muteWorker?: boolean;\n}\n\nexport function generateClientId(): string {\n return Math.random().toString(36).substr(2, 9);\n}\n\nexport function log(message: string, meta?: Record<string, unknown>, options?: LogOptions): void {\n Logger.custom({ level: 'webSocket', message, meta, options });\n}\n\nexport function parseServerMessage(message: WebSocket.Data): Record<string, unknown> {\n let parsedMessage;\n\n try {\n parsedMessage = JSON.parse(message.toString());\n } catch {\n throw new Error('Failed to parse JSON');\n }\n\n if (!parsedMessage) {\n throw new Error('Invalid WebSocket message');\n } else if (!parsedMessage.type) {\n throw new Error('Missing WebSocket message type');\n } else if (!parsedMessage.action) {\n throw new Error('Missing WebSocket message action');\n }\n\n return parsedMessage;\n}\n\nexport function getRouteKey(type: string, action: string): string {\n return `${type}:${action}`;\n}\n"],
|
|
5
|
+
"mappings": ";;AACA,SAAS,cAAc;AAMhB,SAAS,mBAA2B;AACzC,SAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AAC/C;AAFgB;AAIT,SAAS,IAAI,SAAiB,MAAgC,SAA4B;AAC/F,SAAO,OAAO,EAAE,OAAO,aAAa,SAAS,MAAM,QAAQ,CAAC;AAC9D;AAFgB;AAIT,SAAS,mBAAmB,SAAkD;AACnF,MAAI;AAEJ,MAAI;AACF,oBAAgB,KAAK,MAAM,QAAQ,SAAS,CAAC;AAAA,EAC/C,QAAQ;AACN,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C,WAAW,CAAC,cAAc,MAAM;AAC9B,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD,WAAW,CAAC,cAAc,QAAQ;AAChC,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAEA,SAAO;AACT;AAlBgB;AAoBT,SAAS,YAAY,MAAc,QAAwB;AAChE,SAAO,GAAG,IAAI,IAAI,MAAM;AAC1B;AAFgB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WebSocketMessageHandler, WebSocketRoute, WebSocketType } from './websocket.interface.js';
|
|
2
|
+
import type WebSocket from 'ws';
|
|
3
|
+
export default abstract class WebSocketBase {
|
|
4
|
+
protected routes: WebSocketRoute[];
|
|
5
|
+
protected routeHandlers: Map<string, WebSocketMessageHandler>;
|
|
6
|
+
protected defaultRoutes: WebSocketRoute[];
|
|
7
|
+
abstract get type(): WebSocketType;
|
|
8
|
+
protected abstract getControllerDependencies(): any;
|
|
9
|
+
protected abstract shouldPrintRoutes(): boolean;
|
|
10
|
+
protected abstract handleMessageError(clientId: string, error: string): void;
|
|
11
|
+
protected configureRoutes(routes: WebSocketRoute[], controllersDirectory: string): Promise<void>;
|
|
12
|
+
protected handleServerMessage(ws: WebSocket, message: WebSocket.Data, clientId: string): Promise<void | any>;
|
|
13
|
+
protected printRoutes(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=websocket-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-base.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIvG,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAGhC,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IACzC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,CAAM;IACxC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAa;IAE1E,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,CAAM;IAE/C,aAAoB,IAAI,IAAI,aAAa,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,yBAAyB,IAAI,GAAG;IACnD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO;IAC/C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;cAE5D,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAsEtF,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;IAuDlH,SAAS,CAAC,WAAW,IAAI,IAAI;CAiB9B"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { existsSync } from "fs";
|
|
4
|
+
import { getRouteKey, log, parseServerMessage } from "./utils.js";
|
|
5
|
+
import { Helper, Loader } from "../util/index.js";
|
|
6
|
+
class WebSocketBase {
|
|
7
|
+
static {
|
|
8
|
+
__name(this, "WebSocketBase");
|
|
9
|
+
}
|
|
10
|
+
routes = [];
|
|
11
|
+
routeHandlers = /* @__PURE__ */ new Map();
|
|
12
|
+
defaultRoutes = [];
|
|
13
|
+
async configureRoutes(routes, controllersDirectory) {
|
|
14
|
+
const controllersDirectoryExists = await existsSync(controllersDirectory);
|
|
15
|
+
if (!controllersDirectoryExists) {
|
|
16
|
+
log("Controllers directory not found", {
|
|
17
|
+
Directory: controllersDirectory
|
|
18
|
+
});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const scriptFileExtension = Helper.getScriptFileExtension();
|
|
22
|
+
const controllers = await Loader.loadModulesInDirectory({
|
|
23
|
+
directory: controllersDirectory,
|
|
24
|
+
// NOTE:
|
|
25
|
+
// When getting "system", it gets /app/node_modules/@pxl/nodejs-framework/dist/websocket/controllers/server
|
|
26
|
+
// Therefor .js is needed also
|
|
27
|
+
// Fix so only .ts vs .js is needed
|
|
28
|
+
extensions: [".ts", ".js"]
|
|
29
|
+
});
|
|
30
|
+
for (const route of routes) {
|
|
31
|
+
let ControllerClass;
|
|
32
|
+
if (route.controller) {
|
|
33
|
+
ControllerClass = route.controller;
|
|
34
|
+
} else if (route.controllerName) {
|
|
35
|
+
ControllerClass = controllers[route.controllerName];
|
|
36
|
+
} else {
|
|
37
|
+
throw new Error("WebSocket controller config not found");
|
|
38
|
+
}
|
|
39
|
+
if (typeof ControllerClass !== "function") {
|
|
40
|
+
log("Controller not found", {
|
|
41
|
+
Controller: route.controllerName,
|
|
42
|
+
Path: `${controllersDirectory}/${route.controllerName}.${scriptFileExtension}`
|
|
43
|
+
});
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const controllerDependencies = this.getControllerDependencies();
|
|
47
|
+
const controllerInstance = new ControllerClass(controllerDependencies);
|
|
48
|
+
const controllerHandler = controllerInstance[route.action];
|
|
49
|
+
const routeKey = getRouteKey(route.type, route.action);
|
|
50
|
+
this.routeHandlers.set(routeKey, controllerHandler);
|
|
51
|
+
}
|
|
52
|
+
if (this.shouldPrintRoutes()) {
|
|
53
|
+
log("Routes:", { Type: this.type });
|
|
54
|
+
this.printRoutes();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async handleServerMessage(ws, message, clientId) {
|
|
58
|
+
try {
|
|
59
|
+
const parsedMessage = parseServerMessage(message);
|
|
60
|
+
const type = parsedMessage.type;
|
|
61
|
+
const action = parsedMessage.action;
|
|
62
|
+
log("Incoming message", {
|
|
63
|
+
"Client ID": clientId,
|
|
64
|
+
Type: type ?? "-",
|
|
65
|
+
Action: action ?? "-"
|
|
66
|
+
});
|
|
67
|
+
const routeKey = getRouteKey(parsedMessage.type, parsedMessage.action);
|
|
68
|
+
const messageHandler = this.routeHandlers.get(routeKey);
|
|
69
|
+
if (messageHandler) {
|
|
70
|
+
const messageResponse = await messageHandler(ws, clientId, parsedMessage.data);
|
|
71
|
+
return {
|
|
72
|
+
type,
|
|
73
|
+
action,
|
|
74
|
+
response: messageResponse
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
log("Route handler not found", {
|
|
78
|
+
RouteKey: routeKey,
|
|
79
|
+
Type: type,
|
|
80
|
+
Action: action
|
|
81
|
+
});
|
|
82
|
+
} catch (error) {
|
|
83
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
84
|
+
log(errorMessage);
|
|
85
|
+
this.handleMessageError(clientId, errorMessage);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
printRoutes() {
|
|
89
|
+
let routesString = "";
|
|
90
|
+
const routeKeys = Array.from(this.routeHandlers.keys());
|
|
91
|
+
routeKeys.forEach((routeKey, index) => {
|
|
92
|
+
const [type, action] = routeKey.split(":");
|
|
93
|
+
routesString += `Type: ${type} -> Action: ${action}`;
|
|
94
|
+
if (index !== routeKeys.length - 1) {
|
|
95
|
+
routesString += "\n";
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
log(routesString);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export {
|
|
102
|
+
WebSocketBase as default
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=websocket-base.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/websocket/websocket-base.ts"],
|
|
4
|
+
"sourcesContent": ["import { existsSync } from 'fs';\nimport type { WebSocketMessageHandler, WebSocketRoute, WebSocketType } from './websocket.interface.js';\nimport { getRouteKey, log, parseServerMessage } from './utils.js';\nimport type { WebSocketServerBaseControllerType } from './controller/server/base.interface.js';\nimport type { WebSocketClientBaseControllerType } from './controller/client/base.interface.js';\nimport type WebSocket from 'ws';\nimport { Helper, Loader } from '../util/index.js';\n\nexport default abstract class WebSocketBase {\n protected routes: WebSocketRoute[] = [];\n protected routeHandlers: Map<string, WebSocketMessageHandler> = new Map();\n\n protected defaultRoutes: WebSocketRoute[] = [];\n\n public abstract get type(): WebSocketType;\n\n protected abstract getControllerDependencies(): any;\n protected abstract shouldPrintRoutes(): boolean;\n protected abstract handleMessageError(clientId: string, error: string): void;\n\n protected async configureRoutes(routes: WebSocketRoute[], controllersDirectory: string): Promise<void> {\n // log ('Configuring routes', { Type: this.type, 'Controllers Directory': controllersDirectory });\n\n const controllersDirectoryExists = await existsSync(controllersDirectory);\n\n if (!controllersDirectoryExists) {\n log('Controllers directory not found', {\n Directory: controllersDirectory,\n });\n\n return;\n }\n\n const scriptFileExtension = Helper.getScriptFileExtension();\n\n // Load controllers\n const controllers = await Loader.loadModulesInDirectory({\n directory: controllersDirectory,\n // NOTE:\n // When getting \"system\", it gets /app/node_modules/@pxl/nodejs-framework/dist/websocket/controllers/server\n // Therefor .js is needed also\n // Fix so only .ts vs .js is needed\n extensions: ['.ts', '.js'],\n });\n\n for (const route of routes) {\n let ControllerClass: WebSocketServerBaseControllerType | WebSocketClientBaseControllerType;\n\n // log('Registering route', {\n // Type: route.type,\n // Controller: route.controller ? route.controller.toString() : route.controllerName,\n // Action: route.action,\n // });\n\n if (route.controller) {\n ControllerClass = route.controller;\n } else if (route.controllerName) {\n ControllerClass = controllers[route.controllerName];\n } else {\n throw new Error('WebSocket controller config not found');\n }\n\n if (typeof ControllerClass !== 'function') {\n log('Controller not found', {\n Controller: route.controllerName,\n Path: `${controllersDirectory}/${route.controllerName}.${scriptFileExtension}`,\n });\n\n continue;\n }\n\n const controllerDependencies = this.getControllerDependencies();\n\n const controllerInstance = new ControllerClass(controllerDependencies);\n\n const controllerHandler = controllerInstance[\n route.action as keyof typeof controllerInstance\n ] as WebSocketMessageHandler;\n const routeKey = getRouteKey(route.type, route.action);\n\n this.routeHandlers.set(routeKey, controllerHandler);\n }\n\n if (this.shouldPrintRoutes()) {\n log('Routes:', { Type: this.type });\n\n this.printRoutes();\n }\n }\n\n protected async handleServerMessage(ws: WebSocket, message: WebSocket.Data, clientId: string): Promise<void | any> {\n try {\n const parsedMessage = parseServerMessage(message);\n const type = parsedMessage.type;\n const action = parsedMessage.action;\n\n log('Incoming message', {\n 'Client ID': clientId,\n Type: type ?? '-',\n Action: action ?? '-',\n });\n\n const routeKey = getRouteKey(parsedMessage.type as string, parsedMessage.action as string);\n\n const messageHandler = this.routeHandlers.get(routeKey);\n\n if (messageHandler) {\n const messageResponse = await messageHandler(ws, clientId, parsedMessage.data);\n\n return {\n type,\n action,\n response: messageResponse,\n };\n }\n // throw new Error(`Route handler not found (Route Key: ${routeKey} | Type: ${type} | Action: ${action})`);\n\n log('Route handler not found', {\n RouteKey: routeKey,\n Type: type,\n Action: action,\n });\n\n // if (\n // typeof this.applicationConfig.webSocket\n // ?.serverMessageHandler === 'function'\n // ) {\n // // Execute custom application subscriber event handler\n // this.applicationConfig.webSocket.serverMessageHandler(\n // {\n // ws,\n // clientId,\n // parsedMessage,\n // },\n // );\n // }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n\n log(errorMessage);\n\n this.handleMessageError(clientId, errorMessage);\n }\n }\n\n protected printRoutes(): void {\n let routesString = '';\n\n const routeKeys = Array.from(this.routeHandlers.keys());\n\n routeKeys.forEach((routeKey, index) => {\n const [type, action] = routeKey.split(':');\n\n routesString += `Type: ${type} -> Action: ${action}`;\n\n if (index !== routeKeys.length - 1) {\n routesString += '\\n';\n }\n });\n\n log(routesString);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA,SAAS,kBAAkB;AAE3B,SAAS,aAAa,KAAK,0BAA0B;AAIrD,SAAS,QAAQ,cAAc;AAE/B,MAAO,cAAqC;AAAA,EAR5C,OAQ4C;AAAA;AAAA;AAAA,EAChC,SAA2B,CAAC;AAAA,EAC5B,gBAAsD,oBAAI,IAAI;AAAA,EAE9D,gBAAkC,CAAC;AAAA,EAQ7C,MAAgB,gBAAgB,QAA0B,sBAA6C;AAGrG,UAAM,6BAA6B,MAAM,WAAW,oBAAoB;AAExE,QAAI,CAAC,4BAA4B;AAC/B,UAAI,mCAAmC;AAAA,QACrC,WAAW;AAAA,MACb,CAAC;AAED;AAAA,IACF;AAEA,UAAM,sBAAsB,OAAO,uBAAuB;AAG1D,UAAM,cAAc,MAAM,OAAO,uBAAuB;AAAA,MACtD,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAKX,YAAY,CAAC,OAAO,KAAK;AAAA,IAC3B,CAAC;AAED,eAAW,SAAS,QAAQ;AAC1B,UAAI;AAQJ,UAAI,MAAM,YAAY;AACpB,0BAAkB,MAAM;AAAA,MAC1B,WAAW,MAAM,gBAAgB;AAC/B,0BAAkB,YAAY,MAAM,cAAc;AAAA,MACpD,OAAO;AACL,cAAM,IAAI,MAAM,uCAAuC;AAAA,MACzD;AAEA,UAAI,OAAO,oBAAoB,YAAY;AACzC,YAAI,wBAAwB;AAAA,UAC1B,YAAY,MAAM;AAAA,UAClB,MAAM,GAAG,oBAAoB,IAAI,MAAM,cAAc,IAAI,mBAAmB;AAAA,QAC9E,CAAC;AAED;AAAA,MACF;AAEA,YAAM,yBAAyB,KAAK,0BAA0B;AAE9D,YAAM,qBAAqB,IAAI,gBAAgB,sBAAsB;AAErE,YAAM,oBAAoB,mBACxB,MAAM,MACR;AACA,YAAM,WAAW,YAAY,MAAM,MAAM,MAAM,MAAM;AAErD,WAAK,cAAc,IAAI,UAAU,iBAAiB;AAAA,IACpD;AAEA,QAAI,KAAK,kBAAkB,GAAG;AAC5B,UAAI,WAAW,EAAE,MAAM,KAAK,KAAK,CAAC;AAElC,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,MAAgB,oBAAoB,IAAe,SAAyB,UAAuC;AACjH,QAAI;AACF,YAAM,gBAAgB,mBAAmB,OAAO;AAChD,YAAM,OAAO,cAAc;AAC3B,YAAM,SAAS,cAAc;AAE7B,UAAI,oBAAoB;AAAA,QACtB,aAAa;AAAA,QACb,MAAM,QAAQ;AAAA,QACd,QAAQ,UAAU;AAAA,MACpB,CAAC;AAED,YAAM,WAAW,YAAY,cAAc,MAAgB,cAAc,MAAgB;AAEzF,YAAM,iBAAiB,KAAK,cAAc,IAAI,QAAQ;AAEtD,UAAI,gBAAgB;AAClB,cAAM,kBAAkB,MAAM,eAAe,IAAI,UAAU,cAAc,IAAI;AAE7E,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,UAAU;AAAA,QACZ;AAAA,MACF;AAGA,UAAI,2BAA2B;AAAA,QAC7B,UAAU;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IAeH,SAAS,OAAO;AACd,YAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU;AAE9D,UAAI,YAAY;AAEhB,WAAK,mBAAmB,UAAU,YAAY;AAAA,IAChD;AAAA,EACF;AAAA,EAEU,cAAoB;AAC5B,QAAI,eAAe;AAEnB,UAAM,YAAY,MAAM,KAAK,KAAK,cAAc,KAAK,CAAC;AAEtD,cAAU,QAAQ,CAAC,UAAU,UAAU;AACrC,YAAM,CAAC,MAAM,MAAM,IAAI,SAAS,MAAM,GAAG;AAEzC,sBAAgB,SAAS,IAAI,eAAe,MAAM;AAElD,UAAI,UAAU,UAAU,SAAS,GAAG;AAClC,wBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AAED,QAAI,YAAY;AAAA,EAClB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import WebSocket from 'ws';
|
|
2
|
+
import type { WebSocketClientData } from './websocket-client-manager.interface.js';
|
|
3
|
+
export default class WebSocketClientManager {
|
|
4
|
+
private clients;
|
|
5
|
+
addClient({ clientId, ws, lastActivity, user, }: {
|
|
6
|
+
clientId: string;
|
|
7
|
+
ws: WebSocket | null;
|
|
8
|
+
lastActivity: number;
|
|
9
|
+
user?: {
|
|
10
|
+
userId: number;
|
|
11
|
+
payload: any;
|
|
12
|
+
} | null;
|
|
13
|
+
}): void;
|
|
14
|
+
getClientId({ ws }: {
|
|
15
|
+
ws: WebSocket;
|
|
16
|
+
}): string | undefined;
|
|
17
|
+
getClient({ clientId, requireWs, }: {
|
|
18
|
+
clientId: string;
|
|
19
|
+
requireWs?: boolean;
|
|
20
|
+
}): WebSocketClientData | undefined;
|
|
21
|
+
updateClient({ clientId, key, data, broadcastClientList, }: {
|
|
22
|
+
clientId: string;
|
|
23
|
+
key: string;
|
|
24
|
+
data: any;
|
|
25
|
+
broadcastClientList?: boolean;
|
|
26
|
+
}): void;
|
|
27
|
+
removeClient(clientId: string): void;
|
|
28
|
+
getClientList(): {
|
|
29
|
+
[key: string]: any;
|
|
30
|
+
clientId: string;
|
|
31
|
+
}[];
|
|
32
|
+
getClientByKey({ key, value, requireWs, userType, }: {
|
|
33
|
+
key: string;
|
|
34
|
+
value: string;
|
|
35
|
+
requireWs?: boolean;
|
|
36
|
+
userType?: string;
|
|
37
|
+
}): {
|
|
38
|
+
ws: WebSocket | null;
|
|
39
|
+
lastActivity: number;
|
|
40
|
+
roomName?: string;
|
|
41
|
+
clientId: string;
|
|
42
|
+
} | undefined;
|
|
43
|
+
getClients({ userType }?: {
|
|
44
|
+
userType?: string;
|
|
45
|
+
}): WebSocketClientData[];
|
|
46
|
+
disconnectClient({ clientId }: {
|
|
47
|
+
clientId: string;
|
|
48
|
+
}): void;
|
|
49
|
+
printClients(): void;
|
|
50
|
+
broadcastClientList(type: string): void;
|
|
51
|
+
cleanup(): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=websocket-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-client-manager.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client-manager.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAInF,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACzC,OAAO,CAAC,OAAO,CAA+C;IAEvD,SAAS,CAAC,EACf,QAAQ,EACR,EAAE,EACF,YAAY,EACZ,IAAI,GACL,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,GAAG,CAAA;SAAE,GAAG,IAAI,CAAC;KAChD;IAiBM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,SAAS,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS;IAI1D,SAAS,CAAC,EACf,QAAQ,EACR,SAAS,GACV,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,mBAAmB,GAAG,SAAS;IAU5B,YAAY,CAAC,EAClB,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,mBAAmB,GACpB,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC;QACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B;IA2CM,YAAY,CAAC,QAAQ,EAAE,MAAM;IAsB7B,aAAa;;kBAEN,MAAM;;IAcb,cAAc,CAAC,EACpB,GAAG,EACH,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;;;;;;IA6BM,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;IAgBnD,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE;IAwBnD,YAAY;IAwBZ,mBAAmB,CAAC,IAAI,EAAE,MAAM;IA0BhC,OAAO,IAAI,IAAI;CAsBvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-client-manager.interface.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client-manager.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=websocket-client-manager.interface.js.map
|