logixia 1.3.0 → 1.4.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 -0
  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 +458 -3
  8. package/dist/index.d.mts.map +1 -1
  9. package/dist/index.d.ts +458 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +436 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mjs +416 -3
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/{logitron-logger.module-C0G8JGVf.d.ts → logitron-logger.module-9vOhKWDG.d.ts} +120 -6
  16. package/dist/logitron-logger.module-9vOhKWDG.d.ts.map +1 -0
  17. package/dist/{logitron-logger.module-2AzkadqZ.mjs → logitron-logger.module-C939PIEV.mjs} +331 -10
  18. package/dist/logitron-logger.module-C939PIEV.mjs.map +1 -0
  19. package/dist/{logitron-logger.module-BqNKp0Fs.js → logitron-logger.module-CCnX7GwK.js} +383 -8
  20. package/dist/logitron-logger.module-CCnX7GwK.js.map +1 -0
  21. package/dist/{logitron-logger.module-DQKaZTJL.d.mts → logitron-logger.module-SArymP6b.d.mts} +120 -6
  22. package/dist/logitron-logger.module-SArymP6b.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 +72 -9
  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-BqNKp0Fs.js.map +0 -1
  54. package/dist/logitron-logger.module-C0G8JGVf.d.ts.map +0 -1
  55. package/dist/logitron-logger.module-DQKaZTJL.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
package/dist/index.d.mts CHANGED
@@ -1,8 +1,80 @@
1
- import { A as RequestMetrics, C as SamplingConfig, D as HttpError, E as TraceIdExtractorConfig, O as HttpRequest, S as RequestContext, T as TraceIdConfig, _ as LogLevelString, a as Environment, b as NamespaceLevels, c as GracefulShutdownConfig, d as ILogger, f as ILoggerDefault, g as LogLevel, h as LogFieldKey, i as DEFAULT_LOG_LEVELS, j as RequestTiming, k as HttpResponse, l as IBaseLogger, m as LogEntry, n as CustomLevelMethods, o as ErrorSerializationOptions, p as LogColor, r as DEFAULT_LOG_COLORS, s as ExtractLevels, t as ContextData, u as ILogFormatter, v as LoggerConfig, w as TimingEntry, x as RedactConfig, y as LoggerWithLevels } from "./index-iDTW2-eY.mjs";
2
- import { a as LogixiaOptionsFactory, c as LogixiaLoggerService, i as LogixiaLoggerModule, l as LogixiaLogger, n as LOGIXIA_LOGGER_PREFIX, o as WebSocketTraceInterceptor, r as LogixiaAsyncOptions, s as KafkaTraceInterceptor, t as LOGIXIA_LOGGER_CONFIG, u as createLogger$1 } from "./logitron-logger.module-DQKaZTJL.mjs";
1
+ import { C as SamplingConfig, E as TraceIdExtractorConfig, G as RequestTiming, H as HttpRequest, S as RequestContext, T as TraceIdConfig, U as HttpResponse, V as HttpError, W as RequestMetrics, _ as LogLevelString, a as Environment, b as NamespaceLevels, c as GracefulShutdownConfig, d as ILogger, f as ILoggerDefault, g as LogLevel, h as LogFieldKey, i as DEFAULT_LOG_LEVELS, l as IBaseLogger, m as LogEntry, n as CustomLevelMethods, o as ErrorSerializationOptions, p as LogColor, r as DEFAULT_LOG_COLORS, s as ExtractLevels, t as ContextData, u as ILogFormatter, v as LoggerConfig, w as TimingEntry, x as RedactConfig, y as LoggerWithLevels } from "./index-Ium497V3.mjs";
2
+ import { a as LogixiaOptionsFactory, c as LogixiaLoggerService, d as LogixiaPlugin, f as PluginRegistry, i as LogixiaLoggerModule, l as LogixiaLogger, m as usePlugin, n as LOGIXIA_LOGGER_PREFIX, o as WebSocketTraceInterceptor, p as globalPluginRegistry, r as LogixiaAsyncOptions, s as KafkaTraceInterceptor, t as LOGIXIA_LOGGER_CONFIG, u as createLogger$1 } from "./logitron-logger.module-SArymP6b.mjs";
3
3
  import "./search-DanSf_yc.mjs";
