@geekmidas/events 0.0.2 → 0.1.0

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 (81) hide show
  1. package/dist/{BasicConnection-C-Cg2FJT.cjs → BasicConnection-Bz3F2rXA.cjs} +1 -1
  2. package/dist/{BasicConnection-C-Cg2FJT.cjs.map → BasicConnection-Bz3F2rXA.cjs.map} +1 -1
  3. package/dist/{BasicConnection-CpwybcC9.mjs → BasicConnection-DOSOFSsW.mjs} +1 -1
  4. package/dist/{BasicConnection-CpwybcC9.mjs.map → BasicConnection-DOSOFSsW.mjs.map} +1 -1
  5. package/dist/{BasicPublisher-DogbeHAH.mjs → BasicPublisher-CaX8GCUi.mjs} +1 -1
  6. package/dist/{BasicPublisher-DogbeHAH.mjs.map → BasicPublisher-CaX8GCUi.mjs.map} +1 -1
  7. package/dist/{BasicPublisher-CXAVKxgq.cjs → BasicPublisher-afwuA4Xp.cjs} +1 -1
  8. package/dist/{BasicPublisher-CXAVKxgq.cjs.map → BasicPublisher-afwuA4Xp.cjs.map} +1 -1
  9. package/dist/{BasicSubscriber-BGqv3c8x.cjs → BasicSubscriber-Ckf3BkxS.cjs} +1 -1
  10. package/dist/{BasicSubscriber-BGqv3c8x.cjs.map → BasicSubscriber-Ckf3BkxS.cjs.map} +1 -1
  11. package/dist/{BasicSubscriber-CCKfbRMo.mjs → BasicSubscriber-DPpJNUUY.mjs} +1 -1
  12. package/dist/{BasicSubscriber-CCKfbRMo.mjs.map → BasicSubscriber-DPpJNUUY.mjs.map} +1 -1
  13. package/dist/{RabbitMQConnection-ungB0Zl6.cjs → RabbitMQConnection-BN_GybOv.cjs} +1 -1
  14. package/dist/{RabbitMQConnection-ungB0Zl6.cjs.map → RabbitMQConnection-BN_GybOv.cjs.map} +1 -1
  15. package/dist/{RabbitMQConnection-kU3MvN5P.mjs → RabbitMQConnection-eVOVS4Dl.mjs} +1 -1
  16. package/dist/{RabbitMQConnection-kU3MvN5P.mjs.map → RabbitMQConnection-eVOVS4Dl.mjs.map} +1 -1
  17. package/dist/{RabbitMQPublisher-o_oVI3wr.mjs → RabbitMQPublisher-BZX0edgL.mjs} +1 -1
  18. package/dist/{RabbitMQPublisher-o_oVI3wr.mjs.map → RabbitMQPublisher-BZX0edgL.mjs.map} +1 -1
  19. package/dist/{RabbitMQPublisher--DL6GM6g.cjs → RabbitMQPublisher-CSCn6gMA.cjs} +1 -1
  20. package/dist/{RabbitMQPublisher--DL6GM6g.cjs.map → RabbitMQPublisher-CSCn6gMA.cjs.map} +1 -1
  21. package/dist/{RabbitMQSubscriber-BaXqs5nO.mjs → RabbitMQSubscriber-B5I-hBaT.mjs} +1 -1
  22. package/dist/{RabbitMQSubscriber-BaXqs5nO.mjs.map → RabbitMQSubscriber-B5I-hBaT.mjs.map} +1 -1
  23. package/dist/{RabbitMQSubscriber-BplEJEk8.cjs → RabbitMQSubscriber-Cj7qLIi6.cjs} +1 -1
  24. package/dist/{RabbitMQSubscriber-BplEJEk8.cjs.map → RabbitMQSubscriber-Cj7qLIi6.cjs.map} +1 -1
  25. package/dist/{SNSConnection-DVsC_pbB.cjs → SNSConnection-CZz_U56V.cjs} +1 -1
  26. package/dist/{SNSConnection-DVsC_pbB.cjs.map → SNSConnection-CZz_U56V.cjs.map} +1 -1
  27. package/dist/{SNSConnection-D7wCf9Si.mjs → SNSConnection-DVEE3XoC.mjs} +1 -1
  28. package/dist/{SNSConnection-D7wCf9Si.mjs.map → SNSConnection-DVEE3XoC.mjs.map} +1 -1
  29. package/dist/{SNSPublisher-BZ6N3JI9.cjs → SNSPublisher-DbWVH-g_.cjs} +1 -1
  30. package/dist/{SNSPublisher-BZ6N3JI9.cjs.map → SNSPublisher-DbWVH-g_.cjs.map} +1 -1
  31. package/dist/{SNSPublisher-BfWjzNiB.mjs → SNSPublisher-Do-FMUyT.mjs} +1 -1
  32. package/dist/{SNSPublisher-BfWjzNiB.mjs.map → SNSPublisher-Do-FMUyT.mjs.map} +1 -1
  33. package/dist/{SNSSubscriber-UE0ia4XM.cjs → SNSSubscriber-DpEwQ8Tb.cjs} +3 -3
  34. package/dist/{SNSSubscriber-UE0ia4XM.cjs.map → SNSSubscriber-DpEwQ8Tb.cjs.map} +1 -1
  35. package/dist/{SNSSubscriber-C9YJWa7m.mjs → SNSSubscriber-e7eG48yJ.mjs} +3 -3
  36. package/dist/{SNSSubscriber-C9YJWa7m.mjs.map → SNSSubscriber-e7eG48yJ.mjs.map} +1 -1
  37. package/dist/{SQSConnection-Eleqqre3.mjs → SQSConnection-BBlDWZLU.mjs} +1 -1
  38. package/dist/{SQSConnection-Eleqqre3.mjs.map → SQSConnection-BBlDWZLU.mjs.map} +1 -1
  39. package/dist/{SQSConnection-BwNjUPr4.cjs → SQSConnection-DWYDtftQ.cjs} +1 -1
  40. package/dist/{SQSConnection-BwNjUPr4.cjs.map → SQSConnection-DWYDtftQ.cjs.map} +1 -1
  41. package/dist/{SQSPublisher-DG9o4ME3.mjs → SQSPublisher-B3lS2zbu.mjs} +1 -1
  42. package/dist/{SQSPublisher-DG9o4ME3.mjs.map → SQSPublisher-B3lS2zbu.mjs.map} +1 -1
  43. package/dist/{SQSPublisher-Dq5353oZ.cjs → SQSPublisher-nzbSaXSH.cjs} +1 -1
  44. package/dist/{SQSPublisher-Dq5353oZ.cjs.map → SQSPublisher-nzbSaXSH.cjs.map} +1 -1
  45. package/dist/{SQSSubscriber-CD66P7hH.mjs → SQSSubscriber-84pFnW1z.mjs} +1 -1
  46. package/dist/{SQSSubscriber-CD66P7hH.mjs.map → SQSSubscriber-84pFnW1z.mjs.map} +1 -1
  47. package/dist/{SQSSubscriber-DZDNgLE5.cjs → SQSSubscriber-DcL9BbG1.cjs} +1 -1
  48. package/dist/{SQSSubscriber-DZDNgLE5.cjs.map → SQSSubscriber-DcL9BbG1.cjs.map} +1 -1
  49. package/dist/basic/BasicConnection.cjs +1 -1
  50. package/dist/basic/BasicConnection.mjs +1 -1
  51. package/dist/basic/BasicPublisher.cjs +1 -1
  52. package/dist/basic/BasicPublisher.mjs +1 -1
  53. package/dist/basic/BasicSubscriber.cjs +1 -1
  54. package/dist/basic/BasicSubscriber.mjs +1 -1
  55. package/dist/basic/index.cjs +3 -3
  56. package/dist/basic/index.mjs +3 -3
  57. package/dist/rabbitmq/RabbitMQConnection.cjs +1 -1
  58. package/dist/rabbitmq/RabbitMQConnection.mjs +1 -1
  59. package/dist/rabbitmq/RabbitMQPublisher.cjs +1 -1
  60. package/dist/rabbitmq/RabbitMQPublisher.mjs +1 -1
  61. package/dist/rabbitmq/RabbitMQSubscriber.cjs +1 -1
  62. package/dist/rabbitmq/RabbitMQSubscriber.mjs +1 -1
  63. package/dist/rabbitmq/index.cjs +3 -3
  64. package/dist/rabbitmq/index.mjs +3 -3
  65. package/dist/sns/SNSConnection.cjs +1 -1
  66. package/dist/sns/SNSConnection.mjs +1 -1
  67. package/dist/sns/SNSPublisher.cjs +1 -1
  68. package/dist/sns/SNSPublisher.mjs +1 -1
  69. package/dist/sns/SNSSubscriber.cjs +3 -3
  70. package/dist/sns/SNSSubscriber.mjs +3 -3
  71. package/dist/sns/index.cjs +5 -5
  72. package/dist/sns/index.mjs +5 -5
  73. package/dist/sqs/SQSConnection.cjs +1 -1
  74. package/dist/sqs/SQSConnection.mjs +1 -1
  75. package/dist/sqs/SQSPublisher.cjs +1 -1
  76. package/dist/sqs/SQSPublisher.mjs +1 -1
  77. package/dist/sqs/SQSSubscriber.cjs +1 -1
  78. package/dist/sqs/SQSSubscriber.mjs +1 -1
  79. package/dist/sqs/index.cjs +3 -3
  80. package/dist/sqs/index.mjs +3 -3
  81. package/package.json +24 -5
