@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,347 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import Fastify from "fastify";
|
|
4
|
+
import cors from "@fastify/cors";
|
|
5
|
+
import multipart from "@fastify/multipart";
|
|
6
|
+
import {
|
|
7
|
+
WebServerRouteType
|
|
8
|
+
} from "./webserver.interface.js";
|
|
9
|
+
import { Logger } from "../logger/index.js";
|
|
10
|
+
import { Helper, Loader, Time } from "../util/index.js";
|
|
11
|
+
import WebServerUtil from "./util.js";
|
|
12
|
+
import { WebServerHealthController } from "../index.js";
|
|
13
|
+
import { existsSync } from "fs";
|
|
14
|
+
class WebServer {
|
|
15
|
+
static {
|
|
16
|
+
__name(this, "WebServer");
|
|
17
|
+
}
|
|
18
|
+
logger = Logger;
|
|
19
|
+
applicationConfig;
|
|
20
|
+
options;
|
|
21
|
+
routes;
|
|
22
|
+
redisInstance;
|
|
23
|
+
queueManager;
|
|
24
|
+
eventManager;
|
|
25
|
+
databaseInstance;
|
|
26
|
+
fastifyServer;
|
|
27
|
+
constructor(params) {
|
|
28
|
+
const defaultOptions = {
|
|
29
|
+
host: "0.0.0.0",
|
|
30
|
+
port: 3001,
|
|
31
|
+
cors: {
|
|
32
|
+
enabled: false
|
|
33
|
+
},
|
|
34
|
+
errors: {
|
|
35
|
+
verbose: false
|
|
36
|
+
},
|
|
37
|
+
debug: {
|
|
38
|
+
printRoutes: false,
|
|
39
|
+
simulateSlowConnection: {
|
|
40
|
+
enabled: false,
|
|
41
|
+
delay: 250
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
log: {
|
|
45
|
+
startUp: true
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const mergedOptions = Helper.defaultsDeep(params.options, defaultOptions);
|
|
49
|
+
this.applicationConfig = params.applicationConfig;
|
|
50
|
+
this.options = mergedOptions;
|
|
51
|
+
this.routes = params.routes;
|
|
52
|
+
this.redisInstance = params.redisInstance;
|
|
53
|
+
this.queueManager = params.queueManager;
|
|
54
|
+
this.eventManager = params.eventManager;
|
|
55
|
+
this.databaseInstance = params.databaseInstance;
|
|
56
|
+
this.fastifyServer = Fastify({
|
|
57
|
+
logger: false,
|
|
58
|
+
// body limit = 5gb
|
|
59
|
+
bodyLimit: 5 * 1024 * 1024 * 1024,
|
|
60
|
+
// 30 minutes
|
|
61
|
+
connectionTimeout: 30 * 60 * 1e3
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Load web server.
|
|
66
|
+
*/
|
|
67
|
+
async load() {
|
|
68
|
+
this.configureHooks();
|
|
69
|
+
this.configureCORS();
|
|
70
|
+
this.configureMultipartUploads();
|
|
71
|
+
await this.configureRoutes();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Configure hooks.
|
|
75
|
+
*/
|
|
76
|
+
configureHooks() {
|
|
77
|
+
this.fastifyServer.addHook("onListen", async () => this.onListen());
|
|
78
|
+
this.fastifyServer.addHook("onRequest", async (request) => this.onRequest(request));
|
|
79
|
+
this.fastifyServer.addHook("onResponse", async (request, reply) => this.onResponse(request, reply));
|
|
80
|
+
this.fastifyServer.addHook("onError", async (request, reply, error) => this.onError(request, reply, error));
|
|
81
|
+
this.fastifyServer.addHook("onClose", async () => this.onClose());
|
|
82
|
+
}
|
|
83
|
+
async onListen() {
|
|
84
|
+
const address = this.fastifyServer.server.address();
|
|
85
|
+
const port = typeof address === "string" ? address : address?.port;
|
|
86
|
+
if (this.options.log?.startUp) {
|
|
87
|
+
this.log("Started", {
|
|
88
|
+
Host: this.options.host,
|
|
89
|
+
Port: port,
|
|
90
|
+
// CORS: this.options.cors?.enabled && this.options.cors?..length > 0 ? this.options.corsUrls.join(', ') : 'Disabled',
|
|
91
|
+
CORS: this.options.cors?.enabled ? this.options.cors.urls.join(", ") : "Disabled",
|
|
92
|
+
"Fastify Version": this.fastifyServer.version
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async onRequest(request) {
|
|
97
|
+
if (this.options.debug?.simulateSlowConnection?.enabled && this.options.debug?.simulateSlowConnection?.delay && this.options.debug?.simulateSlowConnection?.delay > 0) {
|
|
98
|
+
await new Promise((resolve) => setTimeout(resolve, this.options.debug?.simulateSlowConnection?.delay));
|
|
99
|
+
}
|
|
100
|
+
const pathsToIgnore = ["/health"];
|
|
101
|
+
if (pathsToIgnore.includes(request.url) || request.method === "OPTIONS") {
|
|
102
|
+
} else {
|
|
103
|
+
request.startTime = process.hrtime();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async onResponse(request, reply) {
|
|
107
|
+
if (!request.startTime) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const executionTime = Time.calculateElapsedTime({
|
|
111
|
+
startTime: request.startTime
|
|
112
|
+
});
|
|
113
|
+
const formattedExecutionTime = Time.formatTime({
|
|
114
|
+
time: executionTime,
|
|
115
|
+
numDecimals: 3
|
|
116
|
+
});
|
|
117
|
+
const ip = request.headers["x-forwarded-for"] ?? request.ip;
|
|
118
|
+
const logParams = {
|
|
119
|
+
Method: request.method,
|
|
120
|
+
Path: request.url,
|
|
121
|
+
Status: reply.statusCode
|
|
122
|
+
};
|
|
123
|
+
if (process.env.NODE_ENV !== "local") {
|
|
124
|
+
logParams.IP = ip.toString();
|
|
125
|
+
}
|
|
126
|
+
logParams.Time = formattedExecutionTime;
|
|
127
|
+
this.log("API Request", logParams);
|
|
128
|
+
}
|
|
129
|
+
async onError(request, reply, error) {
|
|
130
|
+
Logger.error({ error });
|
|
131
|
+
}
|
|
132
|
+
async onClose() {
|
|
133
|
+
this.log("Stopped");
|
|
134
|
+
}
|
|
135
|
+
configureCORS() {
|
|
136
|
+
if (!this.options.cors?.enabled) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const origin = this.options.cors.urls.includes("*") ? true : this.options.cors.urls;
|
|
140
|
+
this.fastifyServer.register(cors, {
|
|
141
|
+
origin,
|
|
142
|
+
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
|
|
143
|
+
allowedHeaders: ["Content-Type", "Authorization"],
|
|
144
|
+
preflightContinue: false,
|
|
145
|
+
optionsSuccessStatus: 204
|
|
146
|
+
// credentials: true,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
configureMultipartUploads() {
|
|
150
|
+
this.fastifyServer.register(multipart, {
|
|
151
|
+
// attachFieldsToBody: true,
|
|
152
|
+
limits: {
|
|
153
|
+
fieldNameSize: 100,
|
|
154
|
+
fieldSize: 1024 * 1024 * 10,
|
|
155
|
+
fields: 10,
|
|
156
|
+
fileSize: 1024 * 1024 * 1024 * 10,
|
|
157
|
+
// 10GB file size limit
|
|
158
|
+
files: 1,
|
|
159
|
+
headerPairs: 2e3
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Configure routes.
|
|
165
|
+
*/
|
|
166
|
+
async configureRoutes() {
|
|
167
|
+
const controllersDirectoryExists = await existsSync(this.options.controllersDirectory);
|
|
168
|
+
if (!controllersDirectoryExists) {
|
|
169
|
+
Logger.warn({
|
|
170
|
+
message: "Web server controllers directory not found",
|
|
171
|
+
meta: {
|
|
172
|
+
Directory: this.options.controllersDirectory
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const controllers = await Loader.loadModulesInDirectory({
|
|
178
|
+
directory: this.options.controllersDirectory,
|
|
179
|
+
extensions: [".ts", ".js"]
|
|
180
|
+
});
|
|
181
|
+
this.routes.push({
|
|
182
|
+
type: WebServerRouteType.Default,
|
|
183
|
+
method: "GET",
|
|
184
|
+
path: "/health",
|
|
185
|
+
controller: WebServerHealthController,
|
|
186
|
+
action: "health"
|
|
187
|
+
});
|
|
188
|
+
for (const route of this.routes) {
|
|
189
|
+
let ControllerClass;
|
|
190
|
+
let controllerName;
|
|
191
|
+
if (route.controller) {
|
|
192
|
+
ControllerClass = route.controller;
|
|
193
|
+
controllerName = ControllerClass.name;
|
|
194
|
+
} else if (route.controllerName) {
|
|
195
|
+
ControllerClass = controllers[route.controllerName];
|
|
196
|
+
controllerName = route.controllerName;
|
|
197
|
+
} else {
|
|
198
|
+
throw new Error("Web server controller config not found");
|
|
199
|
+
}
|
|
200
|
+
if (typeof ControllerClass !== "function") {
|
|
201
|
+
const controllerPath = `${this.options.controllersDirectory}/${route.controllerName}.ts`;
|
|
202
|
+
Logger.warn({
|
|
203
|
+
message: "Web server controller not found",
|
|
204
|
+
meta: {
|
|
205
|
+
Controller: route.controllerName,
|
|
206
|
+
Path: controllerPath,
|
|
207
|
+
Route: `${route.path}`
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const controllerInstance = new ControllerClass({
|
|
213
|
+
applicationConfig: this.applicationConfig,
|
|
214
|
+
webServerOptions: this.options,
|
|
215
|
+
redisInstance: this.redisInstance,
|
|
216
|
+
queueManager: this.queueManager,
|
|
217
|
+
eventManager: this.eventManager,
|
|
218
|
+
databaseInstance: this.databaseInstance
|
|
219
|
+
});
|
|
220
|
+
let routeMethod;
|
|
221
|
+
let routeAction;
|
|
222
|
+
let routePath;
|
|
223
|
+
switch (route.type) {
|
|
224
|
+
case WebServerRouteType.Default: {
|
|
225
|
+
routeMethod = route.method;
|
|
226
|
+
routeAction = route.action;
|
|
227
|
+
routePath = route.path;
|
|
228
|
+
this.defineRoute({
|
|
229
|
+
controllerInstance,
|
|
230
|
+
controllerName,
|
|
231
|
+
routeMethod,
|
|
232
|
+
routePath,
|
|
233
|
+
routeAction,
|
|
234
|
+
routeValidation: route.validation
|
|
235
|
+
});
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
case WebServerRouteType.Entity: {
|
|
239
|
+
if (this.applicationConfig.database && this.applicationConfig.database.enabled === true) {
|
|
240
|
+
const entityModel = await Loader.loadEntityModule({
|
|
241
|
+
entitiesDirectory: this.applicationConfig.database.entitiesDirectory,
|
|
242
|
+
entityName: route.entityName
|
|
243
|
+
});
|
|
244
|
+
const entityValidationSchema = entityModel.schema?.describe();
|
|
245
|
+
const formattedEntityValidationSchema = entityValidationSchema ? {
|
|
246
|
+
type: "object",
|
|
247
|
+
properties: Object.fromEntries(
|
|
248
|
+
Object.entries(entityValidationSchema.keys).map(([key, value]) => [
|
|
249
|
+
key,
|
|
250
|
+
{ type: value.type }
|
|
251
|
+
])
|
|
252
|
+
),
|
|
253
|
+
required: Object.keys(entityValidationSchema.keys).filter(
|
|
254
|
+
(key) => entityValidationSchema.keys[key].flags?.presence === "required"
|
|
255
|
+
)
|
|
256
|
+
} : {};
|
|
257
|
+
const entityRouteDefinitions = WebServerUtil.getEntityRouteDefinitions({
|
|
258
|
+
basePath: route.path,
|
|
259
|
+
entityValidationSchema: formattedEntityValidationSchema
|
|
260
|
+
});
|
|
261
|
+
for (const entityRouteDefinition of entityRouteDefinitions) {
|
|
262
|
+
this.defineRoute({
|
|
263
|
+
controllerInstance,
|
|
264
|
+
controllerName,
|
|
265
|
+
routeMethod: entityRouteDefinition.method,
|
|
266
|
+
routePath: entityRouteDefinition.path,
|
|
267
|
+
routeAction: entityRouteDefinition.action,
|
|
268
|
+
routeValidation: entityRouteDefinition.validationSchema
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (this.options.debug?.printRoutes) {
|
|
277
|
+
this.log("Routes:");
|
|
278
|
+
console.log(this.fastifyServer.printRoutes());
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
async defineRoute({
|
|
282
|
+
controllerInstance,
|
|
283
|
+
controllerName,
|
|
284
|
+
routeMethod,
|
|
285
|
+
routePath,
|
|
286
|
+
routeAction,
|
|
287
|
+
routeValidation
|
|
288
|
+
}) {
|
|
289
|
+
const controllerHandler = controllerInstance[routeAction];
|
|
290
|
+
if (!controllerHandler) {
|
|
291
|
+
Logger.warn({
|
|
292
|
+
message: "Web server controller action not found",
|
|
293
|
+
meta: {
|
|
294
|
+
Controller: controllerName,
|
|
295
|
+
Action: routeAction
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
throw new Error("Web server controller action not found");
|
|
299
|
+
}
|
|
300
|
+
this.fastifyServer.route({
|
|
301
|
+
method: routeMethod,
|
|
302
|
+
url: routePath,
|
|
303
|
+
handler: controllerHandler,
|
|
304
|
+
preValidation: /* @__PURE__ */ __name(async (request, reply) => {
|
|
305
|
+
if (!routeValidation?.schema) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
const validate = request.compileValidationSchema(routeValidation.schema);
|
|
309
|
+
if (!validate(request[routeValidation.type])) {
|
|
310
|
+
return reply.code(400).send({
|
|
311
|
+
error: validate.errors
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}, "preValidation")
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Start web server.
|
|
319
|
+
*/
|
|
320
|
+
async start() {
|
|
321
|
+
try {
|
|
322
|
+
await this.fastifyServer.listen({
|
|
323
|
+
host: this.options.host,
|
|
324
|
+
port: this.options.port
|
|
325
|
+
});
|
|
326
|
+
} catch (error) {
|
|
327
|
+
Logger.error({ error });
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Stop web server.
|
|
332
|
+
*/
|
|
333
|
+
async stop() {
|
|
334
|
+
await this.fastifyServer.close();
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Log web server message
|
|
338
|
+
*/
|
|
339
|
+
log(message, meta) {
|
|
340
|
+
this.logger.custom({ level: "webServer", message, meta });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
var webserver_default = WebServer;
|
|
344
|
+
export {
|
|
345
|
+
webserver_default as default
|
|
346
|
+
};
|
|
347
|
+
//# sourceMappingURL=webserver.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/webserver/webserver.ts"],
|
|
4
|
+
"sourcesContent": ["import Fastify, { type FastifyInstance, type FastifyReply, type FastifyRequest, type HTTPMethods } from 'fastify';\nimport cors from '@fastify/cors';\nimport multipart from '@fastify/multipart';\nimport {\n type WebServerConstructorParams,\n type WebServerOptions,\n type WebServerRoute,\n WebServerRouteType,\n} from './webserver.interface.js';\nimport { Logger } from '../logger/index.js';\nimport { Helper, Loader, Time } from '../util/index.js';\nimport WebServerUtil from './util.js';\nimport type { RedisInstance } from '../redis/index.js';\nimport type { DatabaseInstance } from '../database/index.js';\nimport type { WebServerBaseControllerType } from './controller/base.interface.js';\nimport type { QueueManager } from '../queue/index.js';\nimport { WebServerHealthController } from '../index.js';\nimport type { ApplicationConfig } from '../application/base-application.interface.js';\nimport { existsSync } from 'fs';\nimport type EventManager from '../event/manager.js';\n\ndeclare module 'fastify' {\n interface FastifyRequest {\n startTime?: [number, number];\n }\n}\n\nclass WebServer {\n private logger: typeof Logger = Logger;\n\n private applicationConfig: ApplicationConfig;\n\n private options: WebServerOptions;\n private routes: WebServerRoute[];\n\n private redisInstance: RedisInstance;\n private queueManager: QueueManager;\n private eventManager: EventManager;\n private databaseInstance: DatabaseInstance;\n\n public fastifyServer: FastifyInstance;\n\n constructor(params: WebServerConstructorParams) {\n // Define default options\n const defaultOptions: Partial<WebServerOptions> = {\n host: '0.0.0.0',\n port: 3001,\n cors: {\n enabled: false,\n },\n errors: {\n verbose: false,\n },\n debug: {\n printRoutes: false,\n simulateSlowConnection: {\n enabled: false,\n delay: 250,\n },\n },\n log: {\n startUp: true,\n },\n };\n\n // Merge default options\n const mergedOptions = Helper.defaultsDeep(params.options, defaultOptions);\n\n this.applicationConfig = params.applicationConfig;\n\n this.options = mergedOptions;\n this.routes = params.routes;\n\n this.redisInstance = params.redisInstance;\n this.queueManager = params.queueManager;\n this.eventManager = params.eventManager;\n this.databaseInstance = params.databaseInstance;\n\n // Create Fastify server\n this.fastifyServer = Fastify({\n logger: false,\n // body limit = 5gb\n bodyLimit: 5 * 1024 * 1024 * 1024,\n // 30 minutes\n connectionTimeout: 30 * 60 * 1000,\n });\n }\n\n /**\n * Load web server.\n */\n public async load(): Promise<void> {\n // Configure hooks\n this.configureHooks();\n\n // Configure CORS\n this.configureCORS();\n\n // Configure multipart uploads\n this.configureMultipartUploads();\n\n // Configure routes\n await this.configureRoutes();\n }\n\n /**\n * Configure hooks.\n */\n private configureHooks(): void {\n this.fastifyServer.addHook('onListen', async () => this.onListen());\n this.fastifyServer.addHook('onRequest', async request => this.onRequest(request));\n this.fastifyServer.addHook('onResponse', async (request, reply) => this.onResponse(request, reply));\n this.fastifyServer.addHook('onError', async (request, reply, error) => this.onError(request, reply, error));\n this.fastifyServer.addHook('onClose', async () => this.onClose());\n\n // if (process.env.NODE_ENV === 'local') {\n // this.fastifyServer.addHook('onSend', (request, reply, payload, done) => {\n // reply.header('Cache-Control', 'no-store');\n // done();\n // });\n // }\n }\n\n private async onListen(): Promise<void> {\n const address = this.fastifyServer.server.address();\n const port = typeof address === 'string' ? address : address?.port;\n\n if (this.options.log?.startUp) {\n this.log('Started', {\n Host: this.options.host,\n Port: port,\n // CORS: this.options.cors?.enabled && this.options.cors?..length > 0 ? this.options.corsUrls.join(', ') : 'Disabled',\n CORS: this.options.cors?.enabled ? this.options.cors.urls.join(', ') : 'Disabled',\n 'Fastify Version': this.fastifyServer.version,\n });\n }\n }\n\n private async onRequest(request: FastifyRequest): Promise<void> {\n if (\n this.options.debug?.simulateSlowConnection?.enabled &&\n this.options.debug?.simulateSlowConnection?.delay &&\n this.options.debug?.simulateSlowConnection?.delay > 0\n ) {\n await new Promise(resolve => setTimeout(resolve, this.options.debug?.simulateSlowConnection?.delay));\n }\n\n const pathsToIgnore = ['/health'];\n\n if (pathsToIgnore.includes(request.url) || request.method === 'OPTIONS') {\n // ...\n } else {\n request.startTime = process.hrtime();\n }\n }\n\n private async onResponse(request: FastifyRequest, reply: FastifyReply): Promise<void> {\n if (!request.startTime) {\n return;\n }\n\n const executionTime = Time.calculateElapsedTime({\n startTime: request.startTime,\n });\n const formattedExecutionTime = Time.formatTime({\n time: executionTime,\n numDecimals: 3,\n });\n\n const ip = request.headers['x-forwarded-for'] ?? request.ip;\n\n const logParams: Record<string, unknown> = {\n Method: request.method,\n Path: request.url,\n Status: reply.statusCode,\n };\n\n if (process.env.NODE_ENV !== 'local') {\n logParams.IP = ip.toString();\n }\n\n logParams.Time = formattedExecutionTime;\n\n // if (cluster.isWorker && cluster.worker) {\n // logParams.Worker = cluster.worker.id;\n // }\n\n this.log('API Request', logParams);\n }\n\n private async onError(request: FastifyRequest, reply: FastifyReply, error: Error): Promise<void> {\n // Adjusted for Fastify types\n Logger.error({ error });\n // Implement any additional logic here\n }\n\n private async onClose(): Promise<void> {\n this.log('Stopped');\n }\n\n private configureCORS(): void {\n if (!this.options.cors?.enabled) {\n return;\n }\n\n // Handle wildcard origin for development\n const origin = this.options.cors.urls.includes('*') ? true : this.options.cors.urls;\n\n this.fastifyServer.register(cors, {\n origin,\n methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'Authorization'],\n preflightContinue: false,\n optionsSuccessStatus: 204,\n // credentials: true,\n });\n }\n\n private configureMultipartUploads(): void {\n this.fastifyServer.register(multipart, {\n // attachFieldsToBody: true,\n limits: {\n fieldNameSize: 100,\n fieldSize: 1024 * 1024 * 10,\n fields: 10,\n fileSize: 1024 * 1024 * 1024 * 10, // 10GB file size limit\n files: 1,\n headerPairs: 2000,\n },\n });\n }\n\n /**\n * Configure routes.\n */\n private async configureRoutes(): Promise<void> {\n // Check if controllers directory exists\n const controllersDirectoryExists = await existsSync(this.options.controllersDirectory);\n\n if (!controllersDirectoryExists) {\n Logger.warn({\n message: 'Web server controllers directory not found',\n meta: {\n Directory: this.options.controllersDirectory,\n },\n });\n\n return;\n }\n\n // Load controllers\n const controllers = await Loader.loadModulesInDirectory({\n directory: this.options.controllersDirectory,\n extensions: ['.ts', '.js'],\n });\n\n // Add health check route\n this.routes.push({\n type: WebServerRouteType.Default,\n method: 'GET',\n path: '/health',\n controller: WebServerHealthController,\n action: 'health',\n });\n\n // Go through each route\n for (const route of this.routes) {\n let ControllerClass: WebServerBaseControllerType;\n\n let controllerName;\n\n if (route.controller) {\n ControllerClass = route.controller;\n\n controllerName = ControllerClass.name;\n } else if (route.controllerName) {\n ControllerClass = controllers[route.controllerName];\n\n controllerName = route.controllerName;\n } else {\n throw new Error('Web server controller config not found');\n }\n\n if (typeof ControllerClass !== 'function') {\n const controllerPath = `${this.options.controllersDirectory}/${route.controllerName}.ts`;\n\n Logger.warn({\n message: 'Web server controller not found',\n meta: {\n Controller: route.controllerName,\n Path: controllerPath,\n Route: `${route.path}`,\n },\n });\n\n continue;\n }\n\n // Initialize controller instance\n const controllerInstance = new ControllerClass({\n applicationConfig: this.applicationConfig,\n webServerOptions: this.options,\n redisInstance: this.redisInstance,\n queueManager: this.queueManager,\n eventManager: this.eventManager,\n databaseInstance: this.databaseInstance,\n });\n\n let routeMethod;\n let routeAction;\n let routePath;\n\n switch (route.type) {\n case WebServerRouteType.Default: {\n routeMethod = route.method;\n routeAction = route.action;\n routePath = route.path;\n\n this.defineRoute({\n controllerInstance,\n controllerName,\n routeMethod,\n routePath,\n routeAction,\n routeValidation: route.validation,\n });\n\n break;\n }\n case WebServerRouteType.Entity: {\n if (this.applicationConfig.database && this.applicationConfig.database.enabled === true) {\n const entityModel = await Loader.loadEntityModule({\n entitiesDirectory: this.applicationConfig.database.entitiesDirectory,\n entityName: route.entityName,\n });\n\n const entityValidationSchema = entityModel.schema?.describe();\n\n const formattedEntityValidationSchema = entityValidationSchema\n ? {\n type: 'object',\n properties: Object.fromEntries(\n Object.entries(entityValidationSchema.keys).map(([key, value]) => [\n key,\n { type: (value as any).type },\n ]),\n ),\n required: Object.keys(entityValidationSchema.keys).filter(\n key => entityValidationSchema.keys[key].flags?.presence === 'required',\n ),\n }\n : {};\n\n const entityRouteDefinitions = WebServerUtil.getEntityRouteDefinitions({\n basePath: route.path,\n entityValidationSchema: formattedEntityValidationSchema,\n });\n\n for (const entityRouteDefinition of entityRouteDefinitions) {\n this.defineRoute({\n controllerInstance,\n controllerName,\n routeMethod: entityRouteDefinition.method,\n routePath: entityRouteDefinition.path,\n routeAction: entityRouteDefinition.action,\n routeValidation: entityRouteDefinition.validationSchema,\n });\n }\n }\n\n break;\n }\n }\n }\n\n if (this.options.debug?.printRoutes) {\n this.log('Routes:');\n\n console.log(this.fastifyServer.printRoutes());\n }\n }\n\n public async defineRoute({\n controllerInstance,\n controllerName,\n routeMethod,\n routePath,\n routeAction,\n routeValidation,\n }: {\n controllerInstance: any;\n controllerName: string;\n routeMethod: HTTPMethods | HTTPMethods[];\n routePath: string;\n routeAction: string;\n routeValidation?: {\n type: 'body' | 'query' | 'params';\n schema: { [key: string]: any };\n };\n }): Promise<void> {\n // Get controller action handler\n const controllerHandler = controllerInstance[routeAction as keyof typeof controllerInstance];\n\n if (!controllerHandler) {\n Logger.warn({\n message: 'Web server controller action not found',\n meta: {\n Controller: controllerName,\n Action: routeAction,\n },\n });\n\n throw new Error('Web server controller action not found');\n }\n\n // Add route\n this.fastifyServer.route({\n method: routeMethod,\n url: routePath,\n handler: controllerHandler,\n preValidation: async (request, reply) => {\n if (!routeValidation?.schema) {\n // Logger.warn('Web server route validation schema not found', {\n // Controller: controllerName,\n // Action: routeAction,\n // });\n\n return;\n }\n\n const validate = request.compileValidationSchema(routeValidation.schema);\n\n if (!validate(request[routeValidation.type])) {\n return reply.code(400).send({\n error: validate.errors,\n });\n }\n },\n });\n }\n\n /**\n * Start web server.\n */\n public async start(): Promise<void> {\n try {\n await this.fastifyServer.listen({\n host: this.options.host,\n port: this.options.port,\n });\n } catch (error) {\n Logger.error({ error });\n }\n }\n\n /**\n * Stop web server.\n */\n public async stop(): Promise<void> {\n // Close Fastify server\n await this.fastifyServer.close();\n }\n\n /**\n * Log web server message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({ level: 'webServer', message, meta });\n }\n}\n\nexport default WebServer;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type DatabaseInstance from '../../../database/instance.js';
|
|
2
|
+
import type QueueManager from '../../../queue/manager.js';
|
|
3
|
+
import type { RedisInstance } from '../../../redis/index.js';
|
|
4
|
+
import type { WebSocketClientBaseControllerConstructorParams } from './base.interface.js';
|
|
5
|
+
export default abstract class WebSocketClientBaseController {
|
|
6
|
+
protected sendMessage: (data: unknown) => void;
|
|
7
|
+
protected redisInstance: RedisInstance;
|
|
8
|
+
protected queueManager: QueueManager;
|
|
9
|
+
protected databaseInstance: DatabaseInstance;
|
|
10
|
+
constructor({ sendMessage, redisInstance, queueManager, databaseInstance, }: WebSocketClientBaseControllerConstructorParams);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controller/client/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,8CAA8C,EAAE,MAAM,qBAAqB,CAAC;AAE1F,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,6BAA6B;IACzD,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAE/C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAEjC,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,EAAE,8CAA8C;CAOlD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type DatabaseInstance from '../../../database/instance.js';
|
|
2
|
+
import type QueueManager from '../../../queue/manager.js';
|
|
3
|
+
import type { RedisInstance } from '../../../redis/index.js';
|
|
4
|
+
import type WebSocketBaseController from './base.js';
|
|
5
|
+
export interface WebSocketClientBaseControllerConstructorParams {
|
|
6
|
+
sendMessage: (data: unknown) => void;
|
|
7
|
+
redisInstance: RedisInstance;
|
|
8
|
+
queueManager: QueueManager;
|
|
9
|
+
databaseInstance: DatabaseInstance;
|
|
10
|
+
}
|
|
11
|
+
export type WebSocketClientBaseControllerType = new (params: WebSocketClientBaseControllerConstructorParams) => WebSocketBaseController;
|
|
12
|
+
//# sourceMappingURL=base.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.interface.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controller/client/base.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,uBAAuB,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,8CAA8C;IAE7D,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,MAAM,iCAAiC,GAAG,KAC9C,MAAM,EAAE,8CAA8C,KACnD,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=base.interface.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
class WebSocketClientBaseController {
|
|
4
|
+
static {
|
|
5
|
+
__name(this, "WebSocketClientBaseController");
|
|
6
|
+
}
|
|
7
|
+
sendMessage;
|
|
8
|
+
redisInstance;
|
|
9
|
+
queueManager;
|
|
10
|
+
databaseInstance;
|
|
11
|
+
constructor({
|
|
12
|
+
sendMessage,
|
|
13
|
+
redisInstance,
|
|
14
|
+
queueManager,
|
|
15
|
+
databaseInstance
|
|
16
|
+
}) {
|
|
17
|
+
this.sendMessage = sendMessage;
|
|
18
|
+
this.redisInstance = redisInstance;
|
|
19
|
+
this.queueManager = queueManager;
|
|
20
|
+
this.databaseInstance = databaseInstance;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
WebSocketClientBaseController as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/websocket/controller/client/base.ts"],
|
|
4
|
+
"sourcesContent": ["import type DatabaseInstance from '../../../database/instance.js';\nimport type QueueManager from '../../../queue/manager.js';\nimport type { RedisInstance } from '../../../redis/index.js';\nimport type { WebSocketClientBaseControllerConstructorParams } from './base.interface.js';\n\nexport default abstract class WebSocketClientBaseController {\n protected sendMessage: (data: unknown) => void;\n\n protected redisInstance: RedisInstance;\n protected queueManager: QueueManager;\n protected databaseInstance: DatabaseInstance;\n\n constructor({\n sendMessage,\n redisInstance,\n queueManager,\n databaseInstance,\n }: WebSocketClientBaseControllerConstructorParams) {\n this.sendMessage = sendMessage;\n\n this.redisInstance = redisInstance;\n this.queueManager = queueManager;\n this.databaseInstance = databaseInstance;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAKA,MAAO,8BAAqD;AAAA,EAL5D,OAK4D;AAAA;AAAA;AAAA,EAChD;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEV,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAmD;AACjD,SAAK,cAAc;AAEnB,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,mBAAmB;AAAA,EAC1B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type DatabaseInstance from '../../../database/instance.js';
|
|
2
|
+
import type QueueManager from '../../../queue/manager.js';
|
|
3
|
+
import type { RedisInstance } from '../../../redis/index.js';
|
|
4
|
+
import type WebSocketServer from '../../websocket-server.js';
|
|
5
|
+
import type { WebSocketServerBaseControllerConstructorParams } from './base.interface.js';
|
|
6
|
+
export default abstract class WebSocketServerBaseController {
|
|
7
|
+
protected webSocketServer: WebSocketServer;
|
|
8
|
+
protected redisInstance: RedisInstance;
|
|
9
|
+
protected queueManager: QueueManager;
|
|
10
|
+
protected databaseInstance: DatabaseInstance;
|
|
11
|
+
constructor({ webSocketServer, redisInstance, queueManager, databaseInstance, }: WebSocketServerBaseControllerConstructorParams);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controller/server/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,8CAA8C,EAAE,MAAM,qBAAqB,CAAC;AAE1F,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,6BAA6B;IACzD,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;gBAEjC,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,EAAE,8CAA8C;CAMlD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type DatabaseInstance from '../../../database/instance.js';
|
|
2
|
+
import type QueueManager from '../../../queue/manager.js';
|
|
3
|
+
import type { RedisInstance } from '../../../redis/index.js';
|
|
4
|
+
import type WebSocketServer from '../../websocket-server.js';
|
|
5
|
+
import type WebSocketBaseController from './base.js';
|
|
6
|
+
export interface WebSocketServerBaseControllerConstructorParams {
|
|
7
|
+
webSocketServer: WebSocketServer;
|
|
8
|
+
redisInstance: RedisInstance;
|
|
9
|
+
queueManager: QueueManager;
|
|
10
|
+
databaseInstance: DatabaseInstance;
|
|
11
|
+
}
|
|
12
|
+
export type WebSocketServerBaseControllerType = new (params: WebSocketServerBaseControllerConstructorParams) => WebSocketBaseController;
|
|
13
|
+
//# sourceMappingURL=base.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.interface.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controller/server/base.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,uBAAuB,MAAM,WAAW,CAAC;AAErD,MAAM,WAAW,8CAA8C;IAC7D,eAAe,EAAE,eAAe,CAAC;IAUjC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,MAAM,iCAAiC,GAAG,KAC9C,MAAM,EAAE,8CAA8C,KACnD,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=base.interface.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
class WebSocketServerBaseController {
|
|
4
|
+
static {
|
|
5
|
+
__name(this, "WebSocketServerBaseController");
|
|
6
|
+
}
|
|
7
|
+
webSocketServer;
|
|
8
|
+
redisInstance;
|
|
9
|
+
queueManager;
|
|
10
|
+
databaseInstance;
|
|
11
|
+
constructor({
|
|
12
|
+
webSocketServer,
|
|
13
|
+
redisInstance,
|
|
14
|
+
queueManager,
|
|
15
|
+
databaseInstance
|
|
16
|
+
}) {
|
|
17
|
+
this.webSocketServer = webSocketServer;
|
|
18
|
+
this.redisInstance = redisInstance;
|
|
19
|
+
this.queueManager = queueManager;
|
|
20
|
+
this.databaseInstance = databaseInstance;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
WebSocketServerBaseController as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/websocket/controller/server/base.ts"],
|
|
4
|
+
"sourcesContent": ["import type DatabaseInstance from '../../../database/instance.js';\nimport type QueueManager from '../../../queue/manager.js';\nimport type { RedisInstance } from '../../../redis/index.js';\nimport type WebSocketServer from '../../websocket-server.js';\nimport type { WebSocketServerBaseControllerConstructorParams } from './base.interface.js';\n\nexport default abstract class WebSocketServerBaseController {\n protected webSocketServer: WebSocketServer;\n protected redisInstance: RedisInstance;\n protected queueManager: QueueManager;\n protected databaseInstance: DatabaseInstance;\n\n constructor({\n webSocketServer,\n redisInstance,\n queueManager,\n databaseInstance,\n }: WebSocketServerBaseControllerConstructorParams) {\n this.webSocketServer = webSocketServer;\n this.redisInstance = redisInstance;\n this.queueManager = queueManager;\n this.databaseInstance = databaseInstance;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAMA,MAAO,8BAAqD;AAAA,EAN5D,OAM4D;AAAA;AAAA;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEV,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAmD;AACjD,SAAK,kBAAkB;AACvB,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,mBAAmB;AAAA,EAC1B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
import { WebSocketClientBaseController } from '../../index.js';
|
|
3
|
+
export default class SystemController extends WebSocketClientBaseController {
|
|
4
|
+
clientList: (_clientWebSocket: WebSocket, _webSocketClientId: string, _data: any) => any;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controllers/client/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,6BAA6B;IAClE,UAAU,GAAI,kBAAkB,SAAS,EAAE,oBAAoB,MAAM,EAAE,OAAO,GAAG,KAAG,GAAG,CAE5F;CACH"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { WebSocketClientBaseController } from "../../index.js";
|
|
4
|
+
class SystemController extends WebSocketClientBaseController {
|
|
5
|
+
static {
|
|
6
|
+
__name(this, "SystemController");
|
|
7
|
+
}
|
|
8
|
+
clientList = /* @__PURE__ */ __name((_clientWebSocket, _webSocketClientId, _data) => {
|
|
9
|
+
}, "clientList");
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
SystemController as default
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/websocket/controllers/client/system.ts"],
|
|
4
|
+
"sourcesContent": ["import type { WebSocket } from 'ws';\n// import WebSocketServerBaseController from '../../controller/server/base.js';\nimport { WebSocketClientBaseController } from '../../index.js';\n\nexport default class SystemController extends WebSocketClientBaseController {\n public clientList = (_clientWebSocket: WebSocket, _webSocketClientId: string, _data: any): any => {\n // console.log('client list receieved (client): ', data);\n };\n}\n"],
|
|
5
|
+
"mappings": ";;AAEA,SAAS,qCAAqC;AAE9C,MAAO,yBAAuC,8BAA8B;AAAA,EAJ5E,OAI4E;AAAA;AAAA;AAAA,EACnE,aAAa,wBAAC,kBAA6B,oBAA4B,UAAoB;AAAA,EAElG,GAFoB;AAGtB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
import WebSocketServerBaseController from '../../controller/server/base.js';
|
|
3
|
+
export default class SystemController extends WebSocketServerBaseController {
|
|
4
|
+
joinRoom: (clientWebSocket: WebSocket, webSocketClientId: string, data: any) => any;
|
|
5
|
+
leaveRoom: (clientWebSocket: WebSocket, webSocketClientId: string, data: any) => any;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/websocket/controllers/server/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAI5E,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,6BAA6B;IAClE,QAAQ,GAAI,iBAAiB,SAAS,EAAE,mBAAmB,MAAM,EAAE,MAAM,GAAG,KAAG,GAAG,CA6CvF;IAEK,SAAS,GAAI,iBAAiB,SAAS,EAAE,mBAAmB,MAAM,EAAE,MAAM,GAAG,KAAG,GAAG,CAqCxF;CACH"}
|