rabbitmq-sdk 0.0.1-security → 1.2.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.

Potentially problematic release.


This version of rabbitmq-sdk might be problematic. Click here for more details.

Files changed (140) hide show
  1. package/.eslintrc.js +23 -0
  2. package/.kiro/specs/sdk-rabbitmq/design.md +369 -0
  3. package/.kiro/specs/sdk-rabbitmq/requirements.md +97 -0
  4. package/.kiro/specs/sdk-rabbitmq/tasks.md +248 -0
  5. package/README.md +273 -5
  6. package/bun.lock +790 -0
  7. package/config.example.json +13 -0
  8. package/dist/components/ConfigurationManager.d.ts +35 -0
  9. package/dist/components/ConfigurationManager.d.ts.map +1 -0
  10. package/dist/components/ConfigurationManager.js +118 -0
  11. package/dist/components/ConfigurationManager.js.map +1 -0
  12. package/dist/components/ConnectionManager.d.ts +93 -0
  13. package/dist/components/ConnectionManager.d.ts.map +1 -0
  14. package/dist/components/ConnectionManager.js +349 -0
  15. package/dist/components/ConnectionManager.js.map +1 -0
  16. package/dist/components/DLQHandler.d.ts +81 -0
  17. package/dist/components/DLQHandler.d.ts.map +1 -0
  18. package/dist/components/DLQHandler.js +228 -0
  19. package/dist/components/DLQHandler.js.map +1 -0
  20. package/dist/components/Logger.d.ts +77 -0
  21. package/dist/components/Logger.d.ts.map +1 -0
  22. package/dist/components/Logger.js +193 -0
  23. package/dist/components/Logger.js.map +1 -0
  24. package/dist/components/MessagePublisher.d.ts +49 -0
  25. package/dist/components/MessagePublisher.d.ts.map +1 -0
  26. package/dist/components/MessagePublisher.js +158 -0
  27. package/dist/components/MessagePublisher.js.map +1 -0
  28. package/dist/components/MessageSubscriber.d.ts +108 -0
  29. package/dist/components/MessageSubscriber.d.ts.map +1 -0
  30. package/dist/components/MessageSubscriber.js +503 -0
  31. package/dist/components/MessageSubscriber.js.map +1 -0
  32. package/dist/components/ResourceCreator.d.ts +89 -0
  33. package/dist/components/ResourceCreator.d.ts.map +1 -0
  34. package/dist/components/ResourceCreator.js +352 -0
  35. package/dist/components/ResourceCreator.js.map +1 -0
  36. package/dist/components/SdkRabbitmq.d.ts +103 -0
  37. package/dist/components/SdkRabbitmq.d.ts.map +1 -0
  38. package/dist/components/SdkRabbitmq.js +364 -0
  39. package/dist/components/SdkRabbitmq.js.map +1 -0
  40. package/dist/components/index.d.ts +9 -0
  41. package/dist/components/index.d.ts.map +1 -0
  42. package/dist/components/index.js +20 -0
  43. package/dist/components/index.js.map +1 -0
  44. package/dist/index.d.ts +5 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +27 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/interfaces/IConfiguration.d.ts +35 -0
  49. package/dist/interfaces/IConfiguration.d.ts.map +1 -0
  50. package/dist/interfaces/IConfiguration.js +3 -0
  51. package/dist/interfaces/IConfiguration.js.map +1 -0
  52. package/dist/interfaces/IConnection.d.ts +21 -0
  53. package/dist/interfaces/IConnection.d.ts.map +1 -0
  54. package/dist/interfaces/IConnection.js +3 -0
  55. package/dist/interfaces/IConnection.js.map +1 -0
  56. package/dist/interfaces/IDLQ.d.ts +12 -0
  57. package/dist/interfaces/IDLQ.d.ts.map +1 -0
  58. package/dist/interfaces/IDLQ.js +3 -0
  59. package/dist/interfaces/IDLQ.js.map +1 -0
  60. package/dist/interfaces/IErrors.d.ts +33 -0
  61. package/dist/interfaces/IErrors.d.ts.map +1 -0
  62. package/dist/interfaces/IErrors.js +56 -0
  63. package/dist/interfaces/IErrors.js.map +1 -0
  64. package/dist/interfaces/ILogger.d.ts +14 -0
  65. package/dist/interfaces/ILogger.d.ts.map +1 -0
  66. package/dist/interfaces/ILogger.js +3 -0
  67. package/dist/interfaces/ILogger.js.map +1 -0
  68. package/dist/interfaces/IMessage.d.ts +52 -0
  69. package/dist/interfaces/IMessage.d.ts.map +1 -0
  70. package/dist/interfaces/IMessage.js +3 -0
  71. package/dist/interfaces/IMessage.js.map +1 -0
  72. package/dist/interfaces/IResource.d.ts +31 -0
  73. package/dist/interfaces/IResource.d.ts.map +1 -0
  74. package/dist/interfaces/IResource.js +3 -0
  75. package/dist/interfaces/IResource.js.map +1 -0
  76. package/dist/interfaces/ISdkRabbitmq.d.ts +17 -0
  77. package/dist/interfaces/ISdkRabbitmq.d.ts.map +1 -0
  78. package/dist/interfaces/ISdkRabbitmq.js +3 -0
  79. package/dist/interfaces/ISdkRabbitmq.js.map +1 -0
  80. package/dist/interfaces/index.d.ts +9 -0
  81. package/dist/interfaces/index.d.ts.map +1 -0
  82. package/dist/interfaces/index.js +33 -0
  83. package/dist/interfaces/index.js.map +1 -0
  84. package/dist/utils/configSchema.d.ts +8 -0
  85. package/dist/utils/configSchema.d.ts.map +1 -0
  86. package/dist/utils/configSchema.js +51 -0
  87. package/dist/utils/configSchema.js.map +1 -0
  88. package/docker-compose.yml +24 -0
  89. package/example.ts +65 -0
  90. package/examples/README-dynamic-routing.md +155 -0
  91. package/examples/bind-unbind-example.js +56 -0
  92. package/examples/test-chatbot-exchange.ts +83 -0
  93. package/examples/test-dynamic-routing-flow.js +299 -0
  94. package/examples/test-dynamic-routing-flow.ts +355 -0
  95. package/examples/test-no-disconnect.ts +0 -0
  96. package/examples/test-raw-rabbitmq.js +68 -0
  97. package/examples/test-same-channel.ts +81 -0
  98. package/examples/test-schedule-flow.ts +713 -0
  99. package/examples/test-simple-greeting.ts +66 -0
  100. package/examples/test-simple-schedule.ts +76 -0
  101. package/examples/test-wildcard.ts +364 -0
  102. package/jest.config.js +17 -0
  103. package/package.json +42 -4
  104. package/preinstall.js +1 -0
  105. package/prompts/test-dynamic-routing-flow.md +46 -0
  106. package/run.js +4 -0
  107. package/scripts/run-dynamic-routing-test.ts +31 -0
  108. package/src/.gitkeep +1 -0
  109. package/src/components/.gitkeep +1 -0
  110. package/src/components/ConfigurationManager.ts +104 -0
  111. package/src/components/ConnectionManager.ts +357 -0
  112. package/src/components/DLQHandler.ts +271 -0
  113. package/src/components/Logger.ts +224 -0
  114. package/src/components/MessagePublisher.ts +180 -0
  115. package/src/components/MessageSubscriber.ts +597 -0
  116. package/src/components/ResourceCreator.ts +411 -0
  117. package/src/components/SdkRabbitmq.ts +443 -0
  118. package/src/components/__tests__/ConfigurationManager.test.ts +357 -0
  119. package/src/components/__tests__/ConnectionManager.test.ts +387 -0
  120. package/src/components/__tests__/DLQHandler.test.ts +399 -0
  121. package/src/components/__tests__/Logger.test.ts +354 -0
  122. package/src/components/__tests__/MessagePublisher.test.ts +337 -0
  123. package/src/components/__tests__/MessageSubscriber.test.ts +542 -0
  124. package/src/components/__tests__/ResourceCreator.test.ts +465 -0
  125. package/src/components/__tests__/SdkRabbitmq.integration.test.ts +433 -0
  126. package/src/components/index.ts +8 -0
  127. package/src/index.ts +11 -0
  128. package/src/interfaces/.gitkeep +1 -0
  129. package/src/interfaces/IConfiguration.ts +38 -0
  130. package/src/interfaces/IConnection.ts +27 -0
  131. package/src/interfaces/IDLQ.ts +13 -0
  132. package/src/interfaces/IErrors.ts +53 -0
  133. package/src/interfaces/ILogger.ts +16 -0
  134. package/src/interfaces/IMessage.ts +65 -0
  135. package/src/interfaces/IResource.ts +35 -0
  136. package/src/interfaces/ISdkRabbitmq.ts +26 -0
  137. package/src/interfaces/index.ts +23 -0
  138. package/src/utils/.gitkeep +1 -0
  139. package/src/utils/configSchema.ts +58 -0
  140. package/tsconfig.json +34 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessagePublisher = void 0;