@@ -1 +1 @@
1
- {"version":3,"file":"SQSConnection-Eleqqre3.mjs","names":["config: SQSConnectionConfig","clientConfig: SQSClientConfig","connectionString: string"],"sources":["../src/sqs/SQSConnection.ts"],"sourcesContent":["import { SQSClient, type SQSClientConfig } from '@aws-sdk/client-sqs';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SQSConnectionConfig {\n queueUrl: string;\n region?: string;\n endpoint?: string; // Custom endpoint (e.g., for LocalStack)\n credentials?: {\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n };\n}\n\nexport class SQSConnection implements EventConnection {\n readonly type = EventPublisherType.SQS;\n private client: SQSClient;\n private connected = false;\n\n constructor(readonly config: SQSConnectionConfig) {\n this.config = config;\n\n const clientConfig: SQSClientConfig = {\n region: config.region,\n endpoint: config.endpoint,\n credentials: config.credentials,\n };\n\n this.client = new SQSClient(clientConfig);\n }\n\n /**\n * Create an SQSConnection from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566\n */\n static async fromConnectionString(\n connectionString: string,\n ): Promise<SQSConnection> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const queueUrl = params.get('queueUrl');\n if (!queueUrl) {\n throw new Error('queueUrl parameter is required in connection string');\n }\n\n const config: SQSConnectionConfig = {\n queueUrl,\n region: params.get('region') || undefined,\n endpoint: params.get('endpoint') || undefined,\n };\n\n // Parse credentials if provided\n const accessKeyId = params.get('accessKeyId');\n const secretAccessKey = params.get('secretAccessKey');\n if (accessKeyId && secretAccessKey) {\n config.credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken: params.get('sessionToken') || undefined,\n };\n }\n\n const connection = new SQSConnection(config);\n await connection.connect();\n return connection;\n }\n\n async connect(): Promise<void> {\n // SQS doesn't have a traditional connection, but we mark as connected\n this.connected = true;\n }\n\n async close(): Promise<void> {\n this.client.destroy();\n this.connected = false;\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n /**\n * Get the underlying SQS client\n */\n get sqsClient(): SQSClient {\n return this.client;\n }\n\n /**\n * Get the queue URL for this connection\n */\n get queueUrl(): string {\n return this.config.queueUrl;\n }\n}\n"],"mappings":";;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACpD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CAEpB,YAAqBA,QAA6B;EAA7B;AACnB,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACpC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACrB;AAED,OAAK,SAAS,IAAI,UAAU;CAC7B;;;;;CAMD,aAAa,qBACXC,kBACwB;EACxB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACH,OAAM,IAAI,MAAM;EAGlB,MAAMF,SAA8B;GAClC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EACjC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBACjB,QAAO,cAAc;GACnB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACzC;EAGH,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACR;CAED,MAAM,UAAyB;AAE7B,OAAK,YAAY;CAClB;CAED,MAAM,QAAuB;AAC3B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CAClB;CAED,cAAuB;AACrB,SAAO,KAAK;CACb;;;;CAKD,IAAI,YAAuB;AACzB,SAAO,KAAK;CACb;;;;CAKD,IAAI,WAAmB;AACrB,SAAO,KAAK,OAAO;CACpB;AACF"}
1
+ {"version":3,"file":"SQSConnection-BBlDWZLU.mjs","names":["config: SQSConnectionConfig","clientConfig: SQSClientConfig","connectionString: string"],"sources":["../src/sqs/SQSConnection.ts"],"sourcesContent":["import { SQSClient, type SQSClientConfig } from '@aws-sdk/client-sqs';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SQSConnectionConfig {\n queueUrl: string;\n region?: string;\n endpoint?: string; // Custom endpoint (e.g., for LocalStack)\n credentials?: {\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n };\n}\n\nexport class SQSConnection implements EventConnection {\n readonly type = EventPublisherType.SQS;\n private client: SQSClient;\n private connected = false;\n\n constructor(readonly config: SQSConnectionConfig) {\n this.config = config;\n\n const clientConfig: SQSClientConfig = {\n region: config.region,\n endpoint: config.endpoint,\n credentials: config.credentials,\n };\n\n this.client = new SQSClient(clientConfig);\n }\n\n /**\n * Create an SQSConnection from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566\n */\n static async fromConnectionString(\n connectionString: string,\n ): Promise<SQSConnection> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const queueUrl = params.get('queueUrl');\n if (!queueUrl) {\n throw new Error('queueUrl parameter is required in connection string');\n }\n\n const config: SQSConnectionConfig = {\n queueUrl,\n region: params.get('region') || undefined,\n endpoint: params.get('endpoint') || undefined,\n };\n\n // Parse credentials if provided\n const accessKeyId = params.get('accessKeyId');\n const secretAccessKey = params.get('secretAccessKey');\n if (accessKeyId && secretAccessKey) {\n config.credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken: params.get('sessionToken') || undefined,\n };\n }\n\n const connection = new SQSConnection(config);\n await connection.connect();\n return connection;\n }\n\n async connect(): Promise<void> {\n // SQS doesn't have a traditional connection, but we mark as connected\n this.connected = true;\n }\n\n async close(): Promise<void> {\n this.client.destroy();\n this.connected = false;\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n /**\n * Get the underlying SQS client\n */\n get sqsClient(): SQSClient {\n return this.client;\n }\n\n /**\n * Get the queue URL for this connection\n */\n get queueUrl(): string {\n return this.config.queueUrl;\n }\n}\n"],"mappings":";;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACpD,AAAS,OAAO,mBAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CAEpB,YAAqBA,QAA6B;EAA7B;AACnB,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACpC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACrB;AAED,OAAK,SAAS,IAAI,UAAU;CAC7B;;;;;CAMD,aAAa,qBACXC,kBACwB;EACxB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACH,OAAM,IAAI,MAAM;EAGlB,MAAMF,SAA8B;GAClC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EACjC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBACjB,QAAO,cAAc;GACnB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACzC;EAGH,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACR;CAED,MAAM,UAAyB;AAE7B,OAAK,YAAY;CAClB;CAED,MAAM,QAAuB;AAC3B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CAClB;CAED,cAAuB;AACrB,SAAO,KAAK;CACb;;;;CAKD,IAAI,YAAuB;AACzB,SAAO,KAAK;CACb;;;;CAKD,IAAI,WAAmB;AACrB,SAAO,KAAK,OAAO;CACpB;AACF"}
@@ -73,4 +73,4 @@ Object.defineProperty(exports, 'SQSConnection', {
73
73
  return SQSConnection;
74
74
  }
75
75
  });
