@geekmidas/events 10.0.0-alpha.4 → 10.0.0-alpha.41

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 (136) hide show
  1. package/dist/PgBossConnection-CywKoAZU.cjs +2 -0
  2. package/dist/PgBossConnection-DjoqT84r.mjs +2 -0
  3. package/dist/RabbitMQConnection-C9eccBL8.cjs +2 -0
  4. package/dist/RabbitMQConnection-CAp7VqyT.mjs +2 -0
  5. package/dist/SNSConnection-BWDC1wAF.cjs +2 -0
  6. package/dist/SNSConnection-ezQvVrDv.mjs +2 -0
  7. package/dist/{SQSSubscriber-BMWZ3s5q.mjs → SQSSubscriber-BXLE_1L3.mjs} +73 -7
  8. package/dist/SQSSubscriber-BXLE_1L3.mjs.map +1 -0
  9. package/dist/{SQSSubscriber-YXPlg2rm.cjs → SQSSubscriber-DtRUaZB3.cjs} +91 -14
  10. package/dist/SQSSubscriber-DtRUaZB3.cjs.map +1 -0
  11. package/dist/basic/index.cjs +7 -8
  12. package/dist/basic/index.cjs.map +1 -1
  13. package/dist/basic/index.d.cts +4 -10
  14. package/dist/basic/index.d.cts.map +1 -1
  15. package/dist/basic/index.d.mts +4 -10
  16. package/dist/basic/index.d.mts.map +1 -1
  17. package/dist/basic/index.mjs +5 -6
  18. package/dist/basic/index.mjs.map +1 -1
  19. package/dist/index.cjs +43 -50
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +26 -11
  22. package/dist/index.d.cts.map +1 -1
  23. package/dist/index.d.mts +26 -11
  24. package/dist/index.d.mts.map +1 -1
  25. package/dist/index.mjs +42 -51
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/pgboss/index.cjs +145 -28
  28. package/dist/pgboss/index.cjs.map +1 -1
  29. package/dist/pgboss/index.d.cts +39 -12
  30. package/dist/pgboss/index.d.cts.map +1 -1
  31. package/dist/pgboss/index.d.mts +39 -12
  32. package/dist/pgboss/index.d.mts.map +1 -1
  33. package/dist/pgboss/index.mjs +140 -28
  34. package/dist/pgboss/index.mjs.map +1 -1
  35. package/dist/rabbitmq/index.cjs +135 -22
  36. package/dist/rabbitmq/index.cjs.map +1 -1
  37. package/dist/rabbitmq/index.d.cts +11 -10
  38. package/dist/rabbitmq/index.d.cts.map +1 -1
  39. package/dist/rabbitmq/index.d.mts +11 -10
  40. package/dist/rabbitmq/index.d.mts.map +1 -1
  41. package/dist/rabbitmq/index.mjs +130 -22
  42. package/dist/rabbitmq/index.mjs.map +1 -1
  43. package/dist/{chunk-CsX-DzYB.cjs → rolldown-runtime-C0BPl7ul.cjs} +17 -16
  44. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  45. package/dist/sns/index.cjs +371 -34
  46. package/dist/sns/index.cjs.map +1 -1
  47. package/dist/sns/index.d.cts +167 -11
  48. package/dist/sns/index.d.cts.map +1 -1
  49. package/dist/sns/index.d.mts +167 -11
  50. package/dist/sns/index.d.mts.map +1 -1
  51. package/dist/sns/index.mjs +340 -18
  52. package/dist/sns/index.mjs.map +1 -1
  53. package/dist/sns/snsUrl.cjs +91 -6
  54. package/dist/sns/snsUrl.cjs.map +1 -0
  55. package/dist/sns/snsUrl.d.cts +57 -2
  56. package/dist/sns/snsUrl.d.cts.map +1 -0
  57. package/dist/sns/snsUrl.d.mts +57 -2
  58. package/dist/sns/snsUrl.d.mts.map +1 -0
  59. package/dist/sns/snsUrl.mjs +81 -2
  60. package/dist/sns/snsUrl.mjs.map +1 -0
  61. package/dist/sqs/index.cjs +34 -24
  62. package/dist/sqs/index.cjs.map +1 -1
  63. package/dist/sqs/index.d.cts +19 -11
  64. package/dist/sqs/index.d.cts.map +1 -1
  65. package/dist/sqs/index.d.mts +19 -11
  66. package/dist/sqs/index.d.mts.map +1 -1
  67. package/dist/sqs/index.mjs +22 -15
  68. package/dist/sqs/index.mjs.map +1 -1
  69. package/dist/sqs/sqsUrl.cjs +92 -6
  70. package/dist/sqs/sqsUrl.cjs.map +1 -0
  71. package/dist/sqs/sqsUrl.d.cts +56 -2
  72. package/dist/sqs/sqsUrl.d.cts.map +1 -0
  73. package/dist/sqs/sqsUrl.d.mts +56 -2
  74. package/dist/sqs/sqsUrl.d.mts.map +1 -0
  75. package/dist/sqs/sqsUrl.mjs +82 -2
  76. package/dist/sqs/sqsUrl.mjs.map +1 -0
  77. package/dist/types-BcZjLxVV.cjs +51 -0
  78. package/dist/types-BcZjLxVV.cjs.map +1 -0
  79. package/dist/types-Bk5JM6MP.mjs +40 -0
  80. package/dist/types-Bk5JM6MP.mjs.map +1 -0
  81. package/dist/types-gGaoT8qc.d.cts +149 -0
  82. package/dist/types-gGaoT8qc.d.cts.map +1 -0
  83. package/dist/types-gGaoT8qc.d.mts +149 -0
  84. package/dist/types-gGaoT8qc.d.mts.map +1 -0
  85. package/package.json +3 -3
  86. package/dist/PgBossConnection-C3qYNfm5.cjs +0 -80
  87. package/dist/PgBossConnection-C3qYNfm5.cjs.map +0 -1
  88. package/dist/PgBossConnection-Cvgv2l1G.mjs +0 -74
  89. package/dist/PgBossConnection-Cvgv2l1G.mjs.map +0 -1
  90. package/dist/PgBossConnection-DCUxQLZz.cjs +0 -4
  91. package/dist/PgBossConnection-DbO0ypJf.mjs +0 -4
  92. package/dist/RabbitMQConnection-8PbOD8hM.cjs +0 -4
  93. package/dist/RabbitMQConnection-Bpx3Lgij.mjs +0 -4
  94. package/dist/RabbitMQConnection-DGAk4aUb.cjs +0 -113
  95. package/dist/RabbitMQConnection-DGAk4aUb.cjs.map +0 -1
  96. package/dist/RabbitMQConnection-aE0dtb63.mjs +0 -107
  97. package/dist/RabbitMQConnection-aE0dtb63.mjs.map +0 -1
  98. package/dist/SNSConnection-B2K86hpz.cjs +0 -75
  99. package/dist/SNSConnection-B2K86hpz.cjs.map +0 -1
  100. package/dist/SNSConnection-BVo84FeW.mjs +0 -5
  101. package/dist/SNSConnection-DIHRjrQF.cjs +0 -5
  102. package/dist/SNSConnection-v9jjF99w.mjs +0 -69
  103. package/dist/SNSConnection-v9jjF99w.mjs.map +0 -1
  104. package/dist/SQSConnection-4tBMkVZE.mjs +0 -69
  105. package/dist/SQSConnection-4tBMkVZE.mjs.map +0 -1
  106. package/dist/SQSConnection-BBLAvF-1.cjs +0 -5
  107. package/dist/SQSConnection-BaC7rGhI.cjs +0 -75
  108. package/dist/SQSConnection-BaC7rGhI.cjs.map +0 -1
  109. package/dist/SQSConnection-DbavOq8_.mjs +0 -5
  110. package/dist/SQSSubscriber-BMWZ3s5q.mjs.map +0 -1
  111. package/dist/SQSSubscriber-YXPlg2rm.cjs.map +0 -1
  112. package/dist/chunk-B9dir_RE.mjs +0 -11
  113. package/dist/snsUrl-ASdc0D1v.d.cts +0 -61
  114. package/dist/snsUrl-ASdc0D1v.d.cts.map +0 -1
  115. package/dist/snsUrl-CifYhPAa.mjs +0 -79
  116. package/dist/snsUrl-CifYhPAa.mjs.map +0 -1
  117. package/dist/snsUrl-FRbRcwF0.d.mts +0 -61
  118. package/dist/snsUrl-FRbRcwF0.d.mts.map +0 -1
  119. package/dist/snsUrl-f2gU3CzK.cjs +0 -114
  120. package/dist/snsUrl-f2gU3CzK.cjs.map +0 -1
  121. package/dist/sqsUrl-BV6zS-mi.d.mts +0 -60
  122. package/dist/sqsUrl-BV6zS-mi.d.mts.map +0 -1
  123. package/dist/sqsUrl-CbAsBFHI.mjs +0 -80
  124. package/dist/sqsUrl-CbAsBFHI.mjs.map +0 -1
  125. package/dist/sqsUrl-CdisN3GU.cjs +0 -115
  126. package/dist/sqsUrl-CdisN3GU.cjs.map +0 -1
  127. package/dist/sqsUrl-DZDPHxIk.d.cts +0 -60
  128. package/dist/sqsUrl-DZDPHxIk.d.cts.map +0 -1
  129. package/dist/types-BmixGrOD.d.cts +0 -67
  130. package/dist/types-BmixGrOD.d.cts.map +0 -1
  131. package/dist/types-Byv8N9ma.cjs +0 -24
  132. package/dist/types-Byv8N9ma.cjs.map +0 -1
  133. package/dist/types-CYDt-2RQ.mjs +0 -18
  134. package/dist/types-CYDt-2RQ.mjs.map +0 -1
  135. package/dist/types-DycjsYms.d.mts +0 -67
  136. package/dist/types-DycjsYms.d.mts.map +0 -1
