@squidcloud/local-backend 1.0.49 → 1.0.51

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 (179) hide show
  1. package/dist/common/src/ai-assistant.context.d.ts +13 -13
  2. package/dist/common/src/ai-assistant.context.js +19 -19
  3. package/dist/common/src/ai-assistant.schemas.d.ts +243 -243
  4. package/dist/common/src/ai-assistant.schemas.js +210 -210
  5. package/dist/common/src/ai-assistant.types.d.ts +90 -90
  6. package/dist/common/src/ai-assistant.types.js +11 -11
  7. package/dist/common/src/api-call.context.d.ts +13 -13
  8. package/dist/common/src/api-call.context.js +16 -16
  9. package/dist/common/src/api.types.d.ts +23 -23
  10. package/dist/common/src/api.types.js +2 -2
  11. package/dist/common/src/application.schemas.d.ts +1168 -1168
  12. package/dist/common/src/application.schemas.js +741 -741
  13. package/dist/common/src/application.types.d.ts +228 -228
  14. package/dist/common/src/application.types.js +89 -89
  15. package/dist/common/src/backend-function.schemas.d.ts +3 -3
  16. package/dist/common/src/backend-function.schemas.js +12 -12
  17. package/dist/common/src/backend-function.types.d.ts +6 -6
  18. package/dist/common/src/backend-function.types.js +2 -2
  19. package/dist/common/src/backend-run.types.d.ts +54 -54
  20. package/dist/common/src/backend-run.types.js +96 -73
  21. package/dist/common/src/backend-run.types.js.map +1 -1
  22. package/dist/common/src/bundle-api.types.d.ts +63 -62
  23. package/dist/common/src/bundle-api.types.js +2 -2
  24. package/dist/common/src/bundle-data.types.d.ts +59 -59
  25. package/dist/common/src/bundle-data.types.js +2 -2
  26. package/dist/common/src/communication.types.d.ts +18 -18
  27. package/dist/common/src/communication.types.js +40 -40
  28. package/dist/common/src/context.types.d.ts +24 -24
  29. package/dist/common/src/context.types.js +2 -2
  30. package/dist/common/src/distributed-lock.context.d.ts +5 -5
  31. package/dist/common/src/distributed-lock.context.js +10 -10
  32. package/dist/common/src/document.types.d.ts +32 -32
  33. package/dist/common/src/document.types.js +50 -50
  34. package/dist/common/src/graphql.context.d.ts +14 -14
  35. package/dist/common/src/graphql.context.js +12 -12
  36. package/dist/common/src/graphql.types.d.ts +11 -11
  37. package/dist/common/src/graphql.types.js +34 -34
  38. package/dist/common/src/heartbeat.types.d.ts +4 -4
  39. package/dist/common/src/heartbeat.types.js +16 -16
  40. package/dist/common/src/http-status.enum.d.ts +50 -50
  41. package/dist/common/src/http-status.enum.js +54 -54
  42. package/dist/common/src/index.d.ts +53 -53
  43. package/dist/common/src/index.js +69 -69
  44. package/dist/common/src/integrations/ai_assistant.types.d.ts +30 -30
  45. package/dist/common/src/integrations/ai_assistant.types.js +2 -2
  46. package/dist/common/src/integrations/api.types.d.ts +80 -80
  47. package/dist/common/src/integrations/api.types.js +2 -2
  48. package/dist/common/src/integrations/auth.types.d.ts +39 -39
  49. package/dist/common/src/integrations/auth.types.js +2 -2
  50. package/dist/common/src/integrations/database.types.d.ts +236 -236
  51. package/dist/common/src/integrations/database.types.js +2 -2
  52. package/dist/common/src/integrations/index.d.ts +101 -101
  53. package/dist/common/src/integrations/index.js +105 -105
  54. package/dist/common/src/integrations/observability.types.d.ts +23 -23
  55. package/dist/common/src/integrations/observability.types.js +23 -23
  56. package/dist/common/src/integrations/observability.types.js.map +1 -1
  57. package/dist/common/src/logger.types.d.ts +21 -21
  58. package/dist/common/src/logger.types.js +11 -11
  59. package/dist/common/src/metrics.types.d.ts +73 -73
  60. package/dist/common/src/metrics.types.js +11 -11
  61. package/dist/common/src/mutation.context.d.ts +13 -13
  62. package/dist/common/src/mutation.context.js +26 -26
  63. package/dist/common/src/mutation.schemas.d.ts +5 -5
  64. package/dist/common/src/mutation.schemas.js +114 -114
  65. package/dist/common/src/mutation.types.d.ts +63 -63
  66. package/dist/common/src/mutation.types.js +142 -142
  67. package/dist/common/src/named-query.context.d.ts +4 -4
  68. package/dist/common/src/named-query.context.js +9 -9
  69. package/dist/common/src/named-query.schemas.d.ts +3 -3
  70. package/dist/common/src/named-query.schemas.js +13 -13
  71. package/dist/common/src/named-query.types.d.ts +8 -8
  72. package/dist/common/src/named-query.types.js +2 -2
  73. package/dist/common/src/query/base-query-builder.d.ts +65 -65
  74. package/dist/common/src/query/base-query-builder.js +294 -294
  75. package/dist/common/src/query/index.d.ts +3 -3
  76. package/dist/common/src/query/index.js +19 -19
  77. package/dist/common/src/query/query-context.d.ts +47 -47
  78. package/dist/common/src/query/query-context.js +159 -159
  79. package/dist/common/src/query/serialized-query.types.d.ts +24 -24
  80. package/dist/common/src/query/serialized-query.types.js +2 -2
  81. package/dist/common/src/query.types.d.ts +81 -81
  82. package/dist/common/src/query.types.js +153 -153
  83. package/dist/common/src/regions.d.ts +21 -21
  84. package/dist/common/src/regions.js +46 -46
  85. package/dist/common/src/schema/schema.types.d.ts +30 -30
  86. package/dist/common/src/schema/schema.types.js +172 -172
  87. package/dist/common/src/secret.schemas.d.ts +6 -6
  88. package/dist/common/src/secret.schemas.js +32 -32
  89. package/dist/common/src/secret.types.d.ts +49 -49
  90. package/dist/common/src/secret.types.js +5 -5
  91. package/dist/common/src/security.types.d.ts +3 -3
  92. package/dist/common/src/security.types.js +2 -2
  93. package/dist/common/src/socket.schemas.d.ts +3 -3
  94. package/dist/common/src/socket.schemas.js +58 -58
  95. package/dist/common/src/socket.types.d.ts +108 -108
  96. package/dist/common/src/socket.types.js +2 -2
  97. package/dist/common/src/time-units.d.ts +5 -5
  98. package/dist/common/src/time-units.js +8 -8
  99. package/dist/common/src/trigger.types.d.ts +15 -15
  100. package/dist/common/src/trigger.types.js +2 -2
  101. package/dist/common/src/types.d.ts +21 -21
  102. package/dist/common/src/types.js +2 -2
  103. package/dist/common/src/utils/array.d.ts +8 -8
  104. package/dist/common/src/utils/array.js +51 -51
  105. package/dist/common/src/utils/assert.d.ts +8 -8
  106. package/dist/common/src/utils/assert.js +49 -49
  107. package/dist/common/src/utils/error.d.ts +4 -4
  108. package/dist/common/src/utils/error.js +10 -10
  109. package/dist/common/src/utils/http.d.ts +2 -2
  110. package/dist/common/src/utils/http.js +40 -38
  111. package/dist/common/src/utils/http.js.map +1 -1
  112. package/dist/common/src/utils/id.d.ts +2 -2
  113. package/dist/common/src/utils/id.js +21 -21
  114. package/dist/common/src/utils/lock.manager.d.ts +9 -9
  115. package/dist/common/src/utils/lock.manager.js +39 -39
  116. package/dist/common/src/utils/nullish.d.ts +2 -2
  117. package/dist/common/src/utils/nullish.js +11 -11
  118. package/dist/common/src/utils/object.d.ts +5 -6
  119. package/dist/common/src/utils/object.js +75 -89
  120. package/dist/common/src/utils/object.js.map +1 -1
  121. package/dist/common/src/utils/serialization.d.ts +6 -6
  122. package/dist/common/src/utils/serialization.js +77 -77
  123. package/dist/common/src/utils/transforms.d.ts +18 -18
  124. package/dist/common/src/utils/transforms.js +92 -92
  125. package/dist/common/src/utils/url.d.ts +1 -1
  126. package/dist/common/src/utils/url.js +15 -15
  127. package/dist/common/src/utils/validation.d.ts +17 -17
  128. package/dist/common/src/utils/validation.js +209 -209
  129. package/dist/common/src/utils/validation.js.map +1 -1
  130. package/dist/common/src/webhook-response.d.ts +6 -7
  131. package/dist/common/src/webhook-response.js +2 -7
  132. package/dist/common/src/webhook-response.js.map +1 -1
  133. package/dist/internal-common/src/async-queue.d.ts +4 -4
  134. package/dist/internal-common/src/async-queue.js +17 -17
  135. package/dist/internal-common/src/code-executor.types.d.ts +13 -13
  136. package/dist/internal-common/src/code-executor.types.js +2 -2
  137. package/dist/internal-common/src/environment/environment.types.d.ts +74 -74
  138. package/dist/internal-common/src/environment/environment.types.js +2 -2
  139. package/dist/internal-common/src/environment/index.d.ts +6 -6
  140. package/dist/internal-common/src/environment/index.js +27 -27
  141. package/dist/internal-common/src/environment/local.environment.d.ts +2 -2
  142. package/dist/internal-common/src/environment/local.environment.js +62 -62
  143. package/dist/internal-common/src/filters/custom-exception.filter.d.ts +6 -6
  144. package/dist/internal-common/src/filters/custom-exception.filter.js +44 -44
  145. package/dist/internal-common/src/index.d.ts +14 -14
  146. package/dist/internal-common/src/index.js +32 -32
  147. package/dist/internal-common/src/interceptors/body.interceptor.d.ts +5 -5
  148. package/dist/internal-common/src/interceptors/body.interceptor.js +24 -24
  149. package/dist/internal-common/src/kafka/kafka.manager.d.ts +22 -22
  150. package/dist/internal-common/src/kafka/kafka.manager.js +129 -129
  151. package/dist/internal-common/src/kafka/kafka.types.d.ts +17 -17
  152. package/dist/internal-common/src/kafka/kafka.types.js +2 -2
  153. package/dist/internal-common/src/kafka-observability-publisher.d.ts +11 -11
  154. package/dist/internal-common/src/kafka-observability-publisher.js +20 -20
  155. package/dist/internal-common/src/local-dev.types.d.ts +31 -31
  156. package/dist/internal-common/src/local-dev.types.js +2 -2
  157. package/dist/internal-common/src/observability-publisher.d.ts +9 -9
  158. package/dist/internal-common/src/observability-publisher.js +58 -58
  159. package/dist/internal-common/src/observability.types.d.ts +17 -17
  160. package/dist/internal-common/src/observability.types.js +2 -2
  161. package/dist/internal-common/src/shutdown.manager.d.ts +20 -20
  162. package/dist/internal-common/src/shutdown.manager.js +75 -75
  163. package/dist/internal-common/src/utils.d.ts +5 -5
  164. package/dist/internal-common/src/utils.js +29 -29
  165. package/dist/local-backend/src/index.d.ts +4 -4
  166. package/dist/local-backend/src/index.js +20 -20
  167. package/dist/local-backend/src/local-backend-socket.service.d.ts +18 -18
  168. package/dist/local-backend/src/local-backend-socket.service.js +107 -108
  169. package/dist/local-backend/src/local-backend-socket.service.js.map +1 -1
  170. package/dist/local-backend/src/local-backend.app.d.ts +2 -2
  171. package/dist/local-backend/src/local-backend.app.js +19 -19
  172. package/dist/local-backend/src/local-backend.controller.d.ts +8 -8
  173. package/dist/local-backend/src/local-backend.controller.js +49 -49
  174. package/dist/local-backend/src/local-backend.module.d.ts +8 -8
  175. package/dist/local-backend/src/local-backend.module.js +53 -53
  176. package/dist/local-backend/src/local-backend.service.d.ts +15 -15
  177. package/dist/local-backend/src/local-backend.service.js +165 -165
  178. package/dist/tsconfig.build.tsbuildinfo +1 -1
  179. package/package.json +2 -1