76
- //# sourceMappingURL=SQSConnection-BwNjUPr4.cjs.map
76
+ //# sourceMappingURL=SQSConnection-DWYDtftQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQSConnection-BwNjUPr4.cjs","names":["EventPublisherType","config: SQSConnectionConfig","clientConfig: SQSClientConfig","SQSClient","connectionString: string"],"sources":["../src/sqs/SQSConnection.ts"],"sourcesContent":["import { SQSClient, type SQSClientConfig } from '@aws-sdk/client-sqs';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SQSConnectionConfig {\n queueUrl: string;\n region?: string;\n endpoint?: string; // Custom endpoint (e.g., for LocalStack)\n credentials?: {\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n };\n}\n\nexport class SQSConnection implements EventConnection {\n readonly type = EventPublisherType.SQS;\n private client: SQSClient;\n private connected = false;\n\n constructor(readonly config: SQSConnectionConfig) {\n this.config = config;\n\n const clientConfig: SQSClientConfig = {\n region: config.region,\n endpoint: config.endpoint,\n credentials: config.credentials,\n };\n\n this.client = new SQSClient(clientConfig);\n }\n\n /**\n * Create an SQSConnection from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566\n */\n static async fromConnectionString(\n connectionString: string,\n ): Promise<SQSConnection> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const queueUrl = params.get('queueUrl');\n if (!queueUrl) {\n throw new Error('queueUrl parameter is required in connection string');\n }\n\n const config: SQSConnectionConfig = {\n queueUrl,\n region: params.get('region') || undefined,\n endpoint: params.get('endpoint') || undefined,\n };\n\n // Parse credentials if provided\n const accessKeyId = params.get('accessKeyId');\n const secretAccessKey = params.get('secretAccessKey');\n if (accessKeyId && secretAccessKey) {\n config.credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken: params.get('sessionToken') || undefined,\n };\n }\n\n const connection = new SQSConnection(config);\n await connection.connect();\n return connection;\n }\n\n async connect(): Promise<void> {\n // SQS doesn't have a traditional connection, but we mark as connected\n this.connected = true;\n }\n\n async close(): Promise<void> {\n this.client.destroy();\n this.connected = false;\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n /**\n * Get the underlying SQS client\n */\n get sqsClient(): SQSClient {\n return this.client;\n }\n\n /**\n * Get the queue URL for this connection\n */\n get queueUrl(): string {\n return this.config.queueUrl;\n }\n}\n"],"mappings":";;;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACpD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CAEpB,YAAqBC,QAA6B;EAA7B;AACnB,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACpC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACrB;AAED,OAAK,SAAS,IAAIC,+BAAU;CAC7B;;;;;CAMD,aAAa,qBACXC,kBACwB;EACxB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACH,OAAM,IAAI,MAAM;EAGlB,MAAMH,SAA8B;GAClC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EACjC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBACjB,QAAO,cAAc;GACnB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACzC;EAGH,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACR;CAED,MAAM,UAAyB;AAE7B,OAAK,YAAY;CAClB;CAED,MAAM,QAAuB;AAC3B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CAClB;CAED,cAAuB;AACrB,SAAO,KAAK;CACb;;;;CAKD,IAAI,YAAuB;AACzB,SAAO,KAAK;CACb;;;;CAKD,IAAI,WAAmB;AACrB,SAAO,KAAK,OAAO;CACpB;AACF"}
1
+ {"version":3,"file":"SQSConnection-DWYDtftQ.cjs","names":["EventPublisherType","config: SQSConnectionConfig","clientConfig: SQSClientConfig","SQSClient","connectionString: string"],"sources":["../src/sqs/SQSConnection.ts"],"sourcesContent":["import { SQSClient, type SQSClientConfig } from '@aws-sdk/client-sqs';\nimport type { EventConnection } from '../types';\nimport { EventPublisherType } from '../types';\n\nexport interface SQSConnectionConfig {\n queueUrl: string;\n region?: string;\n endpoint?: string; // Custom endpoint (e.g., for LocalStack)\n credentials?: {\n accessKeyId: string;\n secretAccessKey: string;\n sessionToken?: string;\n };\n}\n\nexport class SQSConnection implements EventConnection {\n readonly type = EventPublisherType.SQS;\n private client: SQSClient;\n private connected = false;\n\n constructor(readonly config: SQSConnectionConfig) {\n this.config = config;\n\n const clientConfig: SQSClientConfig = {\n region: config.region,\n endpoint: config.endpoint,\n credentials: config.credentials,\n };\n\n this.client = new SQSClient(clientConfig);\n }\n\n /**\n * Create an SQSConnection from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566\n */\n static async fromConnectionString(\n connectionString: string,\n ): Promise<SQSConnection> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const queueUrl = params.get('queueUrl');\n if (!queueUrl) {\n throw new Error('queueUrl parameter is required in connection string');\n }\n\n const config: SQSConnectionConfig = {\n queueUrl,\n region: params.get('region') || undefined,\n endpoint: params.get('endpoint') || undefined,\n };\n\n // Parse credentials if provided\n const accessKeyId = params.get('accessKeyId');\n const secretAccessKey = params.get('secretAccessKey');\n if (accessKeyId && secretAccessKey) {\n config.credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken: params.get('sessionToken') || undefined,\n };\n }\n\n const connection = new SQSConnection(config);\n await connection.connect();\n return connection;\n }\n\n async connect(): Promise<void> {\n // SQS doesn't have a traditional connection, but we mark as connected\n this.connected = true;\n }\n\n async close(): Promise<void> {\n this.client.destroy();\n this.connected = false;\n }\n\n isConnected(): boolean {\n return this.connected;\n }\n\n /**\n * Get the underlying SQS client\n */\n get sqsClient(): SQSClient {\n return this.client;\n }\n\n /**\n * Get the queue URL for this connection\n */\n get queueUrl(): string {\n return this.config.queueUrl;\n }\n}\n"],"mappings":";;;;;AAeA,IAAa,gBAAb,MAAa,cAAyC;CACpD,AAAS,OAAOA,iCAAmB;CACnC,AAAQ;CACR,AAAQ,YAAY;CAEpB,YAAqBC,QAA6B;EAA7B;AACnB,OAAK,SAAS;EAEd,MAAMC,eAAgC;GACpC,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,aAAa,OAAO;EACrB;AAED,OAAK,SAAS,IAAIC,+BAAU;CAC7B;;;;;CAMD,aAAa,qBACXC,kBACwB;EACxB,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,WAAW,OAAO,IAAI,WAAW;AACvC,OAAK,SACH,OAAM,IAAI,MAAM;EAGlB,MAAMH,SAA8B;GAClC;GACA,QAAQ,OAAO,IAAI,SAAS;GAC5B,UAAU,OAAO,IAAI,WAAW;EACjC;EAGD,MAAM,cAAc,OAAO,IAAI,cAAc;EAC7C,MAAM,kBAAkB,OAAO,IAAI,kBAAkB;AACrD,MAAI,eAAe,gBACjB,QAAO,cAAc;GACnB;GACA;GACA,cAAc,OAAO,IAAI,eAAe;EACzC;EAGH,MAAM,aAAa,IAAI,cAAc;AACrC,QAAM,WAAW,SAAS;AAC1B,SAAO;CACR;CAED,MAAM,UAAyB;AAE7B,OAAK,YAAY;CAClB;CAED,MAAM,QAAuB;AAC3B,OAAK,OAAO,SAAS;AACrB,OAAK,YAAY;CAClB;CAED,cAAuB;AACrB,SAAO,KAAK;CACb;;;;CAKD,IAAI,YAAuB;AACzB,SAAO,KAAK;CACb;;;;CAKD,IAAI,WAAmB;AACrB,SAAO,KAAK,OAAO;CACpB;AACF"}
@@ -54,4 +54,4 @@ var SQSPublisher = class SQSPublisher {
54
54
 
55
55
  //#endregion
56
56
  export { SQSPublisher };
57
- //# sourceMappingURL=SQSPublisher-DG9o4ME3.mjs.map
57
+ //# sourceMappingURL=SQSPublisher-B3lS2zbu.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQSPublisher-DG9o4ME3.mjs","names":["connection: SQSConnection","options: SQSPublisherOptions","connectionString: string","messages: TMessage[]","entries: SendMessageBatchRequestEntry[]","input: SendMessageBatchCommandInput"],"sources":["../src/sqs/SQSPublisher.ts"],"sourcesContent":["import {\n SendMessageBatchCommand,\n type SendMessageBatchCommandInput,\n type SendMessageBatchRequestEntry,\n} from '@aws-sdk/client-sqs';\nimport chunk from 'lodash.chunk';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSPublisherOptions {\n maxBatchSize?: number; // Default: 10 (SQS limit)\n}\n\nexport class SQSPublisher<TMessage extends PublishableMessage<string, any>>\n implements EventPublisher<TMessage>\n{\n readonly options: Required<SQSPublisherOptions>;\n\n constructor(\n readonly connection: SQSConnection,\n options: SQSPublisherOptions = {},\n ) {\n this.options = {\n maxBatchSize: options.maxBatchSize ?? 10, // SQS limit\n };\n }\n\n /**\n * Create an SQSPublisher from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566&maxBatchSize=10\n */\n static async fromConnectionString<\n TMessage extends PublishableMessage<string, any>,\n >(connectionString: string): Promise<SQSPublisher<TMessage>> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const { SQSConnection } = await import('./SQSConnection');\n const connection =\n await SQSConnection.fromConnectionString(connectionString);\n\n const options: SQSPublisherOptions = {\n maxBatchSize: params.get('maxBatchSize')\n ? Number.parseInt(params.get('maxBatchSize')!, 10)\n : undefined,\n };\n\n return new SQSPublisher<TMessage>(connection, options);\n }\n\n async publish(messages: TMessage[]): Promise<void> {\n if (messages.length === 0) return;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n // Split messages into batches (SQS limit is 10 messages per batch)\n const batches = chunk(messages, this.options.maxBatchSize);\n\n // Send all batches\n await Promise.all(batches.map((batch) => this.sendBatch(batch)));\n }\n\n private async sendBatch(messages: TMessage[]): Promise<void> {\n const entries: SendMessageBatchRequestEntry[] = messages.map(\n (message, index) => ({\n Id: `${index}`,\n MessageBody: JSON.stringify({\n type: message.type,\n payload: message.payload,\n }),\n MessageAttributes: {\n type: {\n DataType: 'String',\n StringValue: message.type,\n },\n },\n }),\n );\n\n const input: SendMessageBatchCommandInput = {\n QueueUrl: this.connection.queueUrl,\n Entries: entries,\n };\n\n const command = new SendMessageBatchCommand(input);\n const response = await this.connection.sqsClient.send(command);\n\n // Check for failures\n if (response.Failed && response.Failed.length > 0) {\n const errors = response.Failed.map(\n (f) => `${f.Id}: ${f.Code} - ${f.Message}`,\n ).join(', ');\n throw new Error(\n `Failed to send ${response.Failed.length} messages: ${errors}`,\n );\n }\n }\n\n async close(): Promise<void> {\n // Publisher doesn't own the connection\n // Connection should be closed by whoever created it\n }\n}\n"],"mappings":";;;;AAaA,IAAa,eAAb,MAAa,aAEb;CACE,AAAS;CAET,YACWA,YACTC,UAA+B,CAAE,GACjC;EAFS;AAGT,OAAK,UAAU,EACb,cAAc,QAAQ,gBAAgB,GACvC;CACF;;;;;CAMD,aAAa,qBAEXC,kBAA2D;EAC3D,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,EAAE,eAAe,GAAG,MAAM,OAAO;EACvC,MAAM,aACJ,MAAM,cAAc,qBAAqB,iBAAiB;EAE5D,MAAMD,UAA+B,EACnC,cAAc,OAAO,IAAI,eAAe,GACpC,OAAO,SAAS,OAAO,IAAI,eAAe,EAAG,GAAG,UAErD;AAED,SAAO,IAAI,aAAuB,YAAY;CAC/C;CAED,MAAM,QAAQE,UAAqC;AACjD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;EAIjC,MAAM,UAAU,MAAM,UAAU,KAAK,QAAQ,aAAa;AAG1D,QAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;CACjE;CAED,MAAc,UAAUA,UAAqC;EAC3D,MAAMC,UAA0C,SAAS,IACvD,CAAC,SAAS,WAAW;GACnB,KAAK,EAAE,MAAM;GACb,aAAa,KAAK,UAAU;IAC1B,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB,EAAC;GACF,mBAAmB,EACjB,MAAM;IACJ,UAAU;IACV,aAAa,QAAQ;GACtB,EACF;EACF,GACF;EAED,MAAMC,QAAsC;GAC1C,UAAU,KAAK,WAAW;GAC1B,SAAS;EACV;EAED,MAAM,UAAU,IAAI,wBAAwB;EAC5C,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAG9D,MAAI,SAAS,UAAU,SAAS,OAAO,SAAS,GAAG;GACjD,MAAM,SAAS,SAAS,OAAO,IAC7B,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,EAAE,QAAQ,EAC1C,CAAC,KAAK,KAAK;AACZ,SAAM,IAAI,OACP,iBAAiB,SAAS,OAAO,OAAO,aAAa,OAAO;EAEhE;CACF;CAED,MAAM,QAAuB,CAG5B;AACF"}
1
+ {"version":3,"file":"SQSPublisher-B3lS2zbu.mjs","names":["connection: SQSConnection","options: SQSPublisherOptions","connectionString: string","messages: TMessage[]","entries: SendMessageBatchRequestEntry[]","input: SendMessageBatchCommandInput"],"sources":["../src/sqs/SQSPublisher.ts"],"sourcesContent":["import {\n SendMessageBatchCommand,\n type SendMessageBatchCommandInput,\n type SendMessageBatchRequestEntry,\n} from '@aws-sdk/client-sqs';\nimport chunk from 'lodash.chunk';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSPublisherOptions {\n maxBatchSize?: number; // Default: 10 (SQS limit)\n}\n\nexport class SQSPublisher<TMessage extends PublishableMessage<string, any>>\n implements EventPublisher<TMessage>\n{\n readonly options: Required<SQSPublisherOptions>;\n\n constructor(\n readonly connection: SQSConnection,\n options: SQSPublisherOptions = {},\n ) {\n this.options = {\n maxBatchSize: options.maxBatchSize ?? 10, // SQS limit\n };\n }\n\n /**\n * Create an SQSPublisher from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566&maxBatchSize=10\n */\n static async fromConnectionString<\n TMessage extends PublishableMessage<string, any>,\n >(connectionString: string): Promise<SQSPublisher<TMessage>> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const { SQSConnection } = await import('./SQSConnection');\n const connection =\n await SQSConnection.fromConnectionString(connectionString);\n\n const options: SQSPublisherOptions = {\n maxBatchSize: params.get('maxBatchSize')\n ? Number.parseInt(params.get('maxBatchSize')!, 10)\n : undefined,\n };\n\n return new SQSPublisher<TMessage>(connection, options);\n }\n\n async publish(messages: TMessage[]): Promise<void> {\n if (messages.length === 0) return;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n // Split messages into batches (SQS limit is 10 messages per batch)\n const batches = chunk(messages, this.options.maxBatchSize);\n\n // Send all batches\n await Promise.all(batches.map((batch) => this.sendBatch(batch)));\n }\n\n private async sendBatch(messages: TMessage[]): Promise<void> {\n const entries: SendMessageBatchRequestEntry[] = messages.map(\n (message, index) => ({\n Id: `${index}`,\n MessageBody: JSON.stringify({\n type: message.type,\n payload: message.payload,\n }),\n MessageAttributes: {\n type: {\n DataType: 'String',\n StringValue: message.type,\n },\n },\n }),\n );\n\n const input: SendMessageBatchCommandInput = {\n QueueUrl: this.connection.queueUrl,\n Entries: entries,\n };\n\n const command = new SendMessageBatchCommand(input);\n const response = await this.connection.sqsClient.send(command);\n\n // Check for failures\n if (response.Failed && response.Failed.length > 0) {\n const errors = response.Failed.map(\n (f) => `${f.Id}: ${f.Code} - ${f.Message}`,\n ).join(', ');\n throw new Error(\n `Failed to send ${response.Failed.length} messages: ${errors}`,\n );\n }\n }\n\n async close(): Promise<void> {\n // Publisher doesn't own the connection\n // Connection should be closed by whoever created it\n }\n}\n"],"mappings":";;;;AAaA,IAAa,eAAb,MAAa,aAEb;CACE,AAAS;CAET,YACWA,YACTC,UAA+B,CAAE,GACjC;EAFS;AAGT,OAAK,UAAU,EACb,cAAc,QAAQ,gBAAgB,GACvC;CACF;;;;;CAMD,aAAa,qBAEXC,kBAA2D;EAC3D,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,EAAE,eAAe,GAAG,MAAM,OAAO;EACvC,MAAM,aACJ,MAAM,cAAc,qBAAqB,iBAAiB;EAE5D,MAAMD,UAA+B,EACnC,cAAc,OAAO,IAAI,eAAe,GACpC,OAAO,SAAS,OAAO,IAAI,eAAe,EAAG,GAAG,UAErD;AAED,SAAO,IAAI,aAAuB,YAAY;CAC/C;CAED,MAAM,QAAQE,UAAqC;AACjD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;EAIjC,MAAM,UAAU,MAAM,UAAU,KAAK,QAAQ,aAAa;AAG1D,QAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;CACjE;CAED,MAAc,UAAUA,UAAqC;EAC3D,MAAMC,UAA0C,SAAS,IACvD,CAAC,SAAS,WAAW;GACnB,KAAK,EAAE,MAAM;GACb,aAAa,KAAK,UAAU;IAC1B,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB,EAAC;GACF,mBAAmB,EACjB,MAAM;IACJ,UAAU;IACV,aAAa,QAAQ;GACtB,EACF;EACF,GACF;EAED,MAAMC,QAAsC;GAC1C,UAAU,KAAK,WAAW;GAC1B,SAAS;EACV;EAED,MAAM,UAAU,IAAI,wBAAwB;EAC5C,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAG9D,MAAI,SAAS,UAAU,SAAS,OAAO,SAAS,GAAG;GACjD,MAAM,SAAS,SAAS,OAAO,IAC7B,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,EAAE,QAAQ,EAC1C,CAAC,KAAK,KAAK;AACZ,SAAM,IAAI,OACP,iBAAiB,SAAS,OAAO,OAAO,aAAa,OAAO;EAEhE;CACF;CAED,MAAM,QAAuB,CAG5B;AACF"}
@@ -60,4 +60,4 @@ Object.defineProperty(exports, 'SQSPublisher', {
60
60
  return SQSPublisher;
61
61
  }
62
62
  });
