logixia 1.13.0 → 2.0.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 (176) hide show
  1. package/README.md +81 -16
  2. package/dist/{async-context-CwBNMm2E.mjs → async-context-BzJrbfQs.mjs} +8 -4
  3. package/dist/async-context-BzJrbfQs.mjs.map +1 -0
  4. package/dist/{async-context-CSHWoHMB.js → async-context-DyQQYq3I.js} +8 -4
  5. package/dist/async-context-DyQQYq3I.js.map +1 -0
  6. package/dist/{azure-monitor.transport-CG7ClkYj.d.ts → azure-monitor.transport-Cn_3Usvu.d.ts} +2 -2
  7. package/dist/{azure-monitor.transport-CG7ClkYj.d.ts.map → azure-monitor.transport-Cn_3Usvu.d.ts.map} +1 -1
  8. package/dist/{azure-monitor.transport-Cm74kXZS.d.mts → azure-monitor.transport-D7Da4RAb.d.mts} +2 -2
  9. package/dist/{azure-monitor.transport-Cm74kXZS.d.mts.map → azure-monitor.transport-D7Da4RAb.d.mts.map} +1 -1
  10. package/dist/azure.d.mts +2 -2
  11. package/dist/azure.d.ts +2 -2
  12. package/dist/browser.d.mts +9 -0
  13. package/dist/browser.d.mts.map +1 -1
  14. package/dist/browser.d.ts +9 -0
  15. package/dist/browser.d.ts.map +1 -1
  16. package/dist/browser.js +43 -12
  17. package/dist/browser.js.map +1 -1
  18. package/dist/browser.mjs +43 -12
  19. package/dist/browser.mjs.map +1 -1
  20. package/dist/{logitron-logger.module-Bs3XYZgF.mjs → builder-0gEzRopq.mjs} +383 -1021
  21. package/dist/builder-0gEzRopq.mjs.map +1 -0
  22. package/dist/{logitron-logger.module-BsDZR5BH.js → builder-D44QktIo.js} +411 -1155
  23. package/dist/builder-D44QktIo.js.map +1 -0
  24. package/dist/cli/index.js +130 -65
  25. package/dist/cloudwatch.d.mts +2 -2
  26. package/dist/cloudwatch.d.ts +2 -2
  27. package/dist/cloudwatch.js +2 -1
  28. package/dist/cloudwatch.mjs +2 -1
  29. package/dist/{cloudwatch.transport-pNBNWJLt.js → cloudwatch.transport-BO1ahxw-.js} +26 -19
  30. package/dist/cloudwatch.transport-BO1ahxw-.js.map +1 -0
  31. package/dist/{cloudwatch.transport-yBwm4OeO.mjs → cloudwatch.transport-DZ6ies7g.mjs} +26 -19
  32. package/dist/cloudwatch.transport-DZ6ies7g.mjs.map +1 -0
  33. package/dist/{cloudwatch.transport-CGHY4buE.d.mts → cloudwatch.transport-DsEq633o.d.ts} +9 -2
  34. package/dist/cloudwatch.transport-DsEq633o.d.ts.map +1 -0
  35. package/dist/{cloudwatch.transport-DK_8cKd3.d.ts → cloudwatch.transport-UlyZFWMn.d.mts} +9 -2
  36. package/dist/cloudwatch.transport-UlyZFWMn.d.mts.map +1 -0
  37. package/dist/{coerce.utils-BN980Y9V.js → coerce.utils-B-LilukN.js} +1 -1
  38. package/dist/{coerce.utils-BN980Y9V.js.map → coerce.utils-B-LilukN.js.map} +1 -1
  39. package/dist/{coerce.utils-Dxv4_ikC.mjs → coerce.utils-Cu6IUTgX.mjs} +1 -1
  40. package/dist/{coerce.utils-Dxv4_ikC.mjs.map → coerce.utils-Cu6IUTgX.mjs.map} +1 -1
  41. package/dist/correlation.d.mts +24 -6
  42. package/dist/correlation.d.mts.map +1 -1
  43. package/dist/correlation.d.ts +24 -6
  44. package/dist/correlation.d.ts.map +1 -1
  45. package/dist/correlation.js +41 -16
  46. package/dist/correlation.js.map +1 -1
  47. package/dist/correlation.mjs +41 -16
  48. package/dist/correlation.mjs.map +1 -1
  49. package/dist/entry-fields-BJkuPnIg.mjs +30 -0
  50. package/dist/entry-fields-BJkuPnIg.mjs.map +1 -0
  51. package/dist/entry-fields-BvOLFlJ4.js +36 -0
  52. package/dist/entry-fields-BvOLFlJ4.js.map +1 -0
  53. package/dist/gcp.d.mts +2 -2
  54. package/dist/gcp.d.ts +2 -2
  55. package/dist/gcp.js +2 -1
  56. package/dist/gcp.mjs +2 -1
  57. package/dist/{gcp.transport-BOhkVKlI.d.ts → gcp.transport-B7oc97sG.d.ts} +2 -2
  58. package/dist/gcp.transport-B7oc97sG.d.ts.map +1 -0
  59. package/dist/{gcp.transport-SHdtc1n0.js → gcp.transport-CHV8MGgz.js} +5 -5
  60. package/dist/gcp.transport-CHV8MGgz.js.map +1 -0
  61. package/dist/{gcp.transport-BJuNRFe_.mjs → gcp.transport-DBX5TPIy.mjs} +5 -5
  62. package/dist/gcp.transport-DBX5TPIy.mjs.map +1 -0
  63. package/dist/{gcp.transport-Bi6CUqZR.d.mts → gcp.transport-GrJurKo8.d.mts} +2 -2
  64. package/dist/gcp.transport-GrJurKo8.d.mts.map +1 -0
  65. package/dist/{index-BPKwwERo.d.mts → index-3mw5gaCw.d.mts} +2 -2
  66. package/dist/{index-BPKwwERo.d.mts.map → index-3mw5gaCw.d.mts.map} +1 -1
  67. package/dist/{index-C1X-TE5I.d.ts → index-DhIoploR.d.ts} +2 -2
  68. package/dist/{index-C1X-TE5I.d.ts.map → index-DhIoploR.d.ts.map} +1 -1
  69. package/dist/index.d.mts +99 -137
  70. package/dist/index.d.mts.map +1 -1
  71. package/dist/index.d.ts +99 -137
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +146 -510
  74. package/dist/index.js.map +1 -1
  75. package/dist/index.mjs +99 -431
  76. package/dist/index.mjs.map +1 -1
  77. package/dist/logitron-logger-BFDSO8Io.d.mts +257 -0
  78. package/dist/logitron-logger-BFDSO8Io.d.mts.map +1 -0
  79. package/dist/logitron-logger-UVeN-mQm.d.ts +257 -0
  80. package/dist/logitron-logger-UVeN-mQm.d.ts.map +1 -0
  81. package/dist/middleware.d.mts +11 -4
  82. package/dist/middleware.d.mts.map +1 -1
  83. package/dist/middleware.d.ts +11 -4
  84. package/dist/middleware.d.ts.map +1 -1
  85. package/dist/middleware.js +148 -24
  86. package/dist/middleware.js.map +1 -1
  87. package/dist/middleware.mjs +148 -24
  88. package/dist/middleware.mjs.map +1 -1
  89. package/dist/nest.d.mts +481 -6
  90. package/dist/nest.d.mts.map +1 -1
  91. package/dist/nest.d.ts +481 -6
  92. package/dist/nest.d.ts.map +1 -1
  93. package/dist/nest.js +884 -13
  94. package/dist/nest.js.map +1 -0
  95. package/dist/nest.mjs +863 -6
  96. package/dist/nest.mjs.map +1 -0
  97. package/dist/{search-CFQRISUv.mjs → search-BFbu_oVn.mjs} +35 -12
  98. package/dist/search-BFbu_oVn.mjs.map +1 -0
  99. package/dist/{search-njTI2hdo.js → search-C4V0OMEn.js} +35 -12
  100. package/dist/search-C4V0OMEn.js.map +1 -0
  101. package/dist/{search-DujhR94O.d.ts → search-CNh9uVwR.d.ts} +2 -3
  102. package/dist/search-CNh9uVwR.d.ts.map +1 -0
  103. package/dist/{search-CQOo-Iq6.d.mts → search-DXANsQ2n.d.mts} +2 -3
  104. package/dist/search-DXANsQ2n.d.mts.map +1 -0
  105. package/dist/search.d.mts +3 -3
  106. package/dist/search.d.ts +3 -3
  107. package/dist/search.js +2 -2
  108. package/dist/search.mjs +2 -2
  109. package/dist/slack.transport-BZzoXDPn.d.mts +112 -0
  110. package/dist/slack.transport-BZzoXDPn.d.mts.map +1 -0
  111. package/dist/slack.transport-BfJRouB2.js +654 -0
  112. package/dist/slack.transport-BfJRouB2.js.map +1 -0
  113. package/dist/slack.transport-Bzw7sucI.mjs +643 -0
  114. package/dist/slack.transport-Bzw7sucI.mjs.map +1 -0
  115. package/dist/slack.transport-CXjQYOes.d.ts +112 -0
  116. package/dist/slack.transport-CXjQYOes.d.ts.map +1 -0
  117. package/dist/testing.d.mts +2 -2
  118. package/dist/testing.d.ts +2 -2
  119. package/dist/trace.utils-CvXgaiQT.mjs +278 -0
  120. package/dist/trace.utils-CvXgaiQT.mjs.map +1 -0
  121. package/dist/trace.utils-DpBOLDtq.js +358 -0
  122. package/dist/trace.utils-DpBOLDtq.js.map +1 -0
  123. package/dist/{transport.manager-D6KL3t9V.mjs → transport.manager-BiuCAJd2.mjs} +526 -160
  124. package/dist/transport.manager-BiuCAJd2.mjs.map +1 -0
  125. package/dist/{transport.manager-BivyUTtU.js → transport.manager-CXbKKdVE.js} +537 -159
  126. package/dist/transport.manager-CXbKKdVE.js.map +1 -0
  127. package/dist/{transport.types-B5vcyv2k.d.mts → transport.types-BMnurPcc.d.mts} +23 -3
  128. package/dist/transport.types-BMnurPcc.d.mts.map +1 -0
  129. package/dist/{transport.types-BuY84TwO.d.ts → transport.types-CGoHpWQR.d.ts} +23 -3
  130. package/dist/transport.types-CGoHpWQR.d.ts.map +1 -0
  131. package/dist/transports.d.mts +50 -20
  132. package/dist/transports.d.mts.map +1 -1
  133. package/dist/transports.d.ts +50 -20
  134. package/dist/transports.d.ts.map +1 -1
  135. package/dist/transports.js +9 -5
  136. package/dist/transports.mjs +8 -6
  137. package/dist/worker-entry.js +307 -55
  138. package/dist/worker.d.mts +2 -2
  139. package/dist/worker.d.ts +2 -2
  140. package/dist/worker.js +1 -1
  141. package/dist/worker.mjs +1 -1
  142. package/dist/{worker.transport-CfH6z37Z.js → worker.transport-BdPxu3PN.js} +1 -1
  143. package/dist/{worker.transport-CfH6z37Z.js.map → worker.transport-BdPxu3PN.js.map} +1 -1
  144. package/dist/{worker.transport-mKXgNK0L.d.ts → worker.transport-CdzSZJmw.d.ts} +2 -2
  145. package/dist/{worker.transport-mKXgNK0L.d.ts.map → worker.transport-CdzSZJmw.d.ts.map} +1 -1
  146. package/dist/{worker.transport-BP8Q28Z2.d.mts → worker.transport-JvGPog3C.d.mts} +2 -2
  147. package/dist/{worker.transport-BP8Q28Z2.d.mts.map → worker.transport-JvGPog3C.d.mts.map} +1 -1
  148. package/dist/{worker.transport-BhMyvqQ2.mjs → worker.transport-lPxO2MVL.mjs} +1 -1
  149. package/dist/{worker.transport-BhMyvqQ2.mjs.map → worker.transport-lPxO2MVL.mjs.map} +1 -1
  150. package/package.json +27 -14
  151. package/dist/.tsbuildinfo +0 -1
  152. package/dist/async-context-CSHWoHMB.js.map +0 -1
  153. package/dist/async-context-CwBNMm2E.mjs.map +0 -1
  154. package/dist/cloudwatch.transport-CGHY4buE.d.mts.map +0 -1
  155. package/dist/cloudwatch.transport-DK_8cKd3.d.ts.map +0 -1
  156. package/dist/cloudwatch.transport-pNBNWJLt.js.map +0 -1
  157. package/dist/cloudwatch.transport-yBwm4OeO.mjs.map +0 -1
  158. package/dist/gcp.transport-BJuNRFe_.mjs.map +0 -1
  159. package/dist/gcp.transport-BOhkVKlI.d.ts.map +0 -1
  160. package/dist/gcp.transport-Bi6CUqZR.d.mts.map +0 -1
  161. package/dist/gcp.transport-SHdtc1n0.js.map +0 -1
  162. package/dist/logitron-logger.module-BdG1Jnpk.d.mts +0 -618
  163. package/dist/logitron-logger.module-BdG1Jnpk.d.mts.map +0 -1
  164. package/dist/logitron-logger.module-Bs3XYZgF.mjs.map +0 -1
  165. package/dist/logitron-logger.module-BsDZR5BH.js.map +0 -1
  166. package/dist/logitron-logger.module-CbXy2gfW.d.ts +0 -618
  167. package/dist/logitron-logger.module-CbXy2gfW.d.ts.map +0 -1
  168. package/dist/search-CFQRISUv.mjs.map +0 -1
  169. package/dist/search-CQOo-Iq6.d.mts.map +0 -1
  170. package/dist/search-DujhR94O.d.ts.map +0 -1
  171. package/dist/search-njTI2hdo.js.map +0 -1
  172. package/dist/transport.manager-BivyUTtU.js.map +0 -1
  173. package/dist/transport.manager-D6KL3t9V.mjs.map +0 -1
  174. package/dist/transport.types-B5vcyv2k.d.mts.map +0 -1
  175. package/dist/transport.types-BuY84TwO.d.ts.map +0 -1
  176. package/scripts/postinstall.js +0 -61