@@ -1,22 +1,22 @@
1
- import { HeartbeatProvider } from '@squidcloud/common';
2
- import { KafkaConnectionConfig, MessageEnvelope, TopicId } from './kafka.types';
3
- import { Observable } from 'rxjs';
4
- export declare class KafkaManager implements HeartbeatProvider {
5
- private readonly connectionConfig;
6
- private kafka;
7
- private readonly producerMap;
8
- private readonly pubSubSubjectMap;
9
- private readonly testMessageObs;
10
- constructor(connectionConfig: KafkaConnectionConfig);
11
- publishMessage<T>(topicId: TopicId, message: T, key: string): Promise<void>;
12
- observePubSubTopic<T>(topicId: TopicId): Observable<T>;
13
- observeTopic<T>(topicId: TopicId): Observable<MessageEnvelope<T>>;
14
- observeBatchTopic<T>(topicId: TopicId): Observable<Array<MessageEnvelope<T>>>;
15
- sendMessage<T>(topicId: TopicId, message: T, key: string): Promise<void>;
16
- sendMessages<T>(topicId: TopicId, messages: Array<{
17
- message: T;
18
- key: string;
19
- }>): Promise<void>;
20
- private subscribeBatchAndRun;
21
- checkHeartbeat(): Promise<void>;
22
- }
1
+ import { HeartbeatProvider } from '@squidcloud/common';
2
+ import { KafkaConnectionConfig, MessageEnvelope, TopicId } from './kafka.types';
3
+ import { Observable } from 'rxjs';
4
+ export declare class KafkaManager implements HeartbeatProvider {
5
+ private readonly connectionConfig;
6
+ private kafka;
7
+ private readonly producerMap;
8
+ private readonly pubSubSubjectMap;
9
+ private readonly testMessageObs;
10
+ constructor(connectionConfig: KafkaConnectionConfig);
11
+ publishMessage<T>(topicId: TopicId, message: T, key: string): Promise<void>;
12
+ observePubSubTopic<T>(topicId: TopicId): Observable<T>;
13
+ observeTopic<T>(topicId: TopicId): Observable<MessageEnvelope<T>>;
14
+ observeBatchTopic<T>(topicId: TopicId): Observable<Array<MessageEnvelope<T>>>;
15
+ sendMessage<T>(topicId: TopicId, message: T, key: string): Promise<void>;
16
+ sendMessages<T>(topicId: TopicId, messages: Array<{
17
+ message: T;
18
+ key: string;
19
+ }>): Promise<void>;
20
+ private subscribeBatchAndRun;
21
+ checkHeartbeat(): Promise<void>;
22
+ }
@@ -1,130 +1,130 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KafkaManager = void 0;
4
- const common_1 = require("@squidcloud/common");
5
- const kafkajs_1 = require("kafkajs");
6
- const rxjs_1 = require("rxjs");
7
- class KafkaManager {
8
- constructor(connectionConfig) {
9
- this.connectionConfig = connectionConfig;
10
- this.producerMap = {};
11
- this.pubSubSubjectMap = {};
12
- this.testMessageObs = new rxjs_1.Subject();
13
- const config = {
14
- clientId: (0, common_1.generateId)(),
15
- brokers: connectionConfig.clusterUrls,
16
- logCreator: connectionConfig.logAdapter,
17
- sasl: connectionConfig.sasl,
18
- ssl: connectionConfig.ssl,
19
- logLevel: kafkajs_1.logLevel.WARN,
20
- };
21
- this.kafka = new kafkajs_1.Kafka(config);
22
- this.observePubSubTopic('test_messages').subscribe((message) => {
23
- this.testMessageObs.next(message);
24
- });
25
- }
26
- async publishMessage(topicId, message, key) {
27
- await this.sendMessage(topicId, message, key);
28
- }
29
- observePubSubTopic(topicId) {
30
- if (this.pubSubSubjectMap[topicId]) {
31
- return this.pubSubSubjectMap[topicId];
32
- }
33
- const subject = new rxjs_1.Subject();
34
- const consumer = this.kafka.consumer({
35
- groupId: `${topicId}-group - ${(0, common_1.generateId)()}`,
36
- sessionTimeout: this.connectionConfig.consumerSessionTimeoutMs,
37
- });
38
- const obs = (0, rxjs_1.from)(this.subscribeBatchAndRun(consumer, topicId, subject)).pipe((0, rxjs_1.switchMap)(() => subject), (0, rxjs_1.finalize)(async () => {
39
- delete this.pubSubSubjectMap[topicId];
40
- await consumer.disconnect();
41
- }), (0, rxjs_1.mergeMap)((a) => a), (0, rxjs_1.tap)((a) => a.commit()), (0, rxjs_1.map)((a) => a.data), (0, rxjs_1.share)());
42
- this.pubSubSubjectMap[topicId] = obs;
43
- return obs;
44
- }
45
- observeTopic(topicId) {
46
- return this.observeBatchTopic(topicId).pipe((0, rxjs_1.mergeMap)((a) => a));
47
- }
48
- observeBatchTopic(topicId) {
49
- const consumer = this.kafka.consumer({
50
- groupId: `${topicId}-group`,
51
- sessionTimeout: this.connectionConfig.consumerSessionTimeoutMs,
52
- heartbeatInterval: 1000,
53
- });
54
- const subject = new rxjs_1.Subject();
55
- return (0, rxjs_1.from)(this.subscribeBatchAndRun(consumer, topicId, subject)).pipe((0, rxjs_1.switchMap)(() => subject), (0, rxjs_1.finalize)(async () => {
56
- await consumer.disconnect();
57
- }), (0, rxjs_1.share)());
58
- }
59
- async sendMessage(topicId, message, key) {
60
- await this.sendMessages(topicId, [{ message, key }]);
61
- }
62
- async sendMessages(topicId, messages) {
63
- if (!this.producerMap[topicId]) {
64
- const producer = this.kafka.producer({
65
- createPartitioner: kafkajs_1.Partitioners.DefaultPartitioner,
66
- retry: {
67
- retries: 5,
68
- initialRetryTime: 300,
69
- maxRetryTime: 5000,
70
- },
71
- idempotent: false,
72
- transactionTimeout: 30000,
73
- });
74
- this.producerMap[topicId] = producer.connect().then(() => producer);
75
- }
76
- const producer = await this.producerMap[topicId];
77
- const messagesWithValue = messages.map(({ message, key }) => {
78
- return { value: (0, common_1.serializeObj)(message), key };
79
- });
80
- try {
81
- await producer.send({ topic: topicId, messages: messagesWithValue });
82
- }
83
- catch (e) {
84
- console.error('Error sending messages to Kafka', e, messagesWithValue);
85
- throw e;
86
- }
87
- }
88
- async subscribeBatchAndRun(consumer, topicId, subject) {
89
- await consumer.connect();
90
- await consumer.subscribe({ topic: topicId, fromBeginning: false });
91
- await consumer.run({
92
- eachBatchAutoResolve: true,
93
- eachBatch: async ({ batch, resolveOffset }) => {
94
- const messageEnvelopes = batch.messages
95
- .filter((message) => message.value !== null)
96
- .map((message) => {
97
- const data = (0, common_1.deserializeObj)((0, common_1.truthy)(message.value).toString());
98
- return {
99
- data,
100
- timestamp: parseInt(message.timestamp),
101
- offset: message.offset,
102
- partition: batch.partition,
103
- topicId,
104
- commit: () => {
105
- resolveOffset(message.offset);
106
- },
107
- };
108
- });
109
- if (messageEnvelopes.length) {
110
- subject.next(messageEnvelopes);
111
- }
112
- },
113
- });
114
- }
115
- async checkHeartbeat() {
116
- const randomMessage = { id: (0, common_1.generateId)() };
117
- const messageObs = this.testMessageObs.pipe((0, rxjs_1.filter)((message) => {
118
- return message.id === randomMessage.id;
119
- }));
120
- await (0, rxjs_1.firstValueFrom)((0, rxjs_1.timer)(0));
121
- this.sendMessage('test_messages', randomMessage, 'test_key')
122
- .then()
123
- .catch((err) => {
124
- console.log('Error while sending test message to Kafka', err);
125
- });
126
- await (0, rxjs_1.firstValueFrom)(messageObs);
127
- }
128
- }
129
- exports.KafkaManager = KafkaManager;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KafkaManager = void 0;
4
+ const common_1 = require("@squidcloud/common");
5
+ const kafkajs_1 = require("kafkajs");
6
+ const rxjs_1 = require("rxjs");
7
+ class KafkaManager {
8
+ constructor(connectionConfig) {
9
+ this.connectionConfig = connectionConfig;
10
+ this.producerMap = {};
11
+ this.pubSubSubjectMap = {};
12
+ this.testMessageObs = new rxjs_1.Subject();
13
+ const config = {
14
+ clientId: (0, common_1.generateId)(),
15
+ brokers: connectionConfig.clusterUrls,
16
+ logCreator: connectionConfig.logAdapter,
17
+ sasl: connectionConfig.sasl,
18
+ ssl: connectionConfig.ssl,
19
+ logLevel: kafkajs_1.logLevel.WARN,
20
+ };
21
+ this.kafka = new kafkajs_1.Kafka(config);
22
+ this.observePubSubTopic('test_messages').subscribe((message) => {
23
+ this.testMessageObs.next(message);
24
+ });
25
+ }
26
+ async publishMessage(topicId, message, key) {
27
+ await this.sendMessage(topicId, message, key);
28
+ }
29
+ observePubSubTopic(topicId) {
30
+ if (this.pubSubSubjectMap[topicId]) {
31
+ return this.pubSubSubjectMap[topicId];
32
+ }
33
+ const subject = new rxjs_1.Subject();
34
+ const consumer = this.kafka.consumer({
35
+ groupId: `${topicId}-group - ${(0, common_1.generateId)()}`,
36
+ sessionTimeout: this.connectionConfig.consumerSessionTimeoutMs,
37
+ });
38
+ const obs = (0, rxjs_1.from)(this.subscribeBatchAndRun(consumer, topicId, subject)).pipe((0, rxjs_1.switchMap)(() => subject), (0, rxjs_1.finalize)(async () => {
39
+ delete this.pubSubSubjectMap[topicId];
40
+ await consumer.disconnect();
41
+ }), (0, rxjs_1.mergeMap)((a) => a), (0, rxjs_1.tap)((a) => a.commit()), (0, rxjs_1.map)((a) => a.data), (0, rxjs_1.share)());
42
+ this.pubSubSubjectMap[topicId] = obs;
43
+ return obs;
44
+ }
45
+ observeTopic(topicId) {
46
+ return this.observeBatchTopic(topicId).pipe((0, rxjs_1.mergeMap)((a) => a));
47
+ }
48
+ observeBatchTopic(topicId) {
49
+ const consumer = this.kafka.consumer({
50
+ groupId: `${topicId}-group`,
51
+ sessionTimeout: this.connectionConfig.consumerSessionTimeoutMs,
52
+ heartbeatInterval: 1000,
53
+ });
54
+ const subject = new rxjs_1.Subject();
55
+ return (0, rxjs_1.from)(this.subscribeBatchAndRun(consumer, topicId, subject)).pipe((0, rxjs_1.switchMap)(() => subject), (0, rxjs_1.finalize)(async () => {
56
+ await consumer.disconnect();
57
+ }), (0, rxjs_1.share)());
58
+ }
59
+ async sendMessage(topicId, message, key) {
60
+ await this.sendMessages(topicId, [{ message, key }]);
61
+ }
62
+ async sendMessages(topicId, messages) {
63
+ if (!this.producerMap[topicId]) {
64
+ const producer = this.kafka.producer({
65
+ createPartitioner: kafkajs_1.Partitioners.DefaultPartitioner,
66
+ retry: {
67
+ retries: 5,
68
+ initialRetryTime: 300,
69
+ maxRetryTime: 5000,
70
+ },
71
+ idempotent: false,
72
+ transactionTimeout: 30000,
73
+ });
74
+ this.producerMap[topicId] = producer.connect().then(() => producer);
75
+ }
76
+ const producer = await this.producerMap[topicId];
77
+ const messagesWithValue = messages.map(({ message, key }) => {
78
+ return { value: (0, common_1.serializeObj)(message), key };
79
+ });
80
+ try {
81
+ await producer.send({ topic: topicId, messages: messagesWithValue });
82
+ }
83
+ catch (e) {
84
+ console.error('Error sending messages to Kafka', e, messagesWithValue);
85
+ throw e;
86
+ }
87
+ }
88
+ async subscribeBatchAndRun(consumer, topicId, subject) {
89
+ await consumer.connect();
90
+ await consumer.subscribe({ topic: topicId, fromBeginning: false });
91
+ await consumer.run({
92
+ eachBatchAutoResolve: true,
93
+ eachBatch: async ({ batch, resolveOffset }) => {
94
+ const messageEnvelopes = batch.messages
95
+ .filter((message) => message.value !== null)
96
+ .map((message) => {
97
+ const data = (0, common_1.deserializeObj)((0, common_1.truthy)(message.value).toString());
98
+ return {
99
+ data,
100
+ timestamp: parseInt(message.timestamp),
101
+ offset: message.offset,
102
+ partition: batch.partition,
103
+ topicId,
104
+ commit: () => {
105
+ resolveOffset(message.offset);
106
+ },
107
+ };
108
+ });
109
+ if (messageEnvelopes.length) {
110
+ subject.next(messageEnvelopes);
111
+ }
112
+ },
113
+ });
114
+ }
115
+ async checkHeartbeat() {
116
+ const randomMessage = { id: (0, common_1.generateId)() };
117
+ const messageObs = this.testMessageObs.pipe((0, rxjs_1.filter)((message) => {
118
+ return message.id === randomMessage.id;
119
+ }));
120
+ await (0, rxjs_1.firstValueFrom)((0, rxjs_1.timer)(0));
121
+ this.sendMessage('test_messages', randomMessage, 'test_key')
122
+ .then()
123
+ .catch((err) => {
124
+ console.log('Error while sending test message to Kafka', err);
125
+ });
126
+ await (0, rxjs_1.firstValueFrom)(messageObs);
127
+ }
128
+ }
129
+ exports.KafkaManager = KafkaManager;
130
130
  //# sourceMappingURL=kafka.manager.js.map
