@multiplayer-app/ai-agent-node 0.1.0-beta.7 → 0.1.0-beta.70

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.
Files changed (210) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/config.cjs +87 -45
  3. package/dist/cjs/config.cjs.map +1 -1
  4. package/dist/cjs/config.d.ts +60 -29
  5. package/dist/cjs/config.d.ts.map +1 -1
  6. package/dist/cjs/helpers/AIHelper.cjs +127 -65
  7. package/dist/cjs/helpers/AIHelper.cjs.map +1 -1
  8. package/dist/cjs/helpers/AIHelper.d.ts +22 -16
  9. package/dist/cjs/helpers/AIHelper.d.ts.map +1 -1
  10. package/dist/cjs/helpers/AIHelper.test.cjs +22 -15
  11. package/dist/cjs/helpers/AIHelper.test.cjs.map +1 -1
  12. package/dist/cjs/helpers/ConfigHelper.cjs +15 -6
  13. package/dist/cjs/helpers/ConfigHelper.cjs.map +1 -1
  14. package/dist/cjs/helpers/ConfigHelper.d.ts.map +1 -1
  15. package/dist/cjs/helpers/FileHelper.cjs +131 -151
  16. package/dist/cjs/helpers/FileHelper.cjs.map +1 -1
  17. package/dist/cjs/helpers/FileHelper.d.ts +19 -25
  18. package/dist/cjs/helpers/FileHelper.d.ts.map +1 -1
  19. package/dist/cjs/helpers/index.cjs +0 -1
  20. package/dist/cjs/helpers/index.cjs.map +1 -1
  21. package/dist/cjs/helpers/index.d.ts +0 -1
  22. package/dist/cjs/helpers/index.d.ts.map +1 -1
  23. package/dist/cjs/index.cjs +120 -26
  24. package/dist/cjs/index.cjs.map +1 -1
  25. package/dist/cjs/index.d.ts +43 -10
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/libs/s3/index.cjs +3 -39
  28. package/dist/cjs/libs/s3/index.cjs.map +1 -1
  29. package/dist/cjs/libs/s3/index.d.ts +1 -2
  30. package/dist/cjs/libs/s3/index.d.ts.map +1 -1
  31. package/dist/cjs/libs/s3/s3.lib.cjs +173 -186
  32. package/dist/cjs/libs/s3/s3.lib.cjs.map +1 -1
  33. package/dist/cjs/libs/s3/s3.lib.d.ts +29 -22
  34. package/dist/cjs/libs/s3/s3.lib.d.ts.map +1 -1
  35. package/dist/cjs/processors/ActivityProcessor.cjs +39 -0
  36. package/dist/cjs/processors/ActivityProcessor.cjs.map +1 -0
  37. package/dist/cjs/processors/ActivityProcessor.d.ts +32 -0
  38. package/dist/cjs/processors/ActivityProcessor.d.ts.map +1 -0
  39. package/dist/cjs/processors/ActivityProcessor.test.cjs +84 -0
  40. package/dist/cjs/processors/ActivityProcessor.test.cjs.map +1 -0
  41. package/dist/cjs/processors/ActivityProcessor.test.d.ts +2 -0
  42. package/dist/cjs/processors/ActivityProcessor.test.d.ts.map +1 -0
  43. package/dist/cjs/processors/AgentProcessor.cjs +46 -0
  44. package/dist/cjs/processors/AgentProcessor.cjs.map +1 -0
  45. package/dist/cjs/processors/AgentProcessor.d.ts +25 -0
  46. package/dist/cjs/processors/AgentProcessor.d.ts.map +1 -0
  47. package/dist/cjs/processors/AgentProcessor.test.cjs +103 -0
  48. package/dist/cjs/processors/AgentProcessor.test.cjs.map +1 -0
  49. package/dist/cjs/processors/AgentProcessor.test.d.ts +2 -0
  50. package/dist/cjs/processors/AgentProcessor.test.d.ts.map +1 -0
  51. package/dist/cjs/processors/ChatProcessor.cjs +348 -126
  52. package/dist/cjs/processors/ChatProcessor.cjs.map +1 -1
  53. package/dist/cjs/processors/ChatProcessor.d.ts +70 -11
  54. package/dist/cjs/processors/ChatProcessor.d.ts.map +1 -1
  55. package/dist/cjs/processors/ChatProcessor.test.cjs +762 -0
  56. package/dist/cjs/processors/ChatProcessor.test.cjs.map +1 -0
  57. package/dist/cjs/processors/ChatProcessor.test.d.ts +2 -0
  58. package/dist/cjs/processors/ChatProcessor.test.d.ts.map +1 -0
  59. package/dist/cjs/processors/index.cjs +2 -0
  60. package/dist/cjs/processors/index.cjs.map +1 -1
  61. package/dist/cjs/processors/index.d.ts +2 -0
  62. package/dist/cjs/processors/index.d.ts.map +1 -1
  63. package/dist/cjs/services/AIService.cjs +87 -21
  64. package/dist/cjs/services/AIService.cjs.map +1 -1
  65. package/dist/cjs/services/AIService.d.ts +19 -7
  66. package/dist/cjs/services/AIService.d.ts.map +1 -1
  67. package/dist/cjs/services/InternalEventsHandler.cjs +3 -3
  68. package/dist/cjs/services/InternalEventsHandler.cjs.map +1 -1
  69. package/dist/cjs/services/InternalEventsHandler.d.ts +3 -1
  70. package/dist/cjs/services/InternalEventsHandler.d.ts.map +1 -1
  71. package/dist/cjs/services/ModelFetcher.cjs +2 -8
  72. package/dist/cjs/services/ModelFetcher.cjs.map +1 -1
  73. package/dist/cjs/services/ModelFetcher.d.ts +2 -7
  74. package/dist/cjs/services/ModelFetcher.d.ts.map +1 -1
  75. package/dist/cjs/services/RedisService.cjs +20 -16
  76. package/dist/cjs/services/RedisService.cjs.map +1 -1
  77. package/dist/cjs/services/RedisService.d.ts +5 -2
  78. package/dist/cjs/services/RedisService.d.ts.map +1 -1
  79. package/dist/cjs/services/SocketService.cjs +7 -7
  80. package/dist/cjs/services/SocketService.cjs.map +1 -1
  81. package/dist/cjs/services/SocketService.d.ts +9 -6
  82. package/dist/cjs/services/SocketService.d.ts.map +1 -1
  83. package/dist/cjs/store/AgentStore.cjs +3 -4
  84. package/dist/cjs/store/AgentStore.cjs.map +1 -1
  85. package/dist/cjs/store/AgentStore.d.ts +2 -1
  86. package/dist/cjs/store/AgentStore.d.ts.map +1 -1
  87. package/dist/cjs/store/ConfigStore.cjs +7 -3
  88. package/dist/cjs/store/ConfigStore.cjs.map +1 -1
  89. package/dist/cjs/store/ConfigStore.d.ts +1 -0
  90. package/dist/cjs/store/ConfigStore.d.ts.map +1 -1
  91. package/dist/cjs/tools/generateChartTool.d.ts +2 -2
  92. package/dist/cjs/tools/proposeFormValuesTool.d.ts +2 -2
  93. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  94. package/dist/esm/config.d.ts +60 -29
  95. package/dist/esm/config.d.ts.map +1 -1
  96. package/dist/esm/config.js +87 -43
  97. package/dist/esm/config.js.map +1 -1
  98. package/dist/esm/helpers/AIHelper.d.ts +22 -16
  99. package/dist/esm/helpers/AIHelper.d.ts.map +1 -1
  100. package/dist/esm/helpers/AIHelper.js +134 -70
  101. package/dist/esm/helpers/AIHelper.js.map +1 -1
  102. package/dist/esm/helpers/AIHelper.test.js +22 -15
  103. package/dist/esm/helpers/AIHelper.test.js.map +1 -1
  104. package/dist/esm/helpers/ConfigHelper.d.ts.map +1 -1
  105. package/dist/esm/helpers/ConfigHelper.js +15 -6
  106. package/dist/esm/helpers/ConfigHelper.js.map +1 -1
  107. package/dist/esm/helpers/FileHelper.d.ts +19 -25
  108. package/dist/esm/helpers/FileHelper.d.ts.map +1 -1
  109. package/dist/esm/helpers/FileHelper.js +131 -146
  110. package/dist/esm/helpers/FileHelper.js.map +1 -1
  111. package/dist/esm/helpers/index.d.ts +0 -1
  112. package/dist/esm/helpers/index.d.ts.map +1 -1
  113. package/dist/esm/helpers/index.js +0 -1
  114. package/dist/esm/helpers/index.js.map +1 -1
  115. package/dist/esm/index.d.ts +43 -10
  116. package/dist/esm/index.d.ts.map +1 -1
  117. package/dist/esm/index.js +92 -10
  118. package/dist/esm/index.js.map +1 -1
  119. package/dist/esm/libs/s3/index.d.ts +1 -2
  120. package/dist/esm/libs/s3/index.d.ts.map +1 -1
  121. package/dist/esm/libs/s3/index.js +1 -2
  122. package/dist/esm/libs/s3/index.js.map +1 -1
  123. package/dist/esm/libs/s3/s3.lib.d.ts +29 -22
  124. package/dist/esm/libs/s3/s3.lib.d.ts.map +1 -1
  125. package/dist/esm/libs/s3/s3.lib.js +177 -172
  126. package/dist/esm/libs/s3/s3.lib.js.map +1 -1
  127. package/dist/esm/processors/ActivityProcessor.d.ts +32 -0
  128. package/dist/esm/processors/ActivityProcessor.d.ts.map +1 -0
  129. package/dist/esm/processors/ActivityProcessor.js +36 -0
  130. package/dist/esm/processors/ActivityProcessor.js.map +1 -0
  131. package/dist/esm/processors/ActivityProcessor.test.d.ts +2 -0
  132. package/dist/esm/processors/ActivityProcessor.test.d.ts.map +1 -0
  133. package/dist/esm/processors/ActivityProcessor.test.js +82 -0
  134. package/dist/esm/processors/ActivityProcessor.test.js.map +1 -0
  135. package/dist/esm/processors/AgentProcessor.d.ts +25 -0
  136. package/dist/esm/processors/AgentProcessor.d.ts.map +1 -0
  137. package/dist/esm/processors/AgentProcessor.js +43 -0
  138. package/dist/esm/processors/AgentProcessor.js.map +1 -0
  139. package/dist/esm/processors/AgentProcessor.test.d.ts +2 -0
  140. package/dist/esm/processors/AgentProcessor.test.d.ts.map +1 -0
  141. package/dist/esm/processors/AgentProcessor.test.js +101 -0
  142. package/dist/esm/processors/AgentProcessor.test.js.map +1 -0
  143. package/dist/esm/processors/ChatProcessor.d.ts +70 -11
  144. package/dist/esm/processors/ChatProcessor.d.ts.map +1 -1
  145. package/dist/esm/processors/ChatProcessor.js +359 -130
  146. package/dist/esm/processors/ChatProcessor.js.map +1 -1
  147. package/dist/esm/processors/ChatProcessor.test.d.ts +2 -0
  148. package/dist/esm/processors/ChatProcessor.test.d.ts.map +1 -0
  149. package/dist/esm/processors/ChatProcessor.test.js +760 -0
  150. package/dist/esm/processors/ChatProcessor.test.js.map +1 -0
  151. package/dist/esm/processors/index.d.ts +2 -0
  152. package/dist/esm/processors/index.d.ts.map +1 -1
  153. package/dist/esm/processors/index.js +2 -0
  154. package/dist/esm/processors/index.js.map +1 -1
  155. package/dist/esm/services/AIService.d.ts +19 -7
  156. package/dist/esm/services/AIService.d.ts.map +1 -1
  157. package/dist/esm/services/AIService.js +91 -24
  158. package/dist/esm/services/AIService.js.map +1 -1
  159. package/dist/esm/services/InternalEventsHandler.d.ts +3 -1
  160. package/dist/esm/services/InternalEventsHandler.d.ts.map +1 -1
  161. package/dist/esm/services/InternalEventsHandler.js +4 -3
  162. package/dist/esm/services/InternalEventsHandler.js.map +1 -1
  163. package/dist/esm/services/ModelFetcher.d.ts +2 -7
  164. package/dist/esm/services/ModelFetcher.d.ts.map +1 -1
  165. package/dist/esm/services/ModelFetcher.js +2 -8
  166. package/dist/esm/services/ModelFetcher.js.map +1 -1
  167. package/dist/esm/services/RedisService.d.ts +5 -2
  168. package/dist/esm/services/RedisService.d.ts.map +1 -1
  169. package/dist/esm/services/RedisService.js +21 -14
  170. package/dist/esm/services/RedisService.js.map +1 -1
  171. package/dist/esm/services/SocketService.d.ts +9 -6
  172. package/dist/esm/services/SocketService.d.ts.map +1 -1
  173. package/dist/esm/services/SocketService.js +9 -5
  174. package/dist/esm/services/SocketService.js.map +1 -1
  175. package/dist/esm/store/AgentStore.d.ts +2 -1
  176. package/dist/esm/store/AgentStore.d.ts.map +1 -1
  177. package/dist/esm/store/AgentStore.js +4 -2
  178. package/dist/esm/store/AgentStore.js.map +1 -1
  179. package/dist/esm/store/ConfigStore.d.ts +1 -0
  180. package/dist/esm/store/ConfigStore.d.ts.map +1 -1
  181. package/dist/esm/store/ConfigStore.js +7 -3
  182. package/dist/esm/store/ConfigStore.js.map +1 -1
  183. package/dist/esm/tools/generateChartTool.d.ts +2 -2
  184. package/dist/esm/tools/proposeFormValuesTool.d.ts +2 -2
  185. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  186. package/package.json +12 -11
  187. package/dist/cjs/helpers/SetupHelper.cjs +0 -34
  188. package/dist/cjs/helpers/SetupHelper.cjs.map +0 -1
  189. package/dist/cjs/helpers/SetupHelper.d.ts +0 -4
  190. package/dist/cjs/helpers/SetupHelper.d.ts.map +0 -1
  191. package/dist/cjs/libs/logger/config.cjs +0 -9
  192. package/dist/cjs/libs/logger/config.cjs.map +0 -1
  193. package/dist/cjs/libs/logger/config.d.ts +0 -5
  194. package/dist/cjs/libs/logger/config.d.ts.map +0 -1
  195. package/dist/cjs/libs/s3/config.cjs +0 -8
  196. package/dist/cjs/libs/s3/config.cjs.map +0 -1
  197. package/dist/cjs/libs/s3/config.d.ts +0 -4
  198. package/dist/cjs/libs/s3/config.d.ts.map +0 -1
  199. package/dist/esm/helpers/SetupHelper.d.ts +0 -4
  200. package/dist/esm/helpers/SetupHelper.d.ts.map +0 -1
  201. package/dist/esm/helpers/SetupHelper.js +0 -29
  202. package/dist/esm/helpers/SetupHelper.js.map +0 -1
  203. package/dist/esm/libs/logger/config.d.ts +0 -5
  204. package/dist/esm/libs/logger/config.d.ts.map +0 -1
  205. package/dist/esm/libs/logger/config.js +0 -6
  206. package/dist/esm/libs/logger/config.js.map +0 -1
  207. package/dist/esm/libs/s3/config.d.ts +0 -4
  208. package/dist/esm/libs/s3/config.d.ts.map +0 -1
  209. package/dist/esm/libs/s3/config.js +0 -5
  210. package/dist/esm/libs/s3/config.js.map +0 -1