@@ -1,618 +0,0 @@
1
- import { E as TraceIdConfig, b as LoggerWithLevels, f as ILogger, h as LogEntry, p as ILoggerDefault, v as LogLevelString, x as NamespaceLevels, y as LoggerConfig } from "./index-BPKwwERo.mjs";
2
- import * as _nestjs_common0 from "@nestjs/common";
3
- import { CallHandler, ExecutionContext, InjectionToken, LoggerService, MiddlewareConsumer, ModuleMetadata, NestInterceptor, NestModule, OptionalFactoryDependency, Type } from "@nestjs/common";
4
- import { Observable } from "rxjs";
5
-
6
- //#region src/plugin.d.ts
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
- * Errors thrown inside `onLog` are swallowed so a buggy plugin cannot crash
30
- * logging; the chain continues with the previous (un-transformed) entry.
31
- */
32
- onLog?(entry: LogEntry): LogEntry | null | Promise<LogEntry | null>;
33
- /**
34
- * Called when a transport write fails (after any configured retries).
35
- * Useful for routing transport errors to an alerting or metrics system.
36
- * Errors thrown inside `onError` are silently swallowed.
37
- */
38
- onError?(error: Error, entry?: LogEntry): void | Promise<void>;
39
- /**
40
- * Called when the logger is closed via `logger.close()` or the process
41
- * receives a shutdown signal (when `gracefulShutdown` is enabled).
42
- * Errors thrown inside `onShutdown` are silently swallowed.
43
- */
44
- onShutdown?(): void | Promise<void>;
45
- }
46
- /**
47
- * Holds an ordered list of `LogixiaPlugin` instances and dispatches lifecycle
48
- * events to them. One registry is created per logger instance; a global
49
- * singleton is also exported for process-wide registration.
50
- */
51
- declare class PluginRegistry {
52
- private readonly _plugins;
53
- /**
54
- * Register a plugin. Silently skips if a plugin with the same `name` is
55
- * already registered on this registry.
56
- */
57
- register(plugin: LogixiaPlugin): void;
58
- /** Remove a previously registered plugin by name. No-op if not found. */
59
- unregister(name: string): void;
60
- /** Returns `true` if a plugin with the given name is registered. */
61
- has(name: string): boolean;
62
- /** Number of currently registered plugins. */
63
- get size(): number;
64
- /**
65
- * Run all `onLog` hooks in order.
66
- * Returns `null` if any plugin cancels the entry; otherwise returns the
67
- * (possibly transformed) entry.
68
- */
69
- runOnLog(entry: LogEntry): Promise<LogEntry | null>;
70
- /**
71
- * Notify all `onError` hooks.
72
- * Errors thrown inside hooks are swallowed to prevent error cascades.
73
- */
74
- runOnError(error: Error, entry?: LogEntry): Promise<void>;
75
- /** Run all `onShutdown` hooks concurrently. Hook errors are swallowed. */
76
- runOnShutdown(): Promise<void>;
77
- }
78
- /**
79
- * Module-level singleton registry.
80
- *
81
- * Plugins registered here are automatically copied into every **new** logger
82
- * instance created after the registration. Already-created loggers are not
83
- * retroactively affected — use `logger.use(plugin)` for per-instance control.
84
- */
85
- declare const globalPluginRegistry: PluginRegistry;
86
- /**
87
- * Register a plugin in the global registry so it applies to every future
88
- * logger instance.
89
- *
90
- * @example
91
- * ```ts
92
- * import { usePlugin } from 'logixia';
93
- *
94
- * usePlugin({
95
- * name: 'audit-sink',
96
- * onLog(entry) {
97
- * if (entry.level === 'error') auditQueue.push(entry);
98
- * return entry;
99
- * },
100
- * });
101
- * ```
102
- */
103
- declare function usePlugin(plugin: LogixiaPlugin): void;
104
- //#endregion
105
- //#region src/core/logitron-logger.d.ts
106
- declare class LogixiaLogger<TConfig extends LoggerConfig<Record<string, number>> = LoggerConfig> implements ILoggerDefault {
107
- [K: string]: any;
108
- private config;
109
- private context?;
110
- private timers;
111
- private contextData;
112
- private transportManager;
113
- private fieldState;
114
- /** Stable fallback trace ID generated ONCE per logger instance. */
115
- private readonly fallbackTraceId;
116
- /** Numeric value for each known log level — built once, read on every log call. */
117
- private _levelValues;
118
- /** Numeric threshold for the currently active log level. */
119
- private _minLevelValue;
120
- /** `source=value` pairs already reported as unknown levels — warn once per logger. */
121
- private readonly _warnedInvalidLevels;
122
- /** Pre-built ANSI color codes to avoid recreating the object in colorize(). */
123
- private _colorMap;
124
- /** Pre-computed field-enabled booleans so isFieldEnabled() isn't called per log. */
125
- private _fieldCache;
126
- /** True when contextData is non-empty — avoids Object.keys() check on hot path. */
127
- private _hasContextData;
128
- /**
129
- * Pre-computed `[INFO] `, `[WARN] ` etc. strings — avoids a colorize() call per log.
130
- * Key: lowercase level name. Value: formatted bracket string ready to concatenate.
131
- */
132
- private _formattedLevels;
133
- /** Pre-computed `[appName] ` string — avoids template literal allocation per log. */
134
- private _formattedAppName;
135
- /** True when a redact config is present — short-circuits applyRedaction when false. */
136
- private _hasRedact;
137
- /** Sampling engine — only created when sampling config is present. */
138
- private _sampler;
139
- /** Per-instance plugin registry — also inherits from the global registry at creation time. */
140
- private readonly _pluginRegistry;
141
- /** Set on loggers created by child(); they borrow the root's transports, sampler and plugins. */
142
- private readonly _parent;
143
- constructor(config: TConfig, context?: string, parent?: LogixiaLogger<TConfig>);
144
- private setupGracefulShutdown;
145
- private createCustomLevelMethods;
146
- /**
147
- * Rebuild all hot-path caches after any config mutation or level change.
148
- * Keeps the actual log() call free of allocations in the common case.
149
- */
150
- private _buildPerfCaches;
151
- error(messageOrError: string | Error, data?: Record<string, unknown>): Promise<void>;
152
- warn(message: string, data?: Record<string, unknown>): Promise<void>;
153
- info(message: string, data?: Record<string, unknown>): Promise<void>;
154
- debug(message: string, data?: Record<string, unknown>): Promise<void>;
155
- trace(message: string, data?: Record<string, unknown>): Promise<void>;
156
- verbose(message: string, data?: Record<string, unknown>): Promise<void>;
157
- logLevel(level: string, message: string, data?: Record<string, unknown>): Promise<void>;
158
- time(label: string): void;
159
- timeEnd(label: string): Promise<number | undefined>;
160
- timeAsync<T>(label: string, fn: () => Promise<T>): Promise<T>;
161
- setLevel(level: LogLevelString): void;
162
- getLevel(): LogLevelString;
163
- private _validLevelList;
164
- /**
165
- * Canonicalise a level from config/ENV. Unknown values return undefined so the
166
- * caller falls through to the next source, and warn once per logger per source.
167
- */
168
- private _validLevel;
169
- /**
170
- * Replace the per-namespace level map at runtime — no restart needed.
171
- *
172
- * This is the runtime counterpart to the `namespaceLevels` config option and
173
- * the most-requested logging feature across the Winston/Pino issue trackers
174
- * (flip a module's verbosity live to chase a bug without raising global
175
- * volume). The new map fully replaces the previous one.
176
- *
177
- * @example
178
- * ```ts
179
- * // Turn on debug for the DB layer only, live:
180
- * logger.setNamespaceLevels({ 'db.*': 'debug', '*': 'info' });
181
- * ```
182
- */
183
- setNamespaceLevels(levels: NamespaceLevels): void;
184
- /** Merge entries into the existing per-namespace level map at runtime. */
185
- patchNamespaceLevels(levels: NamespaceLevels): void;
186
- /** Return a copy of the current per-namespace level map. */
187
- getNamespaceLevels(): NamespaceLevels;
188
- setContext(context: string): void;
189
- getContext(): string | undefined;
190
- enableField(fieldName: string): void;
191
- disableField(fieldName: string): void;
192
- isFieldEnabled(fieldName: string): boolean;
193
- getFieldState(): Record<string, boolean>;
194
- resetFieldState(): void;
195
- /** @deprecated No-op. Library code never prompts on stdin; use setTransportLevels(). */
196
- enableTransportLevelPrompting(): void;
197
- /** @deprecated No-op. */
198
- disableTransportLevelPrompting(): void;
199
- setTransportLevels(transportId: string, levels: string[]): void;
200
- getTransportLevels(transportId: string): string[] | undefined;
201
- clearTransportLevelPreferences(): void;
202
- getAvailableTransports(): string[];
203
- child(context: string, data?: Record<string, unknown>): ILogger;
204
- /**
205
- * Register a plugin on this logger instance.
206
- *
207
- * @example
208
- * ```ts
209
- * logger.use({
210
- * name: 'audit',
211
- * onLog(entry) { auditQueue.push(entry); return entry; },
212
- * });
213
- * ```
214
- */
215
- use(plugin: LogixiaPlugin): this;
216
- /**
217
- * Remove a previously registered plugin by name.
218
- * No-op if the plugin is not registered on this instance.
219
- */
220
- unuse(pluginName: string): this;
221
- flush(): Promise<void>;
222
- healthCheck(): Promise<{
223
- healthy: boolean;
224
- details: Record<string, unknown>;
225
- }>;
226
- close(): Promise<void>;
227
- private log;
228
- /**
229
- * Hot-path level check: a single Map lookup + integer compare.
230
- * The level map and threshold are pre-built in _buildPerfCaches().
231
- */
232
- private shouldLog;
233
- /**
234
- * Feature 3: Resolve the effective log level for this logger instance.
235
- *
236
- * Priority:
237
- * 1. ENV `LOGIXIA_LEVEL_<NS_UPPER>` (e.g. LOGIXIA_LEVEL_DB for ns "db" or "db.queries")
238
- * 2. Matching `namespaceLevels` config entry (longer pattern = more specific, wins)
239
- * 3. Global `LOGIXIA_LEVEL` ENV override
240
- * 4. `levelOptions.level` (resolved via Feature 5 in constructor)
241
- */
242
- private resolveEffectiveLevel;
243
- private formatLog;
244
- private colorize;
245
- /**
246
- * Dispatch the entry to transports (each formats itself). Returns `void` when
247
- * the write completes synchronously (console-only hot path) and a Promise only
248
- * when a transport is genuinely async — so the caller awaits only when needed.
249
- * Formatting for the no-transport fallback is done lazily, never on the
250
- * transport path.
251
- */
252
- private output;
253
- /** Shared transport-failure handler: log internally, notify plugins, then fall
254
- * back to a direct stdout/stderr write so the entry is never lost. */
255
- private _handleOutputError;
256
- }
257
- declare function createLogger<T extends LoggerConfig<Record<string, number>>>(config: T, context?: string): LoggerWithLevels<T>;
258
- //#endregion
259
- //#region src/core/logitron-nestjs.service.d.ts
260
- /**
261
- * Level names that already have proper typed implementations on LogixiaLoggerService.
262
- * These are excluded from the auto-generated method type so we don't produce
263
- * duplicate / conflicting signatures.
264
- */
265
- type _ServiceBuiltinLevels = 'error' | 'warn' | 'info' | 'debug' | 'verbose' | 'trace' | 'log' | 'logLevel';
266
- /**
267
- * Mapped type that adds one method per *custom* level (i.e. every key in TLevels
268
- * that is not already a built-in method on LogixiaLoggerService).
269
- *
270
- * @example
271
- * ServiceCustomLevelMethods<{ kafka: 3; mysql: 4; payment: 5 }>
272
- * // → { kafka(msg, data?): Promise<void>; mysql(...): …; payment(...): … }
273
- */
274
- type ServiceCustomLevelMethods<TLevels extends Record<string, number>> = { readonly [K in keyof TLevels as K extends _ServiceBuiltinLevels ? never : K & string]: (message: string, data?: Record<string, unknown>) => Promise<void> };
275
- /**
276
- * The return type of `LogixiaLoggerService.create<T>(config)`.
277
- *
278
- * When `T` carries `levelOptions.levels`, this type intersects
279
- * `LogixiaLoggerService` with a method for every *custom* level so the IDE
280
- * suggests `service.kafka(...)`, `service.payment(...)`, etc.
281
- */
282
- type LogixiaServiceWithLevels<T extends LoggerConfig<Record<string, number>>> = T['levelOptions'] extends {
283
- levels: infer L;
284
- } ? L extends Record<string, number> ? LogixiaLoggerService & ServiceCustomLevelMethods<L> : LogixiaLoggerService : LogixiaLoggerService;
285
- /**
286
- * Helper — extracts custom level names from a config object's `levelOptions.levels`.
287
- */
288
- type _ExtractCustomLevelNames<T> = T extends {
289
- levelOptions?: {
290
- levels?: infer L;
291
- };
292
- } ? L extends Record<string, number> ? Exclude<keyof L & string, _ServiceBuiltinLevels> : never : never;
293
- /**
294
- * Typed `LogixiaLoggerService` with autocomplete for custom levels.
295
- *
296
- * Accepts either:
297
- * - **string union** of custom level names: `LogixiaServiceWith<'kafka' | 'payment'>`
298
- * - **config object type** (via `typeof`): `LogixiaServiceWith<typeof logixiaConfig>`
299
- *
300
- * Define your config with `as const` once, derive the type everywhere:
301
- *
302
- * @example
303
- * ```ts
304
- * // logger.config.ts — define once
305
- * export const logixiaConfig = {
306
- * levelOptions: {
307
- * levels: { error: 0, warn: 1, info: 2, debug: 3, verbose: 4, kafka: 5, payment: 6 },
308
- * },
309
- * } as const;
310
- * export type AppLogger = LogixiaServiceWith<typeof logixiaConfig>;
311
- *
312
- * // any.controller.ts — use everywhere, no casting
313
- * constructor(private readonly logger: AppLogger) {}
314
- * // this.logger.kafka('msg') ← fully typed
315
- * // this.logger.payment('msg') ← fully typed
316
- * ```
317
- *
318
- * @example
319
- * ```ts
320
- * // Or use string union directly:
321
- * type AppLogger = LogixiaServiceWith<'kafka' | 'payment'>;
322
- * ```
323
- */
324
- type LogixiaServiceWith<T extends string | Record<string, unknown>> = LogixiaLoggerService & { readonly [K in T extends string ? Exclude<T, _ServiceBuiltinLevels> : _ExtractCustomLevelNames<T>]: (message: string, data?: Record<string, unknown>) => Promise<void> };
325
- declare class LogixiaLoggerService implements LoggerService {
326
- [K: string]: any;
327
- private logger;
328
- private context?;
329
- private _mergedConfig;
330
- constructor(config?: LoggerConfig);
331
- private _createCustomLevelMethods;
332
- /**
333
- * NestJS `LoggerService.log` — void, string context.
334
- * Maps internally to `info`.
335
- *
336
- * @example `logger.log('User signed up', 'AuthService')`
337
- */
338
- log(message: unknown, context?: string): void;
339
- /**
340
- * Native async `info` — structured data, returns `Promise<void>`.
341
- *
342
- * @example `await logger.info('User signed up', { userId: 'u_abc' })`
343
- */
344
- info(message: string, data?: Record<string, unknown>): Promise<void>;
345
- /**
346
- * Native async overload — structured metadata, returns `Promise<void>`.
347
- *
348
- * @example `await logger.error(new Error('DB timeout'), { requestId: 'req_abc' })`
349
- * @example `await logger.error('Login failed', { userId: 'u_abc' })`
350
- */
351
- error(message: string | Error, data: Record<string, unknown>): Promise<void>;
352
- /**
353
- * NestJS compat overload — string trace + optional context, returns `void`.
354
- *
355
- * @example `logger.error('Something failed', err.stack, 'AuthService')`
356
- */
357
- error(message: unknown, trace?: string, context?: string): void;
358
- /**
359
- * Native async overload — structured metadata, returns `Promise<void>`.
360
- *
361
- * @example `await logger.warn('Rate limit approaching', { userId: 'u_abc', count: 90 })`
362
- */
363
- warn(message: string, data: Record<string, unknown>): Promise<void>;
364
- /**
365
- * NestJS compat overload — optional context string, returns `void`.
366
- *
367
- * @example `logger.warn('Deprecated API used', 'PaymentService')`
368
- */
369
- warn(message: unknown, context?: string): void;
370
- /**
371
- * Native async overload — structured metadata, returns `Promise<void>`.
372
- *
373
- * @example `await logger.debug('Cache miss', { key: 'user:abc', ttl: 300 })`
374
- */
375
- debug(message: string, data: Record<string, unknown>): Promise<void>;
376
- /**
377
- * NestJS compat overload — optional context string, returns `void`.
378
- *
379
- * @example `logger.debug('Processing request', 'OrderService')`
380
- */
381
- debug(message: unknown, context?: string): void;
382
- /**
383
- * Native async overload — structured metadata, returns `Promise<void>`.
384
- * Maps to `trace` level internally.
385
- *
386
- * @example `await logger.verbose('Socket message received', { event: 'ping', size: 42 })`
387
- */
388
- verbose(message: string, data: Record<string, unknown>): Promise<void>;
389
- /**
390
- * NestJS compat overload — optional context string, returns `void`.
391
- *
392
- * @example `logger.verbose('Connection established', 'WebSocketGateway')`
393
- */
394
- verbose(message: unknown, context?: string): void;
395
- /**
396
- * Native async `trace` — lowest verbosity level, structured data.
397
- */
398
- trace(message: string, data?: Record<string, unknown>): Promise<void>;
399
- /**
400
- * Log at any named level with structured data.
401
- */
402
- logLevel(level: string, message: string, data?: Record<string, unknown>): Promise<void>;
403
- time(label: string): void;
404
- timeEnd(label: string): Promise<number | undefined>;
405
- timeAsync<T>(label: string, fn: () => Promise<T>): Promise<T>;
406
- setContext(context: string): void;
407
- getContext(): string | undefined;
408
- setLevel(level: LogLevelString): void;
409
- getLevel(): LogLevelString;
410
- child(context: string, data?: Record<string, unknown>): LogixiaLoggerService;
411
- getCurrentTraceId(): string | undefined;
412
- /** Returns the AsyncLocalStorage key currently used to store the trace ID. */
413
- get traceContextKey(): string;
414
- close(): Promise<void>;
415
- static create<T extends LoggerConfig<Record<string, number>>>(config?: T): LogixiaServiceWithLevels<T>;
416
- getLogger(): LogixiaLogger;
417
- private setContextIfProvided;
418
- private formatMessage;
419
- }
420
- //#endregion
421
- //#region src/core/kafka-trace.interceptor.d.ts
422
- /**
423
- * Observable counters exposed for monitoring Kafka consumer trace hygiene.
424
- *
425
- * Usage:
426
- * import { KafkaTraceInterceptor } from 'logixia/nest';
427
- * setInterval(() => {
428
- * myMetrics.gauge('kafka.trace.dropped', KafkaTraceInterceptor.metrics.dropped);
429
- * }, 10_000);
430
- */
431
- interface KafkaTraceMetrics {
432
- /** Messages processed where a traceId was successfully resolved (body/header/ALS). */
433
- accepted: number;
434
- /** Messages handled without any traceId — `requireTraceId: false`. */
435
- acceptedWithoutTrace: number;
436
- /** Messages dropped because `requireTraceId: true` and no traceId was found. */
437
- dropped: number;
438
- }
439
- declare class KafkaTraceInterceptor implements NestInterceptor {
440
- private readonly config?;
441
- private readonly requireTraceId;
442
- /**
443
- * Process-wide counters. Readable from anywhere — scrape into your metrics
444
- * system (Prometheus, Datadog, CloudWatch) on an interval.
445
- */
446
- static readonly metrics: KafkaTraceMetrics;
447
- /** Reset counters (tests). */
448
- static resetMetrics(): void;
449
- private readonly ctx;
450
- /**
451
- * @param config - TraceIdConfig options (extractor keys, contextKey, etc.)
452
- * @param requireTraceId - When true, messages with no traceId are silently skipped
453
- * (EMPTY Observable — message is ack'd, consumer stays alive).
454
- * A WARN is logged AND `KafkaTraceInterceptor.metrics.dropped`
455
- * increments so the missing traceId is observable end-to-end.
456
- * Default: false (handler runs without trace context).
457
- */
458
- constructor(config?: TraceIdConfig | undefined, requireTraceId?: boolean);
459
- intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
460
- }
461
- //#endregion
462
- //#region src/core/websocket-trace.interceptor.d.ts
463
- declare class WebSocketTraceInterceptor implements NestInterceptor {
464
- private readonly config?;
465
- private readonly ctx;
466
- constructor(config?: TraceIdConfig | undefined);
467
- intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
468
- }
469
- //#endregion
470
- //#region src/core/logitron-logger.module.d.ts
471
- declare const LOGIXIA_LOGGER_CONFIG = "LOGIXIA_LOGGER_CONFIG";
472
- declare const LOGIXIA_TRACE_CONFIG = "TRACE_CONFIG";
473
- declare const LOGIXIA_LOGGER_PREFIX = "LOGIXIA_LOGGER_";
474
- interface LogixiaAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
475
- useExisting?: Type<LogixiaOptionsFactory>;
476
- useClass?: Type<LogixiaOptionsFactory>;
477
- useFactory?: (...args: unknown[]) => Promise<Partial<LoggerConfig>> | Partial<LoggerConfig>;
478
- inject?: Array<InjectionToken | OptionalFactoryDependency>;
479
- }
480
- interface LogixiaOptionsFactory {
481
- createLogixiaOptions(): Promise<Partial<LoggerConfig>> | Partial<LoggerConfig>;
482
- }
483
- /**
484
- * Logixia Logger Module for NestJS dependency injection
485
- */
486
- declare class LogixiaLoggerModule implements NestModule {
487
- private config;
488
- private static loggerConfig;
489
- /**
490
- * @internal Backing field for the global logger. Do not read or write
491
- * directly — use {@link getGlobalLogger} / {@link _setGlobalLogger} which
492
- * enforce single-init semantics.
493
- */
494
- static _globalLogger: LogixiaLoggerService | null;
495
- /**
496
- * @internal Set the global logger exactly once.
497
- *
498
- * Called from the module's forRoot / forRootAsync factory. If the module is
499
- * initialised more than once in the same process (nested DI context, test
500
- * harness creating multiple apps, hot reload, etc.) a warning is written to
501
- * stderr and the first logger wins — silently overwriting would allow the
502
- * newer instance's transport config to replace the live one while the old
503
- * one is still being used by registered shutdown hooks, decorators, etc.
504
- *
505
- * Use {@link _resetGlobalLogger} in tests to reset between runs.
506
- */
507
- static _setGlobalLogger(service: LogixiaLoggerService): void;
508
- /** @internal Clear the global logger. Tests only. */
509
- static _resetGlobalLogger(): void;
510
- /**
511
- * Returns the global LogixiaLoggerService instance that was created when the
512
- * module booted. Useful for logging outside of NestJS DI — utility functions,
513
- * plain scripts, decorators — without injecting the service everywhere.
514
- *
515
- * Returns `null` if called before `LogixiaLoggerModule.forRoot[Async]()` has
516
- * been initialised (i.e. before the NestJS app has started).
517
- *
518
- * @example
519
- * ```ts
520
- * // some-util.ts
521
- * import { LogixiaLoggerModule } from 'logixia/nest';
522
- *
523
- * export function doSomething() {
524
- * LogixiaLoggerModule.getGlobalLogger()?.info('doing something');
525
- * }
526
- * ```
527
- */
528
- static getGlobalLogger(): LogixiaLoggerService | null;
529
- configure(consumer: MiddlewareConsumer): void;
530
- /**
531
- * Configure the module with synchronous options
532
- */
533
- static forRoot(config?: Partial<LoggerConfig>): {
534
- module: typeof LogixiaLoggerModule;
535
- providers: ({
536
- provide: string;
537
- useValue: Partial<LoggerConfig<Record<string, number>>>;
538
- useFactory?: never;
539
- inject?: never;
540
- } | {
541
- provide: string;
542
- useValue: TraceIdConfig;
543
- useFactory?: never;
544
- inject?: never;
545
- } | {
546
- provide: typeof LogixiaLoggerService;
547
- useFactory: (loggerConfig: Partial<LoggerConfig>) => LogixiaLoggerService;
548
- inject: string[];
549
- useValue?: never;
550
- } | {
551
- provide: typeof KafkaTraceInterceptor;
552
- useFactory: (traceConfig: TraceIdConfig | undefined) => KafkaTraceInterceptor;
553
- inject: string[];
554
- useValue?: never;
555
- } | {
556
- provide: typeof WebSocketTraceInterceptor;
557
- useFactory: (traceConfig: TraceIdConfig | undefined) => WebSocketTraceInterceptor;
558
- inject: string[];
559
- useValue?: never;
560
- })[];
561
- exports: (string | typeof WebSocketTraceInterceptor | typeof LogixiaLoggerService | typeof KafkaTraceInterceptor)[];
562
- global: boolean;
563
- };
564
- /**
565
- * Configure the module with asynchronous options
566
- */
567
- static forRootAsync(options: LogixiaAsyncOptions): {
568
- module: typeof LogixiaLoggerModule;
569
- imports: (Type<any> | _nestjs_common0.DynamicModule | Promise<_nestjs_common0.DynamicModule> | _nestjs_common0.ForwardReference<any>)[];
570
- providers: ({
571
- provide: string;
572
- useFactory: (...args: unknown[]) => Promise<Partial<LoggerConfig>> | Partial<LoggerConfig>;
573
- inject: (InjectionToken | OptionalFactoryDependency)[];
574
- } | {
575
- provide: string;
576
- useFactory: (optionsFactory: LogixiaOptionsFactory) => Promise<Partial<LoggerConfig<Record<string, number>>>>;
577
- inject: Type<LogixiaOptionsFactory>[];
578
- } | {
579
- provide: Type<LogixiaOptionsFactory>;
580
- useClass: Type<LogixiaOptionsFactory>;
581
- } | {
582
- provide: string;
583
- useFactory: (loggerConfig: Partial<LoggerConfig>) => TraceIdConfig;
584
- inject: string[];
585
- } | {
586
- provide: typeof LogixiaLoggerService;
587
- useFactory: (loggerConfig: Partial<LoggerConfig>) => LogixiaLoggerService;
588
- inject: string[];
589
- } | {
590
- provide: typeof KafkaTraceInterceptor;
591
- useFactory: (traceConfig: TraceIdConfig | undefined) => KafkaTraceInterceptor;
592
- inject: string[];
593
- } | {
594
- provide: typeof WebSocketTraceInterceptor;
595
- useFactory: (traceConfig: TraceIdConfig | undefined) => WebSocketTraceInterceptor;
596
- inject: string[];
597
- })[];
598
- exports: (string | typeof WebSocketTraceInterceptor | typeof LogixiaLoggerService | typeof KafkaTraceInterceptor)[];
599
- global: boolean;
600
- };
601
- /**
602
- * Create feature-specific logger instances
603
- */
604
- static forFeature(context: string): {
605
- module: typeof LogixiaLoggerModule;
606
- providers: {
607
- provide: string;
608
- useFactory: (baseLogger: LogixiaLoggerService) => LogixiaLoggerService;
609
- inject: (typeof LogixiaLoggerService)[];
610
- }[];
611
- exports: string[];
612
- };
613
- private static createAsyncProviders;
614
- private static createAsyncOptionsProvider;
615
- }
616
- //#endregion
617
- export { usePlugin as _, LogixiaLoggerModule as a, KafkaTraceInterceptor as c, LogixiaServiceWithLevels as d, LogixiaLogger as f, globalPluginRegistry as g, PluginRegistry as h, LogixiaAsyncOptions as i, LogixiaLoggerService as l, LogixiaPlugin as m, LOGIXIA_LOGGER_PREFIX as n, LogixiaOptionsFactory as o, createLogger as p, LOGIXIA_TRACE_CONFIG as r, WebSocketTraceInterceptor as s, LOGIXIA_LOGGER_CONFIG as t, LogixiaServiceWith as u };
618
- //# sourceMappingURL=logitron-logger.module-BdG1Jnpk.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logitron-logger.module-BdG1Jnpk.d.mts","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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"}