logixia 1.3.1 → 1.5.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 (59) hide show
  1. package/README.md +848 -7
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/{index-iDTW2-eY.d.mts → index-Ium497V3.d.mts} +180 -2
  4. package/dist/index-Ium497V3.d.mts.map +1 -0
  5. package/dist/{index-CHIsdA9n.d.ts → index-t-ActikQ.d.ts} +180 -2
  6. package/dist/index-t-ActikQ.d.ts.map +1 -0
  7. package/dist/index.d.mts +734 -3
  8. package/dist/index.d.mts.map +1 -1
  9. package/dist/index.d.ts +734 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +643 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mjs +618 -3
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/{logitron-logger.module-BqNKp0Fs.js → logitron-logger.module-B7CsnCYA.js} +418 -52
  16. package/dist/logitron-logger.module-B7CsnCYA.js.map +1 -0
  17. package/dist/{logitron-logger.module-Bq3_KckP.d.ts → logitron-logger.module-CMRBDGwm.d.ts} +181 -34
  18. package/dist/logitron-logger.module-CMRBDGwm.d.ts.map +1 -0
  19. package/dist/{logitron-logger.module-2AzkadqZ.mjs → logitron-logger.module-DdVy45xE.mjs} +366 -54
  20. package/dist/logitron-logger.module-DdVy45xE.mjs.map +1 -0
  21. package/dist/{logitron-logger.module-DW_mmXbj.d.mts → logitron-logger.module-Eaw6bH9M.d.mts} +181 -34
  22. package/dist/logitron-logger.module-Eaw6bH9M.d.mts.map +1 -0
  23. package/dist/middleware.d.mts +1 -1
  24. package/dist/middleware.d.ts +1 -1
  25. package/dist/nest.d.mts +2 -2
  26. package/dist/nest.d.ts +2 -2
  27. package/dist/nest.js +2 -2
  28. package/dist/nest.mjs +2 -2
  29. package/dist/{promise-DaiZ2BaH.js → promise-BI-3eI4n.js} +285 -128
  30. package/dist/promise-BI-3eI4n.js.map +1 -0
  31. package/dist/{promise-C4pQPcK4.mjs → promise-BrZcjavs.mjs} +285 -128
  32. package/dist/promise-BrZcjavs.mjs.map +1 -0
  33. package/dist/testing.d.mts +1 -1
  34. package/dist/testing.d.ts +1 -1
  35. package/dist/testing.js +7 -1
  36. package/dist/testing.js.map +1 -1
  37. package/dist/testing.mjs +7 -1
  38. package/dist/testing.mjs.map +1 -1
  39. package/dist/{transport.manager-5VVdqS3o.mjs → transport.manager-DR7TLXQT.mjs} +82 -4
  40. package/dist/transport.manager-DR7TLXQT.mjs.map +1 -0
  41. package/dist/{transport.manager-DCOm4uIQ.js → transport.manager-DVTM978M.js} +82 -4
  42. package/dist/transport.manager-DVTM978M.js.map +1 -0
  43. package/dist/transports.d.mts +61 -168
  44. package/dist/transports.d.mts.map +1 -1
  45. package/dist/transports.d.ts +61 -168
  46. package/dist/transports.d.ts.map +1 -1
  47. package/dist/transports.js +1 -1
  48. package/dist/transports.mjs +1 -1
  49. package/package.json +62 -1
  50. package/dist/index-CHIsdA9n.d.ts.map +0 -1
  51. package/dist/index-iDTW2-eY.d.mts.map +0 -1
  52. package/dist/logitron-logger.module-2AzkadqZ.mjs.map +0 -1
  53. package/dist/logitron-logger.module-Bq3_KckP.d.ts.map +0 -1
  54. package/dist/logitron-logger.module-BqNKp0Fs.js.map +0 -1
  55. package/dist/logitron-logger.module-DW_mmXbj.d.mts.map +0 -1
  56. package/dist/promise-C4pQPcK4.mjs.map +0 -1
  57. package/dist/promise-DaiZ2BaH.js.map +0 -1
  58. package/dist/transport.manager-5VVdqS3o.mjs.map +0 -1
  59. package/dist/transport.manager-DCOm4uIQ.js.map +0 -1
@@ -1,10 +1,105 @@
1
- import { T as TraceIdConfig, _ as LogLevelString, d as ILogger, f as ILoggerDefault, v as LoggerConfig, y as LoggerWithLevels } from "./index-CHIsdA9n.js";
1
+ import { T as TraceIdConfig, _ as LogLevelString, d as ILogger, f as ILoggerDefault, m as LogEntry, v as LoggerConfig, y as LoggerWithLevels } from "./index-t-ActikQ.js";
2
2
  import * as _nestjs_common0 from "@nestjs/common";