63
- //# sourceMappingURL=SQSPublisher-Dq5353oZ.cjs.map
63
+ //# sourceMappingURL=SQSPublisher-nzbSaXSH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQSPublisher-Dq5353oZ.cjs","names":["connection: SQSConnection","options: SQSPublisherOptions","connectionString: string","messages: TMessage[]","entries: SendMessageBatchRequestEntry[]","input: SendMessageBatchCommandInput","SendMessageBatchCommand"],"sources":["../src/sqs/SQSPublisher.ts"],"sourcesContent":["import {\n SendMessageBatchCommand,\n type SendMessageBatchCommandInput,\n type SendMessageBatchRequestEntry,\n} from '@aws-sdk/client-sqs';\nimport chunk from 'lodash.chunk';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSPublisherOptions {\n maxBatchSize?: number; // Default: 10 (SQS limit)\n}\n\nexport class SQSPublisher<TMessage extends PublishableMessage<string, any>>\n implements EventPublisher<TMessage>\n{\n readonly options: Required<SQSPublisherOptions>;\n\n constructor(\n readonly connection: SQSConnection,\n options: SQSPublisherOptions = {},\n ) {\n this.options = {\n maxBatchSize: options.maxBatchSize ?? 10, // SQS limit\n };\n }\n\n /**\n * Create an SQSPublisher from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566&maxBatchSize=10\n */\n static async fromConnectionString<\n TMessage extends PublishableMessage<string, any>,\n >(connectionString: string): Promise<SQSPublisher<TMessage>> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const { SQSConnection } = await import('./SQSConnection');\n const connection =\n await SQSConnection.fromConnectionString(connectionString);\n\n const options: SQSPublisherOptions = {\n maxBatchSize: params.get('maxBatchSize')\n ? Number.parseInt(params.get('maxBatchSize')!, 10)\n : undefined,\n };\n\n return new SQSPublisher<TMessage>(connection, options);\n }\n\n async publish(messages: TMessage[]): Promise<void> {\n if (messages.length === 0) return;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n // Split messages into batches (SQS limit is 10 messages per batch)\n const batches = chunk(messages, this.options.maxBatchSize);\n\n // Send all batches\n await Promise.all(batches.map((batch) => this.sendBatch(batch)));\n }\n\n private async sendBatch(messages: TMessage[]): Promise<void> {\n const entries: SendMessageBatchRequestEntry[] = messages.map(\n (message, index) => ({\n Id: `${index}`,\n MessageBody: JSON.stringify({\n type: message.type,\n payload: message.payload,\n }),\n MessageAttributes: {\n type: {\n DataType: 'String',\n StringValue: message.type,\n },\n },\n }),\n );\n\n const input: SendMessageBatchCommandInput = {\n QueueUrl: this.connection.queueUrl,\n Entries: entries,\n };\n\n const command = new SendMessageBatchCommand(input);\n const response = await this.connection.sqsClient.send(command);\n\n // Check for failures\n if (response.Failed && response.Failed.length > 0) {\n const errors = response.Failed.map(\n (f) => `${f.Id}: ${f.Code} - ${f.Message}`,\n ).join(', ');\n throw new Error(\n `Failed to send ${response.Failed.length} messages: ${errors}`,\n );\n }\n }\n\n async close(): Promise<void> {\n // Publisher doesn't own the connection\n // Connection should be closed by whoever created it\n }\n}\n"],"mappings":";;;;;AAaA,IAAa,eAAb,MAAa,aAEb;CACE,AAAS;CAET,YACWA,YACTC,UAA+B,CAAE,GACjC;EAFS;AAGT,OAAK,UAAU,EACb,cAAc,QAAQ,gBAAgB,GACvC;CACF;;;;;CAMD,aAAa,qBAEXC,kBAA2D;EAC3D,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,EAAE,eAAe,GAAG,2CAAM;EAChC,MAAM,aACJ,MAAM,cAAc,qBAAqB,iBAAiB;EAE5D,MAAMD,UAA+B,EACnC,cAAc,OAAO,IAAI,eAAe,GACpC,OAAO,SAAS,OAAO,IAAI,eAAe,EAAG,GAAG,UAErD;AAED,SAAO,IAAI,aAAuB,YAAY;CAC/C;CAED,MAAM,QAAQE,UAAqC;AACjD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;EAIjC,MAAM,UAAU,0BAAM,UAAU,KAAK,QAAQ,aAAa;AAG1D,QAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;CACjE;CAED,MAAc,UAAUA,UAAqC;EAC3D,MAAMC,UAA0C,SAAS,IACvD,CAAC,SAAS,WAAW;GACnB,KAAK,EAAE,MAAM;GACb,aAAa,KAAK,UAAU;IAC1B,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB,EAAC;GACF,mBAAmB,EACjB,MAAM;IACJ,UAAU;IACV,aAAa,QAAQ;GACtB,EACF;EACF,GACF;EAED,MAAMC,QAAsC;GAC1C,UAAU,KAAK,WAAW;GAC1B,SAAS;EACV;EAED,MAAM,UAAU,IAAIC,6CAAwB;EAC5C,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAG9D,MAAI,SAAS,UAAU,SAAS,OAAO,SAAS,GAAG;GACjD,MAAM,SAAS,SAAS,OAAO,IAC7B,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,EAAE,QAAQ,EAC1C,CAAC,KAAK,KAAK;AACZ,SAAM,IAAI,OACP,iBAAiB,SAAS,OAAO,OAAO,aAAa,OAAO;EAEhE;CACF;CAED,MAAM,QAAuB,CAG5B;AACF"}
1
+ {"version":3,"file":"SQSPublisher-nzbSaXSH.cjs","names":["connection: SQSConnection","options: SQSPublisherOptions","connectionString: string","messages: TMessage[]","entries: SendMessageBatchRequestEntry[]","input: SendMessageBatchCommandInput","SendMessageBatchCommand"],"sources":["../src/sqs/SQSPublisher.ts"],"sourcesContent":["import {\n SendMessageBatchCommand,\n type SendMessageBatchCommandInput,\n type SendMessageBatchRequestEntry,\n} from '@aws-sdk/client-sqs';\nimport chunk from 'lodash.chunk';\nimport type { EventPublisher, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSPublisherOptions {\n maxBatchSize?: number; // Default: 10 (SQS limit)\n}\n\nexport class SQSPublisher<TMessage extends PublishableMessage<string, any>>\n implements EventPublisher<TMessage>\n{\n readonly options: Required<SQSPublisherOptions>;\n\n constructor(\n readonly connection: SQSConnection,\n options: SQSPublisherOptions = {},\n ) {\n this.options = {\n maxBatchSize: options.maxBatchSize ?? 10, // SQS limit\n };\n }\n\n /**\n * Create an SQSPublisher from a connection string\n * Format: sqs://?queueUrl=https://sqs.region.amazonaws.com/accountId/queueName&region=us-east-1&endpoint=http://localhost:4566&maxBatchSize=10\n */\n static async fromConnectionString<\n TMessage extends PublishableMessage<string, any>,\n >(connectionString: string): Promise<SQSPublisher<TMessage>> {\n const url = new URL(connectionString);\n const params = url.searchParams;\n\n const { SQSConnection } = await import('./SQSConnection');\n const connection =\n await SQSConnection.fromConnectionString(connectionString);\n\n const options: SQSPublisherOptions = {\n maxBatchSize: params.get('maxBatchSize')\n ? Number.parseInt(params.get('maxBatchSize')!, 10)\n : undefined,\n };\n\n return new SQSPublisher<TMessage>(connection, options);\n }\n\n async publish(messages: TMessage[]): Promise<void> {\n if (messages.length === 0) return;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n // Split messages into batches (SQS limit is 10 messages per batch)\n const batches = chunk(messages, this.options.maxBatchSize);\n\n // Send all batches\n await Promise.all(batches.map((batch) => this.sendBatch(batch)));\n }\n\n private async sendBatch(messages: TMessage[]): Promise<void> {\n const entries: SendMessageBatchRequestEntry[] = messages.map(\n (message, index) => ({\n Id: `${index}`,\n MessageBody: JSON.stringify({\n type: message.type,\n payload: message.payload,\n }),\n MessageAttributes: {\n type: {\n DataType: 'String',\n StringValue: message.type,\n },\n },\n }),\n );\n\n const input: SendMessageBatchCommandInput = {\n QueueUrl: this.connection.queueUrl,\n Entries: entries,\n };\n\n const command = new SendMessageBatchCommand(input);\n const response = await this.connection.sqsClient.send(command);\n\n // Check for failures\n if (response.Failed && response.Failed.length > 0) {\n const errors = response.Failed.map(\n (f) => `${f.Id}: ${f.Code} - ${f.Message}`,\n ).join(', ');\n throw new Error(\n `Failed to send ${response.Failed.length} messages: ${errors}`,\n );\n }\n }\n\n async close(): Promise<void> {\n // Publisher doesn't own the connection\n // Connection should be closed by whoever created it\n }\n}\n"],"mappings":";;;;;AAaA,IAAa,eAAb,MAAa,aAEb;CACE,AAAS;CAET,YACWA,YACTC,UAA+B,CAAE,GACjC;EAFS;AAGT,OAAK,UAAU,EACb,cAAc,QAAQ,gBAAgB,GACvC;CACF;;;;;CAMD,aAAa,qBAEXC,kBAA2D;EAC3D,MAAM,MAAM,IAAI,IAAI;EACpB,MAAM,SAAS,IAAI;EAEnB,MAAM,EAAE,eAAe,GAAG,2CAAM;EAChC,MAAM,aACJ,MAAM,cAAc,qBAAqB,iBAAiB;EAE5D,MAAMD,UAA+B,EACnC,cAAc,OAAO,IAAI,eAAe,GACpC,OAAO,SAAS,OAAO,IAAI,eAAe,EAAG,GAAG,UAErD;AAED,SAAO,IAAI,aAAuB,YAAY;CAC/C;CAED,MAAM,QAAQE,UAAqC;AACjD,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;EAIjC,MAAM,UAAU,0BAAM,UAAU,KAAK,QAAQ,aAAa;AAG1D,QAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;CACjE;CAED,MAAc,UAAUA,UAAqC;EAC3D,MAAMC,UAA0C,SAAS,IACvD,CAAC,SAAS,WAAW;GACnB,KAAK,EAAE,MAAM;GACb,aAAa,KAAK,UAAU;IAC1B,MAAM,QAAQ;IACd,SAAS,QAAQ;GAClB,EAAC;GACF,mBAAmB,EACjB,MAAM;IACJ,UAAU;IACV,aAAa,QAAQ;GACtB,EACF;EACF,GACF;EAED,MAAMC,QAAsC;GAC1C,UAAU,KAAK,WAAW;GAC1B,SAAS;EACV;EAED,MAAM,UAAU,IAAIC,6CAAwB;EAC5C,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAG9D,MAAI,SAAS,UAAU,SAAS,OAAO,SAAS,GAAG;GACjD,MAAM,SAAS,SAAS,OAAO,IAC7B,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,EAAE,QAAQ,EAC1C,CAAC,KAAK,KAAK;AACZ,SAAM,IAAI,OACP,iBAAiB,SAAS,OAAO,OAAO,aAAa,OAAO;EAEhE;CACF;CAED,MAAM,QAAuB,CAG5B;AACF"}
@@ -118,4 +118,4 @@ var SQSSubscriber = class {
118
118
 
119
119
  //#endregion
120
120
  export { SQSSubscriber };
121
- //# sourceMappingURL=SQSSubscriber-CD66P7hH.mjs.map
121
+ //# sourceMappingURL=SQSSubscriber-84pFnW1z.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQSSubscriber-CD66P7hH.mjs","names":["connection: SQSConnection","options: SQSSubscriberOptions","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","messages: Message[]","body: string","receiptHandle: string","ms: number"],"sources":["../src/sqs/SQSSubscriber.ts"],"sourcesContent":["import {\n DeleteMessageCommand,\n type Message,\n ReceiveMessageCommand,\n} from '@aws-sdk/client-sqs';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSSubscriberOptions {\n waitTimeSeconds?: number; // SQS long polling (default: 20)\n maxMessages?: number; // Max messages per poll (default: 10)\n expectedTopicArn?: 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 implements EventSubscriber<TMessage>\n{\n private polling = false;\n private messageTypes: Set<TMessage['type']> = new Set();\n private listener?: (payload: TMessage) => Promise<void>;\n private options: Required<SQSSubscriberOptions>;\n\n constructor(\n private connection: SQSConnection,\n options: SQSSubscriberOptions = {},\n ) {\n this.options = {\n waitTimeSeconds: options.waitTimeSeconds ?? 20,\n maxMessages: options.maxMessages ?? 10,\n expectedTopicArn: options.expectedTopicArn ?? '',\n };\n }\n\n async subscribe(\n messages: TMessage['type'][],\n listener: (payload: TMessage) => Promise<void>,\n ): Promise<void> {\n this.messageTypes = new Set(messages);\n this.listener = listener;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n this.polling = true;\n this.poll();\n }\n\n stop(): void {\n this.polling = false;\n }\n\n private async poll(): Promise<void> {\n while (this.polling) {\n try {\n const command = new ReceiveMessageCommand({\n QueueUrl: this.connection.queueUrl,\n MaxNumberOfMessages: this.options.maxMessages,\n WaitTimeSeconds: this.options.waitTimeSeconds,\n MessageAttributeNames: ['All'],\n });\n\n const response = await this.connection.sqsClient.send(command);\n\n if (response.Messages && response.Messages.length > 0) {\n await this.processMessages(response.Messages);\n }\n } catch (error) {\n console.error('Error receiving messages from SQS:', error);\n await this.sleep(1000);\n }\n }\n }\n\n private async processMessages(messages: Message[]): Promise<void> {\n for (const message of messages) {\n try {\n if (!message.Body) continue;\n\n // Try to parse as SNS message first\n const parsedMessage = this.parseMessage(message.Body);\n\n if (!parsedMessage) {\n // Not a valid message format\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n\n const { payload, messageType, topicArn } = parsedMessage;\n\n // If expectedTopicArn is set, verify the message is from that topic\n if (this.options.expectedTopicArn && topicArn) {\n if (topicArn !== this.options.expectedTopicArn) {\n console.warn(\n `Received message from unexpected topic: ${topicArn}, expected: ${this.options.expectedTopicArn}`,\n );\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n }\n\n // Check if we're subscribed to this message type\n if (\n messageType &&\n this.messageTypes.has(messageType as TMessage['type'])\n ) {\n // Call listener\n if (this.listener) {\n await this.listener(payload as TMessage);\n }\n\n // Delete message after successful processing\n await this.deleteMessage(message.ReceiptHandle!);\n } else {\n // Delete messages we're not subscribed to\n await this.deleteMessage(message.ReceiptHandle!);\n }\n } catch (error) {\n console.error('Error processing message:', error);\n // Message will become visible again\n }\n }\n }\n\n /**\n * Parse message body - handles both direct SQS messages and SNS-wrapped messages\n */\n private parseMessage(body: string): {\n payload: unknown;\n messageType: string | undefined;\n topicArn?: string;\n } | null {\n try {\n const parsed = JSON.parse(body);\n\n // Check if this is an SNS notification wrapper\n if (parsed.Type === 'Notification' && parsed.Message) {\n // This is an SNS message\n const snsMessage = JSON.parse(parsed.Message);\n const messageType =\n parsed.MessageAttributes?.type?.Value || snsMessage.type;\n\n return {\n payload: snsMessage,\n messageType,\n topicArn: parsed.TopicArn,\n };\n }\n\n // This is a direct SQS message\n return {\n payload: parsed,\n messageType: parsed.type,\n };\n } catch (error) {\n console.error('Failed to parse message:', error);\n return null;\n }\n }\n\n private async deleteMessage(receiptHandle: string): Promise<void> {\n try {\n const command = new DeleteMessageCommand({\n QueueUrl: this.connection.queueUrl,\n ReceiptHandle: receiptHandle,\n });\n await this.connection.sqsClient.send(command);\n } catch (error) {\n console.error('Error deleting message:', error);\n }\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA2BA,IAAa,gBAAb,MAEA;CACE,AAAQ,UAAU;CAClB,AAAQ,+BAAsC,IAAI;CAClD,AAAQ;CACR,AAAQ;CAER,YACUA,YACRC,UAAgC,CAAE,GAClC;EAFQ;AAGR,OAAK,UAAU;GACb,iBAAiB,QAAQ,mBAAmB;GAC5C,aAAa,QAAQ,eAAe;GACpC,kBAAkB,QAAQ,oBAAoB;EAC/C;CACF;CAED,MAAM,UACJC,UACAC,UACe;AACf,OAAK,eAAe,IAAI,IAAI;AAC5B,OAAK,WAAW;AAEhB,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;AAGjC,OAAK,UAAU;AACf,OAAK,MAAM;CACZ;CAED,OAAa;AACX,OAAK,UAAU;CAChB;CAED,MAAc,OAAsB;AAClC,SAAO,KAAK,QACV,KAAI;GACF,MAAM,UAAU,IAAI,sBAAsB;IACxC,UAAU,KAAK,WAAW;IAC1B,qBAAqB,KAAK,QAAQ;IAClC,iBAAiB,KAAK,QAAQ;IAC9B,uBAAuB,CAAC,KAAM;GAC/B;GAED,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAE9D,OAAI,SAAS,YAAY,SAAS,SAAS,SAAS,EAClD,OAAM,KAAK,gBAAgB,SAAS,SAAS;EAEhD,SAAQ,OAAO;AACd,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAM,KAAK,MAAM,IAAK;EACvB;CAEJ;CAED,MAAc,gBAAgBC,UAAoC;AAChE,OAAK,MAAM,WAAW,SACpB,KAAI;AACF,QAAK,QAAQ,KAAM;GAGnB,MAAM,gBAAgB,KAAK,aAAa,QAAQ,KAAK;AAErD,QAAK,eAAe;AAElB,UAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;GACD;GAED,MAAM,EAAE,SAAS,aAAa,UAAU,GAAG;AAG3C,OAAI,KAAK,QAAQ,oBAAoB,UACnC;QAAI,aAAa,KAAK,QAAQ,kBAAkB;AAC9C,aAAQ,MACL,0CAA0C,SAAS,cAAc,KAAK,QAAQ,iBAAiB,EACjG;AACD,WAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;IACD;;AAIH,OACE,eACA,KAAK,aAAa,IAAI,YAAgC,EACtD;AAEA,QAAI,KAAK,SACP,OAAM,KAAK,SAAS,QAAoB;AAI1C,UAAM,KAAK,cAAc,QAAQ,cAAe;GACjD,MAEC,OAAM,KAAK,cAAc,QAAQ,cAAe;EAEnD,SAAQ,OAAO;AACd,WAAQ,MAAM,6BAA6B,MAAM;EAElD;CAEJ;;;;CAKD,AAAQ,aAAaC,MAIZ;AACP,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,KAAK;AAG/B,OAAI,OAAO,SAAS,kBAAkB,OAAO,SAAS;IAEpD,MAAM,aAAa,KAAK,MAAM,OAAO,QAAQ;IAC7C,MAAM,cACJ,OAAO,mBAAmB,MAAM,SAAS,WAAW;AAEtD,WAAO;KACL,SAAS;KACT;KACA,UAAU,OAAO;IAClB;GACF;AAGD,UAAO;IACL,SAAS;IACT,aAAa,OAAO;GACrB;EACF,SAAQ,OAAO;AACd,WAAQ,MAAM,4BAA4B,MAAM;AAChD,UAAO;EACR;CACF;CAED,MAAc,cAAcC,eAAsC;AAChE,MAAI;GACF,MAAM,UAAU,IAAI,qBAAqB;IACvC,UAAU,KAAK,WAAW;IAC1B,eAAe;GAChB;AACD,SAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;EAC9C,SAAQ,OAAO;AACd,WAAQ,MAAM,2BAA2B,MAAM;EAChD;CACF;CAED,AAAQ,MAAMC,IAA2B;AACvC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;CACxD;AACF"}
1
+ {"version":3,"file":"SQSSubscriber-84pFnW1z.mjs","names":["connection: SQSConnection","options: SQSSubscriberOptions","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","messages: Message[]","body: string","receiptHandle: string","ms: number"],"sources":["../src/sqs/SQSSubscriber.ts"],"sourcesContent":["import {\n DeleteMessageCommand,\n type Message,\n ReceiveMessageCommand,\n} from '@aws-sdk/client-sqs';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSSubscriberOptions {\n waitTimeSeconds?: number; // SQS long polling (default: 20)\n maxMessages?: number; // Max messages per poll (default: 10)\n expectedTopicArn?: 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 implements EventSubscriber<TMessage>\n{\n private polling = false;\n private messageTypes: Set<TMessage['type']> = new Set();\n private listener?: (payload: TMessage) => Promise<void>;\n private options: Required<SQSSubscriberOptions>;\n\n constructor(\n private connection: SQSConnection,\n options: SQSSubscriberOptions = {},\n ) {\n this.options = {\n waitTimeSeconds: options.waitTimeSeconds ?? 20,\n maxMessages: options.maxMessages ?? 10,\n expectedTopicArn: options.expectedTopicArn ?? '',\n };\n }\n\n async subscribe(\n messages: TMessage['type'][],\n listener: (payload: TMessage) => Promise<void>,\n ): Promise<void> {\n this.messageTypes = new Set(messages);\n this.listener = listener;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n this.polling = true;\n this.poll();\n }\n\n stop(): void {\n this.polling = false;\n }\n\n private async poll(): Promise<void> {\n while (this.polling) {\n try {\n const command = new ReceiveMessageCommand({\n QueueUrl: this.connection.queueUrl,\n MaxNumberOfMessages: this.options.maxMessages,\n WaitTimeSeconds: this.options.waitTimeSeconds,\n MessageAttributeNames: ['All'],\n });\n\n const response = await this.connection.sqsClient.send(command);\n\n if (response.Messages && response.Messages.length > 0) {\n await this.processMessages(response.Messages);\n }\n } catch (error) {\n console.error('Error receiving messages from SQS:', error);\n await this.sleep(1000);\n }\n }\n }\n\n private async processMessages(messages: Message[]): Promise<void> {\n for (const message of messages) {\n try {\n if (!message.Body) continue;\n\n // Try to parse as SNS message first\n const parsedMessage = this.parseMessage(message.Body);\n\n if (!parsedMessage) {\n // Not a valid message format\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n\n const { payload, messageType, topicArn } = parsedMessage;\n\n // If expectedTopicArn is set, verify the message is from that topic\n if (this.options.expectedTopicArn && topicArn) {\n if (topicArn !== this.options.expectedTopicArn) {\n console.warn(\n `Received message from unexpected topic: ${topicArn}, expected: ${this.options.expectedTopicArn}`,\n );\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n }\n\n // Check if we're subscribed to this message type\n if (\n messageType &&\n this.messageTypes.has(messageType as TMessage['type'])\n ) {\n // Call listener\n if (this.listener) {\n await this.listener(payload as TMessage);\n }\n\n // Delete message after successful processing\n await this.deleteMessage(message.ReceiptHandle!);\n } else {\n // Delete messages we're not subscribed to\n await this.deleteMessage(message.ReceiptHandle!);\n }\n } catch (error) {\n console.error('Error processing message:', error);\n // Message will become visible again\n }\n }\n }\n\n /**\n * Parse message body - handles both direct SQS messages and SNS-wrapped messages\n */\n private parseMessage(body: string): {\n payload: unknown;\n messageType: string | undefined;\n topicArn?: string;\n } | null {\n try {\n const parsed = JSON.parse(body);\n\n // Check if this is an SNS notification wrapper\n if (parsed.Type === 'Notification' && parsed.Message) {\n // This is an SNS message\n const snsMessage = JSON.parse(parsed.Message);\n const messageType =\n parsed.MessageAttributes?.type?.Value || snsMessage.type;\n\n return {\n payload: snsMessage,\n messageType,\n topicArn: parsed.TopicArn,\n };\n }\n\n // This is a direct SQS message\n return {\n payload: parsed,\n messageType: parsed.type,\n };\n } catch (error) {\n console.error('Failed to parse message:', error);\n return null;\n }\n }\n\n private async deleteMessage(receiptHandle: string): Promise<void> {\n try {\n const command = new DeleteMessageCommand({\n QueueUrl: this.connection.queueUrl,\n ReceiptHandle: receiptHandle,\n });\n await this.connection.sqsClient.send(command);\n } catch (error) {\n console.error('Error deleting message:', error);\n }\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA2BA,IAAa,gBAAb,MAEA;CACE,AAAQ,UAAU;CAClB,AAAQ,+BAAsC,IAAI;CAClD,AAAQ;CACR,AAAQ;CAER,YACUA,YACRC,UAAgC,CAAE,GAClC;EAFQ;AAGR,OAAK,UAAU;GACb,iBAAiB,QAAQ,mBAAmB;GAC5C,aAAa,QAAQ,eAAe;GACpC,kBAAkB,QAAQ,oBAAoB;EAC/C;CACF;CAED,MAAM,UACJC,UACAC,UACe;AACf,OAAK,eAAe,IAAI,IAAI;AAC5B,OAAK,WAAW;AAEhB,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;AAGjC,OAAK,UAAU;AACf,OAAK,MAAM;CACZ;CAED,OAAa;AACX,OAAK,UAAU;CAChB;CAED,MAAc,OAAsB;AAClC,SAAO,KAAK,QACV,KAAI;GACF,MAAM,UAAU,IAAI,sBAAsB;IACxC,UAAU,KAAK,WAAW;IAC1B,qBAAqB,KAAK,QAAQ;IAClC,iBAAiB,KAAK,QAAQ;IAC9B,uBAAuB,CAAC,KAAM;GAC/B;GAED,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAE9D,OAAI,SAAS,YAAY,SAAS,SAAS,SAAS,EAClD,OAAM,KAAK,gBAAgB,SAAS,SAAS;EAEhD,SAAQ,OAAO;AACd,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAM,KAAK,MAAM,IAAK;EACvB;CAEJ;CAED,MAAc,gBAAgBC,UAAoC;AAChE,OAAK,MAAM,WAAW,SACpB,KAAI;AACF,QAAK,QAAQ,KAAM;GAGnB,MAAM,gBAAgB,KAAK,aAAa,QAAQ,KAAK;AAErD,QAAK,eAAe;AAElB,UAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;GACD;GAED,MAAM,EAAE,SAAS,aAAa,UAAU,GAAG;AAG3C,OAAI,KAAK,QAAQ,oBAAoB,UACnC;QAAI,aAAa,KAAK,QAAQ,kBAAkB;AAC9C,aAAQ,MACL,0CAA0C,SAAS,cAAc,KAAK,QAAQ,iBAAiB,EACjG;AACD,WAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;IACD;;AAIH,OACE,eACA,KAAK,aAAa,IAAI,YAAgC,EACtD;AAEA,QAAI,KAAK,SACP,OAAM,KAAK,SAAS,QAAoB;AAI1C,UAAM,KAAK,cAAc,QAAQ,cAAe;GACjD,MAEC,OAAM,KAAK,cAAc,QAAQ,cAAe;EAEnD,SAAQ,OAAO;AACd,WAAQ,MAAM,6BAA6B,MAAM;EAElD;CAEJ;;;;CAKD,AAAQ,aAAaC,MAIZ;AACP,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,KAAK;AAG/B,OAAI,OAAO,SAAS,kBAAkB,OAAO,SAAS;IAEpD,MAAM,aAAa,KAAK,MAAM,OAAO,QAAQ;IAC7C,MAAM,cACJ,OAAO,mBAAmB,MAAM,SAAS,WAAW;AAEtD,WAAO;KACL,SAAS;KACT;KACA,UAAU,OAAO;IAClB;GACF;AAGD,UAAO;IACL,SAAS;IACT,aAAa,OAAO;GACrB;EACF,SAAQ,OAAO;AACd,WAAQ,MAAM,4BAA4B,MAAM;AAChD,UAAO;EACR;CACF;CAED,MAAc,cAAcC,eAAsC;AAChE,MAAI;GACF,MAAM,UAAU,IAAI,qBAAqB;IACvC,UAAU,KAAK,WAAW;IAC1B,eAAe;GAChB;AACD,SAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;EAC9C,SAAQ,OAAO;AACd,WAAQ,MAAM,2BAA2B,MAAM;EAChD;CACF;CAED,AAAQ,MAAMC,IAA2B;AACvC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;CACxD;AACF"}
@@ -124,4 +124,4 @@ Object.defineProperty(exports, 'SQSSubscriber', {
124
124
  return SQSSubscriber;
125
125
  }
126
126
  });
127
- //# sourceMappingURL=SQSSubscriber-DZDNgLE5.cjs.map
127
+ //# sourceMappingURL=SQSSubscriber-DcL9BbG1.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQSSubscriber-DZDNgLE5.cjs","names":["connection: SQSConnection","options: SQSSubscriberOptions","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","ReceiveMessageCommand","messages: Message[]","body: string","receiptHandle: string","DeleteMessageCommand","ms: number"],"sources":["../src/sqs/SQSSubscriber.ts"],"sourcesContent":["import {\n DeleteMessageCommand,\n type Message,\n ReceiveMessageCommand,\n} from '@aws-sdk/client-sqs';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSSubscriberOptions {\n waitTimeSeconds?: number; // SQS long polling (default: 20)\n maxMessages?: number; // Max messages per poll (default: 10)\n expectedTopicArn?: 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 implements EventSubscriber<TMessage>\n{\n private polling = false;\n private messageTypes: Set<TMessage['type']> = new Set();\n private listener?: (payload: TMessage) => Promise<void>;\n private options: Required<SQSSubscriberOptions>;\n\n constructor(\n private connection: SQSConnection,\n options: SQSSubscriberOptions = {},\n ) {\n this.options = {\n waitTimeSeconds: options.waitTimeSeconds ?? 20,\n maxMessages: options.maxMessages ?? 10,\n expectedTopicArn: options.expectedTopicArn ?? '',\n };\n }\n\n async subscribe(\n messages: TMessage['type'][],\n listener: (payload: TMessage) => Promise<void>,\n ): Promise<void> {\n this.messageTypes = new Set(messages);\n this.listener = listener;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n this.polling = true;\n this.poll();\n }\n\n stop(): void {\n this.polling = false;\n }\n\n private async poll(): Promise<void> {\n while (this.polling) {\n try {\n const command = new ReceiveMessageCommand({\n QueueUrl: this.connection.queueUrl,\n MaxNumberOfMessages: this.options.maxMessages,\n WaitTimeSeconds: this.options.waitTimeSeconds,\n MessageAttributeNames: ['All'],\n });\n\n const response = await this.connection.sqsClient.send(command);\n\n if (response.Messages && response.Messages.length > 0) {\n await this.processMessages(response.Messages);\n }\n } catch (error) {\n console.error('Error receiving messages from SQS:', error);\n await this.sleep(1000);\n }\n }\n }\n\n private async processMessages(messages: Message[]): Promise<void> {\n for (const message of messages) {\n try {\n if (!message.Body) continue;\n\n // Try to parse as SNS message first\n const parsedMessage = this.parseMessage(message.Body);\n\n if (!parsedMessage) {\n // Not a valid message format\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n\n const { payload, messageType, topicArn } = parsedMessage;\n\n // If expectedTopicArn is set, verify the message is from that topic\n if (this.options.expectedTopicArn && topicArn) {\n if (topicArn !== this.options.expectedTopicArn) {\n console.warn(\n `Received message from unexpected topic: ${topicArn}, expected: ${this.options.expectedTopicArn}`,\n );\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n }\n\n // Check if we're subscribed to this message type\n if (\n messageType &&\n this.messageTypes.has(messageType as TMessage['type'])\n ) {\n // Call listener\n if (this.listener) {\n await this.listener(payload as TMessage);\n }\n\n // Delete message after successful processing\n await this.deleteMessage(message.ReceiptHandle!);\n } else {\n // Delete messages we're not subscribed to\n await this.deleteMessage(message.ReceiptHandle!);\n }\n } catch (error) {\n console.error('Error processing message:', error);\n // Message will become visible again\n }\n }\n }\n\n /**\n * Parse message body - handles both direct SQS messages and SNS-wrapped messages\n */\n private parseMessage(body: string): {\n payload: unknown;\n messageType: string | undefined;\n topicArn?: string;\n } | null {\n try {\n const parsed = JSON.parse(body);\n\n // Check if this is an SNS notification wrapper\n if (parsed.Type === 'Notification' && parsed.Message) {\n // This is an SNS message\n const snsMessage = JSON.parse(parsed.Message);\n const messageType =\n parsed.MessageAttributes?.type?.Value || snsMessage.type;\n\n return {\n payload: snsMessage,\n messageType,\n topicArn: parsed.TopicArn,\n };\n }\n\n // This is a direct SQS message\n return {\n payload: parsed,\n messageType: parsed.type,\n };\n } catch (error) {\n console.error('Failed to parse message:', error);\n return null;\n }\n }\n\n private async deleteMessage(receiptHandle: string): Promise<void> {\n try {\n const command = new DeleteMessageCommand({\n QueueUrl: this.connection.queueUrl,\n ReceiptHandle: receiptHandle,\n });\n await this.connection.sqsClient.send(command);\n } catch (error) {\n console.error('Error deleting message:', error);\n }\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,IAAa,gBAAb,MAEA;CACE,AAAQ,UAAU;CAClB,AAAQ,+BAAsC,IAAI;CAClD,AAAQ;CACR,AAAQ;CAER,YACUA,YACRC,UAAgC,CAAE,GAClC;EAFQ;AAGR,OAAK,UAAU;GACb,iBAAiB,QAAQ,mBAAmB;GAC5C,aAAa,QAAQ,eAAe;GACpC,kBAAkB,QAAQ,oBAAoB;EAC/C;CACF;CAED,MAAM,UACJC,UACAC,UACe;AACf,OAAK,eAAe,IAAI,IAAI;AAC5B,OAAK,WAAW;AAEhB,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;AAGjC,OAAK,UAAU;AACf,OAAK,MAAM;CACZ;CAED,OAAa;AACX,OAAK,UAAU;CAChB;CAED,MAAc,OAAsB;AAClC,SAAO,KAAK,QACV,KAAI;GACF,MAAM,UAAU,IAAIC,2CAAsB;IACxC,UAAU,KAAK,WAAW;IAC1B,qBAAqB,KAAK,QAAQ;IAClC,iBAAiB,KAAK,QAAQ;IAC9B,uBAAuB,CAAC,KAAM;GAC/B;GAED,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAE9D,OAAI,SAAS,YAAY,SAAS,SAAS,SAAS,EAClD,OAAM,KAAK,gBAAgB,SAAS,SAAS;EAEhD,SAAQ,OAAO;AACd,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAM,KAAK,MAAM,IAAK;EACvB;CAEJ;CAED,MAAc,gBAAgBC,UAAoC;AAChE,OAAK,MAAM,WAAW,SACpB,KAAI;AACF,QAAK,QAAQ,KAAM;GAGnB,MAAM,gBAAgB,KAAK,aAAa,QAAQ,KAAK;AAErD,QAAK,eAAe;AAElB,UAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;GACD;GAED,MAAM,EAAE,SAAS,aAAa,UAAU,GAAG;AAG3C,OAAI,KAAK,QAAQ,oBAAoB,UACnC;QAAI,aAAa,KAAK,QAAQ,kBAAkB;AAC9C,aAAQ,MACL,0CAA0C,SAAS,cAAc,KAAK,QAAQ,iBAAiB,EACjG;AACD,WAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;IACD;;AAIH,OACE,eACA,KAAK,aAAa,IAAI,YAAgC,EACtD;AAEA,QAAI,KAAK,SACP,OAAM,KAAK,SAAS,QAAoB;AAI1C,UAAM,KAAK,cAAc,QAAQ,cAAe;GACjD,MAEC,OAAM,KAAK,cAAc,QAAQ,cAAe;EAEnD,SAAQ,OAAO;AACd,WAAQ,MAAM,6BAA6B,MAAM;EAElD;CAEJ;;;;CAKD,AAAQ,aAAaC,MAIZ;AACP,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,KAAK;AAG/B,OAAI,OAAO,SAAS,kBAAkB,OAAO,SAAS;IAEpD,MAAM,aAAa,KAAK,MAAM,OAAO,QAAQ;IAC7C,MAAM,cACJ,OAAO,mBAAmB,MAAM,SAAS,WAAW;AAEtD,WAAO;KACL,SAAS;KACT;KACA,UAAU,OAAO;IAClB;GACF;AAGD,UAAO;IACL,SAAS;IACT,aAAa,OAAO;GACrB;EACF,SAAQ,OAAO;AACd,WAAQ,MAAM,4BAA4B,MAAM;AAChD,UAAO;EACR;CACF;CAED,MAAc,cAAcC,eAAsC;AAChE,MAAI;GACF,MAAM,UAAU,IAAIC,0CAAqB;IACvC,UAAU,KAAK,WAAW;IAC1B,eAAe;GAChB;AACD,SAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;EAC9C,SAAQ,OAAO;AACd,WAAQ,MAAM,2BAA2B,MAAM;EAChD;CACF;CAED,AAAQ,MAAMC,IAA2B;AACvC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;CACxD;AACF"}
1
+ {"version":3,"file":"SQSSubscriber-DcL9BbG1.cjs","names":["connection: SQSConnection","options: SQSSubscriberOptions","messages: TMessage['type'][]","listener: (payload: TMessage) => Promise<void>","ReceiveMessageCommand","messages: Message[]","body: string","receiptHandle: string","DeleteMessageCommand","ms: number"],"sources":["../src/sqs/SQSSubscriber.ts"],"sourcesContent":["import {\n DeleteMessageCommand,\n type Message,\n ReceiveMessageCommand,\n} from '@aws-sdk/client-sqs';\nimport type { EventSubscriber, PublishableMessage } from '../types';\nimport type { SQSConnection } from './SQSConnection';\n\nexport interface SQSSubscriberOptions {\n waitTimeSeconds?: number; // SQS long polling (default: 20)\n maxMessages?: number; // Max messages per poll (default: 10)\n expectedTopicArn?: 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 implements EventSubscriber<TMessage>\n{\n private polling = false;\n private messageTypes: Set<TMessage['type']> = new Set();\n private listener?: (payload: TMessage) => Promise<void>;\n private options: Required<SQSSubscriberOptions>;\n\n constructor(\n private connection: SQSConnection,\n options: SQSSubscriberOptions = {},\n ) {\n this.options = {\n waitTimeSeconds: options.waitTimeSeconds ?? 20,\n maxMessages: options.maxMessages ?? 10,\n expectedTopicArn: options.expectedTopicArn ?? '',\n };\n }\n\n async subscribe(\n messages: TMessage['type'][],\n listener: (payload: TMessage) => Promise<void>,\n ): Promise<void> {\n this.messageTypes = new Set(messages);\n this.listener = listener;\n\n if (!this.connection.isConnected()) {\n await this.connection.connect();\n }\n\n this.polling = true;\n this.poll();\n }\n\n stop(): void {\n this.polling = false;\n }\n\n private async poll(): Promise<void> {\n while (this.polling) {\n try {\n const command = new ReceiveMessageCommand({\n QueueUrl: this.connection.queueUrl,\n MaxNumberOfMessages: this.options.maxMessages,\n WaitTimeSeconds: this.options.waitTimeSeconds,\n MessageAttributeNames: ['All'],\n });\n\n const response = await this.connection.sqsClient.send(command);\n\n if (response.Messages && response.Messages.length > 0) {\n await this.processMessages(response.Messages);\n }\n } catch (error) {\n console.error('Error receiving messages from SQS:', error);\n await this.sleep(1000);\n }\n }\n }\n\n private async processMessages(messages: Message[]): Promise<void> {\n for (const message of messages) {\n try {\n if (!message.Body) continue;\n\n // Try to parse as SNS message first\n const parsedMessage = this.parseMessage(message.Body);\n\n if (!parsedMessage) {\n // Not a valid message format\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n\n const { payload, messageType, topicArn } = parsedMessage;\n\n // If expectedTopicArn is set, verify the message is from that topic\n if (this.options.expectedTopicArn && topicArn) {\n if (topicArn !== this.options.expectedTopicArn) {\n console.warn(\n `Received message from unexpected topic: ${topicArn}, expected: ${this.options.expectedTopicArn}`,\n );\n await this.deleteMessage(message.ReceiptHandle!);\n continue;\n }\n }\n\n // Check if we're subscribed to this message type\n if (\n messageType &&\n this.messageTypes.has(messageType as TMessage['type'])\n ) {\n // Call listener\n if (this.listener) {\n await this.listener(payload as TMessage);\n }\n\n // Delete message after successful processing\n await this.deleteMessage(message.ReceiptHandle!);\n } else {\n // Delete messages we're not subscribed to\n await this.deleteMessage(message.ReceiptHandle!);\n }\n } catch (error) {\n console.error('Error processing message:', error);\n // Message will become visible again\n }\n }\n }\n\n /**\n * Parse message body - handles both direct SQS messages and SNS-wrapped messages\n */\n private parseMessage(body: string): {\n payload: unknown;\n messageType: string | undefined;\n topicArn?: string;\n } | null {\n try {\n const parsed = JSON.parse(body);\n\n // Check if this is an SNS notification wrapper\n if (parsed.Type === 'Notification' && parsed.Message) {\n // This is an SNS message\n const snsMessage = JSON.parse(parsed.Message);\n const messageType =\n parsed.MessageAttributes?.type?.Value || snsMessage.type;\n\n return {\n payload: snsMessage,\n messageType,\n topicArn: parsed.TopicArn,\n };\n }\n\n // This is a direct SQS message\n return {\n payload: parsed,\n messageType: parsed.type,\n };\n } catch (error) {\n console.error('Failed to parse message:', error);\n return null;\n }\n }\n\n private async deleteMessage(receiptHandle: string): Promise<void> {\n try {\n const command = new DeleteMessageCommand({\n QueueUrl: this.connection.queueUrl,\n ReceiptHandle: receiptHandle,\n });\n await this.connection.sqsClient.send(command);\n } catch (error) {\n console.error('Error deleting message:', error);\n }\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,IAAa,gBAAb,MAEA;CACE,AAAQ,UAAU;CAClB,AAAQ,+BAAsC,IAAI;CAClD,AAAQ;CACR,AAAQ;CAER,YACUA,YACRC,UAAgC,CAAE,GAClC;EAFQ;AAGR,OAAK,UAAU;GACb,iBAAiB,QAAQ,mBAAmB;GAC5C,aAAa,QAAQ,eAAe;GACpC,kBAAkB,QAAQ,oBAAoB;EAC/C;CACF;CAED,MAAM,UACJC,UACAC,UACe;AACf,OAAK,eAAe,IAAI,IAAI;AAC5B,OAAK,WAAW;AAEhB,OAAK,KAAK,WAAW,aAAa,CAChC,OAAM,KAAK,WAAW,SAAS;AAGjC,OAAK,UAAU;AACf,OAAK,MAAM;CACZ;CAED,OAAa;AACX,OAAK,UAAU;CAChB;CAED,MAAc,OAAsB;AAClC,SAAO,KAAK,QACV,KAAI;GACF,MAAM,UAAU,IAAIC,2CAAsB;IACxC,UAAU,KAAK,WAAW;IAC1B,qBAAqB,KAAK,QAAQ;IAClC,iBAAiB,KAAK,QAAQ;IAC9B,uBAAuB,CAAC,KAAM;GAC/B;GAED,MAAM,WAAW,MAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;AAE9D,OAAI,SAAS,YAAY,SAAS,SAAS,SAAS,EAClD,OAAM,KAAK,gBAAgB,SAAS,SAAS;EAEhD,SAAQ,OAAO;AACd,WAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAM,KAAK,MAAM,IAAK;EACvB;CAEJ;CAED,MAAc,gBAAgBC,UAAoC;AAChE,OAAK,MAAM,WAAW,SACpB,KAAI;AACF,QAAK,QAAQ,KAAM;GAGnB,MAAM,gBAAgB,KAAK,aAAa,QAAQ,KAAK;AAErD,QAAK,eAAe;AAElB,UAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;GACD;GAED,MAAM,EAAE,SAAS,aAAa,UAAU,GAAG;AAG3C,OAAI,KAAK,QAAQ,oBAAoB,UACnC;QAAI,aAAa,KAAK,QAAQ,kBAAkB;AAC9C,aAAQ,MACL,0CAA0C,SAAS,cAAc,KAAK,QAAQ,iBAAiB,EACjG;AACD,WAAM,KAAK,cAAc,QAAQ,cAAe;AAChD;IACD;;AAIH,OACE,eACA,KAAK,aAAa,IAAI,YAAgC,EACtD;AAEA,QAAI,KAAK,SACP,OAAM,KAAK,SAAS,QAAoB;AAI1C,UAAM,KAAK,cAAc,QAAQ,cAAe;GACjD,MAEC,OAAM,KAAK,cAAc,QAAQ,cAAe;EAEnD,SAAQ,OAAO;AACd,WAAQ,MAAM,6BAA6B,MAAM;EAElD;CAEJ;;;;CAKD,AAAQ,aAAaC,MAIZ;AACP,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,KAAK;AAG/B,OAAI,OAAO,SAAS,kBAAkB,OAAO,SAAS;IAEpD,MAAM,aAAa,KAAK,MAAM,OAAO,QAAQ;IAC7C,MAAM,cACJ,OAAO,mBAAmB,MAAM,SAAS,WAAW;AAEtD,WAAO;KACL,SAAS;KACT;KACA,UAAU,OAAO;IAClB;GACF;AAGD,UAAO;IACL,SAAS;IACT,aAAa,OAAO;GACrB;EACF,SAAQ,OAAO;AACd,WAAQ,MAAM,4BAA4B,MAAM;AAChD,UAAO;EACR;CACF;CAED,MAAc,cAAcC,eAAsC;AAChE,MAAI;GACF,MAAM,UAAU,IAAIC,0CAAqB;IACvC,UAAU,KAAK,WAAW;IAC1B,eAAe;GAChB;AACD,SAAM,KAAK,WAAW,UAAU,KAAK,QAAQ;EAC9C,SAAQ,OAAO;AACd,WAAQ,MAAM,2BAA2B,MAAM;EAChD;CACF;CAED,AAAQ,MAAMC,IAA2B;AACvC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;CACxD;AACF"}
@@ -1,4 +1,4 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_BasicConnection = require('../BasicConnection-C-Cg2FJT.cjs');
2
+ const require_BasicConnection = require('../BasicConnection-Bz3F2rXA.cjs');
3
3
 
4
4
  exports.BasicConnection = require_BasicConnection.BasicConnection;
@@ -1,4 +1,4 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { BasicConnection } from "../BasicConnection-CpwybcC9.mjs";
2
+ import { BasicConnection } from "../BasicConnection-DOSOFSsW.mjs";
3
3
 
4
4
  export { BasicConnection };
@@ -1,3 +1,3 @@
1
- const require_BasicPublisher = require('../BasicPublisher-CXAVKxgq.cjs');
1
+ const require_BasicPublisher = require('../BasicPublisher-afwuA4Xp.cjs');
2
2
 
3
3
  exports.BasicPublisher = require_BasicPublisher.BasicPublisher;
@@ -1,3 +1,3 @@
1
- import { BasicPublisher } from "../BasicPublisher-DogbeHAH.mjs";
1
+ import { BasicPublisher } from "../BasicPublisher-CaX8GCUi.mjs";
2
2
 
3
3
  export { BasicPublisher };
@@ -1,3 +1,3 @@
1
- const require_BasicSubscriber = require('../BasicSubscriber-BGqv3c8x.cjs');
1
+ const require_BasicSubscriber = require('../BasicSubscriber-Ckf3BkxS.cjs');
2
2
 
3
3
  exports.BasicSubscriber = require_BasicSubscriber.BasicSubscriber;
@@ -1,3 +1,3 @@
1
- import { BasicSubscriber } from "../BasicSubscriber-CCKfbRMo.mjs";
1
+ import { BasicSubscriber } from "../BasicSubscriber-DPpJNUUY.mjs";
2
2
 
3
3
  export { BasicSubscriber };
@@ -1,7 +1,7 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_BasicConnection = require('../BasicConnection-C-Cg2FJT.cjs');
3
- const require_BasicPublisher = require('../BasicPublisher-CXAVKxgq.cjs');
4
- const require_BasicSubscriber = require('../BasicSubscriber-BGqv3c8x.cjs');
2
+ const require_BasicConnection = require('../BasicConnection-Bz3F2rXA.cjs');
3
+ const require_BasicPublisher = require('../BasicPublisher-afwuA4Xp.cjs');
4
+ const require_BasicSubscriber = require('../BasicSubscriber-Ckf3BkxS.cjs');
5
5
 
6
6
  exports.BasicConnection = require_BasicConnection.BasicConnection;
7
7
  exports.BasicPublisher = require_BasicPublisher.BasicPublisher;
@@ -1,6 +1,6 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { BasicConnection } from "../BasicConnection-CpwybcC9.mjs";
3
- import { BasicPublisher } from "../BasicPublisher-DogbeHAH.mjs";
4
- import { BasicSubscriber } from "../BasicSubscriber-CCKfbRMo.mjs";
2
+ import { BasicConnection } from "../BasicConnection-DOSOFSsW.mjs";
3
+ import { BasicPublisher } from "../BasicPublisher-CaX8GCUi.mjs";
4
+ import { BasicSubscriber } from "../BasicSubscriber-DPpJNUUY.mjs";
5
5
 
6
6
  export { BasicConnection, BasicPublisher, BasicSubscriber };
@@ -1,4 +1,4 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_RabbitMQConnection = require('../RabbitMQConnection-ungB0Zl6.cjs');
2
+ const require_RabbitMQConnection = require('../RabbitMQConnection-BN_GybOv.cjs');
3
3
 
4
4
  exports.RabbitMQConnection = require_RabbitMQConnection.RabbitMQConnection;
@@ -1,4 +1,4 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { RabbitMQConnection } from "../RabbitMQConnection-kU3MvN5P.mjs";
2
+ import { RabbitMQConnection } from "../RabbitMQConnection-eVOVS4Dl.mjs";
3
3
 
4
4
  export { RabbitMQConnection };
@@ -1,3 +1,3 @@
1
- const require_RabbitMQPublisher = require('../RabbitMQPublisher--DL6GM6g.cjs');
1
+ const require_RabbitMQPublisher = require('../RabbitMQPublisher-CSCn6gMA.cjs');
2
2
 
3
3
  exports.RabbitMQPublisher = require_RabbitMQPublisher.RabbitMQPublisher;
@@ -1,3 +1,3 @@
1
- import { RabbitMQPublisher } from "../RabbitMQPublisher-o_oVI3wr.mjs";
1
+ import { RabbitMQPublisher } from "../RabbitMQPublisher-BZX0edgL.mjs";
2
2
 
3
3
  export { RabbitMQPublisher };
@@ -1,3 +1,3 @@
1
- const require_RabbitMQSubscriber = require('../RabbitMQSubscriber-BplEJEk8.cjs');
1
+ const require_RabbitMQSubscriber = require('../RabbitMQSubscriber-Cj7qLIi6.cjs');
2
2
 
3
3
  exports.RabbitMQSubscriber = require_RabbitMQSubscriber.RabbitMQSubscriber;
@@ -1,3 +1,3 @@
1
- import { RabbitMQSubscriber } from "../RabbitMQSubscriber-BaXqs5nO.mjs";
1
+ import { RabbitMQSubscriber } from "../RabbitMQSubscriber-B5I-hBaT.mjs";
2
2
 
3
3
  export { RabbitMQSubscriber };
@@ -1,7 +1,7 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_RabbitMQConnection = require('../RabbitMQConnection-ungB0Zl6.cjs');
3
- const require_RabbitMQPublisher = require('../RabbitMQPublisher--DL6GM6g.cjs');
4
- const require_RabbitMQSubscriber = require('../RabbitMQSubscriber-BplEJEk8.cjs');
2
+ const require_RabbitMQConnection = require('../RabbitMQConnection-BN_GybOv.cjs');
3
+ const require_RabbitMQPublisher = require('../RabbitMQPublisher-CSCn6gMA.cjs');
4
+ const require_RabbitMQSubscriber = require('../RabbitMQSubscriber-Cj7qLIi6.cjs');
5
5
 
6
6
  exports.RabbitMQConnection = require_RabbitMQConnection.RabbitMQConnection;
7
7
  exports.RabbitMQPublisher = require_RabbitMQPublisher.RabbitMQPublisher;
@@ -1,6 +1,6 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { RabbitMQConnection } from "../RabbitMQConnection-kU3MvN5P.mjs";
3
- import { RabbitMQPublisher } from "../RabbitMQPublisher-o_oVI3wr.mjs";
4
- import { RabbitMQSubscriber } from "../RabbitMQSubscriber-BaXqs5nO.mjs";
2
+ import { RabbitMQConnection } from "../RabbitMQConnection-eVOVS4Dl.mjs";
3
+ import { RabbitMQPublisher } from "../RabbitMQPublisher-BZX0edgL.mjs";
4
+ import { RabbitMQSubscriber } from "../RabbitMQSubscriber-B5I-hBaT.mjs";
5
5
 
6
6
  export { RabbitMQConnection, RabbitMQPublisher, RabbitMQSubscriber };
@@ -1,4 +1,4 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_SNSConnection = require('../SNSConnection-DVsC_pbB.cjs');
2
+ const require_SNSConnection = require('../SNSConnection-CZz_U56V.cjs');
3
3
 
4
4
  exports.SNSConnection = require_SNSConnection.SNSConnection;
@@ -1,4 +1,4 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { SNSConnection } from "../SNSConnection-D7wCf9Si.mjs";
2
+ import { SNSConnection } from "../SNSConnection-DVEE3XoC.mjs";
3
3
 
4
4
  export { SNSConnection };
@@ -1,3 +1,3 @@
1
- const require_SNSPublisher = require('../SNSPublisher-BZ6N3JI9.cjs');
1
+ const require_SNSPublisher = require('../SNSPublisher-DbWVH-g_.cjs');
2
2
 
3
3
  exports.SNSPublisher = require_SNSPublisher.SNSPublisher;
@@ -1,3 +1,3 @@
1
- import { SNSPublisher } from "../SNSPublisher-BfWjzNiB.mjs";
1
+ import { SNSPublisher } from "../SNSPublisher-Do-FMUyT.mjs";
2
2
 
3
3
  export { SNSPublisher };
@@ -1,6 +1,6 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- require('../SQSConnection-BwNjUPr4.cjs');
3
- require('../SQSSubscriber-DZDNgLE5.cjs');
4
- const require_SNSSubscriber = require('../SNSSubscriber-UE0ia4XM.cjs');
2
+ require('../SQSConnection-DWYDtftQ.cjs');
3
+ require('../SQSSubscriber-DcL9BbG1.cjs');
4
+ const require_SNSSubscriber = require('../SNSSubscriber-DpEwQ8Tb.cjs');
5
5
 
6
6
  exports.SNSSubscriber = require_SNSSubscriber.SNSSubscriber;
@@ -1,6 +1,6 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import "../SQSConnection-Eleqqre3.mjs";
3
- import "../SQSSubscriber-CD66P7hH.mjs";
4
- import { SNSSubscriber } from "../SNSSubscriber-C9YJWa7m.mjs";
2
+ import "../SQSConnection-BBlDWZLU.mjs";
3
+ import "../SQSSubscriber-84pFnW1z.mjs";
4
+ import { SNSSubscriber } from "../SNSSubscriber-e7eG48yJ.mjs";
5
5
 
6
6
  export { SNSSubscriber };
@@ -1,9 +1,9 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_SNSConnection = require('../SNSConnection-DVsC_pbB.cjs');
3
- const require_SNSPublisher = require('../SNSPublisher-BZ6N3JI9.cjs');
4
- require('../SQSConnection-BwNjUPr4.cjs');
5
- require('../SQSSubscriber-DZDNgLE5.cjs');
6
- const require_SNSSubscriber = require('../SNSSubscriber-UE0ia4XM.cjs');
2
+ const require_SNSConnection = require('../SNSConnection-CZz_U56V.cjs');
3
+ const require_SNSPublisher = require('../SNSPublisher-DbWVH-g_.cjs');
4
+ require('../SQSConnection-DWYDtftQ.cjs');
5
+ require('../SQSSubscriber-DcL9BbG1.cjs');
6
+ const require_SNSSubscriber = require('../SNSSubscriber-DpEwQ8Tb.cjs');
7
7
 
8
8
  exports.SNSConnection = require_SNSConnection.SNSConnection;
9
9
  exports.SNSPublisher = require_SNSPublisher.SNSPublisher;
@@ -1,8 +1,8 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { SNSConnection } from "../SNSConnection-D7wCf9Si.mjs";
3
- import { SNSPublisher } from "../SNSPublisher-BfWjzNiB.mjs";
4
- import "../SQSConnection-Eleqqre3.mjs";
5
- import "../SQSSubscriber-CD66P7hH.mjs";
6
- import { SNSSubscriber } from "../SNSSubscriber-C9YJWa7m.mjs";
2
+ import { SNSConnection } from "../SNSConnection-DVEE3XoC.mjs";
3
+ import { SNSPublisher } from "../SNSPublisher-Do-FMUyT.mjs";
4
+ import "../SQSConnection-BBlDWZLU.mjs";
5
+ import "../SQSSubscriber-84pFnW1z.mjs";
6
+ import { SNSSubscriber } from "../SNSSubscriber-e7eG48yJ.mjs";
7
7
 
8
8
  export { SNSConnection, SNSPublisher, SNSSubscriber };
@@ -1,4 +1,4 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_SQSConnection = require('../SQSConnection-BwNjUPr4.cjs');
2
+ const require_SQSConnection = require('../SQSConnection-DWYDtftQ.cjs');
3
3
 
4
4
  exports.SQSConnection = require_SQSConnection.SQSConnection;
@@ -1,4 +1,4 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { SQSConnection } from "../SQSConnection-Eleqqre3.mjs";
2
+ import { SQSConnection } from "../SQSConnection-BBlDWZLU.mjs";
3
3
 
4
4
  export { SQSConnection };
@@ -1,3 +1,3 @@
1
- const require_SQSPublisher = require('../SQSPublisher-Dq5353oZ.cjs');
1
+ const require_SQSPublisher = require('../SQSPublisher-nzbSaXSH.cjs');
2
2
 
3
3
  exports.SQSPublisher = require_SQSPublisher.SQSPublisher;
@@ -1,3 +1,3 @@
1
- import { SQSPublisher } from "../SQSPublisher-DG9o4ME3.mjs";
1
+ import { SQSPublisher } from "../SQSPublisher-B3lS2zbu.mjs";
2
2
 
3
3
  export { SQSPublisher };
@@ -1,3 +1,3 @@
1
- const require_SQSSubscriber = require('../SQSSubscriber-DZDNgLE5.cjs');
1
+ const require_SQSSubscriber = require('../SQSSubscriber-DcL9BbG1.cjs');
2
2
 
3
3
  exports.SQSSubscriber = require_SQSSubscriber.SQSSubscriber;
@@ -1,3 +1,3 @@
1
- import { SQSSubscriber } from "../SQSSubscriber-CD66P7hH.mjs";
1
+ import { SQSSubscriber } from "../SQSSubscriber-84pFnW1z.mjs";
2
2
 
3
3
  export { SQSSubscriber };
@@ -1,7 +1,7 @@
1
1
  require('../types-CvSMEO5z.cjs');
2
- const require_SQSConnection = require('../SQSConnection-BwNjUPr4.cjs');
3
- const require_SQSSubscriber = require('../SQSSubscriber-DZDNgLE5.cjs');
4
- const require_SQSPublisher = require('../SQSPublisher-Dq5353oZ.cjs');
2
+ const require_SQSConnection = require('../SQSConnection-DWYDtftQ.cjs');
3
+ const require_SQSSubscriber = require('../SQSSubscriber-DcL9BbG1.cjs');
4
+ const require_SQSPublisher = require('../SQSPublisher-nzbSaXSH.cjs');
5
5
 
6
6
  exports.SQSConnection = require_SQSConnection.SQSConnection;
7
7
  exports.SQSPublisher = require_SQSPublisher.SQSPublisher;
@@ -1,6 +1,6 @@
1
1
  import "../types-B63qHVOG.mjs";
2
- import { SQSConnection } from "../SQSConnection-Eleqqre3.mjs";
3
- import { SQSSubscriber } from "../SQSSubscriber-CD66P7hH.mjs";
4
- import { SQSPublisher } from "../SQSPublisher-DG9o4ME3.mjs";
2
+ import { SQSConnection } from "../SQSConnection-BBlDWZLU.mjs";
3
+ import { SQSSubscriber } from "../SQSSubscriber-84pFnW1z.mjs";
4
+ import { SQSPublisher } from "../SQSPublisher-B3lS2zbu.mjs";
5
5
 
6
6
  export { SQSConnection, SQSPublisher, SQSSubscriber };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekmidas/events",
3
- "version": "0.0.2",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -29,21 +29,40 @@
29
29
  "require": "./dist/sns/index.cjs"
30
30
  }
31
31
  },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/geekmidas/toolbox"
