@multiplayer-app/ai-agent-node 0.0.1

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/.env.example +45 -0
  2. package/README.md +611 -0
  3. package/config.example.json +73 -0
  4. package/dist/config.d.ts +35 -0
  5. package/dist/config.d.ts.map +1 -0
  6. package/dist/config.js +44 -0
  7. package/dist/config.js.map +1 -0
  8. package/dist/helpers/AIHelper.d.ts +23 -0
  9. package/dist/helpers/AIHelper.d.ts.map +1 -0
  10. package/dist/helpers/AIHelper.js +326 -0
  11. package/dist/helpers/AIHelper.js.map +1 -0
  12. package/dist/helpers/AIHelper.test.d.ts +2 -0
  13. package/dist/helpers/AIHelper.test.d.ts.map +1 -0
  14. package/dist/helpers/AIHelper.test.js +332 -0
  15. package/dist/helpers/AIHelper.test.js.map +1 -0
  16. package/dist/helpers/ConfigHelper.d.ts +20 -0
  17. package/dist/helpers/ConfigHelper.d.ts.map +1 -0
  18. package/dist/helpers/ConfigHelper.js +118 -0
  19. package/dist/helpers/ConfigHelper.js.map +1 -0
  20. package/dist/helpers/ContextLimiter.d.ts +82 -0
  21. package/dist/helpers/ContextLimiter.d.ts.map +1 -0
  22. package/dist/helpers/ContextLimiter.js +165 -0
  23. package/dist/helpers/ContextLimiter.js.map +1 -0
  24. package/dist/helpers/FileHelper.d.ts +31 -0
  25. package/dist/helpers/FileHelper.d.ts.map +1 -0
  26. package/dist/helpers/FileHelper.js +175 -0
  27. package/dist/helpers/FileHelper.js.map +1 -0
  28. package/dist/helpers/SetupHelper.d.ts +5 -0
  29. package/dist/helpers/SetupHelper.d.ts.map +1 -0
  30. package/dist/helpers/SetupHelper.js +32 -0
  31. package/dist/helpers/SetupHelper.js.map +1 -0
  32. package/dist/helpers/index.d.ts +6 -0
  33. package/dist/helpers/index.d.ts.map +1 -0
  34. package/dist/helpers/index.js +6 -0
  35. package/dist/helpers/index.js.map +1 -0
  36. package/dist/index.d.ts +18 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +17 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/libs/index.d.ts +4 -0
  41. package/dist/libs/index.d.ts.map +1 -0
  42. package/dist/libs/index.js +4 -0
  43. package/dist/libs/index.js.map +1 -0
  44. package/dist/libs/kafka/config.d.ts +5 -0
  45. package/dist/libs/kafka/config.d.ts.map +1 -0
  46. package/dist/libs/kafka/config.js +5 -0
  47. package/dist/libs/kafka/config.js.map +1 -0
  48. package/dist/libs/kafka/consumer.d.ts +16 -0
  49. package/dist/libs/kafka/consumer.d.ts.map +1 -0
  50. package/dist/libs/kafka/consumer.js +126 -0
  51. package/dist/libs/kafka/consumer.js.map +1 -0
  52. package/dist/libs/kafka/index.d.ts +3 -0
  53. package/dist/libs/kafka/index.d.ts.map +1 -0
  54. package/dist/libs/kafka/index.js +3 -0
  55. package/dist/libs/kafka/index.js.map +1 -0
  56. package/dist/libs/kafka/kafka.d.ts +3 -0
  57. package/dist/libs/kafka/kafka.d.ts.map +1 -0
  58. package/dist/libs/kafka/kafka.js +24 -0
  59. package/dist/libs/kafka/kafka.js.map +1 -0
  60. package/dist/libs/kafka/producer.d.ts +11 -0
  61. package/dist/libs/kafka/producer.d.ts.map +1 -0
  62. package/dist/libs/kafka/producer.js +44 -0
  63. package/dist/libs/kafka/producer.js.map +1 -0
  64. package/dist/libs/logger/config.d.ts +5 -0
  65. package/dist/libs/logger/config.d.ts.map +1 -0
  66. package/dist/libs/logger/config.js +6 -0
  67. package/dist/libs/logger/config.js.map +1 -0
  68. package/dist/libs/logger/index.d.ts +10 -0
  69. package/dist/libs/logger/index.d.ts.map +1 -0
  70. package/dist/libs/logger/index.js +20 -0
  71. package/dist/libs/logger/index.js.map +1 -0
  72. package/dist/libs/logger/kafkajs-logger-creator.d.ts +12 -0
  73. package/dist/libs/logger/kafkajs-logger-creator.d.ts.map +1 -0
  74. package/dist/libs/logger/kafkajs-logger-creator.js +29 -0
  75. package/dist/libs/logger/kafkajs-logger-creator.js.map +1 -0
  76. package/dist/libs/logger/logger.d.ts +42 -0
  77. package/dist/libs/logger/logger.d.ts.map +1 -0
  78. package/dist/libs/logger/logger.js +44 -0
  79. package/dist/libs/logger/logger.js.map +1 -0
  80. package/dist/libs/s3/config.d.ts +7 -0
  81. package/dist/libs/s3/config.d.ts.map +1 -0
  82. package/dist/libs/s3/config.js +7 -0
  83. package/dist/libs/s3/config.js.map +1 -0
  84. package/dist/libs/s3/index.d.ts +4 -0
  85. package/dist/libs/s3/index.d.ts.map +1 -0
  86. package/dist/libs/s3/index.js +4 -0
  87. package/dist/libs/s3/index.js.map +1 -0
  88. package/dist/libs/s3/s3.lib.d.ts +25 -0
  89. package/dist/libs/s3/s3.lib.d.ts.map +1 -0
  90. package/dist/libs/s3/s3.lib.js +202 -0
  91. package/dist/libs/s3/s3.lib.js.map +1 -0
  92. package/dist/processors/ChatProcessor.d.ts +66 -0
  93. package/dist/processors/ChatProcessor.d.ts.map +1 -0
  94. package/dist/processors/ChatProcessor.js +610 -0
  95. package/dist/processors/ChatProcessor.js.map +1 -0
  96. package/dist/processors/ModelsProcessor.d.ts +11 -0
  97. package/dist/processors/ModelsProcessor.d.ts.map +1 -0
  98. package/dist/processors/ModelsProcessor.js +30 -0
  99. package/dist/processors/ModelsProcessor.js.map +1 -0
  100. package/dist/processors/index.d.ts +3 -0
  101. package/dist/processors/index.d.ts.map +1 -0
  102. package/dist/processors/index.js +3 -0
  103. package/dist/processors/index.js.map +1 -0
  104. package/dist/services/AIService.d.ts +48 -0
  105. package/dist/services/AIService.d.ts.map +1 -0
  106. package/dist/services/AIService.js +196 -0
  107. package/dist/services/AIService.js.map +1 -0
  108. package/dist/services/InternalEventsHandler.d.ts +21 -0
  109. package/dist/services/InternalEventsHandler.d.ts.map +1 -0
  110. package/dist/services/InternalEventsHandler.js +56 -0
  111. package/dist/services/InternalEventsHandler.js.map +1 -0
  112. package/dist/services/KafkaService.d.ts +35 -0
  113. package/dist/services/KafkaService.d.ts.map +1 -0
  114. package/dist/services/KafkaService.js +120 -0
  115. package/dist/services/KafkaService.js.map +1 -0
  116. package/dist/services/ModelFetcher.d.ts +54 -0
  117. package/dist/services/ModelFetcher.d.ts.map +1 -0
  118. package/dist/services/ModelFetcher.js +247 -0
  119. package/dist/services/ModelFetcher.js.map +1 -0
  120. package/dist/services/RedisService.d.ts +90 -0
  121. package/dist/services/RedisService.d.ts.map +1 -0
  122. package/dist/services/RedisService.js +236 -0
  123. package/dist/services/RedisService.js.map +1 -0
  124. package/dist/services/SocketService.d.ts +39 -0
  125. package/dist/services/SocketService.d.ts.map +1 -0
  126. package/dist/services/SocketService.js +128 -0
  127. package/dist/services/SocketService.js.map +1 -0
  128. package/dist/services/index.d.ts +7 -0
  129. package/dist/services/index.d.ts.map +1 -0
  130. package/dist/services/index.js +7 -0
  131. package/dist/services/index.js.map +1 -0
  132. package/dist/store/AgentStore.d.ts +48 -0
  133. package/dist/store/AgentStore.d.ts.map +1 -0
  134. package/dist/store/AgentStore.js +98 -0
  135. package/dist/store/AgentStore.js.map +1 -0
  136. package/dist/store/ArtifactStore.d.ts +13 -0
  137. package/dist/store/ArtifactStore.d.ts.map +1 -0
  138. package/dist/store/ArtifactStore.js +27 -0
  139. package/dist/store/ArtifactStore.js.map +1 -0
  140. package/dist/store/ConfigStore.d.ts +89 -0
  141. package/dist/store/ConfigStore.d.ts.map +1 -0
  142. package/dist/store/ConfigStore.js +214 -0
  143. package/dist/store/ConfigStore.js.map +1 -0
  144. package/dist/store/ConfigStore.test.d.ts +2 -0
  145. package/dist/store/ConfigStore.test.d.ts.map +1 -0
  146. package/dist/store/ConfigStore.test.js +259 -0
  147. package/dist/store/ConfigStore.test.js.map +1 -0
  148. package/dist/store/ModelStore.d.ts +44 -0
  149. package/dist/store/ModelStore.d.ts.map +1 -0
  150. package/dist/store/ModelStore.js +81 -0
  151. package/dist/store/ModelStore.js.map +1 -0
  152. package/dist/store/ModelStore.test.d.ts +2 -0
  153. package/dist/store/ModelStore.test.d.ts.map +1 -0
  154. package/dist/store/ModelStore.test.js +390 -0
  155. package/dist/store/ModelStore.test.js.map +1 -0
  156. package/dist/store/index.d.ts +5 -0
  157. package/dist/store/index.d.ts.map +1 -0
  158. package/dist/store/index.js +5 -0
  159. package/dist/store/index.js.map +1 -0
  160. package/dist/tools/generateChartTool.d.ts +24 -0
  161. package/dist/tools/generateChartTool.d.ts.map +1 -0
  162. package/dist/tools/generateChartTool.js +124 -0
  163. package/dist/tools/generateChartTool.js.map +1 -0
  164. package/dist/tools/proposeFormValuesTool.d.ts +35 -0
  165. package/dist/tools/proposeFormValuesTool.d.ts.map +1 -0
  166. package/dist/tools/proposeFormValuesTool.js +56 -0
  167. package/dist/tools/proposeFormValuesTool.js.map +1 -0
  168. package/package.json +71 -0
  169. package/src/config.ts +46 -0
  170. package/src/helpers/AIHelper.test.ts +375 -0
  171. package/src/helpers/AIHelper.ts +353 -0
  172. package/src/helpers/ConfigHelper.ts +130 -0
  173. package/src/helpers/ContextLimiter.ts +228 -0
  174. package/src/helpers/FileHelper.ts +197 -0
  175. package/src/helpers/SetupHelper.ts +35 -0
  176. package/src/helpers/index.ts +5 -0
  177. package/src/index.ts +18 -0
  178. package/src/libs/index.ts +3 -0
  179. package/src/libs/kafka/config.ts +4 -0
  180. package/src/libs/kafka/consumer.ts +161 -0
  181. package/src/libs/kafka/index.ts +2 -0
  182. package/src/libs/kafka/kafka.ts +27 -0
  183. package/src/libs/kafka/producer.ts +48 -0
  184. package/src/libs/logger/config.ts +4 -0
  185. package/src/libs/logger/index.ts +21 -0
  186. package/src/libs/logger/kafkajs-logger-creator.ts +28 -0
  187. package/src/libs/logger/logger.ts +60 -0
  188. package/src/libs/s3/config.ts +7 -0
  189. package/src/libs/s3/index.ts +3 -0
  190. package/src/libs/s3/s3.lib.ts +284 -0
  191. package/src/processors/ChatProcessor.ts +713 -0
  192. package/src/processors/ModelsProcessor.ts +34 -0
  193. package/src/processors/index.ts +2 -0
  194. package/src/services/AIService.ts +241 -0
  195. package/src/services/InternalEventsHandler.ts +61 -0
  196. package/src/services/KafkaService.ts +142 -0
  197. package/src/services/ModelFetcher.ts +286 -0
  198. package/src/services/RedisService.ts +285 -0
  199. package/src/services/SocketService.ts +153 -0
  200. package/src/services/index.ts +6 -0
  201. package/src/store/AgentStore.ts +138 -0
  202. package/src/store/ArtifactStore.ts +29 -0
  203. package/src/store/ConfigStore.test.ts +314 -0
  204. package/src/store/ConfigStore.ts +239 -0
  205. package/src/store/ModelStore.test.ts +473 -0
  206. package/src/store/ModelStore.ts +93 -0
  207. package/src/store/index.ts +4 -0
  208. package/src/tools/generateChartTool.ts +131 -0
  209. package/src/tools/proposeFormValuesTool.ts +67 -0
  210. package/tsconfig.json +24 -0
