@squidcloud/local-backend 1.0.49 → 1.0.50

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 (175) 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 +73 -73
  21. package/dist/common/src/bundle-api.types.d.ts +62 -62
  22. package/dist/common/src/bundle-api.types.js +2 -2
  23. package/dist/common/src/bundle-data.types.d.ts +59 -59
  24. package/dist/common/src/bundle-data.types.js +2 -2
  25. package/dist/common/src/communication.types.d.ts +18 -18
  26. package/dist/common/src/communication.types.js +40 -40
  27. package/dist/common/src/context.types.d.ts +24 -24
  28. package/dist/common/src/context.types.js +2 -2
  29. package/dist/common/src/distributed-lock.context.d.ts +5 -5
  30. package/dist/common/src/distributed-lock.context.js +10 -10
  31. package/dist/common/src/document.types.d.ts +32 -32
  32. package/dist/common/src/document.types.js +50 -50
  33. package/dist/common/src/graphql.context.d.ts +14 -14
  34. package/dist/common/src/graphql.context.js +12 -12
  35. package/dist/common/src/graphql.types.d.ts +11 -11
  36. package/dist/common/src/graphql.types.js +34 -34
  37. package/dist/common/src/heartbeat.types.d.ts +4 -4
  38. package/dist/common/src/heartbeat.types.js +16 -16
  39. package/dist/common/src/http-status.enum.d.ts +50 -50
  40. package/dist/common/src/http-status.enum.js +54 -54
  41. package/dist/common/src/index.d.ts +53 -53
  42. package/dist/common/src/index.js +69 -69
  43. package/dist/common/src/integrations/ai_assistant.types.d.ts +30 -30
  44. package/dist/common/src/integrations/ai_assistant.types.js +2 -2
  45. package/dist/common/src/integrations/api.types.d.ts +80 -80
  46. package/dist/common/src/integrations/api.types.js +2 -2
  47. package/dist/common/src/integrations/auth.types.d.ts +39 -39
  48. package/dist/common/src/integrations/auth.types.js +2 -2
  49. package/dist/common/src/integrations/database.types.d.ts +236 -236
  50. package/dist/common/src/integrations/database.types.js +2 -2
  51. package/dist/common/src/integrations/index.d.ts +101 -101
  52. package/dist/common/src/integrations/index.js +105 -105
  53. package/dist/common/src/integrations/observability.types.d.ts +23 -23
  54. package/dist/common/src/integrations/observability.types.js +23 -23
  55. package/dist/common/src/integrations/observability.types.js.map +1 -1
  56. package/dist/common/src/logger.types.d.ts +21 -21
  57. package/dist/common/src/logger.types.js +11 -11
  58. package/dist/common/src/metrics.types.d.ts +73 -73
  59. package/dist/common/src/metrics.types.js +11 -11
  60. package/dist/common/src/mutation.context.d.ts +13 -13
  61. package/dist/common/src/mutation.context.js +26 -26
  62. package/dist/common/src/mutation.schemas.d.ts +5 -5
  63. package/dist/common/src/mutation.schemas.js +114 -114
  64. package/dist/common/src/mutation.types.d.ts +63 -63
  65. package/dist/common/src/mutation.types.js +142 -142
  66. package/dist/common/src/named-query.context.d.ts +4 -4
  67. package/dist/common/src/named-query.context.js +9 -9
  68. package/dist/common/src/named-query.schemas.d.ts +3 -3
  69. package/dist/common/src/named-query.schemas.js +13 -13
  70. package/dist/common/src/named-query.types.d.ts +8 -8
  71. package/dist/common/src/named-query.types.js +2 -2
  72. package/dist/common/src/query/base-query-builder.d.ts +65 -65
  73. package/dist/common/src/query/base-query-builder.js +294 -294
  74. package/dist/common/src/query/index.d.ts +3 -3
  75. package/dist/common/src/query/index.js +19 -19
  76. package/dist/common/src/query/query-context.d.ts +47 -47
  77. package/dist/common/src/query/query-context.js +159 -159
  78. package/dist/common/src/query/serialized-query.types.d.ts +24 -24
  79. package/dist/common/src/query/serialized-query.types.js +2 -2
  80. package/dist/common/src/query.types.d.ts +81 -81
  81. package/dist/common/src/query.types.js +153 -153
  82. package/dist/common/src/regions.d.ts +21 -21
  83. package/dist/common/src/regions.js +46 -46
  84. package/dist/common/src/schema/schema.types.d.ts +30 -30
  85. package/dist/common/src/schema/schema.types.js +172 -172
  86. package/dist/common/src/secret.schemas.d.ts +6 -6
  87. package/dist/common/src/secret.schemas.js +32 -32
  88. package/dist/common/src/secret.types.d.ts +49 -49
  89. package/dist/common/src/secret.types.js +5 -5
  90. package/dist/common/src/security.types.d.ts +3 -3
  91. package/dist/common/src/security.types.js +2 -2
  92. package/dist/common/src/socket.schemas.d.ts +3 -3
  93. package/dist/common/src/socket.schemas.js +58 -58
  94. package/dist/common/src/socket.types.d.ts +108 -108
  95. package/dist/common/src/socket.types.js +2 -2
  96. package/dist/common/src/time-units.d.ts +5 -5
  97. package/dist/common/src/time-units.js +8 -8
  98. package/dist/common/src/trigger.types.d.ts +15 -15
  99. package/dist/common/src/trigger.types.js +2 -2
  100. package/dist/common/src/types.d.ts +21 -21
  101. package/dist/common/src/types.js +2 -2
  102. package/dist/common/src/utils/array.d.ts +8 -8
  103. package/dist/common/src/utils/array.js +51 -51
  104. package/dist/common/src/utils/assert.d.ts +8 -8
  105. package/dist/common/src/utils/assert.js +49 -49
  106. package/dist/common/src/utils/error.d.ts +4 -4
  107. package/dist/common/src/utils/error.js +10 -10
  108. package/dist/common/src/utils/http.d.ts +2 -2
  109. package/dist/common/src/utils/http.js +38 -38
  110. package/dist/common/src/utils/id.d.ts +2 -2
  111. package/dist/common/src/utils/id.js +21 -21
  112. package/dist/common/src/utils/lock.manager.d.ts +9 -9
  113. package/dist/common/src/utils/lock.manager.js +39 -39
  114. package/dist/common/src/utils/nullish.d.ts +2 -2
  115. package/dist/common/src/utils/nullish.js +11 -11
  116. package/dist/common/src/utils/object.d.ts +6 -6
  117. package/dist/common/src/utils/object.js +89 -89
  118. package/dist/common/src/utils/serialization.d.ts +6 -6
  119. package/dist/common/src/utils/serialization.js +77 -77
  120. package/dist/common/src/utils/transforms.d.ts +18 -18
  121. package/dist/common/src/utils/transforms.js +92 -92
  122. package/dist/common/src/utils/url.d.ts +1 -1
  123. package/dist/common/src/utils/url.js +15 -15
  124. package/dist/common/src/utils/validation.d.ts +17 -17
  125. package/dist/common/src/utils/validation.js +209 -209
  126. package/dist/common/src/utils/validation.js.map +1 -1
  127. package/dist/common/src/webhook-response.d.ts +7 -7
  128. package/dist/common/src/webhook-response.js +7 -7
  129. package/dist/internal-common/src/async-queue.d.ts +4 -4
  130. package/dist/internal-common/src/async-queue.js +17 -17
  131. package/dist/internal-common/src/code-executor.types.d.ts +13 -13
  132. package/dist/internal-common/src/code-executor.types.js +2 -2
  133. package/dist/internal-common/src/environment/environment.types.d.ts +74 -74
  134. package/dist/internal-common/src/environment/environment.types.js +2 -2
  135. package/dist/internal-common/src/environment/index.d.ts +6 -6
  136. package/dist/internal-common/src/environment/index.js +27 -27
  137. package/dist/internal-common/src/environment/local.environment.d.ts +2 -2
  138. package/dist/internal-common/src/environment/local.environment.js +62 -62
  139. package/dist/internal-common/src/filters/custom-exception.filter.d.ts +6 -6
  140. package/dist/internal-common/src/filters/custom-exception.filter.js +44 -44
  141. package/dist/internal-common/src/index.d.ts +14 -14
  142. package/dist/internal-common/src/index.js +32 -32
  143. package/dist/internal-common/src/interceptors/body.interceptor.d.ts +5 -5
  144. package/dist/internal-common/src/interceptors/body.interceptor.js +24 -24
  145. package/dist/internal-common/src/kafka/kafka.manager.d.ts +22 -22
  146. package/dist/internal-common/src/kafka/kafka.manager.js +129 -129
  147. package/dist/internal-common/src/kafka/kafka.types.d.ts +17 -17
  148. package/dist/internal-common/src/kafka/kafka.types.js +2 -2
  149. package/dist/internal-common/src/kafka-observability-publisher.d.ts +11 -11
  150. package/dist/internal-common/src/kafka-observability-publisher.js +20 -20
  151. package/dist/internal-common/src/local-dev.types.d.ts +31 -31
  152. package/dist/internal-common/src/local-dev.types.js +2 -2
  153. package/dist/internal-common/src/observability-publisher.d.ts +9 -9
  154. package/dist/internal-common/src/observability-publisher.js +58 -58
  155. package/dist/internal-common/src/observability.types.d.ts +17 -17
  156. package/dist/internal-common/src/observability.types.js +2 -2
  157. package/dist/internal-common/src/shutdown.manager.d.ts +20 -20
  158. package/dist/internal-common/src/shutdown.manager.js +75 -75
  159. package/dist/internal-common/src/utils.d.ts +5 -5
  160. package/dist/internal-common/src/utils.js +29 -29
  161. package/dist/local-backend/src/index.d.ts +4 -4
  162. package/dist/local-backend/src/index.js +20 -20
  163. package/dist/local-backend/src/local-backend-socket.service.d.ts +18 -18
  164. package/dist/local-backend/src/local-backend-socket.service.js +107 -108
  165. package/dist/local-backend/src/local-backend-socket.service.js.map +1 -1
  166. package/dist/local-backend/src/local-backend.app.d.ts +2 -2
  167. package/dist/local-backend/src/local-backend.app.js +19 -19
  168. package/dist/local-backend/src/local-backend.controller.d.ts +8 -8
  169. package/dist/local-backend/src/local-backend.controller.js +49 -49
  170. package/dist/local-backend/src/local-backend.module.d.ts +8 -8
  171. package/dist/local-backend/src/local-backend.module.js +53 -53
  172. package/dist/local-backend/src/local-backend.service.d.ts +15 -15
  173. package/dist/local-backend/src/local-backend.service.js +165 -165
  174. package/dist/tsconfig.build.tsbuildinfo +1 -1
  175. 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