35
+ },
32
36
  "publishConfig": {
33
37
  "registry": "https://registry.npmjs.org/",
34
38
  "access": "public"
35
39
  },
36
40
  "dependencies": {
37
- "lodash.chunk": "~4.2.0",
38
- "@geekmidas/schema": "0.0.2"
41
+ "lodash.chunk": "~4.2.0"
39
42
  },
40
43
  "peerDependencies": {
41
44
  "amqplib": "^0.10.3",
42
45
  "@aws-sdk/client-sqs": "~3.908.0",
43
- "@aws-sdk/client-sns": "~3.908.0"
46
+ "@aws-sdk/client-sns": "~3.908.0",
47
+ "@geekmidas/schema": "^0.1.0"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "@geekmidas/schema": {
51
+ "optional": true
52
+ },
53
+ "amqplib": {
54
+ "optional": true
55
+ },
56
+ "@aws-sdk/client-sqs": {
57
+ "optional": true
58
+ },
59
+ "@aws-sdk/client-sns": {
60
+ "optional": true
61
+ }
44
62
  },
45
63
  "devDependencies": {
46
64
  "@types/amqplib": "~0.10.7",
47
- "@types/lodash.chunk": "~4.2.0"
65
+ "@types/lodash.chunk": "~4.2.0",
66
+ "@geekmidas/schema": "^0.1.0"
48
67
  }
49
68
  }