3
3
  import { CallHandler, ExecutionContext, InjectionToken, LoggerService, MiddlewareConsumer, ModuleMetadata, NestInterceptor, NestModule, OptionalFactoryDependency, Type } from "@nestjs/common";
4
4
  import { Observable } from "rxjs";
5
5
 
6
- //#region src/core/logitron-logger.d.ts
6
+ //#region src/plugin.d.ts
7
7
 
8
+ interface LogixiaPlugin {
9
+ /**
10
+ * Unique plugin name.
11
+ * logixia uses this to prevent duplicate registration of the same plugin
12
+ * on the same logger instance.
13
+ */
14
+ name: string;
15
+ /**
16
+ * Called once immediately after `logger.use(plugin)` is called.
17
+ * Use for one-time setup (open connections, allocate buffers, etc.).
18
+ * Async `onInit` errors are silently swallowed to avoid blocking the logger.
19
+ */
20
+ onInit?(): void | Promise<void>;
21
+ /**
22
+ * Called for every log entry **after** PII redaction and **before** transport
23
+ * dispatch. Plugins run in registration order; each receives the (possibly
24
+ * modified) output of the previous plugin.
25
+ *
26
+ * - Return the entry (modified or unchanged) to continue processing.
27
+ * - Return `null` to **drop** the entry — no transport will receive it.
28
+ */
29
+ onLog?(entry: LogEntry): LogEntry | null | Promise<LogEntry | null>;
30
+ /**
31
+ * Called when a transport write fails (after any configured retries).
32
+ * Useful for routing transport errors to an alerting or metrics system.
33
+ * Errors thrown inside `onError` are silently swallowed.
34
+ */
35
+ onError?(error: Error, entry?: LogEntry): void | Promise<void>;
36
+ /**
37
+ * Called when the logger is closed via `logger.close()` or the process
38
+ * receives a shutdown signal (when `gracefulShutdown` is enabled).
39
+ * Errors thrown inside `onShutdown` are silently swallowed.
40
+ */
41
+ onShutdown?(): void | Promise<void>;
42
+ }
43
+ /**
44
+ * Holds an ordered list of `LogixiaPlugin` instances and dispatches lifecycle
45
+ * events to them. One registry is created per logger instance; a global
46
+ * singleton is also exported for process-wide registration.
47
+ */
48
+ declare class PluginRegistry {
49
+ private readonly _plugins;
50
+ /**
51
+ * Register a plugin. Silently skips if a plugin with the same `name` is
52
+ * already registered on this registry.
53
+ */
54
+ register(plugin: LogixiaPlugin): void;
55
+ /** Remove a previously registered plugin by name. No-op if not found. */
56
+ unregister(name: string): void;
57
+ /** Returns `true` if a plugin with the given name is registered. */
58
+ has(name: string): boolean;
59
+ /** Number of currently registered plugins. */
60
+ get size(): number;
61
+ /**
62
+ * Run all `onLog` hooks in order.
63
+ * Returns `null` if any plugin cancels the entry; otherwise returns the
64
+ * (possibly transformed) entry.
65
+ */
66
+ runOnLog(entry: LogEntry): Promise<LogEntry | null>;
67
+ /**
68
+ * Notify all `onError` hooks.
69
+ * Errors thrown inside hooks are swallowed to prevent error cascades.
70
+ */
71
+ runOnError(error: Error, entry?: LogEntry): Promise<void>;
72
+ /** Run all `onShutdown` hooks concurrently. Hook errors are swallowed. */
73
+ runOnShutdown(): Promise<void>;
74
+ }
75
+ /**
76
+ * Module-level singleton registry.
77
+ *
78
+ * Plugins registered here are automatically copied into every **new** logger
79
+ * instance created after the registration. Already-created loggers are not
80
+ * retroactively affected — use `logger.use(plugin)` for per-instance control.
81
+ */
82
+ declare const globalPluginRegistry: PluginRegistry;
83
+ /**
84
+ * Register a plugin in the global registry so it applies to every future
85
+ * logger instance.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * import { usePlugin } from 'logixia';
90
+ *
91
+ * usePlugin({
92
+ * name: 'audit-sink',
93
+ * onLog(entry) {
94
+ * if (entry.level === 'error') auditQueue.push(entry);
95
+ * return entry;
96
+ * },
97
+ * });
98
+ * ```
99
+ */
100
+ declare function usePlugin(plugin: LogixiaPlugin): void;
101
+ //#endregion
102
+ //#region src/core/logitron-logger.d.ts
8
103
  declare class LogixiaLogger<TConfig extends LoggerConfig<Record<string, number>> = LoggerConfig> implements ILoggerDefault {
9
104
  [K: string]: any;
10
105
  private config;
@@ -36,6 +131,8 @@ declare class LogixiaLogger<TConfig extends LoggerConfig<Record<string, number>>
36
131
  private _hasRedact;
37
132
  /** Sampling engine — only created when sampling config is present. */
38
133
  private _sampler?;
134
+ /** Per-instance plugin registry — also inherits from the global registry at creation time. */
135
+ private readonly _pluginRegistry;
39
136
  constructor(config: TConfig, context?: string);
40
137
  private setupGracefulShutdown;
41
138
  private createCustomLevelMethods;
@@ -70,6 +167,23 @@ declare class LogixiaLogger<TConfig extends LoggerConfig<Record<string, number>>
70
167
  clearTransportLevelPreferences(): void;
71
168
  getAvailableTransports(): string[];
72
169
  child(context: string, data?: Record<string, unknown>): ILogger;
170
+ /**
171
+ * Register a plugin on this logger instance.
172
+ *
173
+ * @example
174
+ * ```ts
175
+ * logger.use({
176
+ * name: 'audit',
177
+ * onLog(entry) { auditQueue.push(entry); return entry; },
178
+ * });
179
+ * ```
180
+ */
181
+ use(plugin: LogixiaPlugin): this;
182
+ /**
183
+ * Remove a previously registered plugin by name.
184
+ * No-op if the plugin is not registered on this instance.
185
+ */
186
+ unuse(pluginName: string): this;
73
187
  flush(): Promise<void>;
74
188
  healthCheck(): Promise<{
75
189
  healthy: boolean;
@@ -104,57 +218,90 @@ declare class LogixiaLoggerService implements LoggerService {
104
218
  private context?;
105
219
  constructor(config?: LoggerConfig);
106
220
  /**
107
- * NestJS LoggerService interface implementation
221
+ * NestJS `LoggerService.log` void, string context.
222
+ * Maps internally to `info`.
223
+ *
224
+ * @example `logger.log('User signed up', 'AuthService')`
108
225
  */
109
226
  log(message: unknown, context?: string): void;
227
+ /**
228
+ * Native async `info` — structured data, returns `Promise<void>`.
229
+ *
230
+ * @example `await logger.info('User signed up', { userId: 'u_abc' })`
231
+ */
232
+ info(message: string, data?: Record<string, unknown>): Promise<void>;
233
+ /**
234
+ * Native async overload — structured metadata, returns `Promise<void>`.
235
+ *
236
+ * @example `await logger.error(new Error('DB timeout'), { requestId: 'req_abc' })`
237
+ * @example `await logger.error('Login failed', { userId: 'u_abc' })`
238
+ */
239
+ error(message: string | Error, data: Record<string, unknown>): Promise<void>;
240
+ /**
241
+ * NestJS compat overload — string trace + optional context, returns `void`.
242
+ *
243
+ * @example `logger.error('Something failed', err.stack, 'AuthService')`
244
+ */
110
245
  error(message: unknown, trace?: string, context?: string): void;
246
+ /**
247
+ * Native async overload — structured metadata, returns `Promise<void>`.
248
+ *
249
+ * @example `await logger.warn('Rate limit approaching', { userId: 'u_abc', count: 90 })`
250
+ */
251
+ warn(message: string, data: Record<string, unknown>): Promise<void>;
252
+ /**
253
+ * NestJS compat overload — optional context string, returns `void`.
254
+ *
255
+ * @example `logger.warn('Deprecated API used', 'PaymentService')`
256
+ */
111
257
  warn(message: unknown, context?: string): void;
258
+ /**
259
+ * Native async overload — structured metadata, returns `Promise<void>`.
260
+ *
261
+ * @example `await logger.debug('Cache miss', { key: 'user:abc', ttl: 300 })`
262
+ */
263
+ debug(message: string, data: Record<string, unknown>): Promise<void>;
264
+ /**
265
+ * NestJS compat overload — optional context string, returns `void`.
266
+ *
267
+ * @example `logger.debug('Processing request', 'OrderService')`
268
+ */
112
269
  debug(message: unknown, context?: string): void;
270
+ /**
271
+ * Native async overload — structured metadata, returns `Promise<void>`.
272
+ * Maps to `trace` level internally.
273
+ *
274
+ * @example `await logger.verbose('Socket message received', { event: 'ping', size: 42 })`
275
+ */
276
+ verbose(message: string, data: Record<string, unknown>): Promise<void>;
277
+ /**
278
+ * NestJS compat overload — optional context string, returns `void`.
279
+ *
280
+ * @example `logger.verbose('Connection established', 'WebSocketGateway')`
281
+ */
113
282
  verbose(message: unknown, context?: string): void;
114
283
  /**
115
- * Extended Logitron methods
284
+ * Native async `trace` — lowest verbosity level, structured data.
116
285
  */
117
- info(message: string, data?: Record<string, unknown>): Promise<void>;
118
286
  trace(message: string, data?: Record<string, unknown>): Promise<void>;
119
- logLevel(level: string, message: string, data?: Record<string, unknown>): Promise<void>;
120
287
  /**
121
- * Timing methods
288
+ * Log at any named level with structured data.
122
289
  */
290
+ logLevel(level: string, message: string, data?: Record<string, unknown>): Promise<void>;
123
291
  time(label: string): void;
124
292
  timeEnd(label: string): Promise<number | undefined>;
125
293
  timeAsync<T>(label: string, fn: () => Promise<T>): Promise<T>;
126
- /**
127
- * Context and level management
128
- */
129
294
  setContext(context: string): void;
130
295
  getContext(): string | undefined;
131
296
  setLevel(level: LogLevelString): void;
132
297
  getLevel(): LogLevelString;
133
- /**
134
- * Create child logger
135
- */
136
298
  child(context: string, data?: Record<string, unknown>): LogixiaLoggerService;
137
- /**
138
- * Get current trace ID
139
- */
140
299
  getCurrentTraceId(): string | undefined;
141
- /**
142
- * Close logger
143
- */
144
300
  close(): Promise<void>;
145
- /**
146
- * Private helper methods
147
- */
148
- private setContextIfProvided;
149
- private formatMessage;
150
- /**
151
- * Static factory method for easy instantiation
152
- */
153
301
  static create(config?: LoggerConfig): LogixiaLoggerService;
154
- /**
155
- * Get the underlying Logitron logger instance
156
- */
157
302
  getLogger(): LogixiaLogger;
303
+ private setContextIfProvided;
304
+ private formatMessage;
158
305
  }
159
306
  //#endregion
160
307
  //#region src/core/kafka-trace.interceptor.d.ts
@@ -221,7 +368,7 @@ declare class LogixiaLoggerModule implements NestModule {
221
368
  inject: string[];
222
369
  useValue?: never;
223
370
  })[];
224
- exports: (string | typeof WebSocketTraceInterceptor | typeof LogixiaLoggerService | typeof KafkaTraceInterceptor)[];
371
+ exports: (string | typeof WebSocketTraceInterceptor | typeof KafkaTraceInterceptor | typeof LogixiaLoggerService)[];
225
372
  global: boolean;
226
373
  };
227
374
  /**
@@ -258,7 +405,7 @@ declare class LogixiaLoggerModule implements NestModule {
258
405
  useFactory: (traceConfig: any) => WebSocketTraceInterceptor;
259
406
  inject: string[];
260
407
  })[];
261
- exports: (string | typeof WebSocketTraceInterceptor | typeof LogixiaLoggerService | typeof KafkaTraceInterceptor)[];
408
+ exports: (string | typeof WebSocketTraceInterceptor | typeof KafkaTraceInterceptor | typeof LogixiaLoggerService)[];
262
409
  global: boolean;
263
410
  };
264
411
  /**
@@ -277,5 +424,5 @@ declare class LogixiaLoggerModule implements NestModule {
277
424
  private static createAsyncOptionsProvider;
278
425
  }
279
426
  //#endregion
280
- export { LogixiaOptionsFactory as a, LogixiaLoggerService as c, LogixiaLoggerModule as i, LogixiaLogger as l, LOGIXIA_LOGGER_PREFIX as n, WebSocketTraceInterceptor as o, LogixiaAsyncOptions as r, KafkaTraceInterceptor as s, LOGIXIA_LOGGER_CONFIG as t, createLogger as u };
281
- //# sourceMappingURL=logitron-logger.module-Bq3_KckP.d.ts.map
427
+ export { LogixiaOptionsFactory as a, LogixiaLoggerService as c, LogixiaPlugin as d, PluginRegistry as f, LogixiaLoggerModule as i, LogixiaLogger as l, usePlugin as m, LOGIXIA_LOGGER_PREFIX as n, WebSocketTraceInterceptor as o, globalPluginRegistry as p, LogixiaAsyncOptions as r, KafkaTraceInterceptor as s, LOGIXIA_LOGGER_CONFIG as t, createLogger as u };
428
+ //# sourceMappingURL=logitron-logger.module-CMRBDGwm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logitron-logger.module-CMRBDGwm.d.ts","names":[],"sources":["../src/plugin.ts","../src/core/logitron-logger.ts","../src/core/logitron-nestjs.service.ts","../src/core/kafka-trace.interceptor.ts","../src/core/websocket-trace.interceptor.ts","../src/core/logitron-logger.module.ts"],"sourcesContent":[],"mappings":"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"}