@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,92 @@
|
|
|
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 RedisInstance {
|
|
5
|
+
static {
|
|
6
|
+
__name(this, "RedisInstance");
|
|
7
|
+
}
|
|
8
|
+
redisManager;
|
|
9
|
+
client;
|
|
10
|
+
publisherClient;
|
|
11
|
+
subscriberClient;
|
|
12
|
+
constructor({ redisManager, client, publisherClient, subscriberClient }) {
|
|
13
|
+
this.redisManager = redisManager;
|
|
14
|
+
this.client = client;
|
|
15
|
+
this.publisherClient = publisherClient;
|
|
16
|
+
this.subscriberClient = subscriberClient;
|
|
17
|
+
}
|
|
18
|
+
async disconnect() {
|
|
19
|
+
try {
|
|
20
|
+
this.subscriberClient.disconnect();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
Logger.error({ error, message: "Could not disconnect Redis subscriber client" });
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
this.publisherClient.disconnect();
|
|
26
|
+
} catch (error) {
|
|
27
|
+
Logger.error({ error, message: "Could not disconnect Redis publisherClient" });
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
this.client.disconnect();
|
|
31
|
+
} catch (error) {
|
|
32
|
+
Logger.error({ error, message: "Could not disconnect Redis client" });
|
|
33
|
+
}
|
|
34
|
+
this.redisManager.log("Disconnected");
|
|
35
|
+
}
|
|
36
|
+
isConnected() {
|
|
37
|
+
return new Promise((resolve, reject) => {
|
|
38
|
+
if (this.client) {
|
|
39
|
+
this.client.ping((error) => {
|
|
40
|
+
if (error) {
|
|
41
|
+
reject(error);
|
|
42
|
+
} else {
|
|
43
|
+
resolve(true);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
resolve(false);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Sets a value in the cache with an optional expiration time.
|
|
53
|
+
*
|
|
54
|
+
* @param key - The key to set in the cache.
|
|
55
|
+
* @param value - The value to set in the cache.
|
|
56
|
+
* @param expiration - The expiration time in seconds (optional).
|
|
57
|
+
* @throws Error if the value type is not supported.
|
|
58
|
+
* @returns A Promise that resolves when the value is set in the cache.
|
|
59
|
+
*/
|
|
60
|
+
async setCache({
|
|
61
|
+
key,
|
|
62
|
+
value,
|
|
63
|
+
expiration
|
|
64
|
+
}) {
|
|
65
|
+
let formattedValue;
|
|
66
|
+
if (typeof value === "object") {
|
|
67
|
+
formattedValue = JSON.stringify(value);
|
|
68
|
+
} else if (typeof value === "number") {
|
|
69
|
+
formattedValue = value;
|
|
70
|
+
} else if (typeof value === "string") {
|
|
71
|
+
formattedValue = value;
|
|
72
|
+
} else {
|
|
73
|
+
throw new Error("Unsupported value type");
|
|
74
|
+
}
|
|
75
|
+
if (expiration) {
|
|
76
|
+
await this.client.set(key, formattedValue, "EX", expiration);
|
|
77
|
+
} else {
|
|
78
|
+
await this.client.set(key, formattedValue);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async getCache({ key }) {
|
|
82
|
+
const cacheValue = this.client.get(key);
|
|
83
|
+
return cacheValue;
|
|
84
|
+
}
|
|
85
|
+
async deleteCache({ key }) {
|
|
86
|
+
await this.client.del(key);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
RedisInstance as default
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=instance.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/redis/instance.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Redis } from 'ioredis';\nimport { Logger } from '../logger/index.js';\nimport type { RedisInstanceProps } from './instance.interface.js';\nimport type RedisManager from './manager.js';\n\nexport default class RedisInstance {\n private redisManager: RedisManager;\n\n public client: Redis;\n public publisherClient: Redis;\n public subscriberClient: Redis;\n\n constructor({ redisManager, client, publisherClient, subscriberClient }: RedisInstanceProps) {\n this.redisManager = redisManager;\n\n this.client = client;\n this.publisherClient = publisherClient;\n this.subscriberClient = subscriberClient;\n }\n\n public async disconnect(): Promise<void> {\n try {\n this.subscriberClient.disconnect();\n } catch (error) {\n Logger.error({ error, message: 'Could not disconnect Redis subscriber client' });\n }\n\n try {\n this.publisherClient.disconnect();\n } catch (error) {\n Logger.error({ error, message: 'Could not disconnect Redis publisherClient' });\n }\n\n try {\n this.client.disconnect();\n } catch (error) {\n Logger.error({ error, message: 'Could not disconnect Redis client' });\n }\n\n this.redisManager.log('Disconnected');\n }\n\n public isConnected(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n if (this.client) {\n this.client.ping(error => {\n if (error) {\n reject(error);\n } else {\n resolve(true);\n }\n });\n } else {\n resolve(false);\n }\n });\n }\n\n /**\n * Sets a value in the cache with an optional expiration time.\n *\n * @param key - The key to set in the cache.\n * @param value - The value to set in the cache.\n * @param expiration - The expiration time in seconds (optional).\n * @throws Error if the value type is not supported.\n * @returns A Promise that resolves when the value is set in the cache.\n */\n public async setCache({\n key,\n value,\n expiration,\n }: {\n key: string;\n value: unknown;\n expiration?: number;\n }): Promise<void> {\n let formattedValue: string | number | Buffer;\n\n if (typeof value === 'object') {\n formattedValue = JSON.stringify(value);\n } else if (typeof value === 'number') {\n formattedValue = value;\n } else if (typeof value === 'string') {\n formattedValue = value;\n } else {\n throw new Error('Unsupported value type');\n }\n\n if (expiration) {\n await this.client.set(key, formattedValue, 'EX', expiration);\n } else {\n await this.client.set(key, formattedValue);\n }\n }\n\n public async getCache({ key }: { key: string }): Promise<string | null> {\n const cacheValue = this.client.get(key);\n\n return cacheValue;\n }\n\n public async deleteCache({ key }: { key: string }): Promise<void> {\n await this.client.del(key);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AACA,SAAS,cAAc;AAIvB,MAAO,cAA4B;AAAA,EALnC,OAKmC;AAAA;AAAA;AAAA,EACzB;AAAA,EAED;AAAA,EACA;AAAA,EACA;AAAA,EAEP,YAAY,EAAE,cAAc,QAAQ,iBAAiB,iBAAiB,GAAuB;AAC3F,SAAK,eAAe;AAEpB,SAAK,SAAS;AACd,SAAK,kBAAkB;AACvB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAa,aAA4B;AACvC,QAAI;AACF,WAAK,iBAAiB,WAAW;AAAA,IACnC,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,+CAA+C,CAAC;AAAA,IACjF;AAEA,QAAI;AACF,WAAK,gBAAgB,WAAW;AAAA,IAClC,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,6CAA6C,CAAC;AAAA,IAC/E;AAEA,QAAI;AACF,WAAK,OAAO,WAAW;AAAA,IACzB,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,oCAAoC,CAAC;AAAA,IACtE;AAEA,SAAK,aAAa,IAAI,cAAc;AAAA,EACtC;AAAA,EAEO,cAAgC;AACrC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,KAAK,QAAQ;AACf,aAAK,OAAO,KAAK,WAAS;AACxB,cAAI,OAAO;AACT,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,oBAAQ,IAAI;AAAA,UACd;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,SAAS;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIkB;AAChB,QAAI;AAEJ,QAAI,OAAO,UAAU,UAAU;AAC7B,uBAAiB,KAAK,UAAU,KAAK;AAAA,IACvC,WAAW,OAAO,UAAU,UAAU;AACpC,uBAAiB;AAAA,IACnB,WAAW,OAAO,UAAU,UAAU;AACpC,uBAAiB;AAAA,IACnB,OAAO;AACL,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI,YAAY;AACd,YAAM,KAAK,OAAO,IAAI,KAAK,gBAAgB,MAAM,UAAU;AAAA,IAC7D,OAAO;AACL,YAAM,KAAK,OAAO,IAAI,KAAK,cAAc;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,EAAE,IAAI,GAA4C;AACtE,UAAM,aAAa,KAAK,OAAO,IAAI,GAAG;AAEtC,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,YAAY,EAAE,IAAI,GAAmC;AAChE,UAAM,KAAK,OAAO,IAAI,GAAG;AAAA,EAC3B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RedisManagerConfig as RedisManagerOptions } from './manager.interface.js';
|
|
2
|
+
import RedisInstance from './instance.js';
|
|
3
|
+
export default class RedisManager {
|
|
4
|
+
private logger;
|
|
5
|
+
private options;
|
|
6
|
+
instances: RedisInstance[];
|
|
7
|
+
constructor(config: RedisManagerOptions);
|
|
8
|
+
connect(): Promise<RedisInstance>;
|
|
9
|
+
disconnect(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Log Redis message
|
|
12
|
+
*/
|
|
13
|
+
log(message: string, meta?: Record<string, unknown>): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/redis/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,aAAa,MAAM,eAAe,CAAC;AAG1C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAyB;IAEvC,OAAO,CAAC,OAAO,CAAsB;IAE9B,SAAS,EAAE,aAAa,EAAE,CAAM;gBAE3B,MAAM,EAAE,mBAAmB;IAIhC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IA4C3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ApplicationConfig } from '../application/base-application.interface.js';
|
|
2
|
+
export interface RedisManagerConfig {
|
|
3
|
+
applicationConfig: ApplicationConfig;
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
password?: string;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=manager.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.interface.d.ts","sourceRoot":"","sources":["../../src/redis/manager.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=manager.interface.js.map
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { Redis } from "ioredis";
|
|
4
|
+
import RedisInstance from "./instance.js";
|
|
5
|
+
import { Logger } from "../logger/index.js";
|
|
6
|
+
class RedisManager {
|
|
7
|
+
static {
|
|
8
|
+
__name(this, "RedisManager");
|
|
9
|
+
}
|
|
10
|
+
logger = Logger;
|
|
11
|
+
options;
|
|
12
|
+
instances = [];
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.options = config;
|
|
15
|
+
}
|
|
16
|
+
connect() {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const redisOptions = {
|
|
19
|
+
host: this.options.host,
|
|
20
|
+
port: this.options.port,
|
|
21
|
+
password: this.options.password,
|
|
22
|
+
maxRetriesPerRequest: null
|
|
23
|
+
// Needed for bullmq
|
|
24
|
+
};
|
|
25
|
+
const client = new Redis(redisOptions);
|
|
26
|
+
const publisherClient = new Redis(redisOptions);
|
|
27
|
+
const subscriberClient = new Redis(redisOptions);
|
|
28
|
+
const handleConnect = /* @__PURE__ */ __name(() => {
|
|
29
|
+
const redisInstance = new RedisInstance({
|
|
30
|
+
redisManager: this,
|
|
31
|
+
client,
|
|
32
|
+
publisherClient,
|
|
33
|
+
subscriberClient
|
|
34
|
+
});
|
|
35
|
+
this.instances.push(redisInstance);
|
|
36
|
+
if (this.options.applicationConfig.log?.startUp) {
|
|
37
|
+
this.log("Connected", {
|
|
38
|
+
Host: this.options.host,
|
|
39
|
+
Port: this.options.port
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
resolve(redisInstance);
|
|
43
|
+
}, "handleConnect");
|
|
44
|
+
const handleError = /* @__PURE__ */ __name((error) => {
|
|
45
|
+
Logger.error({ error });
|
|
46
|
+
reject(error);
|
|
47
|
+
}, "handleError");
|
|
48
|
+
client.on("connect", handleConnect);
|
|
49
|
+
client.on("error", handleError);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async disconnect() {
|
|
53
|
+
await Promise.all(this.instances.map((instance) => instance.disconnect()));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Log Redis message
|
|
57
|
+
*/
|
|
58
|
+
log(message, meta) {
|
|
59
|
+
this.logger.custom({ level: "redis", message, meta });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
RedisManager as default
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/redis/manager.ts"],
|
|
4
|
+
"sourcesContent": ["import { Redis, type RedisOptions } from 'ioredis';\nimport type { RedisManagerConfig as RedisManagerOptions } from './manager.interface.js';\nimport RedisInstance from './instance.js';\nimport { Logger } from '../logger/index.js';\n\nexport default class RedisManager {\n private logger: typeof Logger = Logger;\n\n private options: RedisManagerOptions;\n\n public instances: RedisInstance[] = [];\n\n constructor(config: RedisManagerOptions) {\n this.options = config;\n }\n\n public connect(): Promise<RedisInstance> {\n return new Promise((resolve, reject) => {\n const redisOptions: RedisOptions = {\n host: this.options.host,\n port: this.options.port,\n password: this.options.password,\n maxRetriesPerRequest: null, // Needed for bullmq\n };\n\n const client = new Redis(redisOptions);\n const publisherClient = new Redis(redisOptions);\n const subscriberClient = new Redis(redisOptions);\n\n const handleConnect = (): void => {\n const redisInstance = new RedisInstance({\n redisManager: this,\n client,\n publisherClient,\n subscriberClient,\n });\n\n this.instances.push(redisInstance);\n\n if (this.options.applicationConfig.log?.startUp) {\n this.log('Connected', {\n Host: this.options.host,\n Port: this.options.port,\n });\n }\n\n resolve(redisInstance);\n };\n\n const handleError = (error: Error): void => {\n Logger.error({ error });\n\n reject(error);\n };\n\n client.on('connect', handleConnect);\n client.on('error', handleError);\n });\n }\n\n public async disconnect(): Promise<void> {\n await Promise.all(this.instances.map(instance => instance.disconnect()));\n }\n\n /**\n * Log Redis message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({ level: 'redis', message, meta });\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA,SAAS,aAAgC;AAEzC,OAAO,mBAAmB;AAC1B,SAAS,cAAc;AAEvB,MAAO,aAA2B;AAAA,EALlC,OAKkC;AAAA;AAAA;AAAA,EACxB,SAAwB;AAAA,EAExB;AAAA,EAED,YAA6B,CAAC;AAAA,EAErC,YAAY,QAA6B;AACvC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEO,UAAkC;AACvC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,eAA6B;AAAA,QACjC,MAAM,KAAK,QAAQ;AAAA,QACnB,MAAM,KAAK,QAAQ;AAAA,QACnB,UAAU,KAAK,QAAQ;AAAA,QACvB,sBAAsB;AAAA;AAAA,MACxB;AAEA,YAAM,SAAS,IAAI,MAAM,YAAY;AACrC,YAAM,kBAAkB,IAAI,MAAM,YAAY;AAC9C,YAAM,mBAAmB,IAAI,MAAM,YAAY;AAE/C,YAAM,gBAAgB,6BAAY;AAChC,cAAM,gBAAgB,IAAI,cAAc;AAAA,UACtC,cAAc;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAED,aAAK,UAAU,KAAK,aAAa;AAEjC,YAAI,KAAK,QAAQ,kBAAkB,KAAK,SAAS;AAC/C,eAAK,IAAI,aAAa;AAAA,YACpB,MAAM,KAAK,QAAQ;AAAA,YACnB,MAAM,KAAK,QAAQ;AAAA,UACrB,CAAC;AAAA,QACH;AAEA,gBAAQ,aAAa;AAAA,MACvB,GAlBsB;AAoBtB,YAAM,cAAc,wBAAC,UAAuB;AAC1C,eAAO,MAAM,EAAE,MAAM,CAAC;AAEtB,eAAO,KAAK;AAAA,MACd,GAJoB;AAMpB,aAAO,GAAG,WAAW,aAAa;AAClC,aAAO,GAAG,SAAS,WAAW;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,aAA4B;AACvC,UAAM,QAAQ,IAAI,KAAK,UAAU,IAAI,cAAY,SAAS,WAAW,CAAC,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKO,IAAI,SAAiB,MAAsC;AAChE,SAAK,OAAO,OAAO,EAAE,OAAO,SAAS,SAAS,KAAK,CAAC;AAAA,EACtD;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/aws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
import type { AwsS3ConstructorOptions } from './s3.interface.js';
|
|
3
|
+
interface DownloadFileOptions {
|
|
4
|
+
bucketName: string;
|
|
5
|
+
key: string;
|
|
6
|
+
destinationFilePath: string;
|
|
7
|
+
}
|
|
8
|
+
export default class AwsS3 {
|
|
9
|
+
client: S3Client;
|
|
10
|
+
private options;
|
|
11
|
+
constructor(options: Partial<AwsS3ConstructorOptions>);
|
|
12
|
+
private getBucketUrl;
|
|
13
|
+
uploadFile({ bucketName, path, body, contentType, forceDownload, publicRead, }: {
|
|
14
|
+
bucketName: string;
|
|
15
|
+
path: string;
|
|
16
|
+
body: Buffer;
|
|
17
|
+
contentType?: string;
|
|
18
|
+
forceDownload?: boolean;
|
|
19
|
+
publicRead?: boolean;
|
|
20
|
+
}): Promise<string>;
|
|
21
|
+
startMultipartUpload({ bucketName, path, publicRead, }: {
|
|
22
|
+
bucketName: string;
|
|
23
|
+
path: string;
|
|
24
|
+
publicRead?: boolean;
|
|
25
|
+
}): Promise<string | undefined>;
|
|
26
|
+
uploadPart({ bucketName, path, partNumber, uploadId, body, }: {
|
|
27
|
+
bucketName: string;
|
|
28
|
+
path: string;
|
|
29
|
+
partNumber: number;
|
|
30
|
+
uploadId: string;
|
|
31
|
+
body: any;
|
|
32
|
+
}): Promise<string | undefined>;
|
|
33
|
+
completeMultipartUpload({ bucketName, path, uploadId, parts, }: {
|
|
34
|
+
bucketName: string;
|
|
35
|
+
path: string;
|
|
36
|
+
uploadId: string;
|
|
37
|
+
parts: {
|
|
38
|
+
PartNumber: number;
|
|
39
|
+
ETag: string;
|
|
40
|
+
}[];
|
|
41
|
+
}): Promise<string>;
|
|
42
|
+
downloadFile({ bucketName, key, destinationFilePath, onStart, onProgress, onComplete, onError, }: DownloadFileOptions & {
|
|
43
|
+
onStart?: () => void;
|
|
44
|
+
onProgress?: (progress: number) => void;
|
|
45
|
+
onComplete?: () => void;
|
|
46
|
+
onError?: (error: Error) => void;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
generateSignedUrl({ bucket, key }: {
|
|
49
|
+
bucket: string;
|
|
50
|
+
key: string;
|
|
51
|
+
}): Promise<string>;
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=s3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../../src/services/aws/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AASjE,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACjB,MAAM,EAAE,QAAQ,CAAC;IAExB,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC;IA4CrD,OAAO,CAAC,YAAY;IAYP,UAAU,CAAC,EACtB,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,aAAa,EACb,UAAU,GACX,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBN,oBAAoB,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,UAAU,GACX,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB;IAYY,UAAU,CAAC,EACtB,UAAU,EACV,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,IAAI,GACL,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG,CAAC;KACX,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAclB,uBAAuB,CAAC,EACnC,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC/C;IA0BK,YAAY,CAAC,EACjB,UAAU,EACV,GAAG,EACH,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,UAAU,EACV,OAAO,GACR,EAAE,mBAAmB,GAAG;QACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;QACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC;IA+EJ,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BlG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AwsS3LocalstackOptions {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
port?: number;
|
|
4
|
+
}
|
|
5
|
+
export interface AwsS3ConstructorOptions {
|
|
6
|
+
region: string;
|
|
7
|
+
localstack: AwsS3LocalstackOptions;
|
|
8
|
+
credentials?: {
|
|
9
|
+
accessKeyId?: string;
|
|
10
|
+
secretAccessKey?: string;
|
|
11
|
+
};
|
|
12
|
+
endpoint?: string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=s3.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.interface.d.ts","sourceRoot":"","sources":["../../../src/services/aws/s3.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,CAAC,EAAE;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=s3.interface.js.map
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import {
|
|
4
|
+
CompleteMultipartUploadCommand,
|
|
5
|
+
CreateMultipartUploadCommand,
|
|
6
|
+
GetObjectCommand,
|
|
7
|
+
PutObjectCommand,
|
|
8
|
+
S3Client,
|
|
9
|
+
UploadPartCommand
|
|
10
|
+
} from "@aws-sdk/client-s3";
|
|
11
|
+
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
|
|
12
|
+
import { Helper } from "../../util/index.js";
|
|
13
|
+
import { createWriteStream, existsSync, mkdirSync } from "fs";
|
|
14
|
+
import { Readable, pipeline } from "stream";
|
|
15
|
+
import { promisify } from "node:util";
|
|
16
|
+
import { Logger } from "../../logger/index.js";
|
|
17
|
+
import { dirname } from "path";
|
|
18
|
+
const asyncPipeline = promisify(pipeline);
|
|
19
|
+
class AwsS3 {
|
|
20
|
+
static {
|
|
21
|
+
__name(this, "AwsS3");
|
|
22
|
+
}
|
|
23
|
+
client;
|
|
24
|
+
options;
|
|
25
|
+
constructor(options) {
|
|
26
|
+
const defaultOptions = {
|
|
27
|
+
region: "us-east-1",
|
|
28
|
+
localstack: {
|
|
29
|
+
enabled: false,
|
|
30
|
+
port: 4566
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
this.options = Helper.defaultsDeep(options, defaultOptions);
|
|
34
|
+
const s3ClientConfig = {
|
|
35
|
+
region: this.options.region
|
|
36
|
+
};
|
|
37
|
+
if (this.options.localstack.enabled) {
|
|
38
|
+
s3ClientConfig.forcePathStyle = true;
|
|
39
|
+
if (!this.options.endpoint) {
|
|
40
|
+
throw new Error("Endpoint is required when using LocalStack");
|
|
41
|
+
}
|
|
42
|
+
s3ClientConfig.endpoint = this.options.endpoint;
|
|
43
|
+
s3ClientConfig.credentials = {
|
|
44
|
+
accessKeyId: "test",
|
|
45
|
+
secretAccessKey: "test"
|
|
46
|
+
};
|
|
47
|
+
} else {
|
|
48
|
+
if (this.options.credentials?.accessKeyId && this.options.credentials?.secretAccessKey) {
|
|
49
|
+
s3ClientConfig.credentials = {
|
|
50
|
+
accessKeyId: this.options.credentials.accessKeyId,
|
|
51
|
+
secretAccessKey: this.options.credentials.secretAccessKey
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
this.client = new S3Client(s3ClientConfig);
|
|
56
|
+
}
|
|
57
|
+
getBucketUrl({ bucketName, path }) {
|
|
58
|
+
let url;
|
|
59
|
+
if (this.options.localstack.enabled) {
|
|
60
|
+
url = `http://localhost:${this.options.localstack.port}/${bucketName}/${path}`;
|
|
61
|
+
} else {
|
|
62
|
+
url = `https://${bucketName}.s3.amazonaws.com/${path}`;
|
|
63
|
+
}
|
|
64
|
+
return url;
|
|
65
|
+
}
|
|
66
|
+
async uploadFile({
|
|
67
|
+
bucketName,
|
|
68
|
+
path,
|
|
69
|
+
body,
|
|
70
|
+
contentType,
|
|
71
|
+
forceDownload,
|
|
72
|
+
publicRead
|
|
73
|
+
}) {
|
|
74
|
+
let contentDisposition = forceDownload ? "attachment" : "inline";
|
|
75
|
+
contentDisposition += `; filename="${path.split("/").pop()}"`;
|
|
76
|
+
const putObjectOptions = {
|
|
77
|
+
Bucket: bucketName,
|
|
78
|
+
Key: path,
|
|
79
|
+
Body: body,
|
|
80
|
+
ContentDisposition: contentDisposition,
|
|
81
|
+
ACL: publicRead ? "public-read" : "private"
|
|
82
|
+
};
|
|
83
|
+
if (contentType) {
|
|
84
|
+
putObjectOptions.ContentType = contentType;
|
|
85
|
+
}
|
|
86
|
+
const command = new PutObjectCommand(putObjectOptions);
|
|
87
|
+
await this.client.send(command);
|
|
88
|
+
return this.getBucketUrl({ bucketName, path });
|
|
89
|
+
}
|
|
90
|
+
async startMultipartUpload({
|
|
91
|
+
bucketName,
|
|
92
|
+
path,
|
|
93
|
+
publicRead
|
|
94
|
+
}) {
|
|
95
|
+
const command = new CreateMultipartUploadCommand({
|
|
96
|
+
Bucket: bucketName,
|
|
97
|
+
Key: path,
|
|
98
|
+
ACL: publicRead ? "public-read" : "private"
|
|
99
|
+
});
|
|
100
|
+
const response = await this.client.send(command);
|
|
101
|
+
return response.UploadId;
|
|
102
|
+
}
|
|
103
|
+
async uploadPart({
|
|
104
|
+
bucketName,
|
|
105
|
+
path,
|
|
106
|
+
partNumber,
|
|
107
|
+
uploadId,
|
|
108
|
+
body
|
|
109
|
+
}) {
|
|
110
|
+
const command = new UploadPartCommand({
|
|
111
|
+
Bucket: bucketName,
|
|
112
|
+
Key: path,
|
|
113
|
+
PartNumber: partNumber,
|
|
114
|
+
UploadId: uploadId,
|
|
115
|
+
Body: body
|
|
116
|
+
});
|
|
117
|
+
const response = await this.client.send(command);
|
|
118
|
+
return response.ETag;
|
|
119
|
+
}
|
|
120
|
+
async completeMultipartUpload({
|
|
121
|
+
bucketName,
|
|
122
|
+
path,
|
|
123
|
+
uploadId,
|
|
124
|
+
parts
|
|
125
|
+
}) {
|
|
126
|
+
parts.sort((a, b) => a.PartNumber - b.PartNumber);
|
|
127
|
+
const command = new CompleteMultipartUploadCommand({
|
|
128
|
+
Bucket: bucketName,
|
|
129
|
+
Key: path,
|
|
130
|
+
UploadId: uploadId,
|
|
131
|
+
MultipartUpload: {
|
|
132
|
+
Parts: parts
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
const response = await this.client.send(command);
|
|
136
|
+
if (!response.Location) {
|
|
137
|
+
throw new Error("Failed to complete multipart upload");
|
|
138
|
+
}
|
|
139
|
+
return this.getBucketUrl({
|
|
140
|
+
bucketName,
|
|
141
|
+
path
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
async downloadFile({
|
|
145
|
+
bucketName,
|
|
146
|
+
key,
|
|
147
|
+
destinationFilePath,
|
|
148
|
+
onStart,
|
|
149
|
+
onProgress,
|
|
150
|
+
onComplete,
|
|
151
|
+
onError
|
|
152
|
+
}) {
|
|
153
|
+
const decodedKey = decodeURIComponent(key);
|
|
154
|
+
const bucketKey = decodedKey;
|
|
155
|
+
Logger.info({
|
|
156
|
+
message: "Downloading file from S3",
|
|
157
|
+
meta: {
|
|
158
|
+
bucketName,
|
|
159
|
+
Key: bucketKey
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
const getObjectParams = {
|
|
163
|
+
Bucket: bucketName,
|
|
164
|
+
Key: bucketKey
|
|
165
|
+
};
|
|
166
|
+
try {
|
|
167
|
+
const command = new GetObjectCommand(getObjectParams);
|
|
168
|
+
const response = await this.client.send(command);
|
|
169
|
+
if (!response.Body || !(response.Body instanceof Readable)) {
|
|
170
|
+
throw new Error("Expected Body to be a readable stream!");
|
|
171
|
+
}
|
|
172
|
+
if (onStart) {
|
|
173
|
+
onStart();
|
|
174
|
+
}
|
|
175
|
+
const directoryPath = dirname(destinationFilePath);
|
|
176
|
+
if (!existsSync(directoryPath)) {
|
|
177
|
+
mkdirSync(directoryPath, { recursive: true });
|
|
178
|
+
}
|
|
179
|
+
const fileStream = createWriteStream(destinationFilePath);
|
|
180
|
+
const totalSize = parseInt(response.ContentLength?.toString() ?? "0", 10);
|
|
181
|
+
let bytesRead = 0;
|
|
182
|
+
response.Body.on("data", (chunk) => {
|
|
183
|
+
bytesRead += chunk.length;
|
|
184
|
+
if (onProgress && totalSize > 0) {
|
|
185
|
+
const progress = Math.min(bytesRead / totalSize * 100, 100);
|
|
186
|
+
const formattedProgress = parseFloat(progress.toFixed(1));
|
|
187
|
+
onProgress(formattedProgress);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
await asyncPipeline(response.Body, fileStream);
|
|
191
|
+
if (!existsSync(destinationFilePath)) {
|
|
192
|
+
throw new Error(`Could not find downloaded file at ${destinationFilePath}`);
|
|
193
|
+
}
|
|
194
|
+
Logger.info({
|
|
195
|
+
message: "File successfully downloaded",
|
|
196
|
+
meta: {
|
|
197
|
+
Path: destinationFilePath
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
if (onComplete) {
|
|
201
|
+
onComplete();
|
|
202
|
+
}
|
|
203
|
+
} catch (error) {
|
|
204
|
+
Logger.error({ error });
|
|
205
|
+
if (onError) {
|
|
206
|
+
onError(error);
|
|
207
|
+
}
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
async generateSignedUrl({ bucket, key }) {
|
|
212
|
+
try {
|
|
213
|
+
const command = new GetObjectCommand({
|
|
214
|
+
Bucket: bucket,
|
|
215
|
+
Key: key
|
|
216
|
+
});
|
|
217
|
+
const signedUrl = await getSignedUrl(this.client, command, {
|
|
218
|
+
expiresIn: 3600
|
|
219
|
+
});
|
|
220
|
+
Logger.info({
|
|
221
|
+
message: "Generated signed URL",
|
|
222
|
+
meta: {
|
|
223
|
+
URL: signedUrl
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
return signedUrl;
|
|
227
|
+
} catch (error) {
|
|
228
|
+
Logger.error({ error });
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
export {
|
|
234
|
+
AwsS3 as default
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=s3.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/aws/s3.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n CompleteMultipartUploadCommand,\n CreateMultipartUploadCommand,\n GetObjectCommand,\n PutObjectCommand,\n type PutObjectCommandInput,\n S3Client,\n type S3ClientConfig,\n UploadPartCommand,\n} from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { Helper } from '../../util/index.js';\nimport type { AwsS3ConstructorOptions } from './s3.interface.js';\nimport { createWriteStream, existsSync, mkdirSync } from 'fs';\nimport { Readable, pipeline } from 'stream';\nimport { promisify } from 'node:util';\nimport { Logger } from '../../logger/index.js';\nimport { dirname } from 'path';\n\nconst asyncPipeline = promisify(pipeline);\n\ninterface DownloadFileOptions {\n bucketName: string;\n key: string;\n destinationFilePath: string;\n}\n\nexport default class AwsS3 {\n public client: S3Client;\n\n private options: AwsS3ConstructorOptions;\n\n constructor(options: Partial<AwsS3ConstructorOptions>) {\n // Define default options\n const defaultOptions: Partial<AwsS3ConstructorOptions> = {\n region: 'us-east-1',\n localstack: {\n enabled: false,\n port: 4566,\n },\n };\n\n this.options = Helper.defaultsDeep(options, defaultOptions);\n\n const s3ClientConfig: S3ClientConfig = {\n region: this.options.region,\n };\n\n if (this.options.localstack.enabled) {\n s3ClientConfig.forcePathStyle = true;\n\n if (!this.options.endpoint) {\n throw new Error('Endpoint is required when using LocalStack');\n }\n\n // s3ClientConfig.endpoint = `http://s3.localhost.localstack.cloud:${this.options.localstack.port}`; // Works when the Node.js API is calling from within the Docker container\n // s3ClientConfig.endpoint = `http://localhost:${this.options.localstack.port}`; // works out side of the container (media generator example)\n\n s3ClientConfig.endpoint = this.options.endpoint;\n\n s3ClientConfig.credentials = {\n accessKeyId: 'test',\n secretAccessKey: 'test',\n };\n } else {\n if (this.options.credentials?.accessKeyId && this.options.credentials?.secretAccessKey) {\n s3ClientConfig.credentials = {\n accessKeyId: this.options.credentials.accessKeyId,\n secretAccessKey: this.options.credentials.secretAccessKey,\n };\n }\n }\n\n this.client = new S3Client(s3ClientConfig);\n }\n\n private getBucketUrl({ bucketName, path }: { bucketName: string; path: string }) {\n let url;\n\n if (this.options.localstack.enabled) {\n url = `http://localhost:${this.options.localstack.port}/${bucketName}/${path}`;\n } else {\n url = `https://${bucketName}.s3.amazonaws.com/${path}`;\n }\n\n return url;\n }\n\n public async uploadFile({\n bucketName,\n path,\n body,\n contentType,\n forceDownload,\n publicRead,\n }: {\n bucketName: string;\n path: string;\n body: Buffer;\n contentType?: string;\n forceDownload?: boolean;\n publicRead?: boolean;\n }): Promise<string> {\n let contentDisposition = forceDownload ? 'attachment' : 'inline';\n contentDisposition += `; filename=\"${path.split('/').pop()}\"`;\n\n const putObjectOptions: PutObjectCommandInput = {\n Bucket: bucketName,\n Key: path,\n Body: body,\n ContentDisposition: contentDisposition,\n ACL: publicRead ? 'public-read' : 'private',\n };\n\n if (contentType) {\n putObjectOptions.ContentType = contentType;\n }\n\n const command = new PutObjectCommand(putObjectOptions);\n\n await this.client.send(command);\n\n return this.getBucketUrl({ bucketName, path });\n }\n\n public async startMultipartUpload({\n bucketName,\n path,\n publicRead,\n }: {\n bucketName: string;\n path: string;\n publicRead?: boolean;\n }) {\n const command = new CreateMultipartUploadCommand({\n Bucket: bucketName,\n Key: path,\n ACL: publicRead ? 'public-read' : 'private',\n });\n\n const response = await this.client.send(command);\n\n return response.UploadId;\n }\n\n public async uploadPart({\n bucketName,\n path,\n partNumber,\n uploadId,\n body,\n }: {\n bucketName: string;\n path: string;\n partNumber: number;\n uploadId: string;\n body: any;\n }): Promise<string | undefined> {\n const command = new UploadPartCommand({\n Bucket: bucketName,\n Key: path,\n PartNumber: partNumber,\n UploadId: uploadId,\n Body: body,\n });\n\n const response = await this.client.send(command);\n\n return response.ETag;\n }\n\n public async completeMultipartUpload({\n bucketName,\n path,\n uploadId,\n parts,\n }: {\n bucketName: string;\n path: string;\n uploadId: string;\n parts: { PartNumber: number; ETag: string }[];\n }) {\n // Sort parts by PartNumber\n parts.sort((a, b) => a.PartNumber - b.PartNumber);\n\n const command = new CompleteMultipartUploadCommand({\n Bucket: bucketName,\n Key: path,\n UploadId: uploadId,\n MultipartUpload: {\n Parts: parts,\n },\n });\n\n const response = await this.client.send(command);\n\n if (!response.Location) {\n throw new Error('Failed to complete multipart upload');\n }\n\n // return response.Location;\n return this.getBucketUrl({\n bucketName,\n path,\n });\n }\n\n async downloadFile({\n bucketName,\n key,\n destinationFilePath,\n onStart,\n onProgress,\n onComplete,\n onError,\n }: DownloadFileOptions & {\n onStart?: () => void;\n onProgress?: (progress: number) => void;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n }): Promise<void> {\n const decodedKey = decodeURIComponent(key);\n const bucketKey = decodedKey;\n\n Logger.info({\n message: 'Downloading file from S3',\n meta: {\n bucketName,\n Key: bucketKey,\n },\n });\n\n const getObjectParams = {\n Bucket: bucketName,\n Key: bucketKey,\n };\n\n try {\n const command = new GetObjectCommand(getObjectParams);\n\n const response = await this.client.send(command);\n\n if (!response.Body || !(response.Body instanceof Readable)) {\n throw new Error('Expected Body to be a readable stream!');\n }\n\n if (onStart) {\n onStart();\n }\n\n const directoryPath = dirname(destinationFilePath);\n\n if (!existsSync(directoryPath)) {\n mkdirSync(directoryPath, { recursive: true });\n }\n\n const fileStream = createWriteStream(destinationFilePath);\n const totalSize = parseInt(response.ContentLength?.toString() ?? '0', 10);\n\n let bytesRead = 0;\n\n response.Body.on('data', (chunk: Buffer) => {\n bytesRead += chunk.length;\n\n if (onProgress && totalSize > 0) {\n const progress = Math.min((bytesRead / totalSize) * 100, 100);\n const formattedProgress = parseFloat(progress.toFixed(1));\n\n onProgress(formattedProgress);\n }\n });\n\n await asyncPipeline(response.Body, fileStream);\n\n if (!existsSync(destinationFilePath)) {\n throw new Error(`Could not find downloaded file at ${destinationFilePath}`);\n }\n\n Logger.info({\n message: 'File successfully downloaded',\n meta: {\n Path: destinationFilePath,\n },\n });\n\n if (onComplete) {\n onComplete();\n }\n } catch (error) {\n Logger.error({ error });\n\n if (onError) {\n onError(error as Error);\n }\n\n throw error as Error;\n }\n }\n\n public async generateSignedUrl({ bucket, key }: { bucket: string; key: string }): Promise<string> {\n try {\n const command = new GetObjectCommand({\n Bucket: bucket,\n Key: key,\n });\n\n // Set the expiration for the signed URL to 1 hour\n const signedUrl = await getSignedUrl(this.client, command, {\n expiresIn: 3600,\n });\n\n // Log the signed URL\n Logger.info({\n message: 'Generated signed URL',\n meta: {\n URL: signedUrl,\n },\n });\n\n return signedUrl;\n } catch (error) {\n Logger.error({ error });\n\n throw error;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|