@@ -0,0 +1,126 @@
1
+ import logger from '../logger';
2
+ import { kafka } from './kafka';
3
+ import { KAFKA_SESSION_TIMEOUT } from './config';
4
+ const startTimer = () => {
5
+ const startTime = process.hrtime();
6
+ return startTime;
7
+ };
8
+ const getDuration = (startTime) => {
9
+ const diff = process.hrtime(startTime);
10
+ return diff[0] * 1e3 + diff[1] * 1e-6;
11
+ };
12
+ export class KafkaConsumer {
13
+ constructor(groupId) {
14
+ this.listeners = {};
15
+ this.lastHeartbeat = 0;
16
+ this.consumer = kafka.consumer({
17
+ groupId,
18
+ sessionTimeout: KAFKA_SESSION_TIMEOUT,
19
+ });
20
+ this.consumer.on(this.consumer.events.HEARTBEAT, ({ timestamp }) => {
21
+ this.lastHeartbeat = timestamp;
22
+ });
23
+ this.consumer.on(this.consumer.events.REQUEST_TIMEOUT, ({ timestamp }) => {
24
+ this.lastHeartbeat = 0;
25
+ });
26
+ this.consumer.on(this.consumer.events.CRASH, ({ timestamp }) => {
27
+ this.lastHeartbeat = 0;
28
+ });
29
+ }
30
+ async isConnected() {
31
+ if (Date.now() - this.lastHeartbeat < KAFKA_SESSION_TIMEOUT) {
32
+ return true;
33
+ }
34
+ try {
35
+ const { state } = await this.consumer.describeGroup();
36
+ return ['CompletingRebalance', 'PreparingRebalance', 'Stable'].includes(state);
37
+ }
38
+ catch (err) {
39
+ return false;
40
+ }
41
+ }
42
+ async connect() {
43
+ await this.consumer.connect();
44
+ }
45
+ async disconnect() {
46
+ await this.consumer.disconnect();
47
+ }
48
+ async subscribe(topic, listener) {
49
+ logger.info({ topic }, '[KAFKAJS] Subscribing for topic');
50
+ if (!this.listeners[topic]) {
51
+ this.listeners[topic] = [];
52
+ }
53
+ this.listeners[topic].push(listener);
54
+ }
55
+ async listenFnWrapper(topic, message) {
56
+ var _a, _b;
57
+ const parseStartTime = startTimer();
58
+ try {
59
+ if (!((_a = this.listeners[topic]) === null || _a === void 0 ? void 0 : _a.length)) {
60
+ logger.error(`[KAFKAJS] Missing handler for topic ${topic}`);
61
+ }
62
+ if (!(message === null || message === void 0 ? void 0 : message.value)) {
63
+ return;
64
+ }
65
+ const key = (_b = message === null || message === void 0 ? void 0 : message.key) === null || _b === void 0 ? void 0 : _b.toString('utf8');
66
+ const value = JSON.parse(message.value.toString('utf8'));
67
+ const headers = message.headers;
68
+ logger.debug({
69
+ topic,
70
+ key,
71
+ value,
72
+ }, `[KAFKAJS] Received message from topic ${topic}`);
73
+ await Promise.all(this.listeners[topic].map(func => func(key, value, headers)));
74
+ logger.debug({
75
+ key,
76
+ topic,
77
+ duration: getDuration(parseStartTime),
78
+ }, '[KAFKAJS] Done with processing data from kafka');
79
+ }
80
+ catch (err) {
81
+ logger.error(err, '[KAFKAJS] Error on handling incoming message');
82
+ }
83
+ }
84
+ async listen(options = {
85
+ partitionsConsumedConcurrently: 3, autoCommit: true,
86
+ }) {
87
+ const topics = Object.keys(this.listeners);
88
+ await this.consumer.subscribe({
89
+ topics,
90
+ fromBeginning: true,
91
+ });
92
+ await this.consumer.run({
93
+ autoCommit: true,
94
+ ...options,
95
+ eachMessage: async ({ topic, message }) => this.listenFnWrapper(topic, message),
96
+ });
97
+ }
98
+ async listenBatch(options) {
99
+ const topics = Object.keys(this.listeners);
100
+ await this.consumer.subscribe({
101
+ topics,
102
+ fromBeginning: true,
103
+ });
104
+ await this.consumer.run({
105
+ eachBatchAutoResolve: true,
106
+ ...options,
107
+ eachBatch: async ({ batch, resolveOffset, heartbeat, commitOffsetsIfNecessary, uncommittedOffsets, isRunning, isStale, pause, }) => {
108
+ var _a;
109
+ for (const message of batch.messages) {
110
+ if (!((_a = this.listeners[batch.topic]) === null || _a === void 0 ? void 0 : _a.length)) {
111
+ logger.error(`[KAFKAJS] Missing handler for topic ${batch.topic}`);
112
+ }
113
+ try {
114
+ await Promise.all(batch.messages.map(message => this.listenFnWrapper(batch.topic, message)));
115
+ }
116
+ catch (batchError) {
117
+ logger.error(batchError, '[KAFKAJS] Batch fn error');
118
+ }
119
+ resolveOffset(message.offset);
120
+ await heartbeat();
121
+ }
122
+ },
123
+ });
124
+ }
125
+ }
126
+ //# sourceMappingURL=consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../src/libs/kafka/consumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './consumer';
2
+ export * from './producer';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/libs/kafka/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './consumer';
2
+ export * from './producer';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/kafka/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Kafka } from 'kafkajs';
2
+ export declare const kafka: Kafka;
3
+ //# sourceMappingURL=kafka.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../../../src/libs/kafka/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,SAAS,CAAA;AAsBzC,eAAO,MAAM,KAAK,OAIhB,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { Kafka, logLevel } from 'kafkajs';
2
+ import { KAFKA_CLIENT_ID, KAFKA_URI } from './config';
3
+ import { KafkaJsLogCreator } from '../logger';
4
+ const toBunyanLogLevel = level => {
5
+ switch (level) {
6
+ case logLevel.ERROR:
7
+ case logLevel.NOTHING:
8
+ return 'error';
9
+ case logLevel.WARN:
10
+ return 'warn';
11
+ case logLevel.INFO:
12
+ return 'info';
13
+ case logLevel.DEBUG:
14
+ return 'debug';
15
+ default:
16
+ return 'info';
17
+ }
18
+ };
19
+ export const kafka = new Kafka({
20
+ clientId: KAFKA_CLIENT_ID,
21
+ brokers: KAFKA_URI,
22
+ logCreator: KafkaJsLogCreator(toBunyanLogLevel),
23
+ });
24
+ //# sourceMappingURL=kafka.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka.js","sourceRoot":"","sources":["../../../src/libs/kafka/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE;IAC/B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ,CAAC,KAAK,CAAC;QACpB,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,OAAO,CAAA;QAChB,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,MAAM,CAAA;QACf,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,MAAM,CAAA;QACf,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,OAAO,CAAA;QAChB;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;IAC7B,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,iBAAiB,CAAC,gBAAgB,CAAC;CAChD,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { IHeaders, ProducerConfig } from 'kafkajs';
2
+ export declare class KafkaProducer {
3
+ private producer;
4
+ private _isConnected;
5
+ constructor(config?: ProducerConfig);
6
+ connect(): Promise<void>;
7
+ isConnected(): boolean;
8
+ disconnect(): Promise<void>;
9
+ send(topic: string, value: Record<string, any>, key?: string, headers?: IHeaders): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=producer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../../../src/libs/kafka/producer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,cAAc,EAAE,MAAM,SAAS,CAAA;AAG5D,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAQ;gBAChB,MAAM,GAAE,cAAmB;IAI1B,OAAO;IAUb,WAAW;IAIL,UAAU;IAKV,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ;CAkB9F"}
@@ -0,0 +1,44 @@
1
+ import { kafka } from './kafka';
2
+ export class KafkaProducer {
3
+ constructor(config = {}) {
4
+ this._isConnected = false;
5
+ this.producer = kafka.producer(config);
6
+ }
7
+ async connect() {
8
+ try {
9
+ await this.producer.connect();
10
+ this._isConnected = true;
11
+ }
12
+ catch (err) {
13
+ this._isConnected = false;
14
+ throw err;
15
+ }
16
+ }
17
+ isConnected() {
18
+ return this._isConnected;
19
+ }
20
+ async disconnect() {
21
+ await this.producer.disconnect();
22
+ this._isConnected = false;
23
+ }
24
+ async send(topic, value, key, headers) {
25
+ try {
26
+ await this.producer.send({
27
+ topic,
28
+ messages: [
29
+ {
30
+ key,
31
+ value: JSON.stringify(value),
32
+ headers: headers
33
+ },
34
+ ],
35
+ });
36
+ this._isConnected = true;
37
+ }
38
+ catch (err) {
39
+ this._isConnected = false;
40
+ throw err;
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=producer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"producer.js","sourceRoot":"","sources":["../../../src/libs/kafka/producer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,OAAO,aAAa;IAGxB,YAAY,SAAyB,EAAE;QAD/B,iBAAY,GAAG,KAAK,CAAA;QAE1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAChC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,KAA0B,EAAE,GAAY,EAAE,OAAkB;QAC3F,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACvB,KAAK;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;wBAC5B,OAAO,EAAE,OAAO;qBACjB;iBACF;aACF,CAAC,CAAA;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export declare const NODE_ENV: string;
2
+ export declare const isProduction: boolean;
3
+ export declare const APP_NAME: string;
4
+ export declare const LOG_LEVEL: string;
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/libs/logger/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,QAAwC,CAAA;AAC7D,eAAO,MAAM,YAAY,SAA4B,CAAA;AACrD,eAAO,MAAM,QAAQ,QAAsE,CAAA;AAC3F,eAAO,MAAM,SAAS,QAA6D,CAAA"}
@@ -0,0 +1,6 @@
1
+ var _a;
2
+ export const NODE_ENV = process.env.NODE_ENV || 'development';
3
+ export const isProduction = NODE_ENV === 'production';
4
+ export const APP_NAME = ((_a = process.env.npm_package_name) === null || _a === void 0 ? void 0 : _a.split('/').pop()) || 'tests';
5
+ export const LOG_LEVEL = process.env.LOG_LEVEL || (isProduction ? 'info' : 'debug');
6
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/libs/logger/config.ts"],"names":[],"mappings":";AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAA;AAC7D,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,KAAK,YAAY,CAAA;AACrD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,0CAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAY,KAAI,OAAO,CAAA;AAC3F,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { getLogger, setLogger, type AgentLogger } from './logger';
2
+ export { getLogger, setLogger, type AgentLogger };
3
+ export * from './kafkajs-logger-creator';
4
+ /**
5
+ * Logger object for backward compatibility.
6
+ * All method calls proxy to the current logger instance.
7
+ */
8
+ export declare const logger: AgentLogger;
9
+ export default logger;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/libs/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,CAAA;AACjD,cAAc,0BAA0B,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,MAAM,aAUjB,CAAA;AAEF,eAAe,MAAM,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { getLogger, setLogger } from './logger';
2
+ export { getLogger, setLogger };
3
+ export * from './kafkajs-logger-creator';
4
+ /**
5
+ * Logger object for backward compatibility.
6
+ * All method calls proxy to the current logger instance.
7
+ */
8
+ export const logger = new Proxy({}, {
9
+ get(_target, prop) {
10
+ const currentLogger = getLogger();
11
+ const method = currentLogger[prop];
12
+ if (typeof method === 'function') {
13
+ return method.bind(currentLogger);
14
+ }
15
+ // Return no-op for missing methods
16
+ return () => { };
17
+ }
18
+ });
19
+ export default logger;
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAoB,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAoB,CAAA;AACjD,cAAc,0BAA0B,CAAA;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAiB,EAAE;IACjD,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,MAAM,aAAa,GAAG,SAAS,EAAE,CAAA;QACjC,MAAM,MAAM,GAAI,aAAqB,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACnC,CAAC;QACD,mCAAmC;QACnC,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;CACF,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Creates a KafkaJS log creator that uses the injected logger.
3
+ * If no logger is set, logs are silently discarded.
4
+ *
5
+ * @param logLevelConverter - Function to convert KafkaJS log levels to logger levels
6
+ * @returns KafkaJS log creator function
7
+ */
8
+ export declare const KafkaJsLogCreator: (logLevelConverter: any) => (level: any) => ({ level, log }: {
9
+ level: any;
10
+ log: any;
11
+ }) => void;
12
+ //# sourceMappingURL=kafkajs-logger-creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafkajs-logger-creator.d.ts","sourceRoot":"","sources":["../../../src/libs/logger/kafkajs-logger-creator.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,mBAAmB,GAAG,MAAM,OAAO,GAAG,MAG9D;;;CAAc,SAevB,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { getLogger } from './logger';
2
+ /**
3
+ * Creates a KafkaJS log creator that uses the injected logger.
4
+ * If no logger is set, logs are silently discarded.
5
+ *
6
+ * @param logLevelConverter - Function to convert KafkaJS log levels to logger levels
7
+ * @returns KafkaJS log creator function
8
+ */
9
+ export const KafkaJsLogCreator = (logLevelConverter) => (level) => {
10
+ const logger = getLogger();
11
+ return ({ level, log }) => {
12
+ const { message, ...extra } = log;
13
+ const logLevel = logLevelConverter(level);
14
+ // Use the logger's error, warn, info, or debug method based on level
15
+ if (logLevel === 'error' && logger.error) {
16
+ logger.error({ extra }, message);
17
+ }
18
+ else if (logLevel === 'warn' && logger.warn) {
19
+ logger.warn({ extra }, message);
20
+ }
21
+ else if (logLevel === 'info' && logger.info) {
22
+ logger.info({ extra }, message);
23
+ }
24
+ else if (logLevel === 'debug' && logger.debug) {
25
+ logger.debug({ extra }, message);
26
+ }
27
+ };
28
+ };
29
+ //# sourceMappingURL=kafkajs-logger-creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafkajs-logger-creator.js","sourceRoot":"","sources":["../../../src/libs/logger/kafkajs-logger-creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,iBAAsB,EAAE,EAAE,CAAC,CAAC,KAAU,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;QACxB,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,CAAA;QACjC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAEzC,qEAAqE;QACrE,IAAI,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;aAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC;aAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Logger interface for AI Agent Node operations.
3
+ * Compatible with bunyan-style loggers and most common Node.js loggers (pino, winston, bunyan, etc.)
4
+ */
5
+ export interface AgentLogger {
6
+ info(messageOrFields: string | object, message?: string): void;
7
+ error(messageOrFields: string | object | Error | unknown, message?: string | unknown): void;
8
+ error(message: string, error: unknown): void;
9
+ warn(messageOrFields: string | object, message?: string): void;
10
+ warn(message: string, fields: object): void;
11
+ debug(messageOrFields: string | object, message?: string): void;
12
+ debug(message: string, fields: object): void;
13
+ }
14
+ /**
15
+ * Sets a custom logger for AI Agent Node operations.
16
+ * If not called, all logging is silently discarded.
17
+ *
18
+ * @param customLogger - Logger instance implementing AgentLogger interface
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { setLogger } from '@multiplayer-app/ai-agent-node';
23
+ * import bunyan from 'bunyan';
24
+ *
25
+ * setLogger(bunyan.createLogger({ name: 'my-app' }));
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { setLogger } from '@multiplayer-app/ai-agent-node';
31
+ * import pino from 'pino';
32
+ *
33
+ * setLogger(pino());
34
+ * ```
35
+ */
36
+ export declare function setLogger(customLogger: AgentLogger): void;
37
+ /**
38
+ * Gets the current logger instance.
39
+ * @internal
40
+ */
41
+ export declare function getLogger(): AgentLogger;
42
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/libs/logger/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAC5F,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C;AAeD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,WAAW,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,WAAW,CAEvC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * No-op logger that discards all log messages.
3
+ * Used as default when no logger is provided.
4
+ */
5
+ const noOpLogger = {
6
+ info: () => { },
7
+ error: () => { },
8
+ warn: () => { },
9
+ debug: () => { },
10
+ };
11
+ let logger = noOpLogger;
12
+ /**
13
+ * Sets a custom logger for AI Agent Node operations.
14
+ * If not called, all logging is silently discarded.
15
+ *
16
+ * @param customLogger - Logger instance implementing AgentLogger interface
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { setLogger } from '@multiplayer-app/ai-agent-node';
21
+ * import bunyan from 'bunyan';
22
+ *
23
+ * setLogger(bunyan.createLogger({ name: 'my-app' }));
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { setLogger } from '@multiplayer-app/ai-agent-node';
29
+ * import pino from 'pino';
30
+ *
31
+ * setLogger(pino());
32
+ * ```
33
+ */
34
+ export function setLogger(customLogger) {
35
+ logger = customLogger;
36
+ }
37
+ /**
38
+ * Gets the current logger instance.
39
+ * @internal
40
+ */
41
+ export function getLogger() {
42
+ return logger;
43
+ }
44
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/libs/logger/logger.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,UAAU,GAAgB;IAC9B,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAC;AAEF,IAAI,MAAM,GAAgB,UAAU,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,SAAS,CAAC,YAAyB;IACjD,MAAM,GAAG,YAAY,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const S3_HOST: string;
2
+ export declare const S3_EXPORT_HOST: string;
3
+ export declare const S3_PRESIGNED_URL_EXPIRES: number;
4
+ export declare const AWS_REGION: string;
5
+ export declare const AWS_ACCESS_KEY_ID: string;
6
+ export declare const AWS_SECRET_ACCESS_KEY: string;
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/libs/s3/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,QAAoD,CAAA;AACxE,eAAO,MAAM,cAAc,QAAwC,CAAA;AACnE,eAAO,MAAM,wBAAwB,QAAsD,CAAA;AAE3F,eAAO,MAAM,UAAU,EAA6B,MAAM,CAAA;AAC1D,eAAO,MAAM,iBAAiB,EAAoC,MAAM,CAAA;AACxE,eAAO,MAAM,qBAAqB,EAAwC,MAAM,CAAA"}
@@ -0,0 +1,7 @@
1
+ export const S3_HOST = process.env.S3_HOST || 'https://s3.amazonaws.com';
2
+ export const S3_EXPORT_HOST = process.env.S3_EXPORT_HOST || S3_HOST;
3
+ export const S3_PRESIGNED_URL_EXPIRES = Number(process.env.S3_PRESIGNED_URL_EXPIRES) || 120;
4
+ export const AWS_REGION = process.env.AWS_REGION;
5
+ export const AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID;
6
+ export const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY;
7
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/libs/s3/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,0BAA0B,CAAA;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAA;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAA;AAE3F,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAA;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAA+B,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { ObjectCannedACL } from '@aws-sdk/client-s3';
2
+ export * as s3 from './s3.lib';
3
+ export * from './config';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ export { ObjectCannedACL } from '@aws-sdk/client-s3';
2
+ export * as s3 from './s3.lib';
3
+ export * from './config';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,25 @@
1
+ import { CompleteMultipartUploadOutput, ObjectCannedACL, GetObjectOutput, GetObjectCommandOutput, ListObjectsV2CommandOutput } from '@aws-sdk/client-s3';
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>;
25
+ //# sourceMappingURL=s3.lib.d.ts.map
@@ -0,0 +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"}