package/dist/esm/index.js CHANGED
@@ -1,12 +1,94 @@
1
- export { redisService } from './services/RedisService';
2
- export { socketService } from './services/SocketService';
3
- export { agentStore, AgentProcessEventType } from './store/AgentStore';
4
- export { ConfigStore } from './store/ConfigStore';
5
- export { ModelStore } from './store/ModelStore';
6
- export { ArtifactStore } from './store/ArtifactStore';
7
- export { ChatProcessor, ModelsProcessor } from './processors';
8
- export { startServices, stopServices } from './helpers/SetupHelper';
9
1
  export { createProposeFormValuesTool, proposeFormValuesToolName } from './tools/proposeFormValuesTool';
10
- export { s3 } from './libs/s3';
11
- export { setLogger, getLogger, logger } from './libs/logger';
2
+ export { ConfigStore } from './store/ConfigStore';
3
+ import { ConfigProvider } from './config';
4
+ import { S3Lib } from './libs';
5
+ import { SocketService } from './services';
6
+ import { AgentStore, AgentProcessEventType } from './store';
7
+ import { ConfigStore } from './store';
8
+ import logger, { setLogger } from './libs/logger';
9
+ import { RedisService } from './services';
10
+ import { ArtifactStore } from './store';
11
+ import { ActivityProcessor, ChatProcessor, ModelsProcessor, AgentProcessor } from './processors';
12
+ import { ModelStore } from './store';
13
+ import { ModelFetcher } from './services';
14
+ export class AIAgentService {
15
+ chatProcessor;
16
+ modelsProcessor;
17
+ activityProcessor;
18
+ agentProcessor;
19
+ s3;
20
+ socketService;
21
+ redisService;
22
+ agentStore;
23
+ constructor(options) {
24
+ if (options.config) {
25
+ ConfigProvider.getInstance().setConfig(options.config);
26
+ }
27
+ this.s3 = new S3Lib(ConfigProvider.getInstance().getConfig().s3);
28
+ this.redisService = new RedisService(ConfigProvider.getInstance().getConfig().redis);
29
+ this.socketService = new SocketService(ConfigProvider.getInstance().getConfig().socket, this.redisService);
30
+ options.setupAgents(ConfigStore.getInstance());
31
+ this.agentStore = new AgentStore(this.redisService);
32
+ if (options.logger)
33
+ setLogger(options.logger);
34
+ this.modelsProcessor = new ModelsProcessor();
35
+ this.agentProcessor = new AgentProcessor({ agentConfigRepository: options.agentConfigRepository });
36
+ this.activityProcessor = new ActivityProcessor({
37
+ activityRepository: options.activityRepository
38
+ });
39
+ this.chatProcessor = new ChatProcessor({
40
+ agentStore: this.agentStore,
41
+ chatRepository: options.chatRepository,
42
+ messageRepository: options.messageRepository,
43
+ activityRepository: options.activityRepository,
44
+ artifactStore: options.artifactStore || new ArtifactStore(),
45
+ agentConfigRepository: options.agentConfigRepository,
46
+ s3Lib: this.s3,
47
+ config: ConfigProvider.getInstance().getConfig(),
48
+ socketService: this.socketService
49
+ });
50
+ }
51
+ start() {
52
+ return Promise.all([
53
+ this.agentStore.initialize(),
54
+ this.fetchModels(ConfigProvider.getInstance().getConfig().ai),
55
+ this.s3.ensureBucketExists(ConfigProvider.getInstance().getConfig().s3.bucket ?? '').catch((err) => logger.error("Unable to auto create s3 bucket")),
56
+ ]);
57
+ }
58
+ stop() {
59
+ return Promise.all([this.redisService.disconnect()]);
60
+ }
61
+ getS3() {
62
+ return this.s3;
63
+ }
64
+ async stopAgentProcess(chatId) {
65
+ await this.agentStore.shareAgentProcessEvent(chatId, { type: AgentProcessEventType.Stop, data: undefined });
66
+ }
67
+ initSocketSupport(httpServer, authorizationMiddleware) {
68
+ return this.socketService.initialize(httpServer, authorizationMiddleware);
69
+ }
70
+ getChatProcessor() {
71
+ return this.chatProcessor;
72
+ }
73
+ getModelProcessor() {
74
+ return this.modelsProcessor;
75
+ }
76
+ getActivityProcessor() {
77
+ return this.activityProcessor;
78
+ }
79
+ getAgentProcessor() {
80
+ return this.agentProcessor;
81
+ }
82
+ async fetchModels(config) {
83
+ try {
84
+ const modelFetcher = new ModelFetcher(config);
85
+ const models = await modelFetcher.fetchAllModels();
86
+ ModelStore.getInstance().setModels(models);
87
+ }
88
+ catch (error) {
89
+ logger.error('Failed to fetch models on startup:', error);
90
+ throw error;
91
+ }
92
+ }
93
+ }
12
94
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAoB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
1
  export { ObjectCannedACL } from '@aws-sdk/client-s3';