@@ -0,0 +1,2 @@
1
+ const require_pgboss_index = require("./pgboss/index.cjs");
2
+ exports.PgBossConnection = require_pgboss_index.PgBossConnection$1;
@@ -0,0 +1,2 @@
1
+ import { PgBossConnection } from "./pgboss/index.mjs";
2
+ export { PgBossConnection };
@@ -0,0 +1,2 @@
1
+ const require_rabbitmq_index = require("./rabbitmq/index.cjs");
2
+ exports.RabbitMQConnection = require_rabbitmq_index.RabbitMQConnection$1;
@@ -0,0 +1,2 @@
1
+ import { RabbitMQConnection } from "./rabbitmq/index.mjs";
2
+ export { RabbitMQConnection };
@@ -0,0 +1,2 @@
1
+ const require_sns_index = require("./sns/index.cjs");
2
+ exports.SNSConnection = require_sns_index.SNSConnection$1;
@@ -0,0 +1,2 @@
1
+ import { SNSConnection } from "./sns/index.mjs";
2
+ export { SNSConnection };
@@ -1,5 +1,71 @@
1
- import { DeleteMessageCommand, ReceiveMessageCommand } from "@aws-sdk/client-sqs";
2
-
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
+ import "./types-Bk5JM6MP.mjs";
3
+ import { parse } from "./sqs/sqsUrl.mjs";
4
+ import { DeleteMessageCommand, ReceiveMessageCommand, SQSClient } from "@aws-sdk/client-sqs";
5
+ //#region src/sqs/SQSConnection.ts
6
+ var SQSConnection_exports = /* @__PURE__ */ __exportAll({ SQSConnection: () => SQSConnection });
7
+ var SQSConnection = class SQSConnection {
8
+ config;
9
+ type = "sqs";
10
+ client;
11
+ connected = false;
12
+ constructor(config) {
13
+ this.config = config;
14
+ this.config = config;
15
+ const clientConfig = {
16
+ region: config.region,
17
+ endpoint: config.endpoint,
18
+ credentials: config.credentials
19
+ };
20
+ this.client = new SQSClient(clientConfig);
21
+ }
22
+ /**
23
+ * Create an SQSConnection from a connection string
24
+ * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566
25
+ */
26
+ static async fromConnectionString(connectionString) {
27
+ const { queueUrl, region, endpoint } = parse(connectionString);
28
+ const params = new URL(connectionString).searchParams;
29
+ const config = {
30
+ queueUrl,
31
+ region,
32
+ endpoint
33
+ };
34
+ const accessKeyId = params.get("accessKeyId");
35
+ const secretAccessKey = params.get("secretAccessKey");
36
+ if (accessKeyId && secretAccessKey) config.credentials = {
37
+ accessKeyId,
38
+ secretAccessKey,
39
+ sessionToken: params.get("sessionToken") || void 0
40
+ };
41
+ const connection = new SQSConnection(config);
42
+ await connection.connect();
43
+ return connection;
44
+ }
45
+ async connect() {
46
+ this.connected = true;
47
+ }
48
+ async close() {
49
+ this.client.destroy();
50
+ this.connected = false;
51
+ }
52
+ isConnected() {
53
+ return this.connected;
54
+ }
55
+ /**
56
+ * Get the underlying SQS client
57
+ */
58
+ get sqsClient() {
59
+ return this.client;
60
+ }
61
+ /**
62
+ * Get the queue URL for this connection
63
+ */
64
+ get queueUrl() {
65
+ return this.config.queueUrl;
66
+ }
67
+ };
68
+ //#endregion
3
69
  //#region src/sqs/SQSSubscriber.ts
4
70
  /**
5
71
  * SQS Subscriber - receives messages from an SQS queue
@@ -15,6 +81,7 @@ import { DeleteMessageCommand, ReceiveMessageCommand } from "@aws-sdk/client-sqs
15
81
  * - Processes the actual message payload
16
82
  */