@@ -1,17 +1,17 @@
1
- import { LogEntry, logLevel, Mechanism, SASLOptions } from 'kafkajs';
2
- export type TopicId = string;
3
- export interface MessageEnvelope<T> {
4
- data: T;
5
- offset: string;
6
- timestamp: number;
7
- partition: number;
8
- topicId: TopicId;
9
- commit: () => void;
10
- }
11
- export interface KafkaConnectionConfig {
12
- clusterUrls: string[];
13
- logAdapter?: (logLevel: logLevel) => (entry: LogEntry) => void;
14
- ssl: boolean;
15
- sasl?: SASLOptions | Mechanism;
16
- consumerSessionTimeoutMs: number;
17
- }
1
+ import { LogEntry, logLevel, Mechanism, SASLOptions } from 'kafkajs';
2
+ export type TopicId = string;
3
+ export interface MessageEnvelope<T> {
4
+ data: T;
5
+ offset: string;
6
+ timestamp: number;
7
+ partition: number;
8
+ topicId: TopicId;
9
+ commit: () => void;
10
+ }
11
+ export interface KafkaConnectionConfig {
12
+ clusterUrls: string[];
13
+ logAdapter?: (logLevel: logLevel) => (entry: LogEntry) => void;
14
+ ssl: boolean;
15
+ sasl?: SASLOptions | Mechanism;
16
+ consumerSessionTimeoutMs: number;
17
+ }
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=kafka.types.js.map
@@ -1,11 +1,11 @@
1
- import { LogEvent, MetricEvent } from './observability.types';
2
- import { KafkaManager } from './kafka/kafka.manager';
3
- import { ObservabilityPublisher } from './observability-publisher';
4
- export declare class KafkaObservabilityPublisher extends ObservabilityPublisher {
5
- private readonly kafkaManager;
6
- private readonly metricsTopicId;
7
- private readonly logsTopicId;
8
- constructor(kafkaManager: KafkaManager, metricsTopicId: string, logsTopicId: string);
9
- reportMetric(event: Omit<MetricEvent, 'timestamp'>): Promise<void>;
10
- reportLog(event: LogEvent): Promise<void>;
11
- }
1
+ import { LogEvent, MetricEvent } from './observability.types';
2
+ import { KafkaManager } from './kafka/kafka.manager';
3
+ import { ObservabilityPublisher } from './observability-publisher';
4
+ export declare class KafkaObservabilityPublisher extends ObservabilityPublisher {
5
+ private readonly kafkaManager;
6
+ private readonly metricsTopicId;
7
+ private readonly logsTopicId;
8
+ constructor(kafkaManager: KafkaManager, metricsTopicId: string, logsTopicId: string);
9
+ reportMetric(event: Omit<MetricEvent, 'timestamp'>): Promise<void>;
10
+ reportLog(event: LogEvent): Promise<void>;
11
+ }
@@ -1,21 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KafkaObservabilityPublisher = void 0;
4
- const observability_publisher_1 = require("./observability-publisher");
5
- class KafkaObservabilityPublisher extends observability_publisher_1.ObservabilityPublisher {
6
- constructor(kafkaManager, metricsTopicId, logsTopicId) {
7
- super();
8
- this.kafkaManager = kafkaManager;
9
- this.metricsTopicId = metricsTopicId;
10
- this.logsTopicId = logsTopicId;
11
- }
12
- async reportMetric(event) {
13
- const modifiedEvent = Object.assign(Object.assign({}, event), { timestamp: new Date(), name: `squid_${event.name}` });
14
- await this.kafkaManager.sendMessage(this.metricsTopicId, modifiedEvent, 'report_metric');
15
- }
16
- async reportLog(event) {
17
- await this.kafkaManager.sendMessage(this.logsTopicId, event, 'report_log');
18
- }
19
- }
20
- exports.KafkaObservabilityPublisher = KafkaObservabilityPublisher;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KafkaObservabilityPublisher = void 0;
4
+ const observability_publisher_1 = require("./observability-publisher");
5
+ class KafkaObservabilityPublisher extends observability_publisher_1.ObservabilityPublisher {
6
+ constructor(kafkaManager, metricsTopicId, logsTopicId) {
7
+ super();
8
+ this.kafkaManager = kafkaManager;
9
+ this.metricsTopicId = metricsTopicId;
10
+ this.logsTopicId = logsTopicId;
11
+ }
12
+ async reportMetric(event) {
13
+ const modifiedEvent = Object.assign(Object.assign({}, event), { timestamp: new Date(), name: `squid_${event.name}` });
14
+ await this.kafkaManager.sendMessage(this.metricsTopicId, modifiedEvent, 'report_metric');
15
+ }
16
+ async reportLog(event) {
17
+ await this.kafkaManager.sendMessage(this.logsTopicId, event, 'report_log');
18
+ }
19
+ }
20
+ exports.KafkaObservabilityPublisher = KafkaObservabilityPublisher;
21
21
  //# sourceMappingURL=kafka-observability-publisher.js.map
