@kaushverse/rabbitmq-core 1.0.3 → 1.0.4

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.
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ interface RabbitConnectionOptions {
12
12
  socketOptions?: Options.Connect;
13
13
  }
14
14
  type ExchangeType = "direct" | "topic" | "fanout" | "headers";
15
+ type LogLevel = "info" | "warn" | "error" | "debug";
15
16
  interface ConsumeOptions {
16
17
  queue: string;
17
18
  exchange: string;
@@ -35,14 +36,28 @@ declare function consumeMessage(options: ConsumeOptions, handler: (data: any, ra
35
36
 
36
37
  declare function publishMessage({ exchange, type, routingKey, message, headers, }: PublishOptions): Promise<void>;
37
38
 
38
- type BootstrapOptions = {
39
- serviceName?: string;
40
- start: () => void | Promise<void>;
39
+ declare function bootstrap({ serviceName, rabbit, start, }: {
40
+ serviceName: string;
41
41
  rabbit: {
42
42
  url: string;
43
- tls?: RabbitTLSOptions;
44
43
  };
44
+ start: () => void | Promise<void>;
45
+ }): Promise<void>;
46
+
47
+ declare function rabbitHealth(): {
48
+ "\uD83D\uDC07": {
49
+ service: string;
50
+ status: string;
51
+ healthy: boolean;
52
+ };
53
+ };
54
+
55
+ declare function setLoggerService(name: string): void;
56
+ declare const logger: {
57
+ info: (msg: string, meta?: any) => void;
58
+ warn: (msg: string, meta?: any) => void;
59
+ error: (msg: string, meta?: any) => void;
60
+ debug: (msg: string, meta?: any) => void;
45
61
  };
46
- declare function bootstrap(options: BootstrapOptions): Promise<void>;
47
62
 
48
- export { type ConsumeOptions, type ExchangeType, type PublishOptions, type RabbitConnectionOptions, type RabbitTLSOptions, bootstrap, consumeMessage, getChannel, publishMessage, rabbitEvents };
63
+ export { type ConsumeOptions, type ExchangeType, type LogLevel, type PublishOptions, type RabbitConnectionOptions, type RabbitTLSOptions, bootstrap, consumeMessage, getChannel, logger, publishMessage, rabbitEvents, rabbitHealth, setLoggerService };
package/dist/index.js CHANGED
@@ -33,8 +33,11 @@ __export(index_exports, {
33
33
  bootstrap: () => bootstrap,
34
34
  consumeMessage: () => consumeMessage,
35
35
  getChannel: () => getChannel,
36
+ logger: () => logger,
36
37
  publishMessage: () => publishMessage,
37
- rabbitEvents: () => rabbitEvents
38
+ rabbitEvents: () => rabbitEvents,
39
+ rabbitHealth: () => rabbitHealth,
40
+ setLoggerService: () => setLoggerService
38
41
  });
39
42
  module.exports = __toCommonJS(index_exports);
40
43
 
@@ -104,6 +107,9 @@ async function closeRabbitMQ() {
104
107
  rabbitEvents.emit("disconnected");
105
108
  }
106
109
  }
110
+ function isRabbitConnected() {
111
+ return connected;
112
+ }
107
113
 
108
114
  // src/consumer.ts
109
115
  async function consumeMessage(options, handler) {
@@ -165,33 +171,77 @@ async function publishMessage({
165
171
  });
166
172
  }
167
173
 
174
+ // src/logger/index.ts
175
+ var serviceName = "rabbitmq-core";
176
+ function setLoggerService(name) {
177
+ serviceName = name;
178
+ }
179
+ function log(level, message, meta) {
180
+ const entry = {
181
+ level,
182
+ service: serviceName,
183
+ message,
184
+ time: (/* @__PURE__ */ new Date()).toISOString(),
185
+ ...meta && { meta }
186
+ };
187
+ console[level === "debug" ? "log" : level](JSON.stringify(entry));
188
+ }
189
+ var logger = {
190
+ info: (msg, meta) => log("info", msg, meta),
191
+ warn: (msg, meta) => log("warn", msg, meta),
192
+ error: (msg, meta) => log("error", msg, meta),
193
+ debug: (msg, meta) => log("debug", msg, meta)
194
+ };
195
+
168
196
  // src/bootstrap.ts
169
- async function bootstrap(options) {
170
- const { serviceName = "service", start, rabbit } = options;
197
+ async function bootstrap({
198
+ serviceName: serviceName2,
199
+ rabbit,
200
+ start
201
+ }) {
171
202
  try {
172
- await connectRabbitMQ({
173
- url: rabbit.url,
174
- tls: rabbit.tls
175
- });
203
+ setLoggerService(serviceName2);
204
+ logger.info("\u{1F9E9} Bootstrap started");
205
+ await connectRabbitMQ(rabbit);
206
+ logger.info("\u{1F407} RabbitMQ connected");
176
207
  await start();
177
- console.log(`\u{1F680} ${serviceName} started successfully`);
208
+ logger.info("\u{1F680} Service started successfully");
178
209
  const shutdown = async (signal) => {
179
- console.log(`\u{1F6D1} ${serviceName} shutting down (${signal})...`);
210
+ logger.warn("\u{1F6D1} Shutdown signal received", { signal });
180
211
  await closeRabbitMQ();
212
+ logger.info("\u{1F512} RabbitMQ connection closed");
213
+ logger.info("\u{1F44B} Service stopped gracefully");
181
214
  process.exit(0);
182
215
  };
183
216
  process.on("SIGINT", shutdown);
184
217
  process.on("SIGTERM", shutdown);
185
218
  } catch (err) {
186
- console.error(`\u274C ${serviceName} startup failed:`, err);
219
+ logger.error("\u{1F4A5} Startup failed", {
220
+ error: err instanceof Error ? err.message : err
221
+ });
187
222
  process.exit(1);
188
223
  }
189
224
  }
225
+
226
+ // src/health/index.ts
227
+ function rabbitHealth() {
228
+ const connected2 = isRabbitConnected();
229
+ return {
230
+ "\u{1F407}": {
231
+ service: "rabbitmq",
232
+ status: connected2 ? "\u{1F7E2} up" : "\u{1F534} down",
233
+ healthy: connected2
234
+ }
235
+ };
236
+ }
190
237
  // Annotate the CommonJS export names for ESM import in node:
191
238
  0 && (module.exports = {
192
239
  bootstrap,
193
240
  consumeMessage,
194
241
  getChannel,
242
+ logger,
195
243
  publishMessage,
196
- rabbitEvents
244
+ rabbitEvents,
245
+ rabbitHealth,
246
+ setLoggerService
197
247
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaushverse/rabbitmq-core",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Reusable RabbitMQ (AMQP / AMQPS) core for Node.js & microservices",
5
5
  "author": "Kaushik (KaushVerse)",
6
6
  "license": "MIT",