17
83
  var SQSSubscriber = class {
84
+ connection;
18
85
  polling = false;
19
86
  messageTypes = /* @__PURE__ */ new Set();
20
87
  listener;
@@ -80,10 +147,9 @@ var SQSSubscriber = class {
80
147
  const parsed = JSON.parse(body);
81
148
  if (parsed.Type === "Notification" && parsed.Message) {
82
149
  const snsMessage = JSON.parse(parsed.Message);
83
- const messageType = parsed.MessageAttributes?.type?.Value || snsMessage.type;
84
150
  return {
85
151
  payload: snsMessage,
86
- messageType,
152
+ messageType: parsed.MessageAttributes?.type?.Value || snsMessage.type,
87
153
  topicArn: parsed.TopicArn
88
154
  };
89
155
  }
@@ -108,7 +174,7 @@ var SQSSubscriber = class {
108
174
  return new Promise((resolve) => setTimeout(resolve, ms));
109
175
  }
110
176
  };
111
-
112
177
  //#endregion
113
- export { SQSSubscriber };
114
- //# sourceMappingURL=SQSSubscriber-BMWZ3s5q.mjs.map
178
+ export { SQSConnection as n, SQSConnection_exports as r, SQSSubscriber as t };
179
+
180
+ //# sourceMappingURL=SQSSubscriber-BXLE_1L3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQSSubscriber-BXLE_1L3.mjs","names":["sqsUrl.parse"],"sources":["../src/sqs/SQSConnection.ts","../src/sqs/SQSSubscriber.ts"],"sourcesContent":["import { SQSClient, type SQSClientConfig } from '@aws-sdk/client-sqs';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\nimport * as sqsUrl from './sqsUrl';\n\nexport interface SQSConnectionConfig {\n\tqueueUrl: string;\n\tregion?: string;\n\tendpoint?: string; // Custom endpoint (e.g., for LocalStack)\n\tcredentials?: {\n\t\taccessKeyId: string;\n\t\tsecretAccessKey: string;\n\t\tsessionToken?: string;\n\t};\n}\n\nexport class SQSConnection implements EventConnection {\n\treadonly type = EventPublisherType.SQS;\n\tprivate client: SQSClient;\n\tprivate connected = false;\n\n\tconstructor(readonly config: SQSConnectionConfig) {\n\t\tthis.config = config;\n\n\t\tconst clientConfig: SQSClientConfig = {\n\t\t\tregion: config.region,\n\t\t\tendpoint: config.endpoint,\n\t\t\tcredentials: config.credentials,\n\t\t};\n\n\t\tthis.client = new SQSClient(clientConfig);\n\t}\n\n\t/**\n\t * Create an SQSConnection from a connection string\n\t * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<SQSConnection> {\n\t\t// Through the codec, not a second hand-rolled parse: the deploy target\n\t\t// composes these with `sqsUrl.build`, and a string it cannot read back is\n\t\t// exactly the drift one shared module rules out.\n\t\tconst { queueUrl, region, endpoint } = sqsUrl.parse(connectionString);\n\t\tconst params = new URL(connectionString).searchParams;\n\n\t\tconst config: SQSConnectionConfig = {\n\t\t\tqueueUrl,\n\t\t\tregion,\n\t\t\tendpoint,\n\t\t};\n\n\t\t// Credentials are not part of the address — see `sqsUrl` — but a caller\n\t\t// may still pin them here, so they are read beside it rather than in it.\n\t\tconst accessKeyId = params.get('accessKeyId');\n\t\tconst secretAccessKey = params.get('secretAccessKey');\n\t\tif (accessKeyId && secretAccessKey) {\n\t\t\tconfig.credentials = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey,\n\t\t\t\tsessionToken: params.get('sessionToken') || undefined,\n\t\t\t};\n\t\t}\n\n\t\tconst connection = new SQSConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\t// SQS doesn't have a traditional connection, but we mark as connected\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.client.destroy();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying SQS client\n\t */\n\tget sqsClient(): SQSClient {\n\t\treturn this.client;\n\t}\n\n\t/**\n\t * Get the queue URL for this connection\n\t */\n\tget queueUrl(): string {\n\t\treturn this.config.queueUrl;\n\t}\n}\n","import {\n\tDeleteMessageCommand,\n\ttype Message,\n\tReceiveMessageCommand,\n} from '@aws-sdk/client-sqs';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSSubscriberOptions {\n\twaitTimeSeconds?: number; // SQS long polling (default: 20)\n\tmaxMessages?: number; // Max messages per poll (default: 10)\n\texpectedTopicArn?: string; // Optional: verify messages are from specific SNS topic\n}\n\n/**\n * SQS Subscriber - receives messages from an SQS queue\n *\n * This subscriber can receive:\n * 1. Direct SQS messages\n * 2. SNS messages that were pushed to the queue (SNS → SQS pattern)\n *\n * When receiving SNS messages, it:\n * - Automatically detects and parses the SNS wrapper format\n * - Filters by TopicArn (if expectedTopicArn is provided)\n * - Filters by message type\n * - Processes the actual message payload\n */\nexport class SQSSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tprivate polling = false;\n\tprivate messageTypes: Set<TMessage['type']> = new Set();\n\tprivate listener?: (payload: TMessage) => Promise<void>;\n\tprivate options: Required<SQSSubscriberOptions>;\n\n\tconstructor(\n\t\tprivate connection: SQSConnection,\n\t\toptions: SQSSubscriberOptions = {},\n\t) {\n\t\tthis.options = {\n\t\t\twaitTimeSeconds: options.waitTimeSeconds ?? 20,\n\t\t\tmaxMessages: options.maxMessages ?? 10,\n\t\t\texpectedTopicArn: options.expectedTopicArn ?? '',\n\t\t};\n\t}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tthis.messageTypes = new Set(messages);\n\t\tthis.listener = listener;\n\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tthis.polling = true;\n\t\tthis.poll();\n\t}\n\n\tstop(): void {\n\t\tthis.polling = false;\n\t}\n\n\tprivate async poll(): Promise<void> {\n\t\twhile (this.polling) {\n\t\t\ttry {\n\t\t\t\tconst command = new ReceiveMessageCommand({\n\t\t\t\t\tQueueUrl: this.connection.queueUrl,\n\t\t\t\t\tMaxNumberOfMessages: this.options.maxMessages,\n\t\t\t\t\tWaitTimeSeconds: this.options.waitTimeSeconds,\n\t\t\t\t\tMessageAttributeNames: ['All'],\n\t\t\t\t});\n\n\t\t\t\tconst response = await this.connection.sqsClient.send(command);\n\n\t\t\t\tif (response.Messages && response.Messages.length > 0) {\n\t\t\t\t\tawait this.processMessages(response.Messages);\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\tawait this.sleep(1000);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async processMessages(messages: Message[]): Promise<void> {\n\t\tfor (const message of messages) {\n\t\t\ttry {\n\t\t\t\tif (!message.Body) continue;\n\n\t\t\t\t// Try to parse as SNS message first\n\t\t\t\tconst parsedMessage = this.parseMessage(message.Body);\n\n\t\t\t\tif (!parsedMessage) {\n\t\t\t\t\t// Not a valid message format\n\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst { payload, messageType, topicArn } = parsedMessage;\n\n\t\t\t\t// If expectedTopicArn is set, verify the message is from that topic\n\t\t\t\tif (this.options.expectedTopicArn && topicArn) {\n\t\t\t\t\tif (topicArn !== this.options.expectedTopicArn) {\n\t\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check if we're subscribed to this message type\n\t\t\t\tif (\n\t\t\t\t\tmessageType &&\n\t\t\t\t\tthis.messageTypes.has(messageType as TMessage['type'])\n\t\t\t\t) {\n\t\t\t\t\t// Call listener\n\t\t\t\t\tif (this.listener) {\n\t\t\t\t\t\tawait this.listener(payload as TMessage);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Delete message after successful processing\n\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t} else {\n\t\t\t\t\t// Delete messages we're not subscribed to\n\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\t// Message will become visible again\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Parse message body - handles both direct SQS messages and SNS-wrapped messages\n\t */\n\tprivate parseMessage(body: string): {\n\t\tpayload: unknown;\n\t\tmessageType: string | undefined;\n\t\ttopicArn?: string;\n\t} | null {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(body);\n\n\t\t\t// Check if this is an SNS notification wrapper\n\t\t\tif (parsed.Type === 'Notification' && parsed.Message) {\n\t\t\t\t// This is an SNS message\n\t\t\t\tconst snsMessage = JSON.parse(parsed.Message);\n\t\t\t\tconst messageType =\n\t\t\t\t\tparsed.MessageAttributes?.type?.Value || snsMessage.type;\n\n\t\t\t\treturn {\n\t\t\t\t\tpayload: snsMessage,\n\t\t\t\t\tmessageType,\n\t\t\t\t\ttopicArn: parsed.TopicArn,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// This is a direct SQS message\n\t\t\treturn {\n\t\t\t\tpayload: parsed,\n\t\t\t\tmessageType: parsed.type,\n\t\t\t};\n\t\t} catch (_error) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async deleteMessage(receiptHandle: string): Promise<void> {\n\t\ttry {\n\t\t\tconst command = new DeleteMessageCommand({\n\t\t\t\tQueueUrl: this.connection.queueUrl,\n\t\t\t\tReceiptHandle: receiptHandle,\n\t\t\t});\n\t\t\tawait this.connection.sqsClient.send(command);\n\t\t} catch (_error) {}\n\t}\n\n\tprivate sleep(ms: number): Promise<void> {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n}\n"],"mappings":"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"}
@@ -1,6 +1,71 @@
1
- const require_chunk = require('./chunk-CsX-DzYB.cjs');
2
- const __aws_sdk_client_sqs = require_chunk.__toESM(require("@aws-sdk/client-sqs"));
3
-
1
+ const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
2
+ require("./types-BcZjLxVV.cjs");
3
+ const require_sqs_sqsUrl = require("./sqs/sqsUrl.cjs");
4
+ let _aws_sdk_client_sqs = require("@aws-sdk/client-sqs");
5
+ //#region src/sqs/SQSConnection.ts
6
+ var SQSConnection_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({ SQSConnection: () => SQSConnection });
7
+ var SQSConnection = class SQSConnection {
8
+ config;
9
+ type = "sqs";
10
+ client;
11
+ connected = false;
12
+ constructor(config) {
13
+ this.config = config;
14
+ this.config = config;
15
+ const clientConfig = {
16
+ region: config.region,
17
+ endpoint: config.endpoint,
18
+ credentials: config.credentials
19
+ };
20
+ this.client = new _aws_sdk_client_sqs.SQSClient(clientConfig);
21
+ }
22
+ /**
23
+ * Create an SQSConnection from a connection string
24
+ * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566
25
+ */
26
+ static async fromConnectionString(connectionString) {
27
+ const { queueUrl, region, endpoint } = require_sqs_sqsUrl.parse(connectionString);
28
+ const params = new URL(connectionString).searchParams;
29
+ const config = {
30
+ queueUrl,
31
+ region,
32
+ endpoint
33
+ };
34
+ const accessKeyId = params.get("accessKeyId");
35
+ const secretAccessKey = params.get("secretAccessKey");
36
+ if (accessKeyId && secretAccessKey) config.credentials = {
37
+ accessKeyId,
38
+ secretAccessKey,
39
+ sessionToken: params.get("sessionToken") || void 0
40
+ };
41
+ const connection = new SQSConnection(config);
42
+ await connection.connect();
43
+ return connection;
44
+ }
45
+ async connect() {
46
+ this.connected = true;
47
+ }
48
+ async close() {
49
+ this.client.destroy();
50
+ this.connected = false;
51
+ }
52
+ isConnected() {
53
+ return this.connected;
54
+ }
55
+ /**
56
+ * Get the underlying SQS client
57
+ */
58
+ get sqsClient() {
59
+ return this.client;
60
+ }
61
+ /**
62
+ * Get the queue URL for this connection
63
+ */
64
+ get queueUrl() {
65
+ return this.config.queueUrl;
66
+ }
67
+ };
68
+ //#endregion
4
69
  //#region src/sqs/SQSSubscriber.ts
5
70
  /**
6
71
  * SQS Subscriber - receives messages from an SQS queue
@@ -16,6 +81,7 @@ const __aws_sdk_client_sqs = require_chunk.__toESM(require("@aws-sdk/client-sqs"
16
81
  * - Processes the actual message payload
17
82
  */
18
83
  var SQSSubscriber = class {
84
+ connection;
19
85
  polling = false;
20
86
  messageTypes = /* @__PURE__ */ new Set();
21
87
  listener;
@@ -40,7 +106,7 @@ var SQSSubscriber = class {
40
106
  }
41
107
  async poll() {
42
108
  while (this.polling) try {
43
- const command = new __aws_sdk_client_sqs.ReceiveMessageCommand({
109
+ const command = new _aws_sdk_client_sqs.ReceiveMessageCommand({
44
110
  QueueUrl: this.connection.queueUrl,
45
111
  MaxNumberOfMessages: this.options.maxMessages,
46
112
  WaitTimeSeconds: this.options.waitTimeSeconds,
@@ -81,10 +147,9 @@ var SQSSubscriber = class {
81
147
  const parsed = JSON.parse(body);
82
148
  if (parsed.Type === "Notification" && parsed.Message) {
83
149
  const snsMessage = JSON.parse(parsed.Message);
84
- const messageType = parsed.MessageAttributes?.type?.Value || snsMessage.type;
85
150
  return {
86
151
  payload: snsMessage,
87
- messageType,
152
+ messageType: parsed.MessageAttributes?.type?.Value || snsMessage.type,
88
153
  topicArn: parsed.TopicArn
89
154
  };
90
155
  }
@@ -98,7 +163,7 @@ var SQSSubscriber = class {
98
163
  }
99
164
  async deleteMessage(receiptHandle) {
100
165
  try {
101
- const command = new __aws_sdk_client_sqs.DeleteMessageCommand({
166
+ const command = new _aws_sdk_client_sqs.DeleteMessageCommand({
102
167
  QueueUrl: this.connection.queueUrl,
103
168
  ReceiptHandle: receiptHandle
104
169
  });
@@ -109,12 +174,24 @@ var SQSSubscriber = class {
109
174
  return new Promise((resolve) => setTimeout(resolve, ms));
110
175
  }
111
176
  };
112
-
113
177
  //#endregion
114
- Object.defineProperty(exports, 'SQSSubscriber', {
115
- enumerable: true,
116
- get: function () {
117
- return SQSSubscriber;
118
- }
178
+ Object.defineProperty(exports, "SQSConnection", {
179
+ enumerable: true,
180
+ get: function() {
181
+ return SQSConnection;
182
+ }
183
+ });
184
+ Object.defineProperty(exports, "SQSConnection_exports", {
185
+ enumerable: true,
186
+ get: function() {
187
+ return SQSConnection_exports;
188
+ }
119
189
  });
120
- //# sourceMappingURL=SQSSubscriber-YXPlg2rm.cjs.map
190
+ Object.defineProperty(exports, "SQSSubscriber", {
191
+ enumerable: true,
192
+ get: function() {
193
+ return SQSSubscriber;
194
+ }
195
+ });
196
+
197
+ //# sourceMappingURL=SQSSubscriber-DtRUaZB3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQSSubscriber-DtRUaZB3.cjs","names":["SQSClient","ReceiveMessageCommand","DeleteMessageCommand"],"sources":["../src/sqs/SQSConnection.ts","../src/sqs/SQSSubscriber.ts"],"sourcesContent":["import { SQSClient, type SQSClientConfig } from '@aws-sdk/client-sqs';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\nimport * as sqsUrl from './sqsUrl';\n\nexport interface SQSConnectionConfig {\n\tqueueUrl: string;\n\tregion?: string;\n\tendpoint?: string; // Custom endpoint (e.g., for LocalStack)\n\tcredentials?: {\n\t\taccessKeyId: string;\n\t\tsecretAccessKey: string;\n\t\tsessionToken?: string;\n\t};\n}\n\nexport class SQSConnection implements EventConnection {\n\treadonly type = EventPublisherType.SQS;\n\tprivate client: SQSClient;\n\tprivate connected = false;\n\n\tconstructor(readonly config: SQSConnectionConfig) {\n\t\tthis.config = config;\n\n\t\tconst clientConfig: SQSClientConfig = {\n\t\t\tregion: config.region,\n\t\t\tendpoint: config.endpoint,\n\t\t\tcredentials: config.credentials,\n\t\t};\n\n\t\tthis.client = new SQSClient(clientConfig);\n\t}\n\n\t/**\n\t * Create an SQSConnection from a connection string\n\t * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566\n\t */\n\tstatic async fromConnectionString(\n\t\tconnectionString: string,\n\t): Promise<SQSConnection> {\n\t\t// Through the codec, not a second hand-rolled parse: the deploy target\n\t\t// composes these with `sqsUrl.build`, and a string it cannot read back is\n\t\t// exactly the drift one shared module rules out.\n\t\tconst { queueUrl, region, endpoint } = sqsUrl.parse(connectionString);\n\t\tconst params = new URL(connectionString).searchParams;\n\n\t\tconst config: SQSConnectionConfig = {\n\t\t\tqueueUrl,\n\t\t\tregion,\n\t\t\tendpoint,\n\t\t};\n\n\t\t// Credentials are not part of the address — see `sqsUrl` — but a caller\n\t\t// may still pin them here, so they are read beside it rather than in it.\n\t\tconst accessKeyId = params.get('accessKeyId');\n\t\tconst secretAccessKey = params.get('secretAccessKey');\n\t\tif (accessKeyId && secretAccessKey) {\n\t\t\tconfig.credentials = {\n\t\t\t\taccessKeyId,\n\t\t\t\tsecretAccessKey,\n\t\t\t\tsessionToken: params.get('sessionToken') || undefined,\n\t\t\t};\n\t\t}\n\n\t\tconst connection = new SQSConnection(config);\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\t// SQS doesn't have a traditional connection, but we mark as connected\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.client.destroy();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying SQS client\n\t */\n\tget sqsClient(): SQSClient {\n\t\treturn this.client;\n\t}\n\n\t/**\n\t * Get the queue URL for this connection\n\t */\n\tget queueUrl(): string {\n\t\treturn this.config.queueUrl;\n\t}\n}\n","import {\n\tDeleteMessageCommand,\n\ttype Message,\n\tReceiveMessageCommand,\n} from '@aws-sdk/client-sqs';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSSubscriberOptions {\n\twaitTimeSeconds?: number; // SQS long polling (default: 20)\n\tmaxMessages?: number; // Max messages per poll (default: 10)\n\texpectedTopicArn?: string; // Optional: verify messages are from specific SNS topic\n}\n\n/**\n * SQS Subscriber - receives messages from an SQS queue\n *\n * This subscriber can receive:\n * 1. Direct SQS messages\n * 2. SNS messages that were pushed to the queue (SNS → SQS pattern)\n *\n * When receiving SNS messages, it:\n * - Automatically detects and parses the SNS wrapper format\n * - Filters by TopicArn (if expectedTopicArn is provided)\n * - Filters by message type\n * - Processes the actual message payload\n */\nexport class SQSSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tprivate polling = false;\n\tprivate messageTypes: Set<TMessage['type']> = new Set();\n\tprivate listener?: (payload: TMessage) => Promise<void>;\n\tprivate options: Required<SQSSubscriberOptions>;\n\n\tconstructor(\n\t\tprivate connection: SQSConnection,\n\t\toptions: SQSSubscriberOptions = {},\n\t) {\n\t\tthis.options = {\n\t\t\twaitTimeSeconds: options.waitTimeSeconds ?? 20,\n\t\t\tmaxMessages: options.maxMessages ?? 10,\n\t\t\texpectedTopicArn: options.expectedTopicArn ?? '',\n\t\t};\n\t}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tthis.messageTypes = new Set(messages);\n\t\tthis.listener = listener;\n\n\t\tif (!this.connection.isConnected()) {\n\t\t\tawait this.connection.connect();\n\t\t}\n\n\t\tthis.polling = true;\n\t\tthis.poll();\n\t}\n\n\tstop(): void {\n\t\tthis.polling = false;\n\t}\n\n\tprivate async poll(): Promise<void> {\n\t\twhile (this.polling) {\n\t\t\ttry {\n\t\t\t\tconst command = new ReceiveMessageCommand({\n\t\t\t\t\tQueueUrl: this.connection.queueUrl,\n\t\t\t\t\tMaxNumberOfMessages: this.options.maxMessages,\n\t\t\t\t\tWaitTimeSeconds: this.options.waitTimeSeconds,\n\t\t\t\t\tMessageAttributeNames: ['All'],\n\t\t\t\t});\n\n\t\t\t\tconst response = await this.connection.sqsClient.send(command);\n\n\t\t\t\tif (response.Messages && response.Messages.length > 0) {\n\t\t\t\t\tawait this.processMessages(response.Messages);\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\tawait this.sleep(1000);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async processMessages(messages: Message[]): Promise<void> {\n\t\tfor (const message of messages) {\n\t\t\ttry {\n\t\t\t\tif (!message.Body) continue;\n\n\t\t\t\t// Try to parse as SNS message first\n\t\t\t\tconst parsedMessage = this.parseMessage(message.Body);\n\n\t\t\t\tif (!parsedMessage) {\n\t\t\t\t\t// Not a valid message format\n\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst { payload, messageType, topicArn } = parsedMessage;\n\n\t\t\t\t// If expectedTopicArn is set, verify the message is from that topic\n\t\t\t\tif (this.options.expectedTopicArn && topicArn) {\n\t\t\t\t\tif (topicArn !== this.options.expectedTopicArn) {\n\t\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check if we're subscribed to this message type\n\t\t\t\tif (\n\t\t\t\t\tmessageType &&\n\t\t\t\t\tthis.messageTypes.has(messageType as TMessage['type'])\n\t\t\t\t) {\n\t\t\t\t\t// Call listener\n\t\t\t\t\tif (this.listener) {\n\t\t\t\t\t\tawait this.listener(payload as TMessage);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Delete message after successful processing\n\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t} else {\n\t\t\t\t\t// Delete messages we're not subscribed to\n\t\t\t\t\tawait this.deleteMessage(message.ReceiptHandle!);\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\t// Message will become visible again\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Parse message body - handles both direct SQS messages and SNS-wrapped messages\n\t */\n\tprivate parseMessage(body: string): {\n\t\tpayload: unknown;\n\t\tmessageType: string | undefined;\n\t\ttopicArn?: string;\n\t} | null {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(body);\n\n\t\t\t// Check if this is an SNS notification wrapper\n\t\t\tif (parsed.Type === 'Notification' && parsed.Message) {\n\t\t\t\t// This is an SNS message\n\t\t\t\tconst snsMessage = JSON.parse(parsed.Message);\n\t\t\t\tconst messageType =\n\t\t\t\t\tparsed.MessageAttributes?.type?.Value || snsMessage.type;\n\n\t\t\t\treturn {\n\t\t\t\t\tpayload: snsMessage,\n\t\t\t\t\tmessageType,\n\t\t\t\t\ttopicArn: parsed.TopicArn,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// This is a direct SQS message\n\t\t\treturn {\n\t\t\t\tpayload: parsed,\n\t\t\t\tmessageType: parsed.type,\n\t\t\t};\n\t\t} catch (_error) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate async deleteMessage(receiptHandle: string): Promise<void> {\n\t\ttry {\n\t\t\tconst command = new DeleteMessageCommand({\n\t\t\t\tQueueUrl: this.connection.queueUrl,\n\t\t\t\tReceiptHandle: receiptHandle,\n\t\t\t});\n\t\t\tawait this.connection.sqsClient.send(command);\n\t\t} catch (_error) {}\n\t}\n\n\tprivate sleep(ms: number): Promise<void> {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n}\n"],"mappings":";;;;;;AAgBA,IAAa,gBAAb,MAAa,cAAyC;CAKhC;CAJrB,OAAS;CACT;CACA,YAAoB;CAEpB,YAAY,QAAsC;EAA7B,KAAA,SAAA;EACpB,KAAK,SAAS;EAEd,MAAM,eAAgC;GACrC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACrB;EAEA,KAAK,SAAS,IAAIA,oBAAAA,UAAU,YAAY;CACzC;;;;;CAMA,aAAa,qBACZ,kBACyB;EAIzB,MAAM,EAAE,UAAU,QAAQ,aAAA,mBAAA,MAA0B,gBAAgB;EACpE,MAAM,SAAS,IAAI,IAAI,gBAAgB,CAAC,CAAC;EAEzC,MAAM,SAA8B;GACnC;GACA;GACA;EACD;EAIA,MAAM,cAAc,OAAO,IAAI,aAAa;EAC5C,MAAM,kBAAkB,OAAO,IAAI,iBAAiB;EACpD,IAAI,eAAe,iBAClB,OAAO,cAAc;GACpB;GACA;GACA,cAAc,OAAO,IAAI,cAAc,KAAK,KAAA;EAC7C;EAGD,MAAM,aAAa,IAAI,cAAc,MAAM;EAC3C,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAE9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,OAAO,QAAQ;EACpB,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;CAKA,IAAI,YAAuB;EAC1B,OAAO,KAAK;CACb;;;;CAKA,IAAI,WAAmB;EACtB,OAAO,KAAK,OAAO;CACpB;AACD;;;;;;;;;;;;;;;;ACrEA,IAAa,gBAAb,MAEA;CAOU;CANT,UAAkB;CAClB,+BAA8C,IAAI,IAAI;CACtD;CACA;CAEA,YACC,YACA,UAAgC,CAAC,GAChC;EAFO,KAAA,aAAA;EAGR,KAAK,UAAU;GACd,iBAAiB,QAAQ,mBAAmB;GAC5C,aAAa,QAAQ,eAAe;GACpC,kBAAkB,QAAQ,oBAAoB;EAC/C;CACD;CAEA,MAAM,UACL,UACA,UACgB;EAChB,KAAK,eAAe,IAAI,IAAI,QAAQ;EACpC,KAAK,WAAW;EAEhB,IAAI,CAAC,KAAK,WAAW,YAAY,GAChC,MAAM,KAAK,WAAW,QAAQ;EAG/B,KAAK,UAAU;EACf,KAAK,KAAK;CACX;CAEA,OAAa;EACZ,KAAK,UAAU;CAChB;CAEA,MAAc,OAAsB;EACnC,OAAO,KAAK,SACX,IAAI;GACH,MAAM,UAAU,IAAIC,oBAAAA,sBAAsB;IACzC,UAAU,KAAK,WAAW;IAC1B,qBAAqB,KAAK,QAAQ;IAClC,iBAAiB,KAAK,QAAQ;IAC9B,uBAAuB,CAAC,KAAK;GAC9B,CAAC;GAED,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,OAAO;GAE7D,IAAI,SAAS,YAAY,SAAS,SAAS,SAAS,GACnD,MAAM,KAAK,gBAAgB,SAAS,QAAQ;EAE9C,SAAS,QAAQ;GAChB,MAAM,KAAK,MAAM,GAAI;EACtB;CAEF;CAEA,MAAc,gBAAgB,UAAoC;EACjE,KAAK,MAAM,WAAW,UACrB,IAAI;GACH,IAAI,CAAC,QAAQ,MAAM;GAGnB,MAAM,gBAAgB,KAAK,aAAa,QAAQ,IAAI;GAEpD,IAAI,CAAC,eAAe;IAEnB,MAAM,KAAK,cAAc,QAAQ,aAAc;IAC/C;GACD;GAEA,MAAM,EAAE,SAAS,aAAa,aAAa;GAG3C,IAAI,KAAK,QAAQ,oBAAoB,UAChC;QAAA,aAAa,KAAK,QAAQ,kBAAkB;KAC/C,MAAM,KAAK,cAAc,QAAQ,aAAc;KAC/C;IACD;;GAID,IACC,eACA,KAAK,aAAa,IAAI,WAA+B,GACpD;IAED,IAAI,KAAK,UACR,MAAM,KAAK,SAAS,OAAmB;IAIxC,MAAM,KAAK,cAAc,QAAQ,aAAc;GAChD,OAEC,MAAM,KAAK,cAAc,QAAQ,aAAc;EAEjD,SAAS,QAAQ,CAEjB;CAEF;;;;CAKA,aAAqB,MAIZ;EACR,IAAI;GACH,MAAM,SAAS,KAAK,MAAM,IAAI;GAG9B,IAAI,OAAO,SAAS,kBAAkB,OAAO,SAAS;IAErD,MAAM,aAAa,KAAK,MAAM,OAAO,OAAO;IAI5C,OAAO;KACN,SAAS;KACT,aAJA,OAAO,mBAAmB,MAAM,SAAS,WAAW;KAKpD,UAAU,OAAO;IAClB;GACD;GAGA,OAAO;IACN,SAAS;IACT,aAAa,OAAO;GACrB;EACD,SAAS,QAAQ;GAChB,OAAO;EACR;CACD;CAEA,MAAc,cAAc,eAAsC;EACjE,IAAI;GACH,MAAM,UAAU,IAAIC,oBAAAA,qBAAqB;IACxC,UAAU,KAAK,WAAW;IAC1B,eAAe;GAChB,CAAC;GACD,MAAM,KAAK,WAAW,UAAU,KAAK,OAAO;EAC7C,SAAS,QAAQ,CAAC;CACnB;CAEA,MAAc,IAA2B;EACxC,OAAO,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;CACxD;AACD"}
@@ -1,10 +1,9 @@
1
- const require_chunk = require('../chunk-CsX-DzYB.cjs');
2
- const require_types = require('../types-Byv8N9ma.cjs');
3
- const node_events = require_chunk.__toESM(require("node:events"));
4
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../types-BcZjLxVV.cjs");
3
+ let node_events = require("node:events");
5
4
  //#region src/basic/BasicConnection.ts
6
5
  var BasicConnection = class BasicConnection {
7
- type = require_types.EventPublisherType.Basic;
6
+ type = "basic";
8
7
  emitter;
9
8
  connected = false;
10
9
  constructor() {
@@ -37,10 +36,10 @@ var BasicConnection = class BasicConnection {
37
36
  return this.emitter;
38
37
  }
39
38
  };
40
-
41
39
  //#endregion
42
40
  //#region src/basic/BasicPublisher.ts
43
41
  var BasicPublisher = class {
42
+ connection;
44
43
  constructor(connection) {
45
44
  this.connection = connection;
46
45
  }
@@ -49,10 +48,10 @@ var BasicPublisher = class {
49
48
  for (const message of messages) emitter.emit(message.type, message);
50
49
  }
51
50
  };
52
-
53
51
  //#endregion
54
52
  //#region src/basic/BasicSubscriber.ts
55
53
  var BasicSubscriber = class {
54
+ connection;
56
55
  constructor(connection) {
57
56
  this.connection = connection;
58
57
  }
@@ -63,9 +62,9 @@ var BasicSubscriber = class {
63
62
  });
64
63
  }
65
64
  };
66
-
67
65
  //#endregion
68
66
  exports.BasicConnection = BasicConnection;
69
67
  exports.BasicPublisher = BasicPublisher;
70
68
  exports.BasicSubscriber = BasicSubscriber;
69
+
71
70
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["EventPublisherType","EventEmitter","_connectionString: string","connection: BasicConnection","messages: TMessage[]","connection: BasicConnection","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","message: TMessage"],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":";;;;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CAEpB,cAAc;AACb,OAAK,UAAU,IAAIC;CACnB;;;;;CAMD,aAAa,qBACZC,mBAC2B;EAE3B,MAAM,aAAa,IAAI;AACvB,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,OAAK,YAAY;CACjB;CAED,MAAM,QAAuB;AAC5B,OAAK,QAAQ,oBAAoB;AACjC,OAAK,YAAY;CACjB;CAED,cAAuB;AACtB,SAAO,KAAK;CACZ;;;;;CAMD,IAAI,eAA6B;AAChC,SAAO,KAAK;CACZ;AACD;;;;AC3CD,IAAa,iBAAb,MAEA;CACC,YAAoBC,YAA6B;EAA7B;CAA+B;CAEnD,MAAM,QAAQC,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;AAChC,OAAK,MAAM,WAAW,SACrB,SAAQ,KAAK,QAAQ,MAAM,QAAQ;CAEpC;AACD;;;;ACXD,IAAa,kBAAb,MAEA;CACC,YAAoBC,YAA6B;EAA7B;CAA+B;CAEnD,MAAM,UACLC,UACAC,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;AAEhC,OAAK,MAAM,eAAe,SACzB,SAAQ,GAAG,aAAa,CAACC,YAAsB;AAC9C,YAAS,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAE,EAAC;EACvC,EAAC;CAEH;AACD"}
1
+ {"version":3,"file":"index.cjs","names":["EventEmitter"],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":";;;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,OAAS;CACT;CACA,YAAoB;CAEpB,cAAc;EACb,KAAK,UAAU,IAAIA,YAAAA,aAAa;CACjC;;;;;CAMA,aAAa,qBACZ,mBAC2B;EAE3B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAC9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,QAAQ,mBAAmB;EAChC,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;;CAMA,IAAI,eAA6B;EAChC,OAAO,KAAK;CACb;AACD;;;AC3CA,IAAa,iBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,QAAQ,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;EAChC,KAAK,MAAM,WAAW,UACrB,QAAQ,KAAK,QAAQ,MAAM,OAAO;CAEpC;AACD;;;ACXA,IAAa,kBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,UACL,UACA,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;EAEhC,KAAK,MAAM,eAAe,UACzB,QAAQ,GAAG,cAAc,YAAsB;GAC9C,SAAS,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC;EACvC,CAAC;CAEH;AACD"}
@@ -1,8 +1,7 @@
1
- import { EventConnection, EventPublisher, EventPublisherType, EventSubscriber, PublishableMessage } from "../types-BmixGrOD.cjs";
1
+ import { i as EventSubscriber, n as EventPublisher, r as EventPublisherType, s as PublishableMessage, t as EventConnection } from "../types-gGaoT8qc.cjs";
2
2
  import { EventEmitter } from "node:events";
3
-
4
3
  //#region src/basic/BasicConnection.d.ts
5
- declare class BasicConnection implements EventConnection {
4
+ export declare class BasicConnection implements EventConnection {
6
5
  readonly type = EventPublisherType.Basic;
7
6
  private emitter;
8
7
  private connected;
@@ -21,24 +20,19 @@ declare class BasicConnection implements EventConnection {
21
20
  */
22
21
  get eventEmitter(): EventEmitter;
23
22
  }
24
- //# sourceMappingURL=BasicConnection.d.ts.map
25
23
  //#endregion
26
24
  //#region src/basic/BasicPublisher.d.ts
27
- declare class BasicPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
25
+ export declare class BasicPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
28
26
  private connection;
29
27
  constructor(connection: BasicConnection);
30
28
  publish(messages: TMessage[]): Promise<void>;
31
29
  }
32
- //# sourceMappingURL=BasicPublisher.d.ts.map
33
30
  //#endregion
34
31
  //#region src/basic/BasicSubscriber.d.ts
35
- declare class BasicSubscriber<TMessage extends PublishableMessage<string, any>> implements EventSubscriber<TMessage> {
32
+ export declare class BasicSubscriber<TMessage extends PublishableMessage<string, any>> implements EventSubscriber<TMessage> {
36
33
  private connection;
37
34
  constructor(connection: BasicConnection);
38
35
  subscribe(messages: TMessage['type'][], listener: (payload: TMessage) => Promise<void>): Promise<void>;
39
36
  }
40
- //# sourceMappingURL=BasicSubscriber.d.ts.map
41
-
42
37
  //#endregion
43
- export { BasicConnection, BasicPublisher, BasicSubscriber };
44
38
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":[],"mappings":";;;;cAIa,eAAA,YAA2B;EAA3B,SAAA,IAAA,GACC,kBAAA,CAAA,KAAA;EADe,QAAA,OAAA;EAAA,QACf,SAAA;EAAA,WAcF,CAAA;EAAe;;;;EAwBM,OAvCO,oBAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,EAepC,OAfoC,CAe5B,eAf4B,CAAA;EAAe,OAAA,CAAA,CAAA,EAsBrC,OAtBqC,CAAA,IAAA,CAAA;WA0BvC;;;AC3BhB;;;EAA+D,IACpC,YAAA,CAAA,CAAA,EDuCN,YCvCM;;;;;cADd,gCAAgC,4CACjC,eAAe;;EDAd,WAAA,CAAA,UAAgB,ECEI,eDFJ;EAAA,OAAA,CAAA,QAAA,ECIJ,QDJI,EAAA,CAAA,ECIM,ODJN,CAAA,IAAA,CAAA;;;;;cEDhB,iCAAiC,4CAClC,gBAAgB;;EFAf,WAAA,CAAA,UAAgB,EEEI,eFFJ;EAAA,SAAA,CAAA,QAAA,EEKjB,QFLiB,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EEMP,QFNO,EAAA,GEMM,OFNN,CAAA,IAAA,CAAA,CAAA,EEOzB,OFPyB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"mappings":";;;qBAIa,2BAA2B;WAC9B,OAAI,mBAAA;UACL;UACA;EAER;;;;;SAQa,qBACZ,4BACE,QAAQ;EAOL,WAAW;EAIX,SAAS;EAKf;;;;;MAQI,gBAAgB;;;;qBCxCR,eAAe,iBAAiB,4CACjC,eAAe;UAEN;EAApB,YAAoB,YAAY;EAE1B,QAAQ,UAAU,aAAU;;;;qBCLtB,gBAAgB,iBAAiB,4CAClC,gBAAgB;UAEP;EAApB,YAAoB,YAAY;EAE1B,UACL,UAAU,oBACV,WAAW,SAAS,aAAa,gBAC/B"}
@@ -1,8 +1,7 @@
1
- import { EventConnection, EventPublisher, EventPublisherType, EventSubscriber, PublishableMessage } from "../types-DycjsYms.mjs";
1
+ import { i as EventSubscriber, n as EventPublisher, r as EventPublisherType, s as PublishableMessage, t as EventConnection } from "../types-gGaoT8qc.mjs";
2
2
  import { EventEmitter } from "node:events";
3
-
4
3
  //#region src/basic/BasicConnection.d.ts
5
- declare class BasicConnection implements EventConnection {
4
+ export declare class BasicConnection implements EventConnection {
6
5
  readonly type = EventPublisherType.Basic;
7
6
  private emitter;
8
7
  private connected;
@@ -21,24 +20,19 @@ declare class BasicConnection implements EventConnection {
21
20
  */
22
21
  get eventEmitter(): EventEmitter;
23
22
  }
24
- //# sourceMappingURL=BasicConnection.d.ts.map
25
23
  //#endregion
26
24
  //#region src/basic/BasicPublisher.d.ts
27
- declare class BasicPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
25
+ export declare class BasicPublisher<TMessage extends PublishableMessage<string, any>> implements EventPublisher<TMessage> {
28
26
  private connection;
29
27
  constructor(connection: BasicConnection);
30
28
  publish(messages: TMessage[]): Promise<void>;
31
29
  }
32
- //# sourceMappingURL=BasicPublisher.d.ts.map
33
30
  //#endregion
34
31
  //#region src/basic/BasicSubscriber.d.ts
35
- declare class BasicSubscriber<TMessage extends PublishableMessage<string, any>> implements EventSubscriber<TMessage> {
32
+ export declare class BasicSubscriber<TMessage extends PublishableMessage<string, any>> implements EventSubscriber<TMessage> {
36
33
  private connection;
37
34
  constructor(connection: BasicConnection);
38
35
  subscribe(messages: TMessage['type'][], listener: (payload: TMessage) => Promise<void>): Promise<void>;
39
36
  }
40
- //# sourceMappingURL=BasicSubscriber.d.ts.map
41
-
42
37
  //#endregion
43
- export { BasicConnection, BasicPublisher, BasicSubscriber };
44
38
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":[],"mappings":";;;;cAIa,eAAA,YAA2B;EAA3B,SAAA,IAAA,GACC,kBAAA,CAAA,KAAA;EADe,QAAA,OAAA;EAAA,QACf,SAAA;EAAA,WAcF,CAAA;EAAe;;;;EAwBM,OAvCO,oBAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,EAepC,OAfoC,CAe5B,eAf4B,CAAA;EAAe,OAAA,CAAA,CAAA,EAsBrC,OAtBqC,CAAA,IAAA,CAAA;WA0BvC;;;AC3BhB;;;EAA+D,IACpC,YAAA,CAAA,CAAA,EDuCN,YCvCM;;;;;cADd,gCAAgC,4CACjC,eAAe;;EDAd,WAAA,CAAA,UAAgB,ECEI,eDFJ;EAAA,OAAA,CAAA,QAAA,ECIJ,QDJI,EAAA,CAAA,ECIM,ODJN,CAAA,IAAA,CAAA;;;;;cEDhB,iCAAiC,4CAClC,gBAAgB;;EFAf,WAAA,CAAA,UAAgB,EEEI,eFFJ;EAAA,SAAA,CAAA,QAAA,EEKjB,QFLiB,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EEMP,QFNO,EAAA,GEMM,OFNN,CAAA,IAAA,CAAA,CAAA,EEOzB,OFPyB,CAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"mappings":";;;qBAIa,2BAA2B;WAC9B,OAAI,mBAAA;UACL;UACA;EAER;;;;;SAQa,qBACZ,4BACE,QAAQ;EAOL,WAAW;EAIX,SAAS;EAKf;;;;;MAQI,gBAAgB;;;;qBCxCR,eAAe,iBAAiB,4CACjC,eAAe;UAEN;EAApB,YAAoB,YAAY;EAE1B,QAAQ,UAAU,aAAU;;;;qBCLtB,gBAAgB,iBAAiB,4CAClC,gBAAgB;UAEP;EAApB,YAAoB,YAAY;EAE1B,UACL,UAAU,oBACV,WAAW,SAAS,aAAa,gBAC/B"}
@@ -1,9 +1,8 @@
1
- import { EventPublisherType } from "../types-CYDt-2RQ.mjs";
1
+ import "../types-Bk5JM6MP.mjs";
2
2
  import { EventEmitter } from "node:events";
3
-
4
3
  //#region src/basic/BasicConnection.ts
5
4
  var BasicConnection = class BasicConnection {
6
- type = EventPublisherType.Basic;
5
+ type = "basic";
7
6
  emitter;
8
7
  connected = false;
9
8
  constructor() {
@@ -36,10 +35,10 @@ var BasicConnection = class BasicConnection {
36
35
  return this.emitter;
37
36
  }
38
37
  };
39
-
40
38
  //#endregion
41
39
  //#region src/basic/BasicPublisher.ts
42
40
  var BasicPublisher = class {
41
+ connection;
43
42
  constructor(connection) {
44
43
  this.connection = connection;
45
44
  }
@@ -48,10 +47,10 @@ var BasicPublisher = class {
48
47
  for (const message of messages) emitter.emit(message.type, message);
49
48
  }
50
49
  };
51
-
52
50
  //#endregion
53
51
  //#region src/basic/BasicSubscriber.ts
54
52
  var BasicSubscriber = class {
53
+ connection;
55
54
  constructor(connection) {
56
55
  this.connection = connection;
57
56
  }
@@ -62,7 +61,7 @@ var BasicSubscriber = class {
62
61
  });
63
62
  }
64
63
  };
65
-
66
64
  //#endregion
67
65
  export { BasicConnection, BasicPublisher, BasicSubscriber };
66
+
68
67
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["_connectionString: string","connection: BasicConnection","messages: TMessage[]","connection: BasicConnection","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","message: TMessage"],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":";;;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CAEpB,cAAc;AACb,OAAK,UAAU,IAAI;CACnB;;;;;CAMD,aAAa,qBACZA,mBAC2B;EAE3B,MAAM,aAAa,IAAI;AACvB,QAAM,WAAW,SAAS;AAC1B,SAAO;CACP;CAED,MAAM,UAAyB;AAC9B,OAAK,YAAY;CACjB;CAED,MAAM,QAAuB;AAC5B,OAAK,QAAQ,oBAAoB;AACjC,OAAK,YAAY;CACjB;CAED,cAAuB;AACtB,SAAO,KAAK;CACZ;;;;;CAMD,IAAI,eAA6B;AAChC,SAAO,KAAK;CACZ;AACD;;;;AC3CD,IAAa,iBAAb,MAEA;CACC,YAAoBC,YAA6B;EAA7B;CAA+B;CAEnD,MAAM,QAAQC,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;AAChC,OAAK,MAAM,WAAW,SACrB,SAAQ,KAAK,QAAQ,MAAM,QAAQ;CAEpC;AACD;;;;ACXD,IAAa,kBAAb,MAEA;CACC,YAAoBC,YAA6B;EAA7B;CAA+B;CAEnD,MAAM,UACLC,UACAC,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;AAEhC,OAAK,MAAM,eAAe,SACzB,SAAQ,GAAG,aAAa,CAACC,YAAsB;AAC9C,YAAS,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAE,EAAC;EACvC,EAAC;CAEH;AACD"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/basic/BasicConnection.ts","../../src/basic/BasicPublisher.ts","../../src/basic/BasicSubscriber.ts"],"sourcesContent":["import { EventEmitter } from 'node:events';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport class BasicConnection implements EventConnection {\n\treadonly type = EventPublisherType.Basic;\n\tprivate emitter: EventEmitter;\n\tprivate connected = false;\n\n\tconstructor() {\n\t\tthis.emitter = new EventEmitter();\n\t}\n\n\t/**\n\t * Create a BasicConnection from a connection string\n\t * Format: basic://\n\t */\n\tstatic async fromConnectionString(\n\t\t_connectionString: string,\n\t): Promise<BasicConnection> {\n\t\t// Basic connection doesn't need any configuration\n\t\tconst connection = new BasicConnection();\n\t\tawait connection.connect();\n\t\treturn connection;\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tthis.connected = true;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.emitter.removeAllListeners();\n\t\tthis.connected = false;\n\t}\n\n\tisConnected(): boolean {\n\t\treturn this.connected;\n\t}\n\n\t/**\n\t * Get the underlying EventEmitter\n\t * Used by BasicPublisher and BasicSubscriber\n\t */\n\tget eventEmitter(): EventEmitter {\n\t\treturn this.emitter;\n\t}\n}\n","import type { EventPublisher, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicPublisher<TMessage extends PublishableMessage<string, any>>\n\timplements EventPublisher<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync publish(messages: TMessage[]) {\n\t\tconst emitter = this.connection.eventEmitter;\n\t\tfor (const message of messages) {\n\t\t\temitter.emit(message.type, message);\n\t\t}\n\t}\n}\n","import type { EventSubscriber, PublishableMessage } from '../types';\nimport type { BasicConnection } from './BasicConnection';\n\nexport class BasicSubscriber<TMessage extends PublishableMessage<string, any>>\n\timplements EventSubscriber<TMessage>\n{\n\tconstructor(private connection: BasicConnection) {}\n\n\tasync subscribe(\n\t\tmessages: TMessage['type'][],\n\t\tlistener: (payload: TMessage) => Promise<void>,\n\t): Promise<void> {\n\t\tconst emitter = this.connection.eventEmitter;\n\n\t\tfor (const messageType of messages) {\n\t\t\temitter.on(messageType, (message: TMessage) => {\n\t\t\t\tlistener(message).catch((_error) => {});\n\t\t\t});\n\t\t}\n\t}\n}\n"],"mappings":";;;AAIA,IAAa,kBAAb,MAAa,gBAA2C;CACvD,OAAS;CACT;CACA,YAAoB;CAEpB,cAAc;EACb,KAAK,UAAU,IAAI,aAAa;CACjC;;;;;CAMA,aAAa,qBACZ,mBAC2B;EAE3B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,WAAW,QAAQ;EACzB,OAAO;CACR;CAEA,MAAM,UAAyB;EAC9B,KAAK,YAAY;CAClB;CAEA,MAAM,QAAuB;EAC5B,KAAK,QAAQ,mBAAmB;EAChC,KAAK,YAAY;CAClB;CAEA,cAAuB;EACtB,OAAO,KAAK;CACb;;;;;CAMA,IAAI,eAA6B;EAChC,OAAO,KAAK;CACb;AACD;;;AC3CA,IAAa,iBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,QAAQ,UAAsB;EACnC,MAAM,UAAU,KAAK,WAAW;EAChC,KAAK,MAAM,WAAW,UACrB,QAAQ,KAAK,QAAQ,MAAM,OAAO;CAEpC;AACD;;;ACXA,IAAa,kBAAb,MAEA;CACqB;CAApB,YAAY,YAAqC;EAA7B,KAAA,aAAA;CAA8B;CAElD,MAAM,UACL,UACA,UACgB;EAChB,MAAM,UAAU,KAAK,WAAW;EAEhC,KAAK,MAAM,eAAe,UACzB,QAAQ,GAAG,cAAc,YAAsB;GAC9C,SAAS,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC;EACvC,CAAC;CAEH;AACD"}