@kaushverse/rabbitmq-core 1.0.3 → 1.0.5

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