@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,244 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { Queue } from "bullmq";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { Logger } from "../logger/index.js";
|
|
6
|
+
import QueueWorker from "./worker.js";
|
|
7
|
+
import { Helper, Loader } from "../util/index.js";
|
|
8
|
+
import { existsSync } from "fs";
|
|
9
|
+
class QueueManager {
|
|
10
|
+
static {
|
|
11
|
+
__name(this, "QueueManager");
|
|
12
|
+
}
|
|
13
|
+
logger = Logger;
|
|
14
|
+
applicationConfig;
|
|
15
|
+
options;
|
|
16
|
+
redisInstance;
|
|
17
|
+
databaseInstance;
|
|
18
|
+
eventManager;
|
|
19
|
+
queues = /* @__PURE__ */ new Map();
|
|
20
|
+
jobProcessors = /* @__PURE__ */ new Map();
|
|
21
|
+
constructor({
|
|
22
|
+
applicationConfig,
|
|
23
|
+
options,
|
|
24
|
+
queues: _queues,
|
|
25
|
+
redisInstance,
|
|
26
|
+
databaseInstance,
|
|
27
|
+
eventManager
|
|
28
|
+
}) {
|
|
29
|
+
const defaultOptions = {};
|
|
30
|
+
this.options = Helper.defaultsDeep(options, defaultOptions);
|
|
31
|
+
this.applicationConfig = applicationConfig;
|
|
32
|
+
this.redisInstance = redisInstance;
|
|
33
|
+
this.databaseInstance = databaseInstance;
|
|
34
|
+
this.eventManager = eventManager;
|
|
35
|
+
}
|
|
36
|
+
async registerQueues({ queues }) {
|
|
37
|
+
if (!queues) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const processorsDirectoryExists = await existsSync(this.options.processorsDirectory);
|
|
41
|
+
if (!processorsDirectoryExists) {
|
|
42
|
+
Logger.warn({
|
|
43
|
+
message: "Processors directory not found",
|
|
44
|
+
meta: {
|
|
45
|
+
Directory: this.options.processorsDirectory
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const jobProcessorClasses = await Loader.loadModulesInDirectory({
|
|
52
|
+
directory: this.options.processorsDirectory,
|
|
53
|
+
extensions: [".ts", ".js"]
|
|
54
|
+
});
|
|
55
|
+
for (const queue of queues) {
|
|
56
|
+
this.registerQueue({ queue, jobProcessorClasses });
|
|
57
|
+
}
|
|
58
|
+
if (this.applicationConfig.queue.log?.queuesRegistered) {
|
|
59
|
+
this.log("Registered queue", {
|
|
60
|
+
"Queue Count": queues.length,
|
|
61
|
+
"Job Count": this.jobProcessors.size
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
} catch (error) {
|
|
65
|
+
Logger.error({ error });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
registerQueue({ queue, jobProcessorClasses }) {
|
|
69
|
+
if (!queue.jobs) {
|
|
70
|
+
Logger.warn({
|
|
71
|
+
message: "No jobs found for queue, skip register",
|
|
72
|
+
meta: {
|
|
73
|
+
Name: queue.name
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const queueOptions = {
|
|
79
|
+
connection: this.redisInstance.client,
|
|
80
|
+
defaultJobOptions: {
|
|
81
|
+
removeOnComplete: true,
|
|
82
|
+
removeOnFail: true
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const queueInstance = new Queue(queue.name, queueOptions);
|
|
86
|
+
queueInstance.on("error", this.onQueueError);
|
|
87
|
+
queueInstance.on("waiting", this.onQueueWaiting);
|
|
88
|
+
queueInstance.on("progress", this.onQueueProgress);
|
|
89
|
+
queueInstance.on("removed", this.onQueueRemoved);
|
|
90
|
+
if (!queue.isExternal) {
|
|
91
|
+
const workerOptions = {
|
|
92
|
+
connection: this.redisInstance.client,
|
|
93
|
+
autorun: true
|
|
94
|
+
};
|
|
95
|
+
new QueueWorker({
|
|
96
|
+
applicationConfig: this.applicationConfig,
|
|
97
|
+
queueManager: this,
|
|
98
|
+
name: queue.name,
|
|
99
|
+
processor: this.workerProcessor,
|
|
100
|
+
options: workerOptions,
|
|
101
|
+
redisInstance: this.redisInstance
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
this.queues.set(queue.name, queueInstance);
|
|
105
|
+
if (this.applicationConfig.queue.log?.queueRegistered) {
|
|
106
|
+
this.log("Registered queue", { Name: queue.name });
|
|
107
|
+
}
|
|
108
|
+
this.registerJobProcessors({
|
|
109
|
+
queue,
|
|
110
|
+
jobs: queue.jobs,
|
|
111
|
+
jobProcessorClasses
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
registerJobProcessors({
|
|
115
|
+
queue,
|
|
116
|
+
jobs,
|
|
117
|
+
jobProcessorClasses
|
|
118
|
+
}) {
|
|
119
|
+
if (!jobs) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const scriptFileExtension = Helper.getScriptFileExtension();
|
|
123
|
+
for (const job of jobs) {
|
|
124
|
+
if (!queue.isExternal) {
|
|
125
|
+
const ProcessorClass = jobProcessorClasses[job.id];
|
|
126
|
+
if (!ProcessorClass) {
|
|
127
|
+
const jobPath = path.join(this.options.processorsDirectory, `${job.id}.${scriptFileExtension}`);
|
|
128
|
+
throw new Error(`Processor class not found (Job ID: ${job.id} | Path: ${jobPath})`);
|
|
129
|
+
}
|
|
130
|
+
const processorInstance = new ProcessorClass(
|
|
131
|
+
this,
|
|
132
|
+
this.applicationConfig,
|
|
133
|
+
this.redisInstance,
|
|
134
|
+
this.databaseInstance,
|
|
135
|
+
this.eventManager
|
|
136
|
+
);
|
|
137
|
+
this.jobProcessors.set(job.id, processorInstance);
|
|
138
|
+
}
|
|
139
|
+
if (this.applicationConfig.queue.log?.jobRegistered) {
|
|
140
|
+
this.log("Job registered", { ID: job.id });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
onQueueError = /* @__PURE__ */ __name((error) => {
|
|
145
|
+
Logger.error({ error });
|
|
146
|
+
}, "onQueueError");
|
|
147
|
+
onQueueWaiting = /* @__PURE__ */ __name((job) => {
|
|
148
|
+
if (this.applicationConfig.queue.log?.queueWaiting) {
|
|
149
|
+
this.log("Waiting...", { Queue: job.queueName, Job: job.id });
|
|
150
|
+
}
|
|
151
|
+
}, "onQueueWaiting");
|
|
152
|
+
onQueueProgress = /* @__PURE__ */ __name((job, progress) => {
|
|
153
|
+
this.log("Progress update", {
|
|
154
|
+
Queue: job.queueName,
|
|
155
|
+
"Job Name": job.name,
|
|
156
|
+
"Job ID": job.id,
|
|
157
|
+
Progress: progress
|
|
158
|
+
});
|
|
159
|
+
}, "onQueueProgress");
|
|
160
|
+
onQueueRemoved = /* @__PURE__ */ __name((job) => {
|
|
161
|
+
this.log("Removed queue", { Queue: job.queueName, Job: job.id });
|
|
162
|
+
}, "onQueueRemoved");
|
|
163
|
+
addJobToQueue = /* @__PURE__ */ __name(async ({ queueId, jobId, data }) => {
|
|
164
|
+
const queue = this.queues.get(queueId);
|
|
165
|
+
if (!queue) {
|
|
166
|
+
this.log("Queue not found", { "Queue ID": queueId });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const job = await queue.add(jobId, data);
|
|
170
|
+
const dataStr = JSON.stringify(data);
|
|
171
|
+
const maxLogDataStrLength = 50;
|
|
172
|
+
const truncatedLogDataStr = dataStr.length > maxLogDataStrLength ? `${dataStr.substring(0, maxLogDataStrLength)}...` : dataStr;
|
|
173
|
+
if (this.applicationConfig.queue.log?.jobAdded) {
|
|
174
|
+
this.log("Job added", {
|
|
175
|
+
Queue: queueId,
|
|
176
|
+
"Job ID": jobId,
|
|
177
|
+
Data: truncatedLogDataStr
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return job;
|
|
181
|
+
}, "addJobToQueue");
|
|
182
|
+
workerProcessor = /* @__PURE__ */ __name(async (job) => {
|
|
183
|
+
if (!job) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const startTime = process.hrtime();
|
|
187
|
+
job.updateData({ ...job.data, startTime });
|
|
188
|
+
this.log("Worker processing...", {
|
|
189
|
+
Queue: job.queueName,
|
|
190
|
+
"Job Name": job.name,
|
|
191
|
+
"Job ID": job.id
|
|
192
|
+
});
|
|
193
|
+
const processor = this.jobProcessors.get(job.name);
|
|
194
|
+
if (!processor) {
|
|
195
|
+
throw new Error(`No processor registered for job (Name: ${job.name})`);
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const jobResult = await processor.process({ job });
|
|
199
|
+
return jobResult;
|
|
200
|
+
} catch (error) {
|
|
201
|
+
Logger.warn({
|
|
202
|
+
message: "Queue worker processing error",
|
|
203
|
+
meta: {
|
|
204
|
+
Queue: job.queueName,
|
|
205
|
+
"Job Name": job.name,
|
|
206
|
+
"Job ID": job.id,
|
|
207
|
+
Error: error.message
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
Logger.error({ error });
|
|
211
|
+
}
|
|
212
|
+
}, "workerProcessor");
|
|
213
|
+
async listAllJobsWithStatus() {
|
|
214
|
+
const jobsSummary = [];
|
|
215
|
+
for (const [queueName, queue] of this.queues) {
|
|
216
|
+
const jobStates = ["active", "waiting", "completed", "failed", "delayed", "paused"];
|
|
217
|
+
const jobsDetailsPromises = jobStates.map(async (state) => {
|
|
218
|
+
const jobs = await queue.getJobs([state]);
|
|
219
|
+
return jobs.map((job) => ({
|
|
220
|
+
id: job.id,
|
|
221
|
+
name: job.name,
|
|
222
|
+
queueName,
|
|
223
|
+
state,
|
|
224
|
+
attemptsMade: job.attemptsMade,
|
|
225
|
+
failedReason: job.failedReason
|
|
226
|
+
}));
|
|
227
|
+
});
|
|
228
|
+
const results = await Promise.all(jobsDetailsPromises);
|
|
229
|
+
const flattenedResults = results.flat();
|
|
230
|
+
jobsSummary.push(...flattenedResults);
|
|
231
|
+
}
|
|
232
|
+
return jobsSummary;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Log queue message
|
|
236
|
+
*/
|
|
237
|
+
log(message, meta) {
|
|
238
|
+
this.logger.custom({ level: "queue", message, meta });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
export {
|
|
242
|
+
QueueManager as default
|
|
243
|
+
};
|
|
244
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/queue/manager.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Job, type Processor, Queue, type QueueOptions, type WorkerOptions } from 'bullmq';\nimport path from 'path';\nimport type { QueueManagerConstructorParams, QueueManagerOptions } from './manager.interface.js';\nimport type { RedisInstance } from '../redis/index.js';\nimport type { DatabaseInstance } from '../database/index.js';\nimport { Logger } from '../logger/index.js';\nimport QueueWorker from './worker.js';\nimport type BaseProcessor from './processor/base.js';\nimport { Helper, Loader } from '../util/index.js';\nimport type { QueueJob, QueueJobData } from './job.interface.js';\nimport type { ProcessorConstructor } from './processor/processor.interface.js';\nimport type { QueueItem } from './index.interface.js';\nimport { existsSync } from 'fs';\nimport type { ApplicationConfig } from '../application/base-application.interface.js';\nimport type EventManager from '../event/manager.js';\n\nexport default class QueueManager {\n private logger: typeof Logger = Logger;\n\n private applicationConfig: ApplicationConfig;\n\n private options: QueueManagerOptions;\n\n private redisInstance: RedisInstance;\n private databaseInstance: DatabaseInstance | null;\n private eventManager?: EventManager;\n\n private queues: Map<string, Queue> = new Map();\n\n private jobProcessors: Map<string, BaseProcessor> = new Map();\n\n constructor({\n applicationConfig,\n options,\n queues: _queues,\n redisInstance,\n databaseInstance,\n eventManager,\n }: QueueManagerConstructorParams) {\n // Define default options\n const defaultOptions: Partial<QueueManagerOptions> = {};\n\n // Merge options\n this.options = Helper.defaultsDeep(options, defaultOptions);\n\n this.applicationConfig = applicationConfig;\n\n this.redisInstance = redisInstance;\n this.databaseInstance = databaseInstance;\n this.eventManager = eventManager;\n }\n\n public async registerQueues({ queues }: { queues: QueueItem[] }): Promise<void> {\n if (!queues) {\n return;\n }\n\n // Check if processors directory exists\n const processorsDirectoryExists = await existsSync(this.options.processorsDirectory);\n\n if (!processorsDirectoryExists) {\n Logger.warn({\n message: 'Processors directory not found',\n meta: {\n Directory: this.options.processorsDirectory,\n },\n });\n\n return;\n }\n\n try {\n const jobProcessorClasses = await Loader.loadModulesInDirectory({\n directory: this.options.processorsDirectory,\n extensions: ['.ts', '.js'],\n });\n\n for (const queue of queues) {\n this.registerQueue({ queue, jobProcessorClasses });\n }\n\n if (this.applicationConfig.queue.log?.queuesRegistered) {\n this.log('Registered queue', {\n 'Queue Count': queues.length,\n 'Job Count': this.jobProcessors.size,\n });\n }\n } catch (error) {\n Logger.error({ error });\n }\n }\n\n private registerQueue({ queue, jobProcessorClasses }: { queue: QueueItem; jobProcessorClasses: any }): void {\n if (!queue.jobs) {\n Logger.warn({\n message: 'No jobs found for queue, skip register',\n meta: {\n Name: queue.name,\n },\n });\n\n return;\n }\n\n const queueOptions: QueueOptions = {\n connection: this.redisInstance.client,\n defaultJobOptions: {\n removeOnComplete: true,\n removeOnFail: true,\n },\n };\n\n const queueInstance = new Queue(queue.name, queueOptions);\n\n queueInstance.on('error', this.onQueueError);\n queueInstance.on('waiting', this.onQueueWaiting);\n queueInstance.on('progress', this.onQueueProgress);\n queueInstance.on('removed', this.onQueueRemoved);\n\n if (!queue.isExternal) {\n const workerOptions: WorkerOptions = {\n connection: this.redisInstance.client,\n autorun: true,\n };\n\n new QueueWorker({\n applicationConfig: this.applicationConfig,\n queueManager: this,\n name: queue.name,\n processor: this.workerProcessor,\n options: workerOptions,\n redisInstance: this.redisInstance,\n });\n }\n\n this.queues.set(queue.name, queueInstance);\n\n if (this.applicationConfig.queue.log?.queueRegistered) {\n this.log('Registered queue', { Name: queue.name });\n }\n\n // Register job processors\n this.registerJobProcessors({\n queue,\n jobs: queue.jobs,\n jobProcessorClasses,\n });\n }\n\n private registerJobProcessors({\n queue,\n jobs,\n jobProcessorClasses,\n }: {\n queue: QueueItem;\n jobs: QueueJob[];\n jobProcessorClasses: Record<string, ProcessorConstructor>;\n }): void {\n if (!jobs) {\n return;\n }\n\n const scriptFileExtension = Helper.getScriptFileExtension();\n\n for (const job of jobs) {\n if (!queue.isExternal) {\n const ProcessorClass = jobProcessorClasses[job.id];\n\n if (!ProcessorClass) {\n const jobPath = path.join(this.options.processorsDirectory, `${job.id}.${scriptFileExtension}`);\n\n throw new Error(`Processor class not found (Job ID: ${job.id} | Path: ${jobPath})`);\n }\n\n const processorInstance = new ProcessorClass(\n this,\n this.applicationConfig,\n this.redisInstance,\n this.databaseInstance,\n this.eventManager,\n );\n\n this.jobProcessors.set(job.id, processorInstance);\n }\n\n if (this.applicationConfig.queue.log?.jobRegistered) {\n this.log('Job registered', { ID: job.id });\n }\n }\n }\n\n private onQueueError = (error: Error): void => {\n Logger.error({ error });\n };\n\n private onQueueWaiting = (job: Job): void => {\n if (this.applicationConfig.queue.log?.queueWaiting) {\n this.log('Waiting...', { Queue: job.queueName, Job: job.id });\n }\n };\n\n private onQueueProgress = (job: Job<any, any, string>, progress: number | object): void => {\n this.log('Progress update', {\n Queue: job.queueName,\n 'Job Name': job.name,\n 'Job ID': job.id,\n Progress: progress,\n });\n };\n\n private onQueueRemoved = (job: Job): void => {\n this.log('Removed queue', { Queue: job.queueName, Job: job.id });\n };\n\n public addJobToQueue = async ({ queueId, jobId, data }: { queueId: string; jobId: string; data: QueueJobData }) => {\n const queue = this.queues.get(queueId);\n\n if (!queue) {\n this.log('Queue not found', { 'Queue ID': queueId });\n\n return;\n }\n\n const job = await queue.add(jobId, data);\n\n const dataStr = JSON.stringify(data);\n\n const maxLogDataStrLength = 50;\n const truncatedLogDataStr =\n dataStr.length > maxLogDataStrLength ? `${dataStr.substring(0, maxLogDataStrLength)}...` : dataStr;\n\n if (this.applicationConfig.queue.log?.jobAdded) {\n this.log('Job added', {\n Queue: queueId,\n 'Job ID': jobId,\n Data: truncatedLogDataStr,\n });\n }\n\n return job;\n };\n\n private workerProcessor = async (job: Job): Promise<Processor<any, any, string> | undefined> => {\n if (!job) {\n return;\n }\n\n const startTime = process.hrtime();\n\n // Add start time to job data\n job.updateData({ ...job.data, startTime });\n\n this.log('Worker processing...', {\n Queue: job.queueName,\n 'Job Name': job.name,\n 'Job ID': job.id,\n });\n\n const processor = this.jobProcessors.get(job.name);\n\n if (!processor) {\n throw new Error(`No processor registered for job (Name: ${job.name})`);\n }\n\n try {\n const jobResult = await processor.process({ job });\n\n return jobResult;\n } catch (error) {\n Logger.warn({\n message: 'Queue worker processing error',\n meta: {\n Queue: job.queueName,\n 'Job Name': job.name,\n 'Job ID': job.id,\n Error: (error as Error).message,\n },\n });\n\n Logger.error({ error });\n }\n };\n\n public async listAllJobsWithStatus(): Promise<any[]> {\n const jobsSummary: any[] = [];\n\n for (const [queueName, queue] of this.queues) {\n const jobStates = ['active', 'waiting', 'completed', 'failed', 'delayed', 'paused'];\n\n const jobsDetailsPromises = jobStates.map(async (state: any) => {\n const jobs = await queue.getJobs([state]);\n return jobs.map(job => ({\n id: job.id,\n name: job.name,\n queueName,\n state,\n attemptsMade: job.attemptsMade,\n failedReason: job.failedReason,\n }));\n });\n\n const results = await Promise.all(jobsDetailsPromises);\n const flattenedResults = results.flat();\n\n jobsSummary.push(...flattenedResults);\n }\n\n return jobsSummary;\n }\n\n /**\n * Log queue message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({ level: 'queue', message, meta });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Job } from 'bullmq';
|
|
2
|
+
import type { QueueManager } from '../../queue/index.js';
|
|
3
|
+
import type { DatabaseInstance } from '../../database/index.js';
|
|
4
|
+
import type { ApplicationConfig } from '../../application/base-application.interface.js';
|
|
5
|
+
import type { RedisInstance } from '../../redis/index.js';
|
|
6
|
+
import type EventManager from '../../event/manager.js';
|
|
7
|
+
export default abstract class BaseProcessor {
|
|
8
|
+
protected queueManager: QueueManager;
|
|
9
|
+
protected applicationConfig: ApplicationConfig;
|
|
10
|
+
protected redisInstance: RedisInstance;
|
|
11
|
+
protected databaseInstance: DatabaseInstance | null;
|
|
12
|
+
protected eventManager?: EventManager | undefined;
|
|
13
|
+
private logger;
|
|
14
|
+
constructor(queueManager: QueueManager, applicationConfig: ApplicationConfig, redisInstance: RedisInstance, databaseInstance: DatabaseInstance | null, eventManager?: EventManager | undefined);
|
|
15
|
+
abstract process({ job }: {
|
|
16
|
+
job: Job;
|
|
17
|
+
}): Promise<any>;
|
|
18
|
+
/**
|
|
19
|
+
* Enhanced logger with structured methods
|
|
20
|
+
*/
|
|
21
|
+
log: {
|
|
22
|
+
error: (error: Error | unknown, message?: string, meta?: Record<string, unknown>) => void;
|
|
23
|
+
info: (message: string, meta?: Record<string, unknown>) => void;
|
|
24
|
+
warn: (message: string, meta?: Record<string, unknown>) => void;
|
|
25
|
+
debug: (message: string, meta?: Record<string, unknown>) => void;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/queue/processor/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,aAAa;IAIvC,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,SAAS,CAAC,aAAa,EAAE,aAAa;IACtC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IACnD,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY;IAPvC,OAAO,CAAC,MAAM,CAAyB;gBAG3B,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,YAAY,CAAC,EAAE,YAAY,YAAA;aAGvB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAE5D;;OAEG;IACI,GAAG;uBACO,KAAK,GAAG,OAAO,YAAY,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;wBAavE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;wBAI7C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;yBAI5C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAAI;MAG9D;CACH"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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 BaseProcessor {
|
|
5
|
+
constructor(queueManager, applicationConfig, redisInstance, databaseInstance, eventManager) {
|
|
6
|
+
this.queueManager = queueManager;
|
|
7
|
+
this.applicationConfig = applicationConfig;
|
|
8
|
+
this.redisInstance = redisInstance;
|
|
9
|
+
this.databaseInstance = databaseInstance;
|
|
10
|
+
this.eventManager = eventManager;
|
|
11
|
+
}
|
|
12
|
+
static {
|
|
13
|
+
__name(this, "BaseProcessor");
|
|
14
|
+
}
|
|
15
|
+
logger = Logger;
|
|
16
|
+
/**
|
|
17
|
+
* Enhanced logger with structured methods
|
|
18
|
+
*/
|
|
19
|
+
log = {
|
|
20
|
+
error: /* @__PURE__ */ __name((error, message, meta) => {
|
|
21
|
+
if (message) {
|
|
22
|
+
const errorMeta = {
|
|
23
|
+
...meta ?? {},
|
|
24
|
+
error: error instanceof Error ? error.message : String(error),
|
|
25
|
+
stack: error instanceof Error ? error.stack : void 0
|
|
26
|
+
};
|
|
27
|
+
this.logger.custom({ level: "queueJob", message, meta: errorMeta });
|
|
28
|
+
} else {
|
|
29
|
+
this.logger.custom({ level: "queueJob", message: error });
|
|
30
|
+
}
|
|
31
|
+
}, "error"),
|
|
32
|
+
info: /* @__PURE__ */ __name((message, meta) => {
|
|
33
|
+
this.logger.custom({ level: "queueJob", message, meta });
|
|
34
|
+
}, "info"),
|
|
35
|
+
warn: /* @__PURE__ */ __name((message, meta) => {
|
|
36
|
+
this.logger.custom({ level: "queueJob", message, meta });
|
|
37
|
+
}, "warn"),
|
|
38
|
+
debug: /* @__PURE__ */ __name((message, meta) => {
|
|
39
|
+
this.logger.custom({ level: "queueJob", message, meta });
|
|
40
|
+
}, "debug")
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export {
|
|
44
|
+
BaseProcessor as default
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/queue/processor/base.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Job } from 'bullmq';\nimport type { QueueManager } from '../../queue/index.js';\nimport type { DatabaseInstance } from '../../database/index.js';\nimport type { ApplicationConfig } from '../../application/base-application.interface.js';\nimport { Logger } from '../../logger/index.js';\nimport type { RedisInstance } from '../../redis/index.js';\nimport type EventManager from '../../event/manager.js';\n\nexport default abstract class BaseProcessor {\n private logger: typeof Logger = Logger;\n\n constructor(\n protected queueManager: QueueManager,\n protected applicationConfig: ApplicationConfig,\n protected redisInstance: RedisInstance,\n protected databaseInstance: DatabaseInstance | null,\n protected eventManager?: EventManager,\n ) {}\n\n public abstract process({ job }: { job: Job }): Promise<any>;\n\n /**\n * Enhanced logger with structured methods\n */\n public log = {\n error: (error: Error | unknown, message?: string, meta?: Record<string, unknown>): void => {\n if (message) {\n const errorMeta = {\n ...(meta ?? {}),\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n };\n this.logger.custom({ level: 'queueJob', message, meta: errorMeta });\n } else {\n this.logger.custom({ level: 'queueJob', message: error });\n }\n },\n\n info: (message: string, meta?: Record<string, unknown>): void => {\n this.logger.custom({ level: 'queueJob', message, meta });\n },\n\n warn: (message: string, meta?: Record<string, unknown>): void => {\n this.logger.custom({ level: 'queueJob', message, meta });\n },\n\n debug: (message: string, meta?: Record<string, unknown>): void => {\n this.logger.custom({ level: 'queueJob', message, meta });\n },\n };\n}\n"],
|
|
5
|
+
"mappings": ";;AAIA,SAAS,cAAc;AAIvB,MAAO,cAAqC;AAAA,EAG1C,YACY,cACA,mBACA,eACA,kBACA,cACV;AALU;AACA;AACA;AACA;AACA;AAAA,EACT;AAAA,EAjBL,OAQ4C;AAAA;AAAA;AAAA,EAClC,SAAwB;AAAA;AAAA;AAAA;AAAA,EAezB,MAAM;AAAA,IACX,OAAO,wBAAC,OAAwB,SAAkB,SAAyC;AACzF,UAAI,SAAS;AACX,cAAM,YAAY;AAAA,UAChB,GAAI,QAAQ,CAAC;AAAA,UACb,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC5D,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,QAChD;AACA,aAAK,OAAO,OAAO,EAAE,OAAO,YAAY,SAAS,MAAM,UAAU,CAAC;AAAA,MACpE,OAAO;AACL,aAAK,OAAO,OAAO,EAAE,OAAO,YAAY,SAAS,MAAM,CAAC;AAAA,MAC1D;AAAA,IACF,GAXO;AAAA,IAaP,MAAM,wBAAC,SAAiB,SAAyC;AAC/D,WAAK,OAAO,OAAO,EAAE,OAAO,YAAY,SAAS,KAAK,CAAC;AAAA,IACzD,GAFM;AAAA,IAIN,MAAM,wBAAC,SAAiB,SAAyC;AAC/D,WAAK,OAAO,OAAO,EAAE,OAAO,YAAY,SAAS,KAAK,CAAC;AAAA,IACzD,GAFM;AAAA,IAIN,OAAO,wBAAC,SAAiB,SAAyC;AAChE,WAAK,OAAO,OAAO,EAAE,OAAO,YAAY,SAAS,KAAK,CAAC;AAAA,IACzD,GAFO;AAAA,EAGT;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type QueueManager from '../manager.js';
|
|
2
|
+
import type { ApplicationConfig } from '../../application/base-application.interface.js';
|
|
3
|
+
import type { RedisInstance } from '../../redis/index.js';
|
|
4
|
+
import type { DatabaseInstance } from '../../database/index.js';
|
|
5
|
+
import type EventManager from '../../event/manager.js';
|
|
6
|
+
import type BaseProcessor from './base.js';
|
|
7
|
+
export interface ProcessorConstructorParams {
|
|
8
|
+
queueManager: QueueManager;
|
|
9
|
+
applicationConfig: ApplicationConfig;
|
|
10
|
+
redisInstance: RedisInstance;
|
|
11
|
+
databaseInstance: DatabaseInstance | null;
|
|
12
|
+
eventManager?: EventManager;
|
|
13
|
+
}
|
|
14
|
+
export type ProcessorConstructor = new (queueManager: QueueManager, applicationConfig: ApplicationConfig, redisInstance: RedisInstance, databaseInstance: DatabaseInstance | null, eventManager?: EventManager) => BaseProcessor;
|
|
15
|
+
//# sourceMappingURL=processor.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.interface.d.ts","sourceRoot":"","sources":["../../../src/queue/processor/processor.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,aAAa,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAAG,KACjC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,YAAY,CAAC,EAAE,YAAY,KACxB,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=processor.interface.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Worker } from 'bullmq';
|
|
2
|
+
import type { QueueWorkerConstructorParams } from './worker.interface.js';
|
|
3
|
+
export default class QueueWorker extends Worker {
|
|
4
|
+
private applicationConfig;
|
|
5
|
+
private queueManager;
|
|
6
|
+
private redisInstance;
|
|
7
|
+
constructor({ applicationConfig, queueManager, name, processor, options, redisInstance, }: QueueWorkerConstructorParams);
|
|
8
|
+
private onWorkerActive;
|
|
9
|
+
private onWorkerError;
|
|
10
|
+
private onWorkerFailed;
|
|
11
|
+
private onWorkerStalled;
|
|
12
|
+
private onWorkerCompleted;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/queue/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAO1E,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,MAAM;IAC7C,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,EACV,iBAAiB,EACjB,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,GACd,EAAE,4BAA4B;IAe/B,OAAO,CAAC,cAAc,CAMpB;IAEF,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,cAAc,CAcpB;IAEF,OAAO,CAAC,eAAe,CAErB;IAEF,OAAO,CAAC,iBAAiB,CAyBvB;CACH"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Processor, WorkerOptions } from 'bullmq';
|
|
2
|
+
import type { RedisInstance } from '../redis/index.js';
|
|
3
|
+
import type { ApplicationConfig } from '../application/base-application.interface.js';
|
|
4
|
+
import type QueueManager from './manager.js';
|
|
5
|
+
export interface QueueWorkerConstructorParams {
|
|
6
|
+
applicationConfig: ApplicationConfig;
|
|
7
|
+
queueManager: QueueManager;
|
|
8
|
+
name: string;
|
|
9
|
+
processor: string | URL | Processor<any, any, string> | null | undefined;
|
|
10
|
+
options?: WorkerOptions;
|
|
11
|
+
redisInstance: RedisInstance;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=worker.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.interface.d.ts","sourceRoot":"","sources":["../../src/queue/worker.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,YAAY,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,4BAA4B;IAC3C,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=worker.interface.js.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { Worker } from "bullmq";
|
|
4
|
+
import { Logger } from "../logger/index.js";
|
|
5
|
+
import { WebSocketRedisSubscriberEvent } from "../websocket/websocket.interface.js";
|
|
6
|
+
class QueueWorker extends Worker {
|
|
7
|
+
static {
|
|
8
|
+
__name(this, "QueueWorker");
|
|
9
|
+
}
|
|
10
|
+
applicationConfig;
|
|
11
|
+
queueManager;
|
|
12
|
+
redisInstance;
|
|
13
|
+
constructor({
|
|
14
|
+
applicationConfig,
|
|
15
|
+
queueManager,
|
|
16
|
+
name,
|
|
17
|
+
processor,
|
|
18
|
+
options,
|
|
19
|
+
redisInstance
|
|
20
|
+
}) {
|
|
21
|
+
super(name, processor, options);
|
|
22
|
+
this.applicationConfig = applicationConfig;
|
|
23
|
+
this.queueManager = queueManager;
|
|
24
|
+
this.redisInstance = redisInstance;
|
|
25
|
+
this.on("active", this.onWorkerActive);
|
|
26
|
+
this.on("error", this.onWorkerError);
|
|
27
|
+
this.on("failed", this.onWorkerFailed);
|
|
28
|
+
this.on("stalled", this.onWorkerStalled);
|
|
29
|
+
this.on("completed", this.onWorkerCompleted);
|
|
30
|
+
}
|
|
31
|
+
onWorkerActive = /* @__PURE__ */ __name((job) => {
|
|
32
|
+
this.queueManager.log("Worker active", {
|
|
33
|
+
Queue: job.queueName,
|
|
34
|
+
"Job Name": job.name,
|
|
35
|
+
"Job ID": job.id
|
|
36
|
+
});
|
|
37
|
+
}, "onWorkerActive");
|
|
38
|
+
onWorkerError = /* @__PURE__ */ __name((error) => {
|
|
39
|
+
Logger.error({ error });
|
|
40
|
+
}, "onWorkerError");
|
|
41
|
+
onWorkerFailed = /* @__PURE__ */ __name((job, error) => {
|
|
42
|
+
Logger.error({ error });
|
|
43
|
+
}, "onWorkerFailed");
|
|
44
|
+
onWorkerStalled = /* @__PURE__ */ __name((jobId) => {
|
|
45
|
+
this.queueManager.log("Worker stalled", { Job: jobId });
|
|
46
|
+
}, "onWorkerStalled");
|
|
47
|
+
onWorkerCompleted = /* @__PURE__ */ __name((job) => {
|
|
48
|
+
const jobData = job.data;
|
|
49
|
+
if (job.returnvalue?.webSocketClientId) {
|
|
50
|
+
this.redisInstance.publisherClient.publish(
|
|
51
|
+
WebSocketRedisSubscriberEvent.QueueJobCompleted,
|
|
52
|
+
JSON.stringify(job.returnvalue)
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
const startTime = jobData.startTime;
|
|
56
|
+
const [seconds, nanoseconds] = process.hrtime(startTime);
|
|
57
|
+
const executionTimeMs = seconds * 1e3 + nanoseconds / 1e6;
|
|
58
|
+
const formattedExecutionTime = executionTimeMs.toFixed(2);
|
|
59
|
+
if (this.applicationConfig.queue.log?.jobCompleted) {
|
|
60
|
+
this.queueManager.log("Job completed", {
|
|
61
|
+
Queue: job.queueName,
|
|
62
|
+
"Job Name": job.name,
|
|
63
|
+
"Job ID": job.id,
|
|
64
|
+
Time: `${formattedExecutionTime}ms`
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}, "onWorkerCompleted");
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
QueueWorker as default
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/queue/worker.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Job, type Processor, Worker } from 'bullmq';\nimport type { QueueWorkerConstructorParams } from './worker.interface.js';\nimport type { RedisInstance } from '../redis/index.js';\nimport { Logger } from '../logger/index.js';\nimport { WebSocketRedisSubscriberEvent } from '../websocket/websocket.interface.js';\nimport type { ApplicationConfig } from '../application/base-application.interface.js';\nimport type QueueManager from './manager.js';\n\nexport default class QueueWorker extends Worker {\n private applicationConfig: ApplicationConfig;\n\n private queueManager: QueueManager;\n private redisInstance: RedisInstance;\n\n constructor({\n applicationConfig,\n queueManager,\n name,\n processor,\n options,\n redisInstance,\n }: QueueWorkerConstructorParams) {\n super(name, processor, options);\n\n this.applicationConfig = applicationConfig;\n\n this.queueManager = queueManager;\n this.redisInstance = redisInstance;\n\n this.on('active', this.onWorkerActive);\n this.on('error', this.onWorkerError);\n this.on('failed', this.onWorkerFailed);\n this.on('stalled', this.onWorkerStalled);\n this.on('completed', this.onWorkerCompleted);\n }\n\n private onWorkerActive = (job: Job): void => {\n this.queueManager.log('Worker active', {\n Queue: job.queueName,\n 'Job Name': job.name,\n 'Job ID': job.id,\n });\n };\n\n private onWorkerError = (error: Error): void => {\n Logger.error({ error });\n };\n\n private onWorkerFailed = (job: Job<any, Processor<any, any, string>, string> | undefined, error: Error): void => {\n // // Send job failed message to client\n // if (job && job.data.webSocketClientId) {\n // const errorMessage = {\n // webSocketClientId: job.data.webSocketClientId,\n // action: job.name,\n // error: error.message,\n // };\n\n // // Send error message to client\n // this.redisInstance.publisherClient.publish('queueJobError', JSON.stringify(errorMessage));\n // }\n\n Logger.error({ error });\n };\n\n private onWorkerStalled = (jobId: string): void => {\n this.queueManager.log('Worker stalled', { Job: jobId });\n };\n\n private onWorkerCompleted = (job: Job): void => {\n const jobData = job.data;\n\n if (job.returnvalue?.webSocketClientId) {\n // Send job completed message to client\n this.redisInstance.publisherClient.publish(\n WebSocketRedisSubscriberEvent.QueueJobCompleted,\n JSON.stringify(job.returnvalue),\n );\n }\n\n const startTime = jobData.startTime;\n\n const [seconds, nanoseconds] = process.hrtime(startTime);\n const executionTimeMs = seconds * 1000 + nanoseconds / 1e6;\n const formattedExecutionTime = executionTimeMs.toFixed(2);\n\n if (this.applicationConfig.queue.log?.jobCompleted) {\n this.queueManager.log('Job completed', {\n Queue: job.queueName,\n 'Job Name': job.name,\n 'Job ID': job.id,\n Time: `${formattedExecutionTime}ms`,\n });\n }\n };\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA,SAAmC,cAAc;AAGjD,SAAS,cAAc;AACvB,SAAS,qCAAqC;AAI9C,MAAO,oBAAkC,OAAO;AAAA,EARhD,OAQgD;AAAA;AAAA;AAAA,EACtC;AAAA,EAEA;AAAA,EACA;AAAA,EAER,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAiC;AAC/B,UAAM,MAAM,WAAW,OAAO;AAE9B,SAAK,oBAAoB;AAEzB,SAAK,eAAe;AACpB,SAAK,gBAAgB;AAErB,SAAK,GAAG,UAAU,KAAK,cAAc;AACrC,SAAK,GAAG,SAAS,KAAK,aAAa;AACnC,SAAK,GAAG,UAAU,KAAK,cAAc;AACrC,SAAK,GAAG,WAAW,KAAK,eAAe;AACvC,SAAK,GAAG,aAAa,KAAK,iBAAiB;AAAA,EAC7C;AAAA,EAEQ,iBAAiB,wBAAC,QAAmB;AAC3C,SAAK,aAAa,IAAI,iBAAiB;AAAA,MACrC,OAAO,IAAI;AAAA,MACX,YAAY,IAAI;AAAA,MAChB,UAAU,IAAI;AAAA,IAChB,CAAC;AAAA,EACH,GANyB;AAAA,EAQjB,gBAAgB,wBAAC,UAAuB;AAC9C,WAAO,MAAM,EAAE,MAAM,CAAC;AAAA,EACxB,GAFwB;AAAA,EAIhB,iBAAiB,wBAAC,KAAgE,UAAuB;AAa/G,WAAO,MAAM,EAAE,MAAM,CAAC;AAAA,EACxB,GAdyB;AAAA,EAgBjB,kBAAkB,wBAAC,UAAwB;AACjD,SAAK,aAAa,IAAI,kBAAkB,EAAE,KAAK,MAAM,CAAC;AAAA,EACxD,GAF0B;AAAA,EAIlB,oBAAoB,wBAAC,QAAmB;AAC9C,UAAM,UAAU,IAAI;AAEpB,QAAI,IAAI,aAAa,mBAAmB;AAEtC,WAAK,cAAc,gBAAgB;AAAA,QACjC,8BAA8B;AAAA,QAC9B,KAAK,UAAU,IAAI,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,YAAY,QAAQ;AAE1B,UAAM,CAAC,SAAS,WAAW,IAAI,QAAQ,OAAO,SAAS;AACvD,UAAM,kBAAkB,UAAU,MAAO,cAAc;AACvD,UAAM,yBAAyB,gBAAgB,QAAQ,CAAC;AAExD,QAAI,KAAK,kBAAkB,MAAM,KAAK,cAAc;AAClD,WAAK,aAAa,IAAI,iBAAiB;AAAA,QACrC,OAAO,IAAI;AAAA,QACX,YAAY,IAAI;AAAA,QAChB,UAAU,IAAI;AAAA,QACd,MAAM,GAAG,sBAAsB;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,EACF,GAzB4B;AA0B9B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/redis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/redis/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { default as RedisManager } from './manager.js';\nexport { default as RedisInstance } from './instance.js';\n"],
|
|
5
|
+
"mappings": "AAAA,SAAoB,WAAXA,gBAA+B;AACxC,SAAoB,WAAXA,gBAAgC;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Redis } from 'ioredis';
|
|
2
|
+
import type { RedisInstanceProps } from './instance.interface.js';
|
|
3
|
+
export default class RedisInstance {
|
|
4
|
+
private redisManager;
|
|
5
|
+
client: Redis;
|
|
6
|
+
publisherClient: Redis;
|
|
7
|
+
subscriberClient: Redis;
|
|
8
|
+
constructor({ redisManager, client, publisherClient, subscriberClient }: RedisInstanceProps);
|
|
9
|
+
disconnect(): Promise<void>;
|
|
10
|
+
isConnected(): Promise<boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* Sets a value in the cache with an optional expiration time.
|
|
13
|
+
*
|
|
14
|
+
* @param key - The key to set in the cache.
|
|
15
|
+
* @param value - The value to set in the cache.
|
|
16
|
+
* @param expiration - The expiration time in seconds (optional).
|
|
17
|
+
* @throws Error if the value type is not supported.
|
|
18
|
+
* @returns A Promise that resolves when the value is set in the cache.
|
|
19
|
+
*/
|
|
20
|
+
setCache({ key, value, expiration, }: {
|
|
21
|
+
key: string;
|
|
22
|
+
value: unknown;
|
|
23
|
+
expiration?: number;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
getCache({ key }: {
|
|
26
|
+
key: string;
|
|
27
|
+
}): Promise<string | null>;
|
|
28
|
+
deleteCache({ key }: {
|
|
29
|
+
key: string;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/redis/instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,YAAY,CAAe;IAE5B,MAAM,EAAE,KAAK,CAAC;IACd,eAAe,EAAE,KAAK,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC;gBAEnB,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,EAAE,kBAAkB;IAQ9E,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBtC;;;;;;;;OAQG;IACU,QAAQ,CAAC,EACpB,GAAG,EACH,KAAK,EACL,UAAU,GACX,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBJ,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM1D,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Redis } from 'ioredis';
|
|
2
|
+
import type { RedisManager } from './index.js';
|
|
3
|
+
export interface RedisInstanceProps {
|
|
4
|
+
redisManager: RedisManager;
|
|
5
|
+
client: Redis;
|
|
6
|
+
publisherClient: Redis;
|
|
7
|
+
subscriberClient: Redis;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=instance.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.interface.d.ts","sourceRoot":"","sources":["../../src/redis/instance.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;IACd,eAAe,EAAE,KAAK,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=instance.interface.js.map
|