@@ -1,31 +1,31 @@
1
- import { RunSecrets } from '@squidcloud/common';
2
- import { BatchRunConfigurationRequest } from './code-executor.types';
3
- export type MessageFromDeveloperType = 'bundleData' | 'response';
4
- interface BaseMessageFromDeveloper {
5
- type: MessageFromDeveloperType;
6
- payload?: unknown;
7
- requestId: string;
8
- }
9
- export type MessageFromDeveloper = ResponseMessageFromDeveloper;
10
- export interface ResponseMessageFromDeveloper extends BaseMessageFromDeveloper {
11
- type: 'response';
12
- payload: any;
13
- }
14
- export type MessageToDeveloperType = 'executeFunction' | 'localBackendData';
15
- interface BaseMessageToDeveloper {
16
- type: MessageToDeveloperType;
17
- payload: unknown;
18
- requestId: string;
19
- }
20
- export type MessageToDeveloper = ExecuteFunctionMessageToDeveloper | LocalBackendDataMessageToDeveloper;
21
- export interface ExecuteFunctionMessageToDeveloper extends BaseMessageToDeveloper {
22
- type: 'executeFunction';
23
- payload: BatchRunConfigurationRequest;
24
- }
25
- export interface LocalBackendDataMessageToDeveloper extends BaseMessageToDeveloper {
26
- type: 'localBackendData';
27
- payload: {
28
- secrets: RunSecrets;
29
- };
30
- }
31
- export {};
1
+ import { RunSecrets } from '@squidcloud/common';
2
+ import { BatchRunConfigurationRequest } from './code-executor.types';
3
+ export type MessageFromDeveloperType = 'bundleData' | 'response';
4
+ interface BaseMessageFromDeveloper {
5
+ type: MessageFromDeveloperType;
6
+ payload?: unknown;
7
+ requestId: string;
8
+ }
9
+ export type MessageFromDeveloper = ResponseMessageFromDeveloper;
10
+ export interface ResponseMessageFromDeveloper extends BaseMessageFromDeveloper {
11
+ type: 'response';
12
+ payload: any;
13
+ }
14
+ export type MessageToDeveloperType = 'executeFunction' | 'localBackendData';
15
+ interface BaseMessageToDeveloper {
16
+ type: MessageToDeveloperType;
17
+ payload: unknown;
18
+ requestId: string;
19
+ }
20
+ export type MessageToDeveloper = ExecuteFunctionMessageToDeveloper | LocalBackendDataMessageToDeveloper;
21
+ export interface ExecuteFunctionMessageToDeveloper extends BaseMessageToDeveloper {
22
+ type: 'executeFunction';
23
+ payload: BatchRunConfigurationRequest;
24
+ }
25
+ export interface LocalBackendDataMessageToDeveloper extends BaseMessageToDeveloper {
26
+ type: 'localBackendData';
27
+ payload: {
28
+ secrets: RunSecrets;
29
+ };
30
+ }
31
+ export {};
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=local-dev.types.js.map
@@ -1,9 +1,9 @@
1
- import { LogEvent, MetricEvent } from './observability.types';
2
- export declare abstract class ObservabilityPublisher {
3
- abstract reportMetric(event: Omit<MetricEvent, 'timestamp'>): Promise<void>;
4
- abstract reportLog(event: LogEvent): Promise<void>;
5
- timeFunction(event: Omit<MetricEvent, 'type' | 'timestamp' | 'value'>, timedFunction: () => Promise<any>): Promise<any>;
6
- measureMetric<T extends (...args: any[]) => any>(func: T, name: string, tags: Record<string, string> | undefined, isExposedToUser: boolean, reportTime: boolean): ReturnType<T>;
7
- reportTimeMetric(name: string, isExposedToUser: boolean, startTime: number, tags: Record<string, string>): void;
8
- reportCountMetric(name: string, isExposedToUser: boolean, tags: Record<string, string>, success: boolean): void;
9
- }
1
+ import { LogEvent, MetricEvent } from './observability.types';
2
+ export declare abstract class ObservabilityPublisher {
3
+ abstract reportMetric(event: Omit<MetricEvent, 'timestamp'>): Promise<void>;
4
+ abstract reportLog(event: LogEvent): Promise<void>;
5
+ timeFunction(event: Omit<MetricEvent, 'type' | 'timestamp' | 'value'>, timedFunction: () => Promise<any>): Promise<any>;
6
+ measureMetric<T extends (...args: any[]) => any>(func: T, name: string, tags: Record<string, string> | undefined, isExposedToUser: boolean, reportTime: boolean): ReturnType<T>;
7
+ reportTimeMetric(name: string, isExposedToUser: boolean, startTime: number, tags: Record<string, string>): void;
8
+ reportCountMetric(name: string, isExposedToUser: boolean, tags: Record<string, string>, success: boolean): void;
9
+ }
@@ -1,59 +1,59 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObservabilityPublisher = void 0;
4
- class ObservabilityPublisher {
5
- async timeFunction(event, timedFunction) {
6
- const startTime = Date.now();
7
- const result = await timedFunction();
8
- this.reportMetric(Object.assign(Object.assign({}, event), { type: 'gauge', value: Date.now() - startTime })).then();
9
- return result;
10
- }
11
- measureMetric(func, name, tags = {}, isExposedToUser, reportTime) {
12
- try {
13
- const startTime = Date.now();
14
- const result = func();
15
- if (result instanceof Promise) {
16
- return result
17
- .then((r) => {
18
- if (reportTime)
19
- this.reportTimeMetric(name, isExposedToUser, startTime, tags);
20
- this.reportCountMetric(name, isExposedToUser, tags, true);
21
- return r;
22
- })
23
- .catch((e) => {
24
- this.reportCountMetric(name, isExposedToUser, tags, false);
25
- throw e;
26
- });
27
- }
28
- if (reportTime)
29
- this.reportTimeMetric(name, isExposedToUser, startTime, tags);
30
- this.reportCountMetric(name, isExposedToUser, tags, true);
31
- return result;
32
- }
33
- catch (e) {
34
- this.reportCountMetric(name, isExposedToUser, tags, false);
35
- throw e;
36
- }
37
- }
38
- reportTimeMetric(name, isExposedToUser, startTime, tags) {
39
- this.reportMetric({
40
- name: `${name}_time`,
41
- isExposedToUser,
42
- tags,
43
- value: Date.now() - startTime,
44
- type: 'gauge',
45
- }).then();
46
- }
47
- reportCountMetric(name, isExposedToUser, tags, success) {
48
- tags = Object.assign(Object.assign({}, tags), { success: success ? 'true' : 'false' });
49
- this.reportMetric({
50
- name: `${name}_count`,
51
- isExposedToUser,
52
- tags,
53
- value: 1,
54
- type: 'count',
55
- }).then();
56
- }
57
- }
58
- exports.ObservabilityPublisher = ObservabilityPublisher;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObservabilityPublisher = void 0;
4
+ class ObservabilityPublisher {
5
+ async timeFunction(event, timedFunction) {
6
+ const startTime = Date.now();
7
+ const result = await timedFunction();
8
+ this.reportMetric(Object.assign(Object.assign({}, event), { type: 'gauge', value: Date.now() - startTime })).then();
9
+ return result;
10
+ }
11
+ measureMetric(func, name, tags = {}, isExposedToUser, reportTime) {
12
+ try {
13
+ const startTime = Date.now();
14
+ const result = func();
15
+ if (result instanceof Promise) {
16
+ return result
17
+ .then((r) => {
18
+ if (reportTime)
19
+ this.reportTimeMetric(name, isExposedToUser, startTime, tags);
20
+ this.reportCountMetric(name, isExposedToUser, tags, true);
21
+ return r;
22
+ })
23
+ .catch((e) => {
24
+ this.reportCountMetric(name, isExposedToUser, tags, false);
25
+ throw e;
26
+ });
27
+ }
28
+ if (reportTime)
29
+ this.reportTimeMetric(name, isExposedToUser, startTime, tags);
30
+ this.reportCountMetric(name, isExposedToUser, tags, true);
31
+ return result;
32
+ }
33
+ catch (e) {
34
+ this.reportCountMetric(name, isExposedToUser, tags, false);
35
+ throw e;
36
+ }
37
+ }
38
+ reportTimeMetric(name, isExposedToUser, startTime, tags) {
39
+ this.reportMetric({
40
+ name: `${name}_time`,
41
+ isExposedToUser,
42
+ tags,
43
+ value: Date.now() - startTime,
44
+ type: 'gauge',
45
+ }).then();
46
+ }
47
+ reportCountMetric(name, isExposedToUser, tags, success) {
48
+ tags = Object.assign(Object.assign({}, tags), { success: success ? 'true' : 'false' });
49
+ this.reportMetric({
50
+ name: `${name}_count`,
51
+ isExposedToUser,
52
+ tags,
53
+ value: 1,
54
+ type: 'count',
55
+ }).then();
56
+ }
57
+ }
58
+ exports.ObservabilityPublisher = ObservabilityPublisher;
59
59
  //# sourceMappingURL=observability-publisher.js.map