2
- export * as s3 from './s3.lib';
3
- export * from './config';
2
+ export { S3Lib } from './s3.lib';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,UAAU,CAAA;AAC9B,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA"}
@@ -1,4 +1,3 @@
1
1
  export { ObjectCannedACL } from '@aws-sdk/client-s3';
2
- export * as s3 from './s3.lib';
3
- export * from './config';
2
+ export { S3Lib } from './s3.lib';
4
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/libs/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,UAAU,CAAA;AAC9B,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/libs/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA"}
@@ -1,25 +1,32 @@
1
1
  import { CompleteMultipartUploadOutput, ObjectCannedACL, GetObjectOutput, GetObjectCommandOutput, ListObjectsV2CommandOutput } from '@aws-sdk/client-s3';
2
2
  import stream from 'stream';
3
- export declare const uploadFile: (Key: string, Bucket: string, Body: any, Expires?: Date) => Promise<import("@aws-sdk/client-s3").PutObjectCommandOutput>;
4
- export declare const downloadFile: (Key: string, Bucket: string) => Promise<GetObjectOutput>;
5
- export declare const downloadFileAsString: (Key: string, Bucket: string) => Promise<string | undefined>;
6
- export declare const downloadFileAsByteArray: (Key: string, Bucket: string) => Promise<Uint8Array | undefined>;
7
- export declare const streamUpload: (Key: string, Bucket: string, ACL?: ObjectCannedACL) => {
8
- writeStream: stream.PassThrough;
9
- promise: Promise<CompleteMultipartUploadOutput>;
10
- };
11
- export declare const getPresignedUploadUrl: (Key: string, Bucket: string, expiresIn?: number) => Promise<string>;
12
- export declare const getPresignedDownloadUrl: (Key: string, Bucket: string) => Promise<string>;
13
- export declare const getDownloadUrl: (Key: string, Bucket: string) => string;
14
- export declare const copy: (Bucket: string, KeyFrom: string, KeyTo: string) => Promise<import("@aws-sdk/client-s3").CopyObjectCommandOutput>;
15
- export declare const copyBetweenBuckets: (BucketFrom: string, KeyFrom: string, BucketTo: string, KeyTo: string) => Promise<import("@aws-sdk/client-s3").CopyObjectCommandOutput>;
16
- export declare const getObject: (Bucket: string, Key: string) => Promise<GetObjectCommandOutput>;
17
- export declare const listObjectsByPrefix: (Bucket: string, Prefix: string) => Promise<ListObjectsV2CommandOutput>;
18
- export declare const headObject: (Bucket: string, Key: string) => Promise<GetObjectCommandOutput>;
19
- export declare const deleteObject: (Bucket: string, Key: string) => Promise<GetObjectCommandOutput>;
20
- export declare const deleteObjectsByPrefix: (Bucket: string, Prefix: string, ContinuationToken?: string) => Promise<void>;
21
- /**
22
- * Ensures a bucket exists, creating it if it doesn't
23
- */
24
- export declare const ensureBucketExists: (Bucket: string) => Promise<void>;
3
+ import { Config } from '../../config';
4
+ export declare class S3Lib {
5
+ private readonly client;
6
+ private readonly signer;
7
+ private readonly config;
8
+ constructor(config: Config["s3"]);
9
+ uploadFile(Key: string, Bucket: string, Body: any, Expires?: Date): Promise<import("@aws-sdk/client-s3").PutObjectCommandOutput>;
10
+ downloadFile(Key: string, Bucket: string): Promise<GetObjectOutput>;
11
+ downloadFileAsString(Key: string, Bucket: string): Promise<string | undefined>;
12
+ downloadFileAsByteArray(Key: string, Bucket: string): Promise<Uint8Array | undefined>;
13
+ streamUpload(Key: string, Bucket: string, ACL?: ObjectCannedACL): {
14
+ writeStream: stream.PassThrough;
15
+ promise: Promise<CompleteMultipartUploadOutput>;
16
+ };
17
+ getPresignedUploadUrl(Key: string, Bucket: string, expiresIn?: number): Promise<string>;
18
+ getPresignedDownloadUrl(Key: string, Bucket: string): Promise<string>;
19
+ getDownloadUrl(Key: string, Bucket: string): string;
20
+ copy(Bucket: string, KeyFrom: string, KeyTo: string): Promise<import("@aws-sdk/client-s3").CopyObjectCommandOutput>;
21
+ copyBetweenBuckets(BucketFrom: string, KeyFrom: string, BucketTo: string, KeyTo: string): Promise<import("@aws-sdk/client-s3").CopyObjectCommandOutput>;
22
+ getObject(Bucket: string, Key: string): Promise<GetObjectCommandOutput>;
23
+ listObjectsByPrefix(Bucket: string, Prefix: string): Promise<ListObjectsV2CommandOutput>;
24
+ headObject(Bucket: string, Key: string): Promise<GetObjectCommandOutput>;
25
+ deleteObject(Bucket: string, Key: string): Promise<GetObjectCommandOutput>;
26
+ deleteObjectsByPrefix(Bucket: string, Prefix: string, ContinuationToken?: string): Promise<void>;
27
+ /**
28
+ * Ensures a bucket exists, creating it if it doesn't
29
+ */
30
+ ensureBucketExists(Bucket: string): Promise<void>;
31
+ }
25
32
  //# sourceMappingURL=s3.lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3.lib.d.ts","sourceRoot":"","sources":["../../../../src/libs/s3/s3.lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,6BAA6B,EAC7B,eAAe,EAAE,eAAe,EAChC,sBAAsB,EAAE,0BAA0B,EAInD,MAAM,oBAAoB,CAAA;AAK3B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAoB3B,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,GAAG,EAAE,UAAU,IAAI,iEAOhF,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,eAAe,CAOjF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,KAAK,MAAM,EACX,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAe5B,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAU,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAezG,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,MAAM,eAAe;;aAqBjD,OAAO,CAAC,6BAA6B,CAAC;CAEnE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,KAAK,MAAM,EACX,QAAQ,MAAM,EACd,YAAY,MAAM,oBAenB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAU,KAAK,MAAM,EAAE,QAAQ,MAAM,oBAgBxE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,WAOzD,CAAA;AAED,eAAO,MAAM,IAAI,GACf,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,OAAO,MAAM,kEAOd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,OAAO,MAAM,kEAOd,CAAA;AAED,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,OAAO,CAAC,sBAAsB,CAKhC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,QAAQ,MAAM,KACb,OAAO,CAAC,0BAA0B,CAOpC,CAAA;AAED,eAAO,MAAM,UAAU,GACrB,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,OAAO,CAAC,sBAAsB,CAKhC,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,QAAQ,MAAM,EACd,KAAK,MAAM,KACV,OAAO,CAAC,sBAAsB,CAKhC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAqBd,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAwBrE,CAAA"}