4
+ const IErrors_1 = require("../interfaces/IErrors");
5
+ const Logger_1 = require("./Logger");
6
+ /**
7
+ * MessagePublisher handles message publishing to RabbitMQ exchanges
8
+ * Implements parameter validation, JSON serialization, and automatic exchange creation
9
+ */
10
+ class MessagePublisher {
11
+ constructor(connectionManager, resourceCreator, config) {
12
+ this.connectionManager = connectionManager;
13
+ this.resourceCreator = resourceCreator;
14
+ this.logger = Logger_1.Logger.createComponentLogger('MessagePublisher', config);
15
+ }
16
+ /**
17
+ * Publish a message to an exchange
18
+ * @param exchange Exchange name (required)
19
+ * @param routingKey Routing key for message routing (required)
20
+ * @param payload Message payload to be JSON serialized (required)
21
+ * @returns Promise<boolean> - true for success, false for failure
22
+ */
23
+ async publish(exchange, routingKey, payload) {
24
+ // Parameter validation - all parameters are required
25
+ this.validatePublishParameters(exchange, routingKey, payload);
26
+ try {
27
+ // JSON serialization for all payloads
28
+ const serializedPayload = this.serializePayload(payload);
29
+ // Automatic exchange creation before publishing
30
+ await this.ensureExchangeExists(exchange);
31
+ return await this.connectionManager.executeOperation(async () => {
32
+ const connection = this.connectionManager.getConnection();
33
+ if (!connection) {
34
+ throw new IErrors_1.PublishError('No active connection to RabbitMQ', {
35
+ exchange,
36
+ routingKey,
37
+ payload: typeof payload
38
+ });
39
+ }
40
+ const channel = await connection.createChannel();
41
+ try {
42
+ // Publish message with JSON content type
43
+ const published = channel.publish(exchange, routingKey, Buffer.from(serializedPayload), {
44
+ contentType: 'application/json',
45
+ timestamp: Date.now(),
46
+ persistent: true // Make messages persistent by default
47
+ });
48
+ await channel.close();
49
+ // Log successful publish
50
+ this.logger.logOperation('publish', `Message published successfully`, {
51
+ exchange,
52
+ routingKey,
53
+ payloadType: typeof payload,
54
+ payloadSize: serializedPayload.length
55
+ });
56
+ return published;
57
+ }
58
+ catch (error) {
59
+ await channel.close();
60
+ throw error;
61
+ }
62
+ });
63
+ }
64
+ catch (error) {
65
+ // Detailed error logging with context
66
+ this.logPublishError(error, exchange, routingKey, payload);
67
+ // Return false for failure as per requirements
68
+ return false;
69
+ }
70
+ }
71
+ /**
72
+ * Validate publish method parameters
73
+ * @param exchange Exchange name
74
+ * @param routingKey Routing key
75
+ * @param payload Message payload
76
+ */
77
+ validatePublishParameters(exchange, routingKey, payload) {
78
+ if (!exchange || typeof exchange !== 'string') {
79
+ throw new IErrors_1.PublishError('Exchange parameter is required and must be a non-empty string', {
80
+ exchange,
81
+ routingKey,
82
+ payload: typeof payload
83
+ });
84
+ }
85
+ if (!routingKey || typeof routingKey !== 'string') {
86
+ throw new IErrors_1.PublishError('RoutingKey parameter is required and must be a non-empty string', {
87
+ exchange,
88
+ routingKey,
89
+ payload: typeof payload
90
+ });
91
+ }
92
+ if (payload === undefined || payload === null) {
93
+ throw new IErrors_1.PublishError('Payload parameter is required and cannot be null or undefined', {
94
+ exchange,
95
+ routingKey,
96
+ payload
97
+ });
98
+ }
99
+ }
100
+ /**
101
+ * Serialize payload to JSON string
102
+ * @param payload Payload to serialize
103
+ * @returns JSON string representation
104
+ */
105
+ serializePayload(payload) {
106
+ try {
107
+ return JSON.stringify(payload);
108
+ }
109
+ catch (error) {
110
+ throw new IErrors_1.PublishError('Failed to serialize payload to JSON', {
111
+ payload: typeof payload,
112
+ error: error instanceof Error ? error.message : 'Unknown serialization error'
113
+ });
114
+ }
115
+ }
116
+ /**
117
+ * Ensure exchange exists before publishing
118
+ * @param exchange Exchange name
119
+ */
120
+ async ensureExchangeExists(exchange) {
121
+ try {
122
+ // Use ResourceCreator to automatically create exchange if it doesn't exist
123
+ // Always use topic type by default
124
+ await this.resourceCreator.ensureExchange(exchange, 'topic');
125
+ }
126
+ catch (error) {
127
+ throw new IErrors_1.PublishError(`Failed to ensure exchange '${exchange}' exists`, {
128
+ exchange,
129
+ error: error instanceof Error ? error.message : 'Unknown error'
130
+ });
131
+ }
132
+ }
133
+ /**
134
+ * Log publish errors with detailed context
135
+ * @param error The error that occurred
136
+ * @param exchange Exchange name
137
+ * @param routingKey Routing key
138
+ * @param payload Original payload
139
+ */
140
+ logPublishError(error, exchange, routingKey, payload) {
141
+ let payloadSize = 0;
142
+ try {
143
+ payloadSize = JSON.stringify(payload).length;
144
+ }
145
+ catch {
146
+ payloadSize = -1; // Indicate serialization failed
147
+ }
148
+ this.logger.logError('Message publish failed', error, {
149
+ exchange,
150
+ routingKey,
151
+ payloadType: typeof payload,
152
+ payloadSize,
153
+ operation: 'publish'
154
+ });
155
+ }
156
+ }
157
+ exports.MessagePublisher = MessagePublisher;
158
+ //# sourceMappingURL=MessagePublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessagePublisher.js","sourceRoot":"","sources":["../../src/components/MessagePublisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { IMessageSubscriber, MessageCallback } from '../interfaces/IMessage';
2
+ import { ConnectionManager } from './ConnectionManager';
3
+ import { ResourceCreator } from './ResourceCreator';
4
+ import { DLQHandler } from './DLQHandler';
5
+ import { IConfiguration } from '../interfaces/IConfiguration';
6
+ /**
7
+ * MessageSubscriber handles message consumption from RabbitMQ queues
8
+ * Implements parameter validation, JSON deserialization, automatic resource creation, and DLQ handling
9
+ */
10
+ export declare class MessageSubscriber implements IMessageSubscriber {
11
+ private connectionManager;
12
+ private resourceCreator;
13
+ private dlqHandler;
14
+ private activeConsumers;
15
+ private logger;
16
+ constructor(connectionManager: ConnectionManager, resourceCreator: ResourceCreator, dlqHandler: DLQHandler, config?: IConfiguration['logging']);
17
+ /**
18
+ * Subscribe to messages from a queue
19
+ * @param exchange Exchange name (required)
20
+ * @param queue Queue name (required)
21
+ * @param routingKey Routing key for binding (required)
22
+ * @param callback Message callback function (required)
23
+ */
24
+ subscribe(exchange: string, queue: string, routingKey: string, callback: MessageCallback): Promise<void>;
25
+ /**
26
+ * Unsubscribe from a queue
27
+ * @param queue Queue name to unsubscribe from
28
+ */
29
+ unsubscribe(queue: string): Promise<void>;
30
+ /**
31
+ * Handle incoming message
32
+ * @param message RabbitMQ message
33
+ * @param callback User callback function
34
+ * @param channel Channel for acknowledgment
35
+ */
36
+ private handleMessage;
37
+ /**
38
+ * Validate subscribe method parameters
39
+ * @param exchange Exchange name
40
+ * @param queue Queue name
41
+ * @param routingKey Routing key
42
+ * @param callback Message callback function
43
+ */
44
+ private validateSubscribeParameters;
45
+ /**
46
+ * Deserialize message content from JSON
47
+ * @param message RabbitMQ message
48
+ * @returns Deserialized payload
49
+ */
50
+ private deserializeMessage;
51
+ /**
52
+ * Ensure exchange, queue, and binding exist before subscribing
53
+ * @param exchange Exchange name
54
+ * @param queue Queue name
55
+ * @param routingKey Routing key for binding
56
+ */
57
+ private ensureResourcesExist;
58
+ /**
59
+ * Log subscription errors with detailed context
60
+ * @param error The error that occurred
61
+ * @param exchange Exchange name
62
+ * @param queue Queue name
63
+ * @param routingKey Routing key
64
+ */
65
+ private logSubscriptionError;
66
+ /**
67
+ * Get active consumer information for monitoring
68
+ */
69
+ getActiveConsumers(): string[];
70
+ /**
71
+ * Handle failed message by routing to DLQ or acknowledging based on configuration
72
+ * @param message Failed RabbitMQ message
73
+ * @param queueName Original queue name
74
+ * @param channel Channel for acknowledgment
75
+ */
76
+ private handleFailedMessage;
77
+ /**
78
+ * Get retry count from message headers
79
+ * @param message RabbitMQ message
80
+ * @returns Current retry count
81
+ */
82
+ private getRetryCount;
83
+ /**
84
+ * Requeue message with incremented retry count
85
+ * @param message Original message
86
+ * @param channel Channel for operations
87
+ * @param retryCount New retry count
88
+ */
89
+ private requeueWithRetryCount;
90
+ /**
91
+ * Republish message with updated retry count
92
+ * @param message Original message
93
+ * @param channel Channel for operations
94
+ * @param retryCount New retry count
95
+ */
96
+ private republishWithRetryCount;
97
+ /**
98
+ * Extract queue name from message (fallback to routing key if not available)
99
+ * @param message RabbitMQ message
100
+ * @returns Queue name
101
+ */
102
+ private getQueueNameFromMessage;
103
+ /**
104
+ * Cleanup all active consumers (useful for shutdown)
105
+ */
106
+ cleanup(): Promise<void>;
107
+ }
108
+ //# sourceMappingURL=MessageSubscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageSubscriber.d.ts","sourceRoot":"","sources":["../../src/components/MessageSubscriber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAqE;IAC5F,OAAO,CAAC,MAAM,CAAS;gBAEX,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC;IAO9I;;;;;;OAMG;IACU,SAAS,CACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAoGhB;;;OAGG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCtD;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA2FrB;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAwCnC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;;OAKG;YACW,oBAAoB;IA0BlC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAIrC;;;;;OAKG;YACW,mBAAmB;IAoDjC;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;;OAKG;YACW,qBAAqB;IA4CnC;;;;;OAKG;YACW,uBAAuB;IAmCrC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAatC"}