@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,106 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import cluster from "node:cluster";
|
|
4
|
+
import { cpus } from "node:os";
|
|
5
|
+
import { Logger } from "../logger/index.js";
|
|
6
|
+
class ClusterManager {
|
|
7
|
+
static {
|
|
8
|
+
__name(this, "ClusterManager");
|
|
9
|
+
}
|
|
10
|
+
config;
|
|
11
|
+
startApplicationCallback;
|
|
12
|
+
stopApplicationCallback;
|
|
13
|
+
shutdownSignals = ["SIGTERM", "SIGINT"];
|
|
14
|
+
isShuttingDown = false;
|
|
15
|
+
constructor({ config, startApplicationCallback, stopApplicationCallback }) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.startApplicationCallback = startApplicationCallback;
|
|
18
|
+
this.stopApplicationCallback = stopApplicationCallback;
|
|
19
|
+
}
|
|
20
|
+
start() {
|
|
21
|
+
if (cluster.isPrimary) {
|
|
22
|
+
this.setupPrimary();
|
|
23
|
+
} else {
|
|
24
|
+
this.setupWorker();
|
|
25
|
+
}
|
|
26
|
+
this.handleShutdown();
|
|
27
|
+
}
|
|
28
|
+
setupPrimary() {
|
|
29
|
+
const numCPUs = cpus().length;
|
|
30
|
+
const numClusterWorkers = this.config.workerMode === "auto" ? numCPUs : this.config.workerCount;
|
|
31
|
+
for (let workerIndex = 0; workerIndex < numClusterWorkers; workerIndex++) {
|
|
32
|
+
cluster.fork();
|
|
33
|
+
}
|
|
34
|
+
cluster.on("online", (worker) => {
|
|
35
|
+
Logger.debug({
|
|
36
|
+
message: "Started cluster worker",
|
|
37
|
+
meta: {
|
|
38
|
+
ID: worker.id,
|
|
39
|
+
PID: worker.process.pid
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
cluster.on("exit", () => {
|
|
44
|
+
if (!this.isShuttingDown) {
|
|
45
|
+
cluster.fork();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Logger.debug({
|
|
49
|
+
message: "Started cluster master",
|
|
50
|
+
meta: {
|
|
51
|
+
Mode: this.config.workerMode,
|
|
52
|
+
"Worker Count": numClusterWorkers,
|
|
53
|
+
CPUs: numCPUs
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async setupWorker() {
|
|
58
|
+
await this.startApplicationCallback();
|
|
59
|
+
process.on("message", async (message) => {
|
|
60
|
+
if (message === "shutdown") {
|
|
61
|
+
Logger.debug({
|
|
62
|
+
message: "Worker received shutdown message, stopping...",
|
|
63
|
+
meta: {
|
|
64
|
+
PID: process.pid
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
await this.stopApplicationCallback();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
handleShutdown() {
|
|
72
|
+
this.shutdownSignals.forEach((signal) => {
|
|
73
|
+
process.on(signal, async () => await this.initiateShutdown());
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async initiateShutdown() {
|
|
77
|
+
if (this.isShuttingDown) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
this.isShuttingDown = true;
|
|
81
|
+
if (cluster.isPrimary) {
|
|
82
|
+
for (const id in cluster.workers) {
|
|
83
|
+
const worker = cluster.workers[id];
|
|
84
|
+
if (!worker) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
worker.send("shutdown");
|
|
88
|
+
}
|
|
89
|
+
let exitedWorkers = 0;
|
|
90
|
+
cluster.on("exit", () => {
|
|
91
|
+
exitedWorkers++;
|
|
92
|
+
const clusterWorkers = cluster.workers ?? {};
|
|
93
|
+
const numClusterWorkers = Object.keys(clusterWorkers).length;
|
|
94
|
+
if (exitedWorkers === numClusterWorkers) {
|
|
95
|
+
process.exit();
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
} else {
|
|
99
|
+
await this.stopApplicationCallback();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
ClusterManager as default
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=cluster-manager.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cluster/cluster-manager.ts"],
|
|
4
|
+
"sourcesContent": ["import cluster from 'node:cluster';\nimport { cpus } from 'node:os';\nimport type {\n ClusterManagerConfig,\n ClusterManagerProps,\n ClusterManagerWorkerModeManualConfig,\n} from './cluster-manager.interface.js';\nimport { Logger } from '../logger/index.js';\n\nexport default class ClusterManager {\n private readonly config: ClusterManagerConfig;\n\n private startApplicationCallback: () => Promise<void>;\n private stopApplicationCallback: () => Promise<void>;\n\n private shutdownSignals: NodeJS.Signals[] = ['SIGTERM', 'SIGINT'];\n private isShuttingDown = false;\n\n constructor({ config, startApplicationCallback, stopApplicationCallback }: ClusterManagerProps) {\n this.config = config;\n\n this.startApplicationCallback = startApplicationCallback;\n this.stopApplicationCallback = stopApplicationCallback;\n }\n\n public start(): void {\n if (cluster.isPrimary) {\n this.setupPrimary();\n } else {\n this.setupWorker();\n }\n\n this.handleShutdown();\n }\n\n private setupPrimary(): void {\n const numCPUs: number = cpus().length;\n\n const numClusterWorkers =\n this.config.workerMode === 'auto' ? numCPUs : (this.config as ClusterManagerWorkerModeManualConfig).workerCount;\n\n for (let workerIndex = 0; workerIndex < numClusterWorkers; workerIndex++) {\n cluster.fork();\n }\n\n cluster.on('online', worker => {\n Logger.debug({\n message: 'Started cluster worker',\n meta: {\n ID: worker.id,\n PID: worker.process.pid,\n },\n });\n });\n\n cluster.on('exit', () => {\n if (!this.isShuttingDown) {\n // Restart worker on unexpected exit\n cluster.fork();\n }\n });\n\n Logger.debug({\n message: 'Started cluster master',\n meta: {\n Mode: this.config.workerMode,\n 'Worker Count': numClusterWorkers,\n CPUs: numCPUs,\n },\n });\n }\n\n private async setupWorker(): Promise<void> {\n await this.startApplicationCallback();\n\n process.on('message', async message => {\n if (message === 'shutdown') {\n Logger.debug({\n message: 'Worker received shutdown message, stopping...',\n meta: {\n PID: process.pid,\n },\n });\n\n // Stop application\n await this.stopApplicationCallback();\n }\n });\n }\n\n private handleShutdown(): void {\n this.shutdownSignals.forEach(signal => {\n process.on(signal, async () => await this.initiateShutdown());\n });\n }\n\n private async initiateShutdown(): Promise<void> {\n if (this.isShuttingDown) {\n return;\n }\n\n this.isShuttingDown = true;\n\n if (cluster.isPrimary) {\n for (const id in cluster.workers) {\n const worker = cluster.workers[id];\n\n if (!worker) {\n continue;\n }\n\n worker.send('shutdown');\n }\n\n let exitedWorkers = 0;\n\n cluster.on('exit', () => {\n exitedWorkers++;\n\n const clusterWorkers = cluster.workers ?? {};\n const numClusterWorkers = Object.keys(clusterWorkers).length;\n\n if (exitedWorkers === numClusterWorkers) {\n process.exit();\n }\n });\n } else {\n await this.stopApplicationCallback();\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA,OAAO,aAAa;AACpB,SAAS,YAAY;AAMrB,SAAS,cAAc;AAEvB,MAAO,eAA6B;AAAA,EATpC,OASoC;AAAA;AAAA;AAAA,EACjB;AAAA,EAET;AAAA,EACA;AAAA,EAEA,kBAAoC,CAAC,WAAW,QAAQ;AAAA,EACxD,iBAAiB;AAAA,EAEzB,YAAY,EAAE,QAAQ,0BAA0B,wBAAwB,GAAwB;AAC9F,SAAK,SAAS;AAEd,SAAK,2BAA2B;AAChC,SAAK,0BAA0B;AAAA,EACjC;AAAA,EAEO,QAAc;AACnB,QAAI,QAAQ,WAAW;AACrB,WAAK,aAAa;AAAA,IACpB,OAAO;AACL,WAAK,YAAY;AAAA,IACnB;AAEA,SAAK,eAAe;AAAA,EACtB;AAAA,EAEQ,eAAqB;AAC3B,UAAM,UAAkB,KAAK,EAAE;AAE/B,UAAM,oBACJ,KAAK,OAAO,eAAe,SAAS,UAAW,KAAK,OAAgD;AAEtG,aAAS,cAAc,GAAG,cAAc,mBAAmB,eAAe;AACxE,cAAQ,KAAK;AAAA,IACf;AAEA,YAAQ,GAAG,UAAU,YAAU;AAC7B,aAAO,MAAM;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,UACJ,IAAI,OAAO;AAAA,UACX,KAAK,OAAO,QAAQ;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,YAAQ,GAAG,QAAQ,MAAM;AACvB,UAAI,CAAC,KAAK,gBAAgB;AAExB,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,MAAM,KAAK,OAAO;AAAA,QAClB,gBAAgB;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,cAA6B;AACzC,UAAM,KAAK,yBAAyB;AAEpC,YAAQ,GAAG,WAAW,OAAM,YAAW;AACrC,UAAI,YAAY,YAAY;AAC1B,eAAO,MAAM;AAAA,UACX,SAAS;AAAA,UACT,MAAM;AAAA,YACJ,KAAK,QAAQ;AAAA,UACf;AAAA,QACF,CAAC;AAGD,cAAM,KAAK,wBAAwB;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAuB;AAC7B,SAAK,gBAAgB,QAAQ,YAAU;AACrC,cAAQ,GAAG,QAAQ,YAAY,MAAM,KAAK,iBAAiB,CAAC;AAAA,IAC9D,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,mBAAkC;AAC9C,QAAI,KAAK,gBAAgB;AACvB;AAAA,IACF;AAEA,SAAK,iBAAiB;AAEtB,QAAI,QAAQ,WAAW;AACrB,iBAAW,MAAM,QAAQ,SAAS;AAChC,cAAM,SAAS,QAAQ,QAAQ,EAAE;AAEjC,YAAI,CAAC,QAAQ;AACX;AAAA,QACF;AAEA,eAAO,KAAK,UAAU;AAAA,MACxB;AAEA,UAAI,gBAAgB;AAEpB,cAAQ,GAAG,QAAQ,MAAM;AACvB;AAEA,cAAM,iBAAiB,QAAQ,WAAW,CAAC;AAC3C,cAAM,oBAAoB,OAAO,KAAK,cAAc,EAAE;AAEtD,YAAI,kBAAkB,mBAAmB;AACvC,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,YAAM,KAAK,wBAAwB;AAAA,IACrC;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cluster/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,kCAAkC,EAClC,oCAAoC,EACpC,KAAK,iBAAiB,GACvB,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ClusterManagerConfig,
|
|
3
|
+
ClusterManagerDisabledConfig,
|
|
4
|
+
ClusterManagerWorkerModeAutoConfig,
|
|
5
|
+
ClusterManagerWorkerModeManualConfig
|
|
6
|
+
} from "./cluster-manager.interface.js";
|
|
7
|
+
export {
|
|
8
|
+
ClusterManagerConfig,
|
|
9
|
+
ClusterManagerDisabledConfig,
|
|
10
|
+
ClusterManagerWorkerModeAutoConfig,
|
|
11
|
+
ClusterManagerWorkerModeManualConfig
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cluster/index.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n ClusterManagerConfig,\n ClusterManagerDisabledConfig,\n ClusterManagerWorkerModeAutoConfig,\n ClusterManagerWorkerModeManualConfig,\n type ClusterWorkerMode,\n} from './cluster-manager.interface.js';\n"],
|
|
5
|
+
"mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Argv } from 'yargs';
|
|
2
|
+
declare class CommandManager {
|
|
3
|
+
argv: Argv;
|
|
4
|
+
constructor();
|
|
5
|
+
addCommand({ command, description, builder, handler, }: {
|
|
6
|
+
command: string;
|
|
7
|
+
description: string;
|
|
8
|
+
builder: (yargs: Argv) => Argv;
|
|
9
|
+
handler: (argv: any) => void;
|
|
10
|
+
}): this;
|
|
11
|
+
addOption({ option, description, type, }: {
|
|
12
|
+
option: string;
|
|
13
|
+
description: string;
|
|
14
|
+
type: 'string' | 'boolean' | 'number';
|
|
15
|
+
}): this;
|
|
16
|
+
parse(): void;
|
|
17
|
+
}
|
|
18
|
+
export default CommandManager;
|
|
19
|
+
//# sourceMappingURL=command-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-manager.d.ts","sourceRoot":"","sources":["../../src/command/command-manager.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,IAAI,EAAE,MAAM,OAAO,CAAC;AAGzC,cAAM,cAAc;IACX,IAAI,EAAE,IAAI,CAAC;;IAQX,UAAU,CAAC,EAChB,OAAO,EACP,WAAW,EACX,OAAO,EACP,OAAO,GACR,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;QAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;KAC9B,GAAG,IAAI;IAMD,SAAS,CAAC,EACf,MAAM,EACN,WAAW,EACX,IAAI,GACL,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;KACvC,GAAG,IAAI;IASD,KAAK,IAAI,IAAI;CAGrB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import yargs from "yargs";
|
|
4
|
+
import { hideBin } from "yargs/helpers";
|
|
5
|
+
class CommandManager {
|
|
6
|
+
static {
|
|
7
|
+
__name(this, "CommandManager");
|
|
8
|
+
}
|
|
9
|
+
argv;
|
|
10
|
+
constructor() {
|
|
11
|
+
this.argv = yargs(hideBin(process.argv)).help().alias("help", "h");
|
|
12
|
+
this.argv.parse();
|
|
13
|
+
}
|
|
14
|
+
addCommand({
|
|
15
|
+
command,
|
|
16
|
+
description,
|
|
17
|
+
builder,
|
|
18
|
+
handler
|
|
19
|
+
}) {
|
|
20
|
+
this.argv.command(command, description, builder, handler);
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
addOption({
|
|
24
|
+
option,
|
|
25
|
+
description,
|
|
26
|
+
type
|
|
27
|
+
}) {
|
|
28
|
+
this.argv.option(option, {
|
|
29
|
+
description,
|
|
30
|
+
type
|
|
31
|
+
});
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
parse() {
|
|
35
|
+
this.argv.parse();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
var command_manager_default = CommandManager;
|
|
39
|
+
export {
|
|
40
|
+
command_manager_default as default
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=command-manager.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/command/command-manager.ts"],
|
|
4
|
+
"sourcesContent": ["import yargs, { type Argv } from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nclass CommandManager {\n public argv: Argv;\n\n constructor() {\n this.argv = yargs(hideBin(process.argv)).help().alias('help', 'h');\n\n this.argv.parse();\n }\n\n public addCommand({\n command,\n description,\n builder,\n handler,\n }: {\n command: string;\n description: string;\n builder: (yargs: Argv) => Argv;\n handler: (argv: any) => void;\n }): this {\n this.argv.command(command, description, builder, handler);\n\n return this;\n }\n\n public addOption({\n option,\n description,\n type,\n }: {\n option: string;\n description: string;\n type: 'string' | 'boolean' | 'number';\n }): this {\n this.argv.option(option, {\n description,\n type,\n });\n\n return this;\n }\n\n public parse(): void {\n this.argv.parse();\n }\n}\n\nexport default CommandManager;\n"],
|
|
5
|
+
"mappings": ";;AAAA,OAAO,WAA0B;AACjC,SAAS,eAAe;AAExB,MAAM,eAAe;AAAA,EAHrB,OAGqB;AAAA;AAAA;AAAA,EACZ;AAAA,EAEP,cAAc;AACZ,SAAK,OAAO,MAAM,QAAQ,QAAQ,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,QAAQ,GAAG;AAEjE,SAAK,KAAK,MAAM;AAAA,EAClB;AAAA,EAEO,WAAW;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKS;AACP,SAAK,KAAK,QAAQ,SAAS,aAAa,SAAS,OAAO;AAExD,WAAO;AAAA,EACT;AAAA,EAEO,UAAU;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIS;AACP,SAAK,KAAK,OAAO,QAAQ;AAAA,MACvB;AAAA,MACA;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEO,QAAc;AACnB,SAAK,KAAK,MAAM;AAAA,EAClB;AACF;AAEA,IAAO,0BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ApplicationConfig } from '../application/base-application.interface.js';
|
|
2
|
+
import type DatabaseInstance from '../database/instance.js';
|
|
3
|
+
import type { QueueManager } from '../queue/index.js';
|
|
4
|
+
import type RedisInstance from '../redis/instance.js';
|
|
5
|
+
import type { CommandConstructorParams } from './command.interface.js';
|
|
6
|
+
import { Logger } from '../logger/index.js';
|
|
7
|
+
export default abstract class Command {
|
|
8
|
+
/** Command name */
|
|
9
|
+
abstract name: string;
|
|
10
|
+
/** Command description */
|
|
11
|
+
abstract description: string;
|
|
12
|
+
protected applicationConfig: ApplicationConfig;
|
|
13
|
+
protected redisInstance: RedisInstance;
|
|
14
|
+
protected queueManager: QueueManager;
|
|
15
|
+
protected databaseInstance: DatabaseInstance;
|
|
16
|
+
protected logger: typeof Logger;
|
|
17
|
+
constructor({ applicationConfig, redisInstance, queueManager, databaseInstance }: CommandConstructorParams);
|
|
18
|
+
/**
|
|
19
|
+
* Run command
|
|
20
|
+
*/
|
|
21
|
+
abstract run(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Log command message
|
|
24
|
+
*/
|
|
25
|
+
log(message: string, meta?: Record<string, unknown>): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/command/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,OAAO;IACnC,mBAAmB;IACnB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,0BAA0B;IAC1B,SAAgB,WAAW,EAAE,MAAM,CAAC;IAEpC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAE/C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;gBAEpB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,EAAE,wBAAwB;IAU1G;;OAEG;aACa,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAUlE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApplicationConfig } from '../application/base-application.interface.js';
|
|
2
|
+
import type DatabaseInstance from '../database/instance.js';
|
|
3
|
+
import type { QueueManager } from '../queue/index.js';
|
|
4
|
+
import type RedisInstance from '../redis/instance.js';
|
|
5
|
+
export interface CommandConstructorParams {
|
|
6
|
+
applicationConfig: ApplicationConfig;
|
|
7
|
+
redisInstance: RedisInstance;
|
|
8
|
+
queueManager: QueueManager;
|
|
9
|
+
databaseInstance: DatabaseInstance;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=command.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.interface.d.ts","sourceRoot":"","sources":["../../src/command/command.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=command.interface.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { Logger } from "../logger/index.js";
|
|
4
|
+
class Command {
|
|
5
|
+
static {
|
|
6
|
+
__name(this, "Command");
|
|
7
|
+
}
|
|
8
|
+
applicationConfig;
|
|
9
|
+
redisInstance;
|
|
10
|
+
queueManager;
|
|
11
|
+
databaseInstance;
|
|
12
|
+
logger;
|
|
13
|
+
constructor({ applicationConfig, redisInstance, queueManager, databaseInstance }) {
|
|
14
|
+
this.applicationConfig = applicationConfig;
|
|
15
|
+
this.redisInstance = redisInstance;
|
|
16
|
+
this.queueManager = queueManager;
|
|
17
|
+
this.databaseInstance = databaseInstance;
|
|
18
|
+
this.logger = Logger;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Log command message
|
|
22
|
+
*/
|
|
23
|
+
log(message, meta) {
|
|
24
|
+
this.logger.custom({
|
|
25
|
+
level: "command",
|
|
26
|
+
message,
|
|
27
|
+
meta: {
|
|
28
|
+
Command: this.name,
|
|
29
|
+
...meta
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
Command as default
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/command/command.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ApplicationConfig } from '../application/base-application.interface.js';\nimport type DatabaseInstance from '../database/instance.js';\nimport type { QueueManager } from '../queue/index.js';\nimport type RedisInstance from '../redis/instance.js';\nimport type { CommandConstructorParams } from './command.interface.js';\nimport { Logger } from '../logger/index.js';\n\nexport default abstract class Command {\n /** Command name */\n public abstract name: string;\n\n /** Command description */\n public abstract description: string;\n\n protected applicationConfig: ApplicationConfig;\n\n protected redisInstance: RedisInstance;\n protected queueManager: QueueManager;\n protected databaseInstance: DatabaseInstance;\n\n protected logger: typeof Logger;\n\n constructor({ applicationConfig, redisInstance, queueManager, databaseInstance }: CommandConstructorParams) {\n this.applicationConfig = applicationConfig;\n\n this.redisInstance = redisInstance;\n this.queueManager = queueManager;\n this.databaseInstance = databaseInstance;\n\n this.logger = Logger;\n }\n\n /**\n * Run command\n */\n public abstract run(): Promise<void>;\n\n /**\n * Log command message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({\n level: 'command',\n message,\n meta: {\n Command: this.name,\n ...meta,\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAKA,SAAS,cAAc;AAEvB,MAAO,QAA+B;AAAA,EAPtC,OAOsC;AAAA;AAAA;AAAA,EAO1B;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAEV,YAAY,EAAE,mBAAmB,eAAe,cAAc,iBAAiB,GAA6B;AAC1G,SAAK,oBAAoB;AAEzB,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,mBAAmB;AAExB,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAUO,IAAI,SAAiB,MAAsC;AAChE,SAAK,OAAO,OAAO;AAAA,MACjB,OAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,KAAK;AAAA,QACd,GAAG;AAAA,MACL;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/command/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { default as Command } from './command.js';\nexport { default as CommandManager } from './command-manager.js';\n"],
|
|
5
|
+
"mappings": "AAAA,SAAoB,WAAXA,gBAA0B;AACnC,SAAoB,WAAXA,gBAAiC;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type Joi from 'joi';
|
|
2
|
+
import 'reflect-metadata';
|
|
3
|
+
export declare enum FormFieldType {
|
|
4
|
+
Text = "text",
|
|
5
|
+
Email = "email",
|
|
6
|
+
Password = "password",
|
|
7
|
+
Number = "number",
|
|
8
|
+
Date = "date",
|
|
9
|
+
Select = "select",
|
|
10
|
+
Checkbox = "checkbox",
|
|
11
|
+
Textarea = "textarea",
|
|
12
|
+
Image = "image",
|
|
13
|
+
DynamicInput = "dynamicInput",
|
|
14
|
+
ReadOnly = "readonly"
|
|
15
|
+
}
|
|
16
|
+
export interface FormFieldOptions {
|
|
17
|
+
type: FormFieldType;
|
|
18
|
+
label: string;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
typeOptions?: any;
|
|
21
|
+
typeValues?: any;
|
|
22
|
+
}
|
|
23
|
+
export interface FormFieldOptionsExtended extends FormFieldOptions {
|
|
24
|
+
name: string;
|
|
25
|
+
validation: Joi.PartialSchemaMap | null;
|
|
26
|
+
}
|
|
27
|
+
export declare const FormField: (options: FormFieldOptions) => (target: any, propertyKey: string) => void;
|
|
28
|
+
export declare const generateFormFields: ({ model }: {
|
|
29
|
+
model: any;
|
|
30
|
+
}) => FormFieldOptionsExtended[];
|
|
31
|
+
//# sourceMappingURL=dynamic-entity-form-decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-entity-form-decorators.d.ts","sourceRoot":"","sources":["../../src/database/dynamic-entity-form-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAS1B,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,SAAS,GAAI,SAAS,gBAAgB,MACzC,QAAQ,GAAG,EAAE,aAAa,MAAM,SAgBzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,WAAW;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,KAAG,wBAAwB,EAqCtF,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import "reflect-metadata";
|
|
4
|
+
var FormFieldType = /* @__PURE__ */ ((FormFieldType2) => {
|
|
5
|
+
FormFieldType2["Text"] = "text";
|
|
6
|
+
FormFieldType2["Email"] = "email";
|
|
7
|
+
FormFieldType2["Password"] = "password";
|
|
8
|
+
FormFieldType2["Number"] = "number";
|
|
9
|
+
FormFieldType2["Date"] = "date";
|
|
10
|
+
FormFieldType2["Select"] = "select";
|
|
11
|
+
FormFieldType2["Checkbox"] = "checkbox";
|
|
12
|
+
FormFieldType2["Textarea"] = "textarea";
|
|
13
|
+
FormFieldType2["Image"] = "image";
|
|
14
|
+
FormFieldType2["DynamicInput"] = "dynamicInput";
|
|
15
|
+
FormFieldType2["ReadOnly"] = "readonly";
|
|
16
|
+
return FormFieldType2;
|
|
17
|
+
})(FormFieldType || {});
|
|
18
|
+
const FormField = /* @__PURE__ */ __name((options) => {
|
|
19
|
+
return (target, propertyKey) => {
|
|
20
|
+
Reflect.defineMetadata("custom:formFieldType", options.type, target, propertyKey);
|
|
21
|
+
Reflect.defineMetadata("custom:formFieldLabel", options.label, target, propertyKey);
|
|
22
|
+
if (options.placeholder) {
|
|
23
|
+
Reflect.defineMetadata("custom:formFieldPlaceholder", options.placeholder, target, propertyKey);
|
|
24
|
+
}
|
|
25
|
+
if (options.typeOptions) {
|
|
26
|
+
Reflect.defineMetadata("custom:formFieldTypeOptions", options.typeOptions, target, propertyKey);
|
|
27
|
+
}
|
|
28
|
+
if (options.typeValues) {
|
|
29
|
+
Reflect.defineMetadata("custom:formFieldTypeValues", options.typeValues, target, propertyKey);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}, "FormField");
|
|
33
|
+
const generateFormFields = /* @__PURE__ */ __name(({ model }) => {
|
|
34
|
+
const formFields = [];
|
|
35
|
+
const { prototype } = model;
|
|
36
|
+
for (const propertyKey of Object.getOwnPropertyNames(prototype)) {
|
|
37
|
+
const formFieldType = Reflect.getMetadata("custom:formFieldType", prototype, propertyKey);
|
|
38
|
+
const formFieldLabel = Reflect.getMetadata("custom:formFieldLabel", prototype, propertyKey);
|
|
39
|
+
const formFieldPlaceholder = Reflect.getMetadata("custom:formFieldPlaceholder", prototype, propertyKey);
|
|
40
|
+
const formFieldTypeOptions = Reflect.getMetadata("custom:formFieldTypeOptions", prototype, propertyKey);
|
|
41
|
+
const formFieldTypeValues = Reflect.getMetadata("custom:formFieldTypeValues", prototype, propertyKey);
|
|
42
|
+
const validationRules = null;
|
|
43
|
+
if (formFieldType && formFieldLabel) {
|
|
44
|
+
formFields.push({
|
|
45
|
+
name: propertyKey,
|
|
46
|
+
type: formFieldType,
|
|
47
|
+
label: formFieldLabel,
|
|
48
|
+
placeholder: formFieldPlaceholder,
|
|
49
|
+
validation: validationRules,
|
|
50
|
+
typeOptions: formFieldTypeOptions,
|
|
51
|
+
typeValues: formFieldTypeValues
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return formFields;
|
|
56
|
+
}, "generateFormFields");
|
|
57
|
+
export {
|
|
58
|
+
FormField,
|
|
59
|
+
FormFieldType,
|
|
60
|
+
generateFormFields
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=dynamic-entity-form-decorators.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/database/dynamic-entity-form-decorators.ts"],
|
|
4
|
+
"sourcesContent": ["import type Joi from 'joi';\nimport 'reflect-metadata';\n\n// @FormField({\n// type: FormFieldType.DynamicInput,\n// label: 'Keywords',\n// typeOptions: { defaultMessage: 'Add Keyword' },\n// typeValues: [{ key: 'keyword', type: FormFieldType.Text, label: 'Keyword' }],\n// })\n\nexport enum FormFieldType {\n Text = 'text',\n Email = 'email',\n Password = 'password',\n Number = 'number',\n Date = 'date',\n Select = 'select',\n Checkbox = 'checkbox',\n Textarea = 'textarea',\n Image = 'image',\n DynamicInput = 'dynamicInput',\n ReadOnly = 'readonly',\n}\n\nexport interface FormFieldOptions {\n type: FormFieldType;\n label: string;\n placeholder?: string;\n typeOptions?: any;\n typeValues?: any;\n}\n\nexport interface FormFieldOptionsExtended extends FormFieldOptions {\n name: string;\n validation: Joi.PartialSchemaMap | null;\n}\n\nexport const FormField = (options: FormFieldOptions) => {\n return (target: any, propertyKey: string) => {\n Reflect.defineMetadata('custom:formFieldType', options.type, target, propertyKey);\n Reflect.defineMetadata('custom:formFieldLabel', options.label, target, propertyKey);\n\n if (options.placeholder) {\n Reflect.defineMetadata('custom:formFieldPlaceholder', options.placeholder, target, propertyKey);\n }\n\n if (options.typeOptions) {\n Reflect.defineMetadata('custom:formFieldTypeOptions', options.typeOptions, target, propertyKey);\n }\n\n if (options.typeValues) {\n Reflect.defineMetadata('custom:formFieldTypeValues', options.typeValues, target, propertyKey);\n }\n };\n};\n\nexport const generateFormFields = ({ model }: { model: any }): FormFieldOptionsExtended[] => {\n const formFields: FormFieldOptionsExtended[] = [];\n\n const { prototype } = model;\n\n for (const propertyKey of Object.getOwnPropertyNames(prototype)) {\n const formFieldType = Reflect.getMetadata('custom:formFieldType', prototype, propertyKey);\n const formFieldLabel = Reflect.getMetadata('custom:formFieldLabel', prototype, propertyKey);\n const formFieldPlaceholder = Reflect.getMetadata('custom:formFieldPlaceholder', prototype, propertyKey);\n const formFieldTypeOptions = Reflect.getMetadata('custom:formFieldTypeOptions', prototype, propertyKey);\n const formFieldTypeValues = Reflect.getMetadata('custom:formFieldTypeValues', prototype, propertyKey);\n\n const validationRules = null;\n\n // if (schema && schema.describe) {\n // const schemaDescription = schema.describe();\n // const propertySchema = schemaDescription.keys?.[propertyKey];\n\n // if (propertySchema) {\n // validationRules = propertySchema;\n // }\n // }\n\n if (formFieldType && formFieldLabel) {\n formFields.push({\n name: propertyKey,\n type: formFieldType,\n label: formFieldLabel,\n placeholder: formFieldPlaceholder,\n validation: validationRules,\n typeOptions: formFieldTypeOptions,\n typeValues: formFieldTypeValues,\n });\n }\n }\n\n return formFields;\n};\n"],
|
|
5
|
+
"mappings": ";;AACA,OAAO;AASA,IAAK,gBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,cAAW;AAXD,SAAAA;AAAA,GAAA;AA2BL,MAAM,YAAY,wBAAC,YAA8B;AACtD,SAAO,CAAC,QAAa,gBAAwB;AAC3C,YAAQ,eAAe,wBAAwB,QAAQ,MAAM,QAAQ,WAAW;AAChF,YAAQ,eAAe,yBAAyB,QAAQ,OAAO,QAAQ,WAAW;AAElF,QAAI,QAAQ,aAAa;AACvB,cAAQ,eAAe,+BAA+B,QAAQ,aAAa,QAAQ,WAAW;AAAA,IAChG;AAEA,QAAI,QAAQ,aAAa;AACvB,cAAQ,eAAe,+BAA+B,QAAQ,aAAa,QAAQ,WAAW;AAAA,IAChG;AAEA,QAAI,QAAQ,YAAY;AACtB,cAAQ,eAAe,8BAA8B,QAAQ,YAAY,QAAQ,WAAW;AAAA,IAC9F;AAAA,EACF;AACF,GAjByB;AAmBlB,MAAM,qBAAqB,wBAAC,EAAE,MAAM,MAAkD;AAC3F,QAAM,aAAyC,CAAC;AAEhD,QAAM,EAAE,UAAU,IAAI;AAEtB,aAAW,eAAe,OAAO,oBAAoB,SAAS,GAAG;AAC/D,UAAM,gBAAgB,QAAQ,YAAY,wBAAwB,WAAW,WAAW;AACxF,UAAM,iBAAiB,QAAQ,YAAY,yBAAyB,WAAW,WAAW;AAC1F,UAAM,uBAAuB,QAAQ,YAAY,+BAA+B,WAAW,WAAW;AACtG,UAAM,uBAAuB,QAAQ,YAAY,+BAA+B,WAAW,WAAW;AACtG,UAAM,sBAAsB,QAAQ,YAAY,8BAA8B,WAAW,WAAW;AAEpG,UAAM,kBAAkB;AAWxB,QAAI,iBAAiB,gBAAgB;AACnC,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT,GArCkC;",
|
|
6
|
+
"names": ["FormFieldType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseEntity } from '@mikro-orm/core';
|
|
2
|
+
import type { Schema, ValidationResult } from 'joi';
|
|
3
|
+
export declare abstract class DynamicEntity extends BaseEntity {
|
|
4
|
+
static schema: Schema;
|
|
5
|
+
static schemaUpdate: Schema;
|
|
6
|
+
static get singularName(): string;
|
|
7
|
+
static get pluralName(): string;
|
|
8
|
+
static get singularNameLowerCase(): string;
|
|
9
|
+
static get pluralNameLowerCase(): string;
|
|
10
|
+
static get singularNameCapitalized(): string;
|
|
11
|
+
static get pluralNameCapitalized(): string;
|
|
12
|
+
static validate<T>(item: T, isCreating: boolean): ValidationResult;
|
|
13
|
+
static getSearchFields(): string[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=dynamic-entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-entity.d.ts","sourceRoot":"","sources":["../../src/database/dynamic-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAEpD,8BAAsB,aAAc,SAAQ,UAAU;IACpD,OAAc,MAAM,EAAE,MAAM,CAAC;IAC7B,OAAc,YAAY,EAAE,MAAM,CAAC;IAEnC,WAAkB,YAAY,IAAI,MAAM,CAEvC;IAED,WAAkB,UAAU,IAAI,MAAM,CAErC;IAED,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;IAED,WAAkB,mBAAmB,IAAI,MAAM,CAE9C;IAED,WAAkB,uBAAuB,IAAI,MAAM,CAElD;IAED,WAAkB,qBAAqB,IAAI,MAAM,CAEhD;WAEa,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,GAAG,gBAAgB;WAU3D,eAAe,IAAI,MAAM,EAAE;CAG1C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { BaseEntity } from "@mikro-orm/core";
|
|
4
|
+
class DynamicEntity extends BaseEntity {
|
|
5
|
+
static {
|
|
6
|
+
__name(this, "DynamicEntity");
|
|
7
|
+
}
|
|
8
|
+
static schema;
|
|
9
|
+
static schemaUpdate;
|
|
10
|
+
static get singularName() {
|
|
11
|
+
return "Item";
|
|
12
|
+
}
|
|
13
|
+
static get pluralName() {
|
|
14
|
+
return "Items";
|
|
15
|
+
}
|
|
16
|
+
static get singularNameLowerCase() {
|
|
17
|
+
return this.singularName.toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
static get pluralNameLowerCase() {
|
|
20
|
+
return this.pluralName.toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
static get singularNameCapitalized() {
|
|
23
|
+
return this.singularName.charAt(0).toUpperCase() + this.singularName.slice(1).toLowerCase();
|
|
24
|
+
}
|
|
25
|
+
static get pluralNameCapitalized() {
|
|
26
|
+
return this.pluralName.charAt(0).toUpperCase() + this.pluralName.slice(1).toLowerCase();
|
|
27
|
+
}
|
|
28
|
+
static validate(item, isCreating) {
|
|
29
|
+
const schemaName = isCreating ? "schema" : "schemaUpdate";
|
|
30
|
+
if (!this[schemaName]) {
|
|
31
|
+
throw new Error("Schema not defined in entity.");
|
|
32
|
+
}
|
|
33
|
+
return this[schemaName].validate(item, { abortEarly: false });
|
|
34
|
+
}
|
|
35
|
+
static getSearchFields() {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
DynamicEntity
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=dynamic-entity.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/database/dynamic-entity.ts"],
|
|
4
|
+
"sourcesContent": ["import { BaseEntity } from '@mikro-orm/core';\nimport type { Schema, ValidationResult } from 'joi';\n\nexport abstract class DynamicEntity extends BaseEntity {\n public static schema: Schema;\n public static schemaUpdate: Schema;\n\n public static get singularName(): string {\n return 'Item';\n }\n\n public static get pluralName(): string {\n return 'Items';\n }\n\n public static get singularNameLowerCase(): string {\n return this.singularName.toLowerCase();\n }\n\n public static get pluralNameLowerCase(): string {\n return this.pluralName.toLowerCase();\n }\n\n public static get singularNameCapitalized(): string {\n return this.singularName.charAt(0).toUpperCase() + this.singularName.slice(1).toLowerCase();\n }\n\n public static get pluralNameCapitalized(): string {\n return this.pluralName.charAt(0).toUpperCase() + this.pluralName.slice(1).toLowerCase();\n }\n\n public static validate<T>(item: T, isCreating: boolean): ValidationResult {\n const schemaName = isCreating ? 'schema' : 'schemaUpdate';\n\n if (!this[schemaName]) {\n throw new Error('Schema not defined in entity.');\n }\n\n return this[schemaName].validate(item, { abortEarly: false });\n }\n\n public static getSearchFields(): string[] {\n return [];\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA,SAAS,kBAAkB;AAGpB,MAAe,sBAAsB,WAAW;AAAA,EAHvD,OAGuD;AAAA;AAAA;AAAA,EACrD,OAAc;AAAA,EACd,OAAc;AAAA,EAEd,WAAkB,eAAuB;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,WAAkB,aAAqB;AACrC,WAAO;AAAA,EACT;AAAA,EAEA,WAAkB,wBAAgC;AAChD,WAAO,KAAK,aAAa,YAAY;AAAA,EACvC;AAAA,EAEA,WAAkB,sBAA8B;AAC9C,WAAO,KAAK,WAAW,YAAY;AAAA,EACrC;AAAA,EAEA,WAAkB,0BAAkC;AAClD,WAAO,KAAK,aAAa,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,aAAa,MAAM,CAAC,EAAE,YAAY;AAAA,EAC5F;AAAA,EAEA,WAAkB,wBAAgC;AAChD,WAAO,KAAK,WAAW,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,YAAY;AAAA,EACxF;AAAA,EAEA,OAAc,SAAY,MAAS,YAAuC;AACxE,UAAM,aAAa,aAAa,WAAW;AAE3C,QAAI,CAAC,KAAK,UAAU,GAAG;AACrB,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,WAAO,KAAK,UAAU,EAAE,SAAS,MAAM,EAAE,YAAY,MAAM,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAc,kBAA4B;AACxC,WAAO,CAAC;AAAA,EACV;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as DatabaseManager } from './manager.js';
|
|
2
|
+
export { default as DatabaseInstance } from './instance.js';
|
|
3
|
+
export { FormField, FormFieldType } from './dynamic-entity-form-decorators.js';
|
|
4
|
+
export { DynamicEntity } from './dynamic-entity.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as default2 } from "./manager.js";
|
|
2
|
+
import { default as default3 } from "./instance.js";
|
|
3
|
+
import { FormField, FormFieldType } from "./dynamic-entity-form-decorators.js";
|
|
4
|
+
import { DynamicEntity } from "./dynamic-entity.js";
|
|
5
|
+
export {
|
|
6
|
+
default3 as DatabaseInstance,
|
|
7
|
+
default2 as DatabaseManager,
|
|
8
|
+
DynamicEntity,
|
|
9
|
+
FormField,
|
|
10
|
+
FormFieldType
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/database/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { default as DatabaseManager } from './manager.js';\nexport { default as DatabaseInstance } from './instance.js';\nexport { FormField, FormFieldType } from './dynamic-entity-form-decorators.js';\nexport { DynamicEntity } from './dynamic-entity.js';\n"],
|
|
5
|
+
"mappings": "AAAA,SAAoB,WAAXA,gBAAkC;AAC3C,SAAoB,WAAXA,gBAAmC;AAC5C,SAAS,WAAW,qBAAqB;AACzC,SAAS,qBAAqB;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { EntityManager, MikroORM } from '@mikro-orm/postgresql';
|
|
2
|
+
import type { ApplicationConfig } from '../application/base-application.interface.js';
|
|
3
|
+
import type DatabaseManager from './manager.js';
|
|
4
|
+
/**
|
|
5
|
+
* Database Instance
|
|
6
|
+
*/
|
|
7
|
+
export default class DatabaseInstance {
|
|
8
|
+
/** Database manager */
|
|
9
|
+
private databaseManager;
|
|
10
|
+
/** Application config */
|
|
11
|
+
private applicationConfig;
|
|
12
|
+
/** MikroORM instance */
|
|
13
|
+
private orm;
|
|
14
|
+
/**
|
|
15
|
+
* Database Instance constructor
|
|
16
|
+
* @param orm MikroORM instance
|
|
17
|
+
*/
|
|
18
|
+
constructor({ databaseManager, applicationConfig, orm, }: {
|
|
19
|
+
databaseManager: DatabaseManager;
|
|
20
|
+
applicationConfig: ApplicationConfig;
|
|
21
|
+
orm: MikroORM;
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Check if database is connected
|
|
25
|
+
*/
|
|
26
|
+
isConnected(): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Get EntityManager
|
|
29
|
+
*/
|
|
30
|
+
getEntityManager(): EntityManager;
|
|
31
|
+
/**
|
|
32
|
+
* Disconnect
|
|
33
|
+
*/
|
|
34
|
+
disconnect(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/database/instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,eAAe,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,uBAAuB;IACvB,OAAO,CAAC,eAAe,CAAkB;IAEzC,yBAAyB;IACzB,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAW;IAEtB;;;OAGG;gBACS,EACV,eAAe,EACf,iBAAiB,EACjB,GAAG,GACJ,EAAE;QACD,eAAe,EAAE,eAAe,CAAC;QACjC,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,GAAG,EAAE,QAAQ,CAAC;KACf;IAgBD;;OAEG;IACI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC;;OAEG;IACI,gBAAgB,IAAI,aAAa;IAIxC;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAKzC"}
|