1
+ {"version":3,"file":"s3.lib.d.ts","sourceRoot":"","sources":["../../../../src/libs/s3/s3.lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,6BAA6B,EAC7B,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAI3B,MAAM,oBAAoB,CAAA;AAK3B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;IAehC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI;IASjE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS7D,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiB9E,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAiB3F,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe;;iBAqBjC,OAAO,CAAC,6BAA6B,CAAC;;IAI9D,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAcrE,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAgBzD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAS1C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAQnD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAQjF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOvE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IASxF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO1E,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtG;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBxD"}
@@ -4,195 +4,200 @@ import { createRequest } from '@aws-sdk/util-create-request';
4
4
  import { formatUrl } from '@aws-sdk/util-format-url';
5
5
  import { Upload } from '@aws-sdk/lib-storage';
6
6
  import stream from 'stream';
7
- import { S3_HOST, S3_PRESIGNED_URL_EXPIRES, AWS_REGION, } from './config';
8
7
  import logger from '../logger';
9
- const S3Client = new S3({
10
- ...S3_HOST ? {
11
- endpoint: S3_HOST,
12
- forcePathStyle: true,
13
- }
14
- : {},
15
- });
16
- const signer = new S3RequestPresigner({
17
- ...S3Client.config,
18
- });
19
- export const uploadFile = (Key, Bucket, Body, Expires) => {
20
- return S3Client.putObject({
21
- Key,
22
- Bucket,
23
- Body,
24
- Expires,
25
- });
26
- };
27
- export const downloadFile = (Key, Bucket) => {
28
- const command = new GetObjectCommand({
29
- Bucket,
30
- Key,
31
- });
32
- return S3Client.send(command);
33
- };
34
- export const downloadFileAsString = async (Key, Bucket) => {
35
- try {
8
+ export class S3Lib {
9
+ client;
10
+ signer;
11
+ config;
12
+ constructor(config) {
13
+ this.config = config;
14
+ this.client = new S3({
15
+ ...this.config.host ? {
16
+ endpoint: this.config.host,
17
+ forcePathStyle: true,
18
+ }
19
+ : {},
20
+ });
21
+ this.signer = new S3RequestPresigner({
22
+ ...this.client.config,
23
+ });
24
+ }
25
+ uploadFile(Key, Bucket, Body, Expires) {
26
+ return this.client.putObject({
27
+ Key,
28
+ Bucket,
29
+ Body,
30
+ Expires,
31
+ });
32
+ }
33
+ downloadFile(Key, Bucket) {
36
34
  const command = new GetObjectCommand({
37
35
  Bucket,
38
36
  Key,
39
37
  });
40
- const response = await S3Client.send(command);
41
- return response.Body?.transformToString();
38
+ return this.client.send(command);
42
39
  }
43
- catch (err) {
44
- if (err?.name === 'NoSuchKey') {
45
- return undefined;
40
+ async downloadFileAsString(Key, Bucket) {
41
+ try {
42
+ const command = new GetObjectCommand({
43
+ Bucket,
44
+ Key,
45
+ });
46
+ const response = await this.client.send(command);
47
+ return response.Body?.transformToString();
48
+ }
49
+ catch (err) {
50
+ if (err?.name === 'NoSuchKey') {
51
+ return undefined;
52
+ }
53
+ throw err;
46
54
  }
47
- throw err;
48
55
  }
49
- };
50
- export const downloadFileAsByteArray = async (Key, Bucket) => {
51
- try {
52
- const command = new GetObjectCommand({
56
+ async downloadFileAsByteArray(Key, Bucket) {
57
+ try {
58
+ const command = new GetObjectCommand({
59
+ Bucket,
60
+ Key,
61
+ });
62
+ const response = await this.client.send(command);
63
+ return response.Body?.transformToByteArray();
64
+ }
65
+ catch (err) {
66
+ if (err?.name === 'NoSuchKey') {
67
+ return undefined;
68
+ }
69
+ throw err;
70
+ }
71
+ }
72
+ streamUpload(Key, Bucket, ACL) {
73
+ const passThroughStream = new stream.PassThrough();
74
+ const options = {
75
+ client: this.client,
76
+ params: {
77
+ Bucket,
78
+ Key,
79
+ Body: passThroughStream,
80
+ },
81
+ leavePartsOnError: false,
82
+ };
83
+ if (ACL) {
84
+ options.params.ACL = ACL;
85
+ }
86
+ const upload = new Upload(options);
87
+ return {
88
+ writeStream: passThroughStream,
89
+ promise: upload.done(),
90
+ };
91
+ }
92
+ async getPresignedUploadUrl(Key, Bucket, expiresIn) {
93
+ const request = await createRequest(this.client, new PutObjectCommand({ Key, Bucket }));
94
+ return formatUrl(await this.signer.presign(request, {
95
+ expiresIn: expiresIn || this.config.presignedUrlExpires || 120,
96
+ }));
97
+ }
98
+ async getPresignedDownloadUrl(Key, Bucket) {
99
+ const request = await createRequest(this.client, new GetObjectCommand({ Key, Bucket }));
100
+ return formatUrl(await this.signer.presign(request, {
101
+ expiresIn: this.config.presignedUrlExpires || 120,
102
+ }));
103
+ }
104
+ getDownloadUrl(Key, Bucket) {
105
+ if (this.config.host) {
106
+ return `${this.config.host}/${Bucket}/${Key}`;
107
+ }
108
+ const regionString = this.config.region?.includes('us-east-1') ? '' : '-' + this.config.region;
109
+ return `https://${Bucket}.s3${regionString}.amazonaws.com/${Key}`;
110
+ }
111
+ copy(Bucket, KeyFrom, KeyTo) {
112
+ return this.client.copyObject({
113
+ CopySource: `/${Bucket}/${KeyFrom}`,
114
+ Bucket,
115
+ Key: KeyTo,
116
+ });
117
+ }
118
+ copyBetweenBuckets(BucketFrom, KeyFrom, BucketTo, KeyTo) {
119
+ return this.client.copyObject({
120
+ CopySource: `/${BucketFrom}/${KeyFrom}`,
121
+ Bucket: BucketTo,
122
+ Key: KeyTo,
123
+ });
124
+ }
125
+ async getObject(Bucket, Key) {
126
+ return this.client.getObject({
53
127
  Bucket,
54
128
  Key,
55
129
  });
56
- const response = await S3Client.send(command);
57
- return response.Body?.transformToByteArray();
58
130
  }
59
- catch (err) {
60
- if (err?.name === 'NoSuchKey') {
61
- return undefined;
62
- }
63
- throw err;
64
- }
65
- };
66
- export const streamUpload = (Key, Bucket, ACL) => {
67
- const passThroughStream = new stream.PassThrough();
68
- const options = {
69
- client: S3Client,
70
- params: {
131
+ async listObjectsByPrefix(Bucket, Prefix) {
132
+ return this.client.send(new ListObjectsV2Command({
133
+ Bucket,
134
+ Prefix,
135
+ }));
136
+ }
137
+ async headObject(Bucket, Key) {
138
+ return this.client.headObject({
71
139
  Bucket,
72
140
  Key,
73
- Body: passThroughStream,
74
- },
75
- leavePartsOnError: false,
76
- };
77
- if (ACL) {
78
- options.params.ACL = ACL;
79
- }
80
- const upload = new Upload(options);
81
- return {
82
- writeStream: passThroughStream,
83
- promise: upload.done(),
84
- };
85
- };
86
- export const getPresignedUploadUrl = async (Key, Bucket, expiresIn) => {
87
- const request = await createRequest(S3Client, new PutObjectCommand({ Key, Bucket }));
88
- const signedUrl = formatUrl(await signer.presign(request, {
89
- expiresIn: expiresIn || S3_PRESIGNED_URL_EXPIRES,
90
- }));
91
- return signedUrl;
92
- };
93
- export const getPresignedDownloadUrl = async (Key, Bucket) => {
94
- const request = await createRequest(S3Client, new GetObjectCommand({ Key, Bucket }));
95
- const signedUrl = formatUrl(await signer.presign(request, {
96
- expiresIn: S3_PRESIGNED_URL_EXPIRES,
97
- }));
98
- return signedUrl;
99
- };
100
- export const getDownloadUrl = (Key, Bucket) => {
101
- if (S3_HOST) {
102
- return `${S3_HOST}/${Bucket}/${Key}`;
103
- }
104
- const regionString = AWS_REGION.includes('us-east-1') ? '' : '-' + AWS_REGION;
105
- return `https://${Bucket}.s3${regionString}.amazonaws.com/${Key}`;
106
- };
107
- export const copy = (Bucket, KeyFrom, KeyTo) => {
108
- return S3Client.copyObject({
109
- CopySource: `/${Bucket}/${KeyFrom}`,
110
- Bucket,
111
- Key: KeyTo,
112
- });
113
- };
114
- export const copyBetweenBuckets = (BucketFrom, KeyFrom, BucketTo, KeyTo) => {
115
- return S3Client.copyObject({
116
- CopySource: `/${BucketFrom}/${KeyFrom}`,
117
- Bucket: BucketTo,
118
- Key: KeyTo,
119
- });
120
- };
121
- export const getObject = async (Bucket, Key) => {
122
- return S3Client.getObject({
123
- Bucket,
124
- Key,
125
- });
126
- };
127
- export const listObjectsByPrefix = async (Bucket, Prefix) => {
128
- return S3Client.send(new ListObjectsV2Command({
129
- Bucket,
130
- Prefix,
131
- }));
132
- };
133
- export const headObject = async (Bucket, Key) => {
134
- return S3Client.headObject({
135
- Bucket,
136
- Key,
137
- });
138
- };
139
- export const deleteObject = async (Bucket, Key) => {
140
- return S3Client.deleteObject({
141
- Bucket,
142
- Key,
143
- });
144
- };
145
- export const deleteObjectsByPrefix = async (Bucket, Prefix, ContinuationToken) => {
146
- const objects = await S3Client.listObjectsV2({ Bucket, Prefix, ContinuationToken });
147
- if (!objects.Contents?.length)
148
- return;
149
- const deleteParams = {
150
- Bucket,
151
- Delete: { Objects: [] },
152
- };
153
- objects.Contents.forEach(({ Key }) => {
154
- if (!Key)
141
+ });
142
+ }
143
+ async deleteObject(Bucket, Key) {
144
+ return this.client.deleteObject({
145
+ Bucket,
146
+ Key,
147
+ });
148
+ }
149
+ async deleteObjectsByPrefix(Bucket, Prefix, ContinuationToken) {
150
+ const objects = await this.client.listObjectsV2({ Bucket, Prefix, ContinuationToken });
151
+ if (!objects.Contents?.length)
155
152
  return;
156
- deleteParams.Delete.Objects.push({ Key });
157
- });
158
- logger.info(deleteParams, '[S3] Deleting objects');
159
- const deletedResp = await S3Client.deleteObjects(deleteParams);
160
- if (deletedResp.Errors?.length) {
161
- logger.error(deletedResp.Errors, '[S3] Error during deleteObjectsByPrefix');
162
- }
163
- if (objects.IsTruncated) {
164
- await deleteObjectsByPrefix(Bucket, Prefix, objects.NextContinuationToken);
165
- }
166
- };
167
- /**
168
- * Ensures a bucket exists, creating it if it doesn't
169
- */
170
- export const ensureBucketExists = async (Bucket) => {
171
- try {
172
- await S3Client.send(new HeadBucketCommand({ Bucket }));
173
- // Bucket exists
174
- return;
175
- }
176
- catch (error) {
177
- // If bucket doesn't exist, create it
178
- if (error.$metadata?.httpStatusCode === 404) {
179
- try {
180
- await S3Client.send(new CreateBucketCommand({ Bucket }));
181
- logger.info({ Bucket }, '[S3] Created bucket');
182
- }
183
- catch (createError) {
184
- // Ignore if bucket was created by another process
185
- if (createError.$metadata?.httpStatusCode !== 409) {
186
- logger.error({ Bucket, error: createError }, '[S3] Failed to create bucket');
187
- throw createError;
153
+ const deleteParams = {
154
+ Bucket,
155
+ Delete: { Objects: [] },
156
+ };
157
+ objects.Contents.forEach(({ Key }) => {
158
+ if (!Key)
159
+ return;
160
+ deleteParams.Delete.Objects.push({ Key });
161
+ });
162
+ logger.info(deleteParams, '[S3] Deleting objects');
163
+ const deletedResp = await this.client.deleteObjects(deleteParams);
164
+ if (deletedResp.Errors?.length) {
165
+ logger.error(deletedResp.Errors, '[S3] Error during deleteObjectsByPrefix');
166
+ }
167
+ if (objects.IsTruncated) {
168
+ await this.deleteObjectsByPrefix(Bucket, Prefix, objects.NextContinuationToken);
169
+ }
170
+ }
171
+ /**
172
+ * Ensures a bucket exists, creating it if it doesn't
173
+ */
174
+ async ensureBucketExists(Bucket) {
175
+ try {
176
+ await this.client.send(new HeadBucketCommand({ Bucket }));
177
+ // Bucket exists
178
+ return;
179
+ }
180
+ catch (error) {
181
+ // If bucket doesn't exist, create it
182
+ if (error.$metadata?.httpStatusCode === 404) {
183
+ try {
184
+ await this.client.send(new CreateBucketCommand({ Bucket }));
185
+ logger.info({ Bucket }, '[S3] Created bucket');
186
+ }
187
+ catch (createError) {
188
+ // Ignore if bucket was created by another process
189
+ if (createError.$metadata?.httpStatusCode !== 409) {
190
+ logger.error({ Bucket, error: createError }, '[S3] Failed to create bucket');
191
+ throw createError;
192
+ }
188
193
  }
189
194
  }
190
- }
191
- else {
192
- // Some other error (permissions, etc.)
193
- logger.error({ Bucket, error }, '[S3] Failed to check bucket existence');
194
- throw error;
195
+ else {
196
+ // Some other error (permissions, etc.)
197
+ logger.error({ Bucket, error }, '[S3] Failed to check bucket existence');
198
+ throw error;
199
+ }
195
200
  }
196
201
  }
197
- };
202
+ }
198
203
  //# sourceMappingURL=s3.lib.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3.lib.js","sourceRoot":"","sources":["../../../../src/libs/s3/s3.lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3.lib.js","sourceRoot":"","sources":["../../../../src/libs/s3/s3.lib.ts"],"names":[],"mappings":"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"}