4
4
  import { AsyncLocalStorage } from "node:async_hooks";
5
+ import { ArgumentsHost, ExceptionFilter } from "@nestjs/common";
6
+ import { IncomingMessage, ServerResponse } from "node:http";
5
7
 
8
+ //#region src/core/nestjs-extras.d.ts
9
+
10
+ /**
11
+ * Inject the Logixia logger registered in the current NestJS DI container.
12
+ *
13
+ * Equivalent to `@Inject(LOGIXIA_LOGGER_TOKEN)` but without needing to import
14
+ * the internal token constant yourself.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * constructor(@InjectLogger() private readonly logger: LogixiaLoggerService) {}
19
+ * ```
20
+ */
21
+ declare const InjectLogger: () => ParameterDecorator;
22
+ interface LogMethodOptions {
23
+ /**
24
+ * Log level to use for entry / exit messages.
25
+ * @default 'debug'
26
+ */
27
+ level?: 'debug' | 'info' | 'verbose';
28
+ /**
29
+ * Whether to log the arguments passed to the method.
30
+ * Disable for high-throughput hot paths.
31
+ * @default true
32
+ */
33
+ logArgs?: boolean;
34
+ /**
35
+ * Whether to log the return value of the method.
36
+ * @default false
37
+ */
38
+ logResult?: boolean;
39
+ /**
40
+ * Whether to log error stack traces for thrown errors.
41
+ * @default true
42
+ */
43
+ logErrors?: boolean;
44
+ /**
45
+ * Custom label used in log messages instead of the auto-detected class.method name.
46
+ */
47
+ label?: string;
48
+ }
49
+ /**
50
+ * Method decorator that auto-logs entry, exit, duration, and errors.
51
+ *
52
+ * Works on both async and sync methods. Attaches to the logger found on the
53
+ * class instance via a `logger` property (the conventional NestJS name).
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * @LogMethod({ level: 'info', logArgs: true })
58
+ * async processPayment(orderId: string): Promise<void> { … }
59
+ * ```
60
+ */
61
+ declare function LogMethod(options?: LogMethodOptions): MethodDecorator;
62
+ /**
63
+ * Global NestJS exception filter that logs every unhandled exception with full
64
+ * request context (method, URL, status) before delegating the response.
65
+ *
66
+ * Register in `main.ts`:
67
+ * ```ts
68
+ * const logger = app.get(LogixiaLoggerService);
69
+ * app.useGlobalFilters(new LogixiaExceptionFilter(logger));
70
+ * ```
71
+ */
72
+ declare class LogixiaExceptionFilter implements ExceptionFilter {
73
+ private readonly logger?;
74
+ constructor(logger?: LogixiaLoggerService | undefined);
75
+ catch(exception: unknown, host: ArgumentsHost): void;
76
+ }
77
+ //#endregion
6
78
  //#region src/formatters/json.formatter.d.ts
7
79
  declare class JsonFormatter implements ILogFormatter {
8
80
  private includeTimestamp;
@@ -71,6 +143,118 @@ declare function isError(value: unknown): value is Error;
71
143
  */
72
144
  declare function normalizeError(error: unknown): Error;
73
145
  //#endregion
146
+ //#region src/utils/otel.d.ts
147
+ /**
148
+ * logixia — OpenTelemetry auto trace-log correlation
149
+ *
150
+ * Zero-config: if `@opentelemetry/api` is installed, logixia automatically
151
+ * reads the active span context and injects `traceId`, `spanId`, and
152
+ * `traceFlags` into every log entry. No manual wiring needed.
153
+ *
154
+ * The integration is completely optional — if `@opentelemetry/api` is absent
155
+ * (or the OTel SDK is not initialised), all helpers return `undefined` silently.
156
+ *
157
+ * Additionally exposes a `createOtelLogExporter()` factory that routes every
158
+ * logixia log entry through the active OTel LoggerProvider (OTLP export).
159
+ *
160
+ * @example Auto bridge (zero config)
161
+ * ```ts
162
+ * import { createLogger } from 'logixia';
163
+ * import { initOtelBridge } from 'logixia';
164
+ *
165
+ * // Call once at app startup, after your OTel SDK is initialised
166
+ * initOtelBridge();
167
+ *
168
+ * const logger = createLogger({ appName: 'api' });
169
+ * // Every logger.info / warn / error call now auto-injects traceId + spanId
170
+ * // from the currently active OTel span — no per-call code needed.
171
+ * ```
172
+ *
173
+ * @example Manual span context injection
174
+ * ```ts
175
+ * import { getActiveOtelContext } from 'logixia';
176
+ *
177
+ * const ctx = getActiveOtelContext();
178
+ * await logger.info('Payment processed', { ...ctx, orderId: 'ord_123' });
179
+ * // → { traceId: 'abc...', spanId: 'def...', traceFlags: 1, orderId: 'ord_123' }
180
+ * ```
181
+ */
182
+ interface OtelSpanContext {
183
+ /** W3C 32-hex-char trace ID */
184
+ traceId: string;
185
+ /** W3C 16-hex-char span ID */
186
+ spanId: string;
187
+ /** W3C trace-flags integer (1 = sampled) */
188
+ traceFlags: number;
189
+ /** Whether this context is from a valid, sampled span */
190
+ isSampled: boolean;
191
+ }
192
+ interface OtelBridgeOptions {
193
+ /**
194
+ * Field name written to log entries for the trace ID.
195
+ * @default 'traceId'
196
+ */
197
+ traceIdField?: string;
198
+ /**
199
+ * Field name written to log entries for the span ID.
200
+ * @default 'spanId'
201
+ */
202
+ spanIdField?: string;
203
+ /**
204
+ * Field name written to log entries for trace flags.
205
+ * @default 'traceFlags'
206
+ */
207
+ traceFlagsField?: string;
208
+ /**
209
+ * Only inject context when the span is sampled (traceFlags bit 1 set).
210
+ * @default false
211
+ */
212
+ sampledOnly?: boolean;
213
+ }
214
+ /**
215
+ * Read the currently active OTel span context (if any) and return its fields
216
+ * in a plain object suitable for spreading into a log entry.
217
+ *
218
+ * Returns `undefined` when:
219
+ * - `@opentelemetry/api` is not installed
220
+ * - No active span exists (root context)
221
+ * - The span context is invalid (all-zeros)
222
+ */
223
+ declare function getActiveOtelContext(opts?: OtelBridgeOptions): OtelSpanContext | undefined;
224
+ /**
225
+ * Returns a metadata object with OTel context fields ready to merge into a log call,
226
+ * using the configured field names.
227
+ *
228
+ * Returns `{}` when no active span exists (safe to spread unconditionally).
229
+ *
230
+ * @example
231
+ * ```ts
232
+ * await logger.info('Payment processed', {
233
+ * ...getOtelMetaFields(),
234
+ * orderId: 'ord_123',
235
+ * });
236
+ * ```
237
+ */
238
+ declare function getOtelMetaFields(opts?: OtelBridgeOptions): Record<string, unknown>;
239
+ /**
240
+ * Initialise the global OTel bridge.
241
+ *
242
+ * Once called, logixia's internal log pipeline checks for an active OTel span
243
+ * on **every** log call and automatically merges the span context into the
244
+ * entry's metadata — no per-call wiring needed.
245
+ *
246
+ * Call once at app startup, **after** the OTel SDK has been initialised:
247
+ * ```ts
248
+ * import { initOtelBridge } from 'logixia';
249
+ * initOtelBridge();
250
+ * ```
251
+ */
252
+ declare function initOtelBridge(opts?: OtelBridgeOptions): void;
253
+ /**
254
+ * Disable the OTel bridge (useful for tests).
255
+ */
256
+ declare function disableOtelBridge(): void;
257
+ //#endregion
74
258
  //#region src/utils/redact.utils.d.ts
75
259
  /**
76
260
  * Deep-clone and redact an object according to the given RedactConfig.
@@ -173,6 +357,106 @@ declare const DEFAULT_TRACE_HEADERS: string[];
173
357
  */
174
358
  declare function createTraceMiddleware(config: TraceIdConfig): (req: unknown, res: unknown, next: () => void) => void;
175
359
  //#endregion
360
+ //#region src/utils/typed-logger.d.ts
361
+ /**
362
+ * logixia — TypeScript typed log fields
363
+ *
364
+ * Solves the type-safety gap: standard `Record<string, unknown>` metadata gives
365
+ * zero IDE autocomplete and lets typos slip silently into production logs.
366
+ *
367
+ * Two complementary utilities:
368
+ *
369
+ * 1. `createTypedLogger<TFields>()` — wraps any IBaseLogger so that the second
370
+ * argument of every log method is constrained to `TFields` (a typed object).
371
+ * Compile-time safety, zero runtime overhead.
372
+ *
373
+ * 2. `defineLogSchema<TFields>(schema)` — declares expected fields with optional
374
+ * validators. In development (NODE_ENV !== 'production') every log call is
375
+ * validated against the schema and a warning is emitted for missing required
376
+ * fields or type mismatches.
377
+ *
378
+ * @example
379
+ * ```ts
380
+ * import { createTypedLogger, defineLogSchema } from 'logixia';
381
+ *
382
+ * interface OrderFields {
383
+ * orderId: string;
384
+ * userId: string;
385
+ * amount?: number;
386
+ * currency?: string;
387
+ * }
388
+ *
389
+ * const schema = defineLogSchema<OrderFields>({
390
+ * orderId: { type: 'string', required: true },
391
+ * userId: { type: 'string', required: true },
392
+ * amount: { type: 'number' },
393
+ * currency: { type: 'string' },
394
+ * });
395
+ *
396
+ * const orderLogger = createTypedLogger<OrderFields>(baseLogger, schema);
397
+ * await orderLogger.info('Order created', { orderId: 'ord_123', userId: 'usr_456', amount: 99.99 });
398
+ * // ^^^^ fully typed autocomplete ^^^^
399
+ * ```
400
+ */
401
+ type LogFieldType = 'string' | 'number' | 'boolean' | 'object' | 'array';
402
+ interface LogFieldDef {
403
+ type: LogFieldType;
404
+ /** Emit a warning when this field is missing from the log call. Default: false */
405
+ required?: boolean;
406
+ /** Custom validator — return a string to emit it as a warning message. */
407
+ validate?: (value: unknown) => string | undefined;
408
+ }
409
+ type LogSchema<TFields extends Record<string, unknown>> = { [K in keyof TFields]: LogFieldDef };
410
+ interface CompiledSchema<TFields extends Record<string, unknown>> {
411
+ readonly fields: LogSchema<TFields>;
412
+ /**
413
+ * Validate a payload against the schema.
414
+ * Returns an array of warning strings (empty = pass).
415
+ * Only runs in non-production environments.
416
+ */
417
+ validate(payload: Partial<TFields>): string[];
418
+ }
419
+ /**
420
+ * Define a typed schema for a category of log entries.
421
+ *
422
+ * Call this once at module initialisation and pass it to `createTypedLogger`.
423
+ * In development, every log call is validated against the schema.
424
+ */
425
+ declare function defineLogSchema<TFields extends Record<string, unknown>>(fields: LogSchema<TFields>): CompiledSchema<TFields>;
426
+ /** IBaseLogger-compatible subset used by TypedLogger */
427
+ interface LoggerLike {
428
+ error(message: string | Error, data?: Record<string, unknown>): Promise<void>;
429
+ warn(message: string, data?: Record<string, unknown>): Promise<void>;
430
+ info(message: string, data?: Record<string, unknown>): Promise<void>;
431
+ debug(message: string, data?: Record<string, unknown>): Promise<void>;
432
+ verbose?(message: string, data?: Record<string, unknown>): Promise<void>;
433
+ trace?(message: string, data?: Record<string, unknown>): Promise<void>;
434
+ }
435
+ /**
436
+ * A logger whose metadata is typed to `TFields`.
437
+ *
438
+ * The `error` overload still accepts a plain `Error` object as the first arg
439
+ * (with optional `TFields` data) so the typed logger remains a drop-in replacement.
440
+ */
441
+ interface TypedLogger<TFields extends Record<string, unknown>> {
442
+ error(error: Error, data?: Partial<TFields>): Promise<void>;
443
+ error(message: string, data?: Partial<TFields>): Promise<void>;
444
+ warn(message: string, data?: Partial<TFields>): Promise<void>;
445
+ info(message: string, data?: Partial<TFields>): Promise<void>;
446
+ debug(message: string, data?: Partial<TFields>): Promise<void>;
447
+ verbose(message: string, data?: Partial<TFields>): Promise<void>;
448
+ trace(message: string, data?: Partial<TFields>): Promise<void>;
449
+ /** Access the underlying untyped logger if needed. */
450
+ readonly raw: LoggerLike;
451
+ }
452
+ /**
453
+ * Wrap any logixia logger with a type-safe field interface.
454
+ *
455
+ * @param logger Any object that implements `IBaseLogger` (e.g. the result of `createLogger()`)
456
+ * @param schema Optional schema for dev-time validation. Created with `defineLogSchema()`.
457
+ */
458
+ declare function createTypedLogger<TFields extends Record<string, unknown>>(logger: LoggerLike, schema?: CompiledSchema<TFields>): TypedLogger<TFields>;
459
+ //#endregion
176
460
  //#region src/context/async-context.d.ts
177
461
  interface LogContext {
178
462
  requestId?: string;
@@ -259,6 +543,177 @@ interface SamplingStats {
259
543
  windowStart: number;
260
544
  }
261
545
  //#endregion
546
+ //#region src/metrics.d.ts
547
+ /**
548
+ * Increment a counter on each matching log entry.
549
+ *
550
+ * @example Count every error entry, labelled by context:
551
+ * ```ts
552
+ * error_count: { type: 'counter', levelFilter: 'error', labels: ['context'] }
553
+ * ```
554
+ *
555
+ * @example Count entries where payload.event === 'checkout':
556
+ * ```ts
557
+ * checkout_events: { type: 'counter', field: 'event', value: 'checkout' }
558
+ * ```
559
+ */
560
+ interface CounterConfig {
561
+ type: 'counter';
562
+ /** Only increment when `entry.level` equals this value. Omit to count all entries. */
563
+ levelFilter?: string;
564
+ /**
565
+ * Only increment when `entry.payload[field] === value`.
566
+ * If omitted, every entry (matching `levelFilter`) is counted.
567
+ */
568
+ field?: string;
569
+ value?: unknown;
570
+ /** `entry.payload` fields used as Prometheus label dimensions. `'level'` is also valid. */
571
+ labels?: string[];
572
+ help?: string;
573
+ }
574
+ /**
575
+ * Observe a numeric payload field and bucket it into a Prometheus histogram.
576
+ *
577
+ * @example Duration histogram labelled by HTTP method and status code:
578
+ * ```ts
579
+ * http_request_duration: {
580
+ * type: 'histogram',
581
+ * field: 'duration',
582
+ * labels: ['method', 'statusCode'],
583
+ * buckets: [10, 25, 50, 100, 250, 500, 1000],
584
+ * }
585
+ * ```
586
+ */
587
+ interface HistogramConfig {
588
+ type: 'histogram';
589
+ /** The `entry.payload` field containing the numeric value to observe. */
590
+ field: string;
591
+ /** `entry.payload` fields used as Prometheus label dimensions. */
592
+ labels?: string[];
593
+ help?: string;
594
+ /**
595
+ * Bucket upper bounds (inclusive). Sorted automatically.
596
+ * Default: [1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000]
597
+ */
598
+ buckets?: number[];
599
+ }
600
+ /**
601
+ * Track the most recent numeric value of a payload field as a gauge.
602
+ *
603
+ * @example Track live connection count:
604
+ * ```ts
605
+ * active_connections: { type: 'gauge', field: 'connections' }
606
+ * ```
607
+ */
608
+ interface GaugeConfig {
609
+ type: 'gauge';
610
+ /** The `entry.payload` field containing the numeric value. */
611
+ field: string;
612
+ /** `entry.payload` fields used as Prometheus label dimensions. */
613
+ labels?: string[];
614
+ help?: string;
615
+ }
616
+ type MetricConfig = CounterConfig | HistogramConfig | GaugeConfig;
617
+ type MetricsMap = Record<string, MetricConfig>;
618
+ /**
619
+ * A logixia plugin that extracts Prometheus-compatible metrics from log entries.
620
+ *
621
+ * Implements `LogixiaPlugin` — pass directly to `logger.use()`:
622
+ * ```ts
623
+ * const metrics = new MetricsPlugin({ ... });
624
+ * logger.use(metrics);
625
+ * ```
626
+ *
627
+ * Or use the `createMetricsPlugin()` factory (preferred):
628
+ * ```ts
629
+ * const metrics = createMetricsPlugin({ ... });
630
+ * logger.use(metrics);
631
+ * ```
632
+ */
633
+ declare class MetricsPlugin implements LogixiaPlugin {
634
+ readonly name = "logixia-metrics";
635
+ private readonly map;
636
+ private readonly metricState;
637
+ constructor(map: MetricsMap);
638
+ onInit(): void;
639
+ onLog(entry: LogEntry): LogEntry;
640
+ /**
641
+ * Render all registered metrics in the Prometheus text exposition format
642
+ * (version 0.0.4).
643
+ *
644
+ * All metric names are prefixed with `logixia_`.
645
+ *
646
+ * @example
647
+ * ```
648
+ * # HELP logixia_error_count Total error log entries
649
+ * # TYPE logixia_error_count counter
650
+ * logixia_error_count{context="OrderService"} 7
651
+ * ```
652
+ */
653
+ render(): string;
654
+ /**
655
+ * Reset all metric counters and observations back to zero.
656
+ * Useful between test runs or on a scheduled reset interval.
657
+ */
658
+ reset(): void;
659
+ /**
660
+ * Express route handler — call `app.get('/metrics', metrics.expressHandler())`.
661
+ *
662
+ * @example
663
+ * ```ts
664
+ * import express from 'express';
665
+ * const app = express();
666
+ * app.get('/metrics', metrics.expressHandler());
667
+ * ```
668
+ */
669
+ expressHandler(): (req: unknown, res: {
670
+ set(k: string, v: string): unknown;
671
+ end(body: string): void;
672
+ }) => void;
673
+ /**
674
+ * Raw Node.js `http` server handler.
675
+ * Responds to `GET /metrics` with the Prometheus text payload.
676
+ *
677
+ * @example Start a dedicated metrics server on the standard port:
678
+ * ```ts
679
+ * import http from 'node:http';
680
+ * const server = http.createServer(metrics.httpHandler());
681
+ * server.listen(9464); // Prometheus default port for custom exporters
682
+ * ```
683
+ */
684
+ httpHandler(): (req: IncomingMessage, res: ServerResponse) => void;
685
+ private initAllState;
686
+ private initSingleState;
687
+ }
688
+ /**
689
+ * Create a `MetricsPlugin` from a metrics map and return it ready for
690
+ * `logger.use()`.
691
+ *
692
+ * @example
693
+ * ```ts
694
+ * import { createMetricsPlugin } from 'logixia';
695
+ *
696
+ * const metrics = createMetricsPlugin({
697
+ * http_request_duration: {
698
+ * type: 'histogram',
699
+ * field: 'duration',
700
+ * labels: ['method', 'statusCode'],
701
+ * help: 'HTTP request duration in milliseconds',
702
+ * },
703
+ * error_count: {
704
+ * type: 'counter',
705
+ * levelFilter: 'error',
706
+ * labels: ['context'],
707
+ * help: 'Total error log entries',
708
+ * },
709
+ * });
710
+ *
711
+ * logger.use(metrics);
712
+ * app.get('/metrics', metrics.expressHandler());
713
+ * ```
714
+ */
715
+ declare function createMetricsPlugin(map: MetricsMap): MetricsPlugin;
716
+ //#endregion
262
717
  //#region src/index.d.ts
263
718
  /**
264
719
  * Default configuration for Logixia logger
@@ -345,5 +800,5 @@ declare const logger: LogixiaLogger<{
345
800
  outputs: string[];
346
801
  }>;
347
802
  //#endregion
348
- export { ContextData, CustomLevelMethods, DEFAULT_CONFIG, DEFAULT_LOG_COLORS, DEFAULT_LOG_LEVELS, DEFAULT_TRACE_HEADERS, Environment, ErrorSerializationOptions, ExtractLevels, FlushOnExitOptions, GracefulShutdownConfig, HttpError, HttpRequest, HttpResponse, IBaseLogger, ILogFormatter, ILogger, ILoggerDefault, JsonFormatter, KafkaTraceInterceptor, LOGIXIA_LOGGER_CONFIG, LOGIXIA_LOGGER_PREFIX, LogColor, type LogContext, LogEntry, LogFieldKey, LogLevel, LogLevelString, LoggerConfig, LoggerConfig as LoggerConfigInterface, LoggerWithLevels, LogixiaAsyncOptions, LogixiaContext, LogixiaLogger, LogixiaLoggerModule, LogixiaLoggerService, LogixiaOptionsFactory, NamespaceLevels, type RedactConfig, RequestContext, RequestMetrics, RequestTiming, SamplingConfig, type SamplingStats, TextFormatter, TimingEntry, TraceIdConfig, TraceIdExtractorConfig, WebSocketTraceInterceptor, applyRedaction, createExpressContextMiddleware, createFastifyContextHook, createLogger, createLoggerService, createTraceMiddleware, deregisterFromShutdown, extractTraceId, flushOnExit, generateTraceId, getCurrentTraceId, isError, logger, normalizeError, redactObject, registerForShutdown, resetShutdownHandlers, runWithTraceId, serializeError, setTraceId, traceStorage };
803
+ export { type CompiledSchema, ContextData, type CounterConfig, CustomLevelMethods, DEFAULT_CONFIG, DEFAULT_LOG_COLORS, DEFAULT_LOG_LEVELS, DEFAULT_TRACE_HEADERS, Environment, ErrorSerializationOptions, ExtractLevels, FlushOnExitOptions, type GaugeConfig, GracefulShutdownConfig, type HistogramConfig, HttpError, HttpRequest, HttpResponse, IBaseLogger, ILogFormatter, ILogger, ILoggerDefault, InjectLogger, JsonFormatter, KafkaTraceInterceptor, LOGIXIA_LOGGER_CONFIG, LOGIXIA_LOGGER_PREFIX, LogColor, type LogContext, LogEntry, type LogFieldDef, LogFieldKey, type LogFieldType, LogLevel, LogLevelString, LogMethod, type LogMethodOptions, type LogSchema, LoggerConfig, LoggerConfig as LoggerConfigInterface, type LoggerLike, LoggerWithLevels, LogixiaAsyncOptions, LogixiaContext, LogixiaExceptionFilter, LogixiaLogger, LogixiaLoggerModule, LogixiaLoggerService, LogixiaOptionsFactory, type LogixiaPlugin, type MetricConfig, type MetricsMap, MetricsPlugin, NamespaceLevels, type OtelBridgeOptions, type OtelSpanContext, PluginRegistry, type RedactConfig, RequestContext, RequestMetrics, RequestTiming, SamplingConfig, type SamplingStats, TextFormatter, TimingEntry, TraceIdConfig, TraceIdExtractorConfig, type TypedLogger, WebSocketTraceInterceptor, applyRedaction, createExpressContextMiddleware, createFastifyContextHook, createLogger, createLoggerService, createMetricsPlugin, createTraceMiddleware, createTypedLogger, defineLogSchema, deregisterFromShutdown, disableOtelBridge, extractTraceId, flushOnExit, generateTraceId, getActiveOtelContext, getCurrentTraceId, getOtelMetaFields, globalPluginRegistry, initOtelBridge, isError, logger, normalizeError, redactObject, registerForShutdown, resetShutdownHandlers, runWithTraceId, serializeError, setTraceId, traceStorage, usePlugin };
349
804
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/formatters/json.formatter.ts","../src/formatters/text.formatter.ts","../src/utils/error.utils.ts","../src/utils/redact.utils.ts","../src/utils/shutdown.utils.ts","../src/utils/trace.utils.ts","../src/context/async-context.ts","../src/utils/sampling.utils.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/nestjs-extras.ts","../src/formatters/json.formatter.ts","../src/formatters/text.formatter.ts","../src/utils/error.utils.ts","../src/utils/otel.ts","../src/utils/redact.utils.ts","../src/utils/shutdown.utils.ts","../src/utils/trace.utils.ts","../src/utils/typed-logger.ts","../src/context/async-context.ts","../src/utils/sampling.utils.ts","../src/metrics.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}