@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
package/README.md
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# PXL Node.js Framework
|
|
2
|
+
|
|
3
|
+
A comprehensive Node.js framework for building modern applications with support for web servers, databases, queues, caching, and more.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install the framework from NPM:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npm install @scpxl/nodejs-framework
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { WebApplication } from '@scpxl/nodejs-framework/application';
|
|
17
|
+
|
|
18
|
+
const app = new WebApplication({
|
|
19
|
+
webServer: {
|
|
20
|
+
port: 3000,
|
|
21
|
+
host: '0.0.0.0'
|
|
22
|
+
},
|
|
23
|
+
database: {
|
|
24
|
+
host: 'localhost',
|
|
25
|
+
port: 5432,
|
|
26
|
+
dbName: 'myapp',
|
|
27
|
+
user: 'user',
|
|
28
|
+
password: 'password'
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
await app.start();
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Features
|
|
36
|
+
|
|
37
|
+
- 🚀 **FastAPI-powered Web Server** with auto-routing
|
|
38
|
+
- 🗄️ **Database Integration** with MikroORM and PostgreSQL
|
|
39
|
+
- 📦 **Queue System** using BullMQ and Redis
|
|
40
|
+
- 🔄 **WebSocket Support** for real-time communication
|
|
41
|
+
- 🗄️ **Caching Layer** with Redis integration
|
|
42
|
+
- ☁️ **AWS S3 Integration** for file storage
|
|
43
|
+
- 🔐 **Authentication System** with JWT
|
|
44
|
+
- 📊 **Structured Logging** with Winston
|
|
45
|
+
- 🧪 **Built-in Testing Utils**
|
|
46
|
+
- ⚡ **Performance Monitoring**
|
|
47
|
+
|
|
48
|
+
## Development (Framework Contributors)
|
|
49
|
+
|
|
50
|
+
### Local Development
|
|
51
|
+
|
|
52
|
+
Clone this repository and switch to the project specific Node.js version:
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
git clone https://github.com/PXLbros/pxl-nodejs-framework.git
|
|
56
|
+
cd pxl-nodejs-framework
|
|
57
|
+
nvm use
|
|
58
|
+
npm install
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Build
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
npm run build
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Testing with Yalc (Local Development)
|
|
68
|
+
|
|
69
|
+
For local testing before publishing to NPM:
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
# Build and publish locally
|
|
73
|
+
npm run build:local
|
|
74
|
+
|
|
75
|
+
# In your project
|
|
76
|
+
yalc add @pxl/nodejs-framework
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Development
|
|
80
|
+
|
|
81
|
+
### Local Development
|
|
82
|
+
|
|
83
|
+
For local development with automatic publishing through **Yalc**:
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
npm run dev
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
For building locally with Yalc publishing:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
npm run build:local
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
For building without Yalc (CI/production build):
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
npm run build
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## CI/CD Pipeline
|
|
102
|
+
|
|
103
|
+
This project uses GitHub Actions for continuous integration and deployment:
|
|
104
|
+
|
|
105
|
+
### Build and Test (CI)
|
|
106
|
+
|
|
107
|
+
- Runs on all pull requests
|
|
108
|
+
- Installs dependencies, runs linting, builds the project, and runs tests
|
|
109
|
+
|
|
110
|
+
### Build and Publish
|
|
111
|
+
|
|
112
|
+
- Runs on pushes to `main`/`master` branches and version tags
|
|
113
|
+
- Builds the project and publishes to npm
|
|
114
|
+
- Beta releases are published on pushes to main/master branches
|
|
115
|
+
- Stable releases are published when version tags are created
|
|
116
|
+
|
|
117
|
+
### Setup for Publishing
|
|
118
|
+
|
|
119
|
+
To enable automatic publishing, configure the following repository secret:
|
|
120
|
+
|
|
121
|
+
- `NPM_TOKEN`: Your npm authentication token
|
|
122
|
+
|
|
123
|
+
> **Note**: The `dist/` folder is gitignored and automatically generated during the CI/CD process. Do not commit built files to the repository.
|
|
124
|
+
|
|
125
|
+
## Releasing
|
|
126
|
+
|
|
127
|
+
Use the built-in release script to create new versions:
|
|
128
|
+
|
|
129
|
+
### Quick Release Commands
|
|
130
|
+
|
|
131
|
+
```sh
|
|
132
|
+
# Patch release (1.0.0 → 1.0.1)
|
|
133
|
+
npm run release -- --patch
|
|
134
|
+
|
|
135
|
+
# Minor release (1.0.0 → 1.1.0)
|
|
136
|
+
npm run release -- --minor
|
|
137
|
+
|
|
138
|
+
# Major release (1.0.0 → 2.0.0)
|
|
139
|
+
npm run release -- --major
|
|
140
|
+
|
|
141
|
+
# Specific version
|
|
142
|
+
npm run release -- --version 2.1.3
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Release Process
|
|
146
|
+
|
|
147
|
+
The release script will:
|
|
148
|
+
|
|
149
|
+
1. Check that your working directory is clean
|
|
150
|
+
2. Verify you're on the main/master branch
|
|
151
|
+
3. Update the version in `package.json`
|
|
152
|
+
4. Create a git commit and tag
|
|
153
|
+
5. Push to origin, triggering GitHub Actions
|
|
154
|
+
|
|
155
|
+
### Dry Run
|
|
156
|
+
|
|
157
|
+
Preview what the release script will do without making changes:
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
npm run release -- --patch --dry-run
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Help
|
|
164
|
+
|
|
165
|
+
For more information about the release script:
|
|
166
|
+
|
|
167
|
+
```sh
|
|
168
|
+
npm run release -- --help
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Documentation
|
|
172
|
+
|
|
173
|
+
The API documentation is automatically generated using TypeDoc and deployed via GitHub Actions to GitHub Pages.
|
|
174
|
+
|
|
175
|
+
### Local Documentation Development
|
|
176
|
+
|
|
177
|
+
To generate and view documentation locally:
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
npm run docs
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
This will generate the documentation in the `docs/` folder. You can then open `docs/index.html` in your browser.
|
|
184
|
+
|
|
185
|
+
### Automated Documentation Deployment
|
|
186
|
+
|
|
187
|
+
Documentation is automatically built and deployed to GitHub Pages when:
|
|
188
|
+
|
|
189
|
+
- Code is pushed to the `main` or `master` branch
|
|
190
|
+
- Pull requests are opened against `main` or `master` branch
|
|
191
|
+
- Manual workflow dispatch is triggered
|
|
192
|
+
|
|
193
|
+
The documentation will be available at: `https://[your-username].github.io/[repository-name]/`
|
|
194
|
+
|
|
195
|
+
> **Note**: The `docs/` folder is gitignored and should not be committed to the repository as it's automatically generated by the CI/CD pipeline.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AxiosRequestConfig, type AxiosResponse } from 'axios';
|
|
2
|
+
export default class ApiRequester {
|
|
3
|
+
private axiosInstance;
|
|
4
|
+
constructor(baseURL: string, headers?: Record<string, string>);
|
|
5
|
+
get<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T> | undefined>;
|
|
6
|
+
post<T, R>(url: string, data: T, config?: AxiosRequestConfig): Promise<AxiosResponse<R> | undefined>;
|
|
7
|
+
put<T, R>(url: string, data: T, config?: AxiosRequestConfig): Promise<AxiosResponse<R> | undefined>;
|
|
8
|
+
delete<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T> | undefined>;
|
|
9
|
+
private handleError;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=api-requester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-requester.d.ts","sourceRoot":"","sources":["../../src/api-requester/api-requester.ts"],"names":[],"mappings":"AAAA,OAAc,EAAsB,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE/F,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOhD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IASvF,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IASpG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IASnG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IASvG,OAAO,CAAC,WAAW;CAUpB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import axios from "axios";
|
|
4
|
+
class ApiRequester {
|
|
5
|
+
static {
|
|
6
|
+
__name(this, "ApiRequester");
|
|
7
|
+
}
|
|
8
|
+
axiosInstance;
|
|
9
|
+
constructor(baseURL, headers) {
|
|
10
|
+
this.axiosInstance = axios.create({
|
|
11
|
+
baseURL,
|
|
12
|
+
headers
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async get(url, config) {
|
|
16
|
+
try {
|
|
17
|
+
const response = await this.axiosInstance.get(url, config);
|
|
18
|
+
return response;
|
|
19
|
+
} catch (error) {
|
|
20
|
+
this.handleError(error);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async post(url, data, config) {
|
|
24
|
+
try {
|
|
25
|
+
const response = await this.axiosInstance.post(url, data, config);
|
|
26
|
+
return response;
|
|
27
|
+
} catch (error) {
|
|
28
|
+
this.handleError(error);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async put(url, data, config) {
|
|
32
|
+
try {
|
|
33
|
+
const response = await this.axiosInstance.put(url, data, config);
|
|
34
|
+
return response;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
this.handleError(error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async delete(url, config) {
|
|
40
|
+
try {
|
|
41
|
+
const response = await this.axiosInstance.delete(url, config);
|
|
42
|
+
return response;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
this.handleError(error);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
handleError(error) {
|
|
48
|
+
if (axios.isAxiosError(error)) {
|
|
49
|
+
console.error("Axios error:", error.response?.data);
|
|
50
|
+
} else {
|
|
51
|
+
console.error("Unexpected error:", error);
|
|
52
|
+
}
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
ApiRequester as default
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=api-requester.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/api-requester/api-requester.ts"],
|
|
4
|
+
"sourcesContent": ["import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse } from 'axios';\n\nexport default class ApiRequester {\n private axiosInstance: AxiosInstance;\n\n constructor(baseURL: string, headers?: Record<string, string>) {\n this.axiosInstance = axios.create({\n baseURL,\n headers,\n });\n }\n\n public async get<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T> | undefined> {\n try {\n const response = await this.axiosInstance.get<T>(url, config);\n return response;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n public async post<T, R>(url: string, data: T, config?: AxiosRequestConfig): Promise<AxiosResponse<R> | undefined> {\n try {\n const response = await this.axiosInstance.post<R>(url, data, config);\n return response;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n public async put<T, R>(url: string, data: T, config?: AxiosRequestConfig): Promise<AxiosResponse<R> | undefined> {\n try {\n const response = await this.axiosInstance.put<R>(url, data, config);\n return response;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n public async delete<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T> | undefined> {\n try {\n const response = await this.axiosInstance.delete<T>(url, config);\n return response;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n private handleError(error: any): void {\n if (axios.isAxiosError(error)) {\n // Handle Axios-specific errors here\n console.error('Axios error:', error.response?.data);\n } else {\n // Handle non-Axios errors here\n console.error('Unexpected error:', error);\n }\n throw error;\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA,OAAO,WAAgF;AAEvF,MAAO,aAA2B;AAAA,EAFlC,OAEkC;AAAA;AAAA;AAAA,EACxB;AAAA,EAER,YAAY,SAAiB,SAAkC;AAC7D,SAAK,gBAAgB,MAAM,OAAO;AAAA,MAChC;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,IAAO,KAAa,QAAoE;AACnG,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,cAAc,IAAO,KAAK,MAAM;AAC5D,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAa,KAAW,KAAa,MAAS,QAAoE;AAChH,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,cAAc,KAAQ,KAAK,MAAM,MAAM;AACnE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAa,IAAU,KAAa,MAAS,QAAoE;AAC/G,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,cAAc,IAAO,KAAK,MAAM,MAAM;AAClE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAa,OAAU,KAAa,QAAoE;AACtG,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,cAAc,OAAU,KAAK,MAAM;AAC/D,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,YAAY,OAAkB;AACpC,QAAI,MAAM,aAAa,KAAK,GAAG;AAE7B,cAAQ,MAAM,gBAAgB,MAAM,UAAU,IAAI;AAAA,IACpD,OAAO;AAEL,cAAQ,MAAM,qBAAqB,KAAK;AAAA,IAC1C;AACA,UAAM;AAAA,EACR;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api-requester/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { type DatabaseInstance, DatabaseManager } from '../database/index.js';
|
|
2
|
+
import QueueManager from '../queue/manager.js';
|
|
3
|
+
import RedisManager from '../redis/manager.js';
|
|
4
|
+
import type { ApplicationConfig } from './base-application.interface.js';
|
|
5
|
+
import type RedisInstance from '../redis/instance.js';
|
|
6
|
+
import CacheManager from '../cache/manager.js';
|
|
7
|
+
import EventManager from '../event/manager.js';
|
|
8
|
+
import { PerformanceMonitor } from '../performance/performance-monitor.js';
|
|
9
|
+
export type { ApplicationConfig } from './base-application.interface.js';
|
|
10
|
+
export default abstract class BaseApplication {
|
|
11
|
+
/** Unique instance ID */
|
|
12
|
+
uniqueInstanceId: string;
|
|
13
|
+
/** Shutdown signals */
|
|
14
|
+
protected shutdownSignals: NodeJS.Signals[];
|
|
15
|
+
/** Application start time */
|
|
16
|
+
protected startTime: [number, number];
|
|
17
|
+
/** Whether application is stopping */
|
|
18
|
+
protected isStopping: boolean;
|
|
19
|
+
/** Shutdown timeout (30 seconds) */
|
|
20
|
+
protected shutdownTimeout: number;
|
|
21
|
+
/** Cache for application version to avoid repeated imports */
|
|
22
|
+
private static applicationVersionCache;
|
|
23
|
+
/** Cluster worker ID */
|
|
24
|
+
protected workerId: number | null;
|
|
25
|
+
/** Application config */
|
|
26
|
+
protected config: ApplicationConfig;
|
|
27
|
+
/** Application version */
|
|
28
|
+
protected applicationVersion?: string;
|
|
29
|
+
/** Redis manager */
|
|
30
|
+
redisManager: RedisManager;
|
|
31
|
+
/** Cache manager */
|
|
32
|
+
cacheManager: CacheManager;
|
|
33
|
+
/** Database manager */
|
|
34
|
+
databaseManager?: DatabaseManager;
|
|
35
|
+
/** Queue manager */
|
|
36
|
+
queueManager?: QueueManager;
|
|
37
|
+
/** Event manager */
|
|
38
|
+
eventManager?: EventManager;
|
|
39
|
+
/** Performance monitor */
|
|
40
|
+
performanceMonitor?: PerformanceMonitor;
|
|
41
|
+
get Name(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Application constructor
|
|
44
|
+
*/
|
|
45
|
+
constructor(config: ApplicationConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Get application version
|
|
48
|
+
*/
|
|
49
|
+
getApplicationVersion(): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Start application
|
|
52
|
+
*/
|
|
53
|
+
start(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Before application start
|
|
56
|
+
*/
|
|
57
|
+
private onBeforeStart;
|
|
58
|
+
/**
|
|
59
|
+
* Application started event
|
|
60
|
+
*/
|
|
61
|
+
protected onStarted({ startupTime: _startupTime }: {
|
|
62
|
+
startupTime: number;
|
|
63
|
+
}): void;
|
|
64
|
+
/**
|
|
65
|
+
* Application stopped event
|
|
66
|
+
*/
|
|
67
|
+
protected onStopped({ runtime: _runtime }: {
|
|
68
|
+
runtime: number;
|
|
69
|
+
}): void;
|
|
70
|
+
/**
|
|
71
|
+
* Before application stop event
|
|
72
|
+
*/
|
|
73
|
+
private onBeforeStop;
|
|
74
|
+
/**
|
|
75
|
+
* Start application instance
|
|
76
|
+
*/
|
|
77
|
+
private startInstance;
|
|
78
|
+
protected abstract startHandler({ redisInstance, databaseInstance, queueManager, eventManager, }: {
|
|
79
|
+
redisInstance: RedisInstance;
|
|
80
|
+
databaseInstance?: DatabaseInstance | null;
|
|
81
|
+
queueManager: QueueManager;
|
|
82
|
+
eventManager?: EventManager | null;
|
|
83
|
+
}): Promise<void>;
|
|
84
|
+
protected abstract stopCallback(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Set up global error handlers
|
|
87
|
+
*/
|
|
88
|
+
/**
|
|
89
|
+
* Initialize performance monitor
|
|
90
|
+
*/
|
|
91
|
+
private initializePerformanceMonitor;
|
|
92
|
+
private setupGlobalErrorHandlers;
|
|
93
|
+
/**
|
|
94
|
+
* Initiate graceful shutdown
|
|
95
|
+
*/
|
|
96
|
+
private initiateGracefulShutdown;
|
|
97
|
+
/**
|
|
98
|
+
* Handle shutdown
|
|
99
|
+
*/
|
|
100
|
+
handleShutdown({ onStopped }: {
|
|
101
|
+
onStopped?: ({ runtime }: {
|
|
102
|
+
runtime: number;
|
|
103
|
+
}) => void;
|
|
104
|
+
}): void;
|
|
105
|
+
/**
|
|
106
|
+
* Stop application
|
|
107
|
+
*/
|
|
108
|
+
private stop;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=base-application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-application.d.ts","sourceRoot":"","sources":["../../src/application/base-application.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import type { ClusterManagerConfig } from '../cluster/cluster-manager.interface.js';
|
|
2
|
+
import type DatabaseInstance from '../database/instance.js';
|
|
3
|
+
import type { EventDefinition } from '../event/manager.interface.js';
|
|
4
|
+
import type { PerformanceMonitorOptions, PerformanceThresholds } from '../performance/performance-monitor.js';
|
|
5
|
+
import type { QueueItem } from '../queue/index.interface.js';
|
|
6
|
+
import type { WebServerDebugOptions, WebServerLogConfig, WebServerOptions, WebServerRoute } from '../webserver/webserver.interface.js';
|
|
7
|
+
import type WebSocketServer from '../websocket/websocket-server.js';
|
|
8
|
+
import type { WebSocketOptions, WebSocketRoute, WebSocketType } from '../websocket/websocket.interface.js';
|
|
9
|
+
export type OnStartedEvent = ({ startupTime }: {
|
|
10
|
+
startupTime: number;
|
|
11
|
+
}) => void;
|
|
12
|
+
export type OnStoppedEvent = ({ runtime }: {
|
|
13
|
+
runtime: number;
|
|
14
|
+
}) => void;
|
|
15
|
+
export interface ApplicationStartInstanceOptions {
|
|
16
|
+
/** On started event */
|
|
17
|
+
onStarted?: OnStartedEvent;
|
|
18
|
+
}
|
|
19
|
+
export interface ApplicationStopInstanceOptions {
|
|
20
|
+
/** On stopped event */
|
|
21
|
+
onStopped?: OnStoppedEvent;
|
|
22
|
+
}
|
|
23
|
+
export interface ApplicationRedisConfig {
|
|
24
|
+
/** Redis host */
|
|
25
|
+
host: string;
|
|
26
|
+
/** Redis port */
|
|
27
|
+
port: number;
|
|
28
|
+
/** Redis password */
|
|
29
|
+
password?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ApplicationCacheConfig {
|
|
32
|
+
}
|
|
33
|
+
export interface ApplicationDatabaseConfig {
|
|
34
|
+
/** Whether to enable database */
|
|
35
|
+
enabled: boolean;
|
|
36
|
+
/** Database host */
|
|
37
|
+
host: string;
|
|
38
|
+
/** Database port */
|
|
39
|
+
port: number;
|
|
40
|
+
/** Database username */
|
|
41
|
+
username: string;
|
|
42
|
+
/** Database password */
|
|
43
|
+
password: string;
|
|
44
|
+
/** Database name */
|
|
45
|
+
databaseName: string;
|
|
46
|
+
/** Entities directory */
|
|
47
|
+
entitiesDirectory: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ApplicationQueueConfig {
|
|
50
|
+
/** Initial queues */
|
|
51
|
+
queues: QueueItem[];
|
|
52
|
+
/** Queue processors directory */
|
|
53
|
+
processorsDirectory: string;
|
|
54
|
+
log?: {
|
|
55
|
+
jobRegistered?: boolean;
|
|
56
|
+
jobAdded?: boolean;
|
|
57
|
+
jobCompleted?: boolean;
|
|
58
|
+
queueRegistered?: boolean;
|
|
59
|
+
queuesRegistered?: boolean;
|
|
60
|
+
queueWaiting?: boolean;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export interface ApplicationEventConfig {
|
|
64
|
+
/** Whether to enable event system */
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
/** Event controllers directory */
|
|
67
|
+
controllersDirectory: string;
|
|
68
|
+
/** Event definitions */
|
|
69
|
+
events: EventDefinition[];
|
|
70
|
+
}
|
|
71
|
+
export interface ApplicationEmailConfig {
|
|
72
|
+
}
|
|
73
|
+
export interface ApplicationAuthConfig {
|
|
74
|
+
/** JWT secret key for token verification */
|
|
75
|
+
jwtSecretKey: string;
|
|
76
|
+
}
|
|
77
|
+
export interface ApplicationWebSocketConfig extends WebSocketOptions {
|
|
78
|
+
/** WebSocket type */
|
|
79
|
+
type: WebSocketType;
|
|
80
|
+
/** Whether to enable WebSocket */
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
/** WebSocket routes */
|
|
83
|
+
routes: WebSocketRoute[];
|
|
84
|
+
/** WebSocket server message handler */
|
|
85
|
+
serverMessageHandler?: (options: {
|
|
86
|
+
ws: WebSocket;
|
|
87
|
+
clientId: string;
|
|
88
|
+
parsedMessage: any;
|
|
89
|
+
}) => void;
|
|
90
|
+
/** WebSocket subscriber event handler */
|
|
91
|
+
subscriberEventHandler?: (options: {
|
|
92
|
+
channel: string;
|
|
93
|
+
message: any;
|
|
94
|
+
webSocketServer: WebSocketServer;
|
|
95
|
+
databaseInstance: DatabaseInstance;
|
|
96
|
+
}) => void;
|
|
97
|
+
}
|
|
98
|
+
export interface ApplicationWebServerConfig extends WebServerOptions {
|
|
99
|
+
/** Whether to enable web server */
|
|
100
|
+
enabled: boolean;
|
|
101
|
+
/** Web server routes */
|
|
102
|
+
routes: WebServerRoute[];
|
|
103
|
+
log?: WebServerLogConfig;
|
|
104
|
+
debug: WebServerDebugOptions;
|
|
105
|
+
}
|
|
106
|
+
export interface ApplicationCommandsConfig {
|
|
107
|
+
commandsDirectory: string;
|
|
108
|
+
}
|
|
109
|
+
export interface ApplicationLogConfig {
|
|
110
|
+
startUp?: boolean;
|
|
111
|
+
shutdown?: boolean;
|
|
112
|
+
}
|
|
113
|
+
export interface ApplicationPerformanceConfig extends PerformanceMonitorOptions {
|
|
114
|
+
/** Whether to enable performance monitoring */
|
|
115
|
+
enabled?: boolean;
|
|
116
|
+
/** Performance thresholds for different operations */
|
|
117
|
+
thresholds?: Partial<PerformanceThresholds>;
|
|
118
|
+
/** Whether to monitor HTTP requests */
|
|
119
|
+
monitorHttpRequests?: boolean;
|
|
120
|
+
/** Whether to monitor database operations */
|
|
121
|
+
monitorDatabaseOperations?: boolean;
|
|
122
|
+
/** Whether to monitor WebSocket operations */
|
|
123
|
+
monitorWebSocketOperations?: boolean;
|
|
124
|
+
/** Whether to monitor queue operations */
|
|
125
|
+
monitorQueueOperations?: boolean;
|
|
126
|
+
/** Whether to monitor cache operations */
|
|
127
|
+
monitorCacheOperations?: boolean;
|
|
128
|
+
/** Performance report generation interval in milliseconds */
|
|
129
|
+
reportInterval?: number;
|
|
130
|
+
/** Performance report format: 'simple' for one-line, 'detailed' for multi-line */
|
|
131
|
+
reportFormat?: 'simple' | 'detailed';
|
|
132
|
+
}
|
|
133
|
+
export interface ApplicationConfig {
|
|
134
|
+
/** Application name */
|
|
135
|
+
name: string;
|
|
136
|
+
/** Application instance ID */
|
|
137
|
+
instanceId: string;
|
|
138
|
+
/** Root directory */
|
|
139
|
+
rootDirectory: string;
|
|
140
|
+
/** Cluster configuration */
|
|
141
|
+
cluster?: ClusterManagerConfig;
|
|
142
|
+
/** Redis configuration */
|
|
143
|
+
redis: ApplicationRedisConfig;
|
|
144
|
+
/** Cache configuration */
|
|
145
|
+
cache?: ApplicationCacheConfig;
|
|
146
|
+
/** Database configuration */
|
|
147
|
+
database?: ApplicationDatabaseConfig;
|
|
148
|
+
/** Queue configuration */
|
|
149
|
+
queue: ApplicationQueueConfig;
|
|
150
|
+
/** Event configuration */
|
|
151
|
+
event?: ApplicationEventConfig;
|
|
152
|
+
/** Log configuration */
|
|
153
|
+
log?: ApplicationLogConfig;
|
|
154
|
+
/** Performance monitoring configuration */
|
|
155
|
+
performanceMonitoring?: ApplicationPerformanceConfig;
|
|
156
|
+
/** Email configuration */
|
|
157
|
+
email?: ApplicationEmailConfig;
|
|
158
|
+
/** Authentication configuration */
|
|
159
|
+
auth?: ApplicationAuthConfig;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=base-application.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-application.interface.d.ts","sourceRoot":"","sources":["../../src/application/base-application.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,eAAe,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAE3G,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAExE,MAAM,WAAW,+BAA+B;IAC9C,uBAAuB;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AACD,MAAM,WAAW,8BAA8B;IAC7C,uBAAuB;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;CAAG;AAE1C,MAAM,WAAW,yBAAyB;IACxC,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IAEjB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IAEjB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IAEjB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IAEpB,iCAAiC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAE5B,GAAG,CAAC,EAAE;QACJ,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IAEjB,kCAAkC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,wBAAwB;IACxB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;CAAG;AAE1C,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAClE,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IAEpB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IAEjB,uBAAuB;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IAEzB,uCAAuC;IACvC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IAElG,yCAAyC;IACzC,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,GAAG,CAAC;QACb,eAAe,EAAE,eAAe,CAAC;QACjC,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAClE,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IAWjB,wBAAwB;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IAKzB,GAAG,CAAC,EAAE,kBAAkB,CAAC;IAEzB,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,4BAA6B,SAAQ,yBAAyB;IAC7E,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE5C,uCAAuC;IACvC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,6CAA6C;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC,8CAA8C;IAC9C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC,0CAA0C;IAC1C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,0CAA0C;IAC1C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kFAAkF;IAClF,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IAEnB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAE/B,0BAA0B;IAC1B,KAAK,EAAE,sBAAsB,CAAC;IAE9B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAE/B,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAErC,0BAA0B;IAC1B,KAAK,EAAE,sBAAsB,CAAC;IAE9B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAE/B,wBAAwB;IACxB,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAE3B,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,4BAA4B,CAAC;IAErD,0BAA0B;IAC1B,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAE/B,mCAAmC;IACnC,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=base-application.interface.js.map
|