logixia 2.0.10 → 2.1.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 (190) hide show
  1. package/README.md +2 -1
  2. package/dist/{async-context-Dv0bmPC-.js → async-context-Dgl3ZLyb.js} +4 -4
  3. package/dist/{async-context-Dv0bmPC-.js.map → async-context-Dgl3ZLyb.js.map} +1 -1
  4. package/dist/{async-context-COuvmwsS.mjs → async-context-fBqC5lNc.mjs} +3 -3
  5. package/dist/{async-context-COuvmwsS.mjs.map → async-context-fBqC5lNc.mjs.map} +1 -1
  6. package/dist/{azure-monitor.transport-CbSHOnNX.d.mts → azure-monitor.transport-C5VjvREZ.d.mts} +2 -2
  7. package/dist/{azure-monitor.transport-CbSHOnNX.d.mts.map → azure-monitor.transport-C5VjvREZ.d.mts.map} +1 -1
  8. package/dist/{azure-monitor.transport-Bvf7Xegt.d.ts → azure-monitor.transport-CyHDjHS-.d.ts} +2 -2
  9. package/dist/{azure-monitor.transport-Bvf7Xegt.d.ts.map → azure-monitor.transport-CyHDjHS-.d.ts.map} +1 -1
  10. package/dist/{azure-monitor.transport-Coz5Gesu.mjs → azure-monitor.transport-DGiacfvT.mjs} +19 -8
  11. package/dist/{azure-monitor.transport-Coz5Gesu.mjs.map → azure-monitor.transport-DGiacfvT.mjs.map} +1 -1
  12. package/dist/{azure-monitor.transport-D6ryi8rA.js → azure-monitor.transport-DX3fuK2t.js} +19 -8
  13. package/dist/{azure-monitor.transport-D6ryi8rA.js.map → azure-monitor.transport-DX3fuK2t.js.map} +1 -1
  14. package/dist/azure.d.mts +1 -1
  15. package/dist/azure.d.ts +1 -1
  16. package/dist/azure.js +1 -1
  17. package/dist/azure.mjs +1 -1
  18. package/dist/{batch-buffer-CFzKnuNZ.js → batch-buffer-BLmVvJAZ.js} +11 -7
  19. package/dist/{batch-buffer-CFzKnuNZ.js.map → batch-buffer-BLmVvJAZ.js.map} +1 -1
  20. package/dist/{batch-buffer-CQUWDMYq.mjs → batch-buffer-CM-lK_Qy.mjs} +11 -7
  21. package/dist/{batch-buffer-CQUWDMYq.mjs.map → batch-buffer-CM-lK_Qy.mjs.map} +1 -1
  22. package/dist/browser.d.mts +2 -0
  23. package/dist/browser.d.mts.map +1 -1
  24. package/dist/browser.d.ts +2 -0
  25. package/dist/browser.d.ts.map +1 -1
  26. package/dist/browser.js +42 -13
  27. package/dist/browser.js.map +1 -1
  28. package/dist/browser.mjs +42 -13
  29. package/dist/browser.mjs.map +1 -1
  30. package/dist/{builder-Bj3mDeBw.mjs → builder-CA_dokb4.mjs} +246 -101
  31. package/dist/builder-CA_dokb4.mjs.map +1 -0
  32. package/dist/{builder-BLIStsCK.js → builder-jMlVYaQa.js} +256 -111
  33. package/dist/builder-jMlVYaQa.js.map +1 -0
  34. package/dist/cli/index.js +21 -16
  35. package/dist/cloudwatch.d.mts +1 -1
  36. package/dist/cloudwatch.d.ts +1 -1
  37. package/dist/cloudwatch.js +1 -1
  38. package/dist/cloudwatch.mjs +1 -1
  39. package/dist/{cloudwatch.transport-Cr1aeTGj.mjs → cloudwatch.transport-Cr0fEpko.mjs} +24 -9
  40. package/dist/{cloudwatch.transport-Cr1aeTGj.mjs.map → cloudwatch.transport-Cr0fEpko.mjs.map} +1 -1
  41. package/dist/{cloudwatch.transport-CQyT6U91.d.ts → cloudwatch.transport-DdSjUWvu.d.ts} +2 -2
  42. package/dist/{cloudwatch.transport-CQyT6U91.d.ts.map → cloudwatch.transport-DdSjUWvu.d.ts.map} +1 -1
  43. package/dist/{cloudwatch.transport-D4G5xYfG.js → cloudwatch.transport-Lst1Bbmr.js} +24 -9
  44. package/dist/{cloudwatch.transport-D4G5xYfG.js.map → cloudwatch.transport-Lst1Bbmr.js.map} +1 -1
  45. package/dist/{cloudwatch.transport-CjVrI6S4.d.mts → cloudwatch.transport-_hS7Mcc5.d.mts} +2 -2
  46. package/dist/{cloudwatch.transport-CjVrI6S4.d.mts.map → cloudwatch.transport-_hS7Mcc5.d.mts.map} +1 -1
  47. package/dist/correlation.js +3 -3
  48. package/dist/correlation.mjs +3 -3
  49. package/dist/{coerce.utils-C1C5sIX0.js → csv.utils-CbVHY1pd.js} +24 -1
  50. package/dist/csv.utils-CbVHY1pd.js.map +1 -0
  51. package/dist/{coerce.utils-B_rEudCn.mjs → csv.utils-ZdxSod5g.mjs} +19 -2
  52. package/dist/csv.utils-ZdxSod5g.mjs.map +1 -0
  53. package/dist/{entry-fields-CVwoQplO.js → entry-fields-BSLkzw18.js} +3 -3
  54. package/dist/{entry-fields-CVwoQplO.js.map → entry-fields-BSLkzw18.js.map} +1 -1
  55. package/dist/{entry-fields-DNTKQxoU.mjs → entry-fields-J1OBi24o.mjs} +2 -2
  56. package/dist/{entry-fields-DNTKQxoU.mjs.map → entry-fields-J1OBi24o.mjs.map} +1 -1
  57. package/dist/gcp.d.mts +1 -1
  58. package/dist/gcp.d.ts +1 -1
  59. package/dist/gcp.js +1 -1
  60. package/dist/gcp.mjs +1 -1
  61. package/dist/{gcp.transport-CVuRpchl.js → gcp.transport-5-ZIjN8r.js} +18 -9
  62. package/dist/{gcp.transport-CVuRpchl.js.map → gcp.transport-5-ZIjN8r.js.map} +1 -1
  63. package/dist/{gcp.transport-D9SdLPwP.d.mts → gcp.transport-C8VJiEM7.d.mts} +2 -2
  64. package/dist/{gcp.transport-D9SdLPwP.d.mts.map → gcp.transport-C8VJiEM7.d.mts.map} +1 -1
  65. package/dist/{gcp.transport-BCIvdFV-.d.ts → gcp.transport-Ct0BtKFo.d.ts} +2 -2
  66. package/dist/{gcp.transport-BCIvdFV-.d.ts.map → gcp.transport-Ct0BtKFo.d.ts.map} +1 -1
  67. package/dist/{gcp.transport-LLK2bw2-.mjs → gcp.transport-Cw3Qke85.mjs} +18 -9
  68. package/dist/{gcp.transport-LLK2bw2-.mjs.map → gcp.transport-Cw3Qke85.mjs.map} +1 -1
  69. package/dist/{index-BAkPHp5D.d.mts → index-B3ajtXJd.d.mts} +2 -2
  70. package/dist/{index-BAkPHp5D.d.mts.map → index-B3ajtXJd.d.mts.map} +1 -1
  71. package/dist/{index-e7LowmAu.d.ts → index-oqD3WNxf.d.ts} +2 -2
  72. package/dist/{index-e7LowmAu.d.ts.map → index-oqD3WNxf.d.ts.map} +1 -1
  73. package/dist/index.d.mts +8 -7
  74. package/dist/index.d.mts.map +1 -1
  75. package/dist/index.d.ts +8 -7
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +44 -26
  78. package/dist/index.js.map +1 -1
  79. package/dist/index.mjs +34 -17
  80. package/dist/index.mjs.map +1 -1
  81. package/dist/{logitron-logger-DVUdgmBY.d.ts → logitron-logger-Csn3e6Qu.d.ts} +2 -2
  82. package/dist/{logitron-logger-DVUdgmBY.d.ts.map → logitron-logger-Csn3e6Qu.d.ts.map} +1 -1
  83. package/dist/{logitron-logger-DoWmMjYB.d.mts → logitron-logger-fMOkXr8H.d.mts} +2 -2
  84. package/dist/{logitron-logger-DoWmMjYB.d.mts.map → logitron-logger-fMOkXr8H.d.mts.map} +1 -1
  85. package/dist/middleware.d.mts +1 -1
  86. package/dist/middleware.d.mts.map +1 -1
  87. package/dist/middleware.d.ts +1 -1
  88. package/dist/middleware.d.ts.map +1 -1
  89. package/dist/middleware.js +12 -7
  90. package/dist/middleware.js.map +1 -1
  91. package/dist/middleware.mjs +11 -6
  92. package/dist/middleware.mjs.map +1 -1
  93. package/dist/nest.d.mts +51 -18
  94. package/dist/nest.d.mts.map +1 -1
  95. package/dist/nest.d.ts +51 -18
  96. package/dist/nest.d.ts.map +1 -1
  97. package/dist/nest.js +207 -65
  98. package/dist/nest.js.map +1 -1
  99. package/dist/nest.mjs +202 -60
  100. package/dist/nest.mjs.map +1 -1
  101. package/dist/{otel-ChnVYRLA.js → otel-8ypFGG19.js} +452 -120
  102. package/dist/otel-8ypFGG19.js.map +1 -0
  103. package/dist/{otel-DOuwGPCd.mjs → otel-b-s2QbY4.mjs} +450 -118
  104. package/dist/otel-b-s2QbY4.mjs.map +1 -0
  105. package/dist/own-property-BWkibepN.js +40 -0
  106. package/dist/own-property-BWkibepN.js.map +1 -0
  107. package/dist/own-property-CjFw9qwZ.mjs +29 -0
  108. package/dist/own-property-CjFw9qwZ.mjs.map +1 -0
  109. package/dist/{request-trace-ByujsUZk.js → request-trace-C7kXMjx5.js} +5 -6
  110. package/dist/{request-trace-ByujsUZk.js.map → request-trace-C7kXMjx5.js.map} +1 -1
  111. package/dist/{request-trace-BgNykH9M.mjs → request-trace-Dekcnenb.mjs} +5 -6
  112. package/dist/{request-trace-BgNykH9M.mjs.map → request-trace-Dekcnenb.mjs.map} +1 -1
  113. package/dist/{safe-stringify--7gbe95n.mjs → safe-stringify-B5p5ktFe.mjs} +2 -2
  114. package/dist/{safe-stringify--7gbe95n.mjs.map → safe-stringify-B5p5ktFe.mjs.map} +1 -1
  115. package/dist/{safe-stringify-CN7icp8S.js → safe-stringify-J3sh-7YM.js} +5 -5
  116. package/dist/{safe-stringify-CN7icp8S.js.map → safe-stringify-J3sh-7YM.js.map} +1 -1
  117. package/dist/{search-DPwTKPve.d.ts → search-B-hJe2N-.d.mts} +9 -8
  118. package/dist/{search-D-8HJADE.d.mts.map → search-B-hJe2N-.d.mts.map} +1 -1
  119. package/dist/{search-D-8HJADE.d.mts → search-BlKBLm5D.d.ts} +9 -8
  120. package/dist/{search-DPwTKPve.d.ts.map → search-BlKBLm5D.d.ts.map} +1 -1
  121. package/dist/{search-DAXKE-P9.mjs → search-CTR4XNHq.mjs} +91 -44
  122. package/dist/search-CTR4XNHq.mjs.map +1 -0
  123. package/dist/{search-CRjhHxe9.js → search-_qx4YzRP.js} +94 -47
  124. package/dist/search-_qx4YzRP.js.map +1 -0
  125. package/dist/search.d.mts +1 -1
  126. package/dist/search.d.ts +1 -1
  127. package/dist/search.js +1 -1
  128. package/dist/search.mjs +1 -1
  129. package/dist/{secret-config-BvFl2dC8.js → secret-config--cVTOWwp.js} +6 -5
  130. package/dist/{secret-config-BvFl2dC8.js.map → secret-config--cVTOWwp.js.map} +1 -1
  131. package/dist/{secret-config-ByGq7kJd.mjs → secret-config-GKmb15Me.mjs} +3 -2
  132. package/dist/{secret-config-ByGq7kJd.mjs.map → secret-config-GKmb15Me.mjs.map} +1 -1
  133. package/dist/{sensitive-names-o__1PUUR.mjs → sensitive-names-BiBM6R1X.mjs} +2 -28
  134. package/dist/sensitive-names-BiBM6R1X.mjs.map +1 -0
  135. package/dist/{sensitive-names-CHMowujD.js → sensitive-names-NiKIRhp5.js} +5 -37
  136. package/dist/sensitive-names-NiKIRhp5.js.map +1 -0
  137. package/dist/{slack.transport-BDyENuR0.d.mts → slack.transport-5OPL7H3u.d.mts} +76 -3
  138. package/dist/slack.transport-5OPL7H3u.d.mts.map +1 -0
  139. package/dist/{slack.transport-C6E0l4kw.d.ts → slack.transport-BFpBD_Ri.d.ts} +76 -3
  140. package/dist/slack.transport-BFpBD_Ri.d.ts.map +1 -0
  141. package/dist/{slack.transport-zLQ9MGxS.js → slack.transport-Cpx5fKga.js} +272 -21
  142. package/dist/slack.transport-Cpx5fKga.js.map +1 -0
  143. package/dist/{slack.transport-CSj1j0_X.mjs → slack.transport-Qwj9WkrJ.mjs} +267 -22
  144. package/dist/slack.transport-Qwj9WkrJ.mjs.map +1 -0
  145. package/dist/testing.d.mts +1 -1
  146. package/dist/testing.d.ts +1 -1
  147. package/dist/{transport.types-CzJq4IrF.d.ts → transport.types-B1ejJJP6.d.mts} +6 -1
  148. package/dist/transport.types-B1ejJJP6.d.mts.map +1 -0
  149. package/dist/{transport.types-CzJq4IrF.d.mts → transport.types-B1ejJJP6.d.ts} +6 -1
  150. package/dist/transport.types-B1ejJJP6.d.ts.map +1 -0
  151. package/dist/transports.d.mts +61 -11
  152. package/dist/transports.d.mts.map +1 -1
  153. package/dist/transports.d.ts +61 -11
  154. package/dist/transports.d.ts.map +1 -1
  155. package/dist/transports.js +7 -6
  156. package/dist/transports.mjs +7 -7
  157. package/dist/worker-entry.js +200 -52
  158. package/dist/worker.d.mts +1 -1
  159. package/dist/worker.d.ts +1 -1
  160. package/dist/worker.js +1 -1
  161. package/dist/worker.mjs +1 -1
  162. package/dist/{worker.transport-B9mCQSM1.d.ts → worker.transport-B7olL1Uh.d.ts} +12 -2
  163. package/dist/worker.transport-B7olL1Uh.d.ts.map +1 -0
  164. package/dist/{worker.transport-D78xhNhB.mjs → worker.transport-BHnWDXPH.mjs} +59 -13
  165. package/dist/worker.transport-BHnWDXPH.mjs.map +1 -0
  166. package/dist/{worker.transport-DQDv1nAJ.js → worker.transport-C7jNGhev.js} +59 -13
  167. package/dist/worker.transport-C7jNGhev.js.map +1 -0
  168. package/dist/{worker.transport-Bl8lFRck.d.mts → worker.transport-DnU0_9Bd.d.mts} +12 -2
  169. package/dist/worker.transport-DnU0_9Bd.d.mts.map +1 -0
  170. package/package.json +10 -3
  171. package/dist/builder-BLIStsCK.js.map +0 -1
  172. package/dist/builder-Bj3mDeBw.mjs.map +0 -1
  173. package/dist/coerce.utils-B_rEudCn.mjs.map +0 -1
  174. package/dist/coerce.utils-C1C5sIX0.js.map +0 -1
  175. package/dist/otel-ChnVYRLA.js.map +0 -1
  176. package/dist/otel-DOuwGPCd.mjs.map +0 -1
  177. package/dist/search-CRjhHxe9.js.map +0 -1
  178. package/dist/search-DAXKE-P9.mjs.map +0 -1
  179. package/dist/sensitive-names-CHMowujD.js.map +0 -1
  180. package/dist/sensitive-names-o__1PUUR.mjs.map +0 -1
  181. package/dist/slack.transport-BDyENuR0.d.mts.map +0 -1
  182. package/dist/slack.transport-C6E0l4kw.d.ts.map +0 -1
  183. package/dist/slack.transport-CSj1j0_X.mjs.map +0 -1
  184. package/dist/slack.transport-zLQ9MGxS.js.map +0 -1
  185. package/dist/transport.types-CzJq4IrF.d.mts.map +0 -1
  186. package/dist/transport.types-CzJq4IrF.d.ts.map +0 -1
  187. package/dist/worker.transport-B9mCQSM1.d.ts.map +0 -1
  188. package/dist/worker.transport-Bl8lFRck.d.mts.map +0 -1
  189. package/dist/worker.transport-D78xhNhB.mjs.map +0 -1
  190. package/dist/worker.transport-DQDv1nAJ.js.map +0 -1
package/dist/nest.mjs CHANGED
@@ -1,9 +1,10 @@
1
- import { S as DEFAULT_CONFIG, T as LogLevel, _ as serializeError, a as isLogixiaException, o as LogixiaLogger, t as ErrorResponseBuilder } from "./builder-Bj3mDeBw.mjs";
2
- import { a as buildNameSet, c as sensitiveQueryValues, l as assignOwn, n as DEFAULT_REDACT_QUERY_PARAMS, o as redactUrlQuery, s as sanitizeText } from "./sensitive-names-o__1PUUR.mjs";
3
- import { d as getTraceContextKey, l as extractTraceId, o as TraceContext, p as sanitizeIncomingId, r as DEFAULT_TRACE_HEADERS } from "./request-trace-BgNykH9M.mjs";
4
- import { n as protectSecrets } from "./secret-config-ByGq7kJd.mjs";
1
+ import { S as DEFAULT_CONFIG, T as LogLevel, _ as serializeError, a as isLogixiaException, o as LogixiaLogger, t as ErrorResponseBuilder } from "./builder-CA_dokb4.mjs";
2
+ import { t as assignOwn } from "./own-property-CjFw9qwZ.mjs";
3
+ import { d as getTraceContextKey, l as extractTraceId, o as TraceContext, p as sanitizeIncomingId, r as DEFAULT_TRACE_HEADERS } from "./request-trace-Dekcnenb.mjs";
4
+ import { a as buildNameSet, c as sanitizeText, l as sensitiveQueryValues, n as DEFAULT_REDACT_QUERY_PARAMS, o as redactUrlQuery } from "./sensitive-names-BiBM6R1X.mjs";
5
+ import { n as protectSecrets } from "./secret-config-GKmb15Me.mjs";
5
6
  import { r as internalWarn, t as internalError } from "./internal-log-Cy5nF1ZL.mjs";
6
- import { t as safeToString } from "./coerce.utils-B_rEudCn.mjs";
7
+ import { n as safeToString } from "./csv.utils-ZdxSod5g.mjs";
7
8
  import { Catch, Inject, Injectable, Module, Optional, RequestMethod, Scope } from "@nestjs/common";
8
9
  import { EMPTY, Observable } from "rxjs";
9
10
  // \0@oxc-project+runtime@0.155.0/helpers/esm/decorateMetadata.js
@@ -19,9 +20,37 @@ function __decorate(decorators, target, key, desc) {
19
20
  }
20
21
  // src/core/logitron-nestjs.service.ts
21
22
  var _LogixiaLoggerService;
23
+ const looksLikeStack = (value) => value.includes("\n at ");
24
+ const NEST_LEVEL_TO_LOGIXIA = {
25
+ fatal: LogLevel.ERROR,
26
+ error: LogLevel.ERROR,
27
+ warn: LogLevel.WARN,
28
+ log: LogLevel.INFO,
29
+ debug: LogLevel.DEBUG,
30
+ verbose: LogLevel.TRACE
31
+ };
32
+ const LEVEL_VERBOSITY = [
33
+ LogLevel.ERROR,
34
+ LogLevel.WARN,
35
+ LogLevel.INFO,
36
+ LogLevel.DEBUG,
37
+ LogLevel.TRACE
38
+ ];
39
+ function isPlainObject(value) {
40
+ if (typeof value !== "object" || value === null) return false;
41
+ const proto = Object.getPrototypeOf(value);
42
+ return proto === Object.prototype || proto === null;
43
+ }
44
+ function describeObject(value) {
45
+ var _value$constructor;
46
+ return Array.isArray(value) ? safeToString(value) : `[${((_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name) ?? "Object"}]`;
47
+ }
22
48
  let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
49
+ logger;
50
+ context;
51
+ _mergedConfig;
23
52
  constructor(config) {
24
- const defaultConfig = {
53
+ const mergedConfig = {
25
54
  appName: "NestJS-App",
26
55
  environment: "development",
27
56
  traceId: true,
@@ -56,37 +85,40 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
56
85
  message: "[message]",
57
86
  payload: "[payload]",
58
87
  timeTaken: "[time_taken_MS]"
59
- }
60
- };
61
- protectSecrets(this, ["_mergedConfig"]);
62
- this._mergedConfig = {
63
- ...defaultConfig,
88
+ },
64
89
  ...config
65
90
  };
66
- this.logger = new LogixiaLogger(this._mergedConfig);
91
+ this._attach(mergedConfig, new LogixiaLogger(mergedConfig));
92
+ }
93
+ _attach(mergedConfig, logger) {
94
+ protectSecrets(this, ["_mergedConfig"]);
95
+ this._mergedConfig = mergedConfig;
96
+ this.logger = logger;
67
97
  this._createCustomLevelMethods();
68
98
  }
69
99
  _createCustomLevelMethods() {
70
100
  var _this$_mergedConfig$l;
71
101
  const levels = (_this$_mergedConfig$l = this._mergedConfig.levelOptions) === null || _this$_mergedConfig$l === void 0 ? void 0 : _this$_mergedConfig$l.levels;
72
102
  if (!levels) return;
73
- for (const levelName of Object.keys(levels)) {
74
- const lower = levelName.toLowerCase();
75
- if (typeof this[lower] !== "undefined") continue;
76
- this[lower] = async (message, data) => {
77
- return this.logger.logLevel(lower, message, data);
78
- };
79
- }
103
+ const self = this;
104
+ const define = (method, levelName) => {
105
+ if (typeof self[method] !== "undefined") return;
106
+ self[method] = async (message, data) => this.logger.logLevel(levelName, message, data);
107
+ };
108
+ const names = Object.keys(levels);
109
+ for (const levelName of names) define(levelName, levelName);
110
+ for (const levelName of names) define(levelName.toLowerCase(), levelName);
80
111
  }
81
112
  /**
82
- * NestJS `LoggerService.log` — void, string context.
83
- * Maps internally to `info`.
113
+ * NestJS `LoggerService.log` — void. Maps internally to `info`.
114
+ * A trailing string is the context for this call only; object params are merged into the payload.
84
115
  *
85
116
  * @example `logger.log('User signed up', 'AuthService')`
117
+ * @example `logger.log('User signed up', { userId: 'u_abc' }, 'AuthService')`
86
118
  */
87
- log(message, context) {
88
- this.setContextIfProvided(context);
89
- this.logger.info(this.formatMessage(message)).catch((err) => internalError("LogixiaLoggerService.log failed", err));
119
+ log(message, ...optionalParams) {
120
+ const { context, data } = this.parseParams(optionalParams);
121
+ this.reportFailure("log", this.withContext(context, () => this.logger.info(this.formatMessage(message), data)));
90
122
  }
91
123
  /**
92
124
  * Native async `info` — structured data, returns `Promise<void>`.
@@ -96,27 +128,49 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
96
128
  async info(message, data) {
97
129
  return this.logger.info(message, data);
98
130
  }
99
- error(message, dataOrTrace, context) {
100
- if (typeof dataOrTrace === "object" && dataOrTrace !== null) return message instanceof Error ? this.logger.error(message, dataOrTrace) : this.logger.error(this.formatMessage(message), dataOrTrace);
101
- this.setContextIfProvided(context);
102
- const errorData = {};
103
- if (typeof dataOrTrace === "string" && dataOrTrace) errorData.stack = dataOrTrace;
104
- (message instanceof Error ? this.logger.error(message, errorData) : this.logger.error(this.formatMessage(message), errorData)).catch((err) => internalError("LogixiaLoggerService.error failed", err));
131
+ error(message, ...optionalParams) {
132
+ const only = optionalParams[0];
133
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) {
134
+ const data = only;
135
+ return message instanceof Error ? this.logger.error(message, data) : this.logger.error(this.formatMessage(message), data);
136
+ }
137
+ const { context, data } = this.parseParams(optionalParams, true);
138
+ this.reportFailure("error", this.withContext(context, () => message instanceof Error ? this.logger.error(message, data) : this.logger.error(this.formatMessage(message), data)));
139
+ }
140
+ /**
141
+ * NestJS `LoggerService.fatal`. logixia has no level above `error`, so this logs
142
+ * at `error` with `fatal: true` in the payload, or at a custom `fatal` level when
143
+ * one is configured.
144
+ *
145
+ * @example `logger.fatal('Cannot reach the database, shutting down', 'Bootstrap')`
146
+ */
147
+ fatal(message, ...optionalParams) {
148
+ var _this$_mergedConfig$l2;
149
+ const { context, data } = this.parseParams(optionalParams, true);
150
+ const text = this.formatMessage(message);
151
+ const hasFatalLevel = ((_this$_mergedConfig$l2 = this._mergedConfig.levelOptions) === null || _this$_mergedConfig$l2 === void 0 || (_this$_mergedConfig$l2 = _this$_mergedConfig$l2.levels) === null || _this$_mergedConfig$l2 === void 0 ? void 0 : _this$_mergedConfig$l2["fatal"]) !== void 0;
152
+ this.reportFailure("fatal", this.withContext(context, () => hasFatalLevel ? this.logger.logLevel("fatal", text, data) : this.logger.error(text, {
153
+ ...data,
154
+ fatal: true
155
+ })));
105
156
  }
106
- warn(message, dataOrContext) {
107
- if (typeof dataOrContext === "object" && dataOrContext !== null) return this.logger.warn(this.formatMessage(message), dataOrContext);
108
- this.setContextIfProvided(typeof dataOrContext === "string" ? dataOrContext : void 0);
109
- this.logger.warn(this.formatMessage(message)).catch((err) => internalError("LogixiaLoggerService.warn failed", err));
157
+ warn(message, ...optionalParams) {
158
+ const only = optionalParams[0];
159
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.warn(this.formatMessage(message), only);
160
+ const { context, data } = this.parseParams(optionalParams);
161
+ this.reportFailure("warn", this.withContext(context, () => this.logger.warn(this.formatMessage(message), data)));
110
162
  }
111
- debug(message, dataOrContext) {
112
- if (typeof dataOrContext === "object" && dataOrContext !== null) return this.logger.debug(this.formatMessage(message), dataOrContext);
113
- this.setContextIfProvided(typeof dataOrContext === "string" ? dataOrContext : void 0);
114
- this.logger.debug(this.formatMessage(message)).catch((err) => internalError("LogixiaLoggerService.debug failed", err));
163
+ debug(message, ...optionalParams) {
164
+ const only = optionalParams[0];
165
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.debug(this.formatMessage(message), only);
166
+ const { context, data } = this.parseParams(optionalParams);
167
+ this.reportFailure("debug", this.withContext(context, () => this.logger.debug(this.formatMessage(message), data)));
115
168
  }
116
- verbose(message, dataOrContext) {
117
- if (typeof dataOrContext === "object" && dataOrContext !== null) return this.logger.trace(this.formatMessage(message), dataOrContext);
118
- this.setContextIfProvided(typeof dataOrContext === "string" ? dataOrContext : void 0);
119
- this.logger.trace(this.formatMessage(message)).catch((err) => internalError("LogixiaLoggerService.verbose failed", err));
169
+ verbose(message, ...optionalParams) {
170
+ const only = optionalParams[0];
171
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.trace(this.formatMessage(message), only);
172
+ const { context, data } = this.parseParams(optionalParams);
173
+ this.reportFailure("verbose", this.withContext(context, () => this.logger.trace(this.formatMessage(message), data)));
120
174
  }
121
175
  /**
122
176
  * Native async `trace` — lowest verbosity level, structured data.
@@ -153,9 +207,30 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
153
207
  getLevel() {
154
208
  return this.logger.getLevel();
155
209
  }
210
+ /**
211
+ * NestJS `LoggerService.setLogLevels`. logixia filters by a minimum level, not a
212
+ * set, so the most verbose of `levels` becomes the threshold and everything more
213
+ * severe stays on (`['log', 'error']` also enables `warn`). Unknown names are
214
+ * ignored, and an empty list is ignored too: use `silent` to turn logging off.
215
+ *
216
+ * @example `logger.setLogLevels(['error', 'warn'])`
217
+ */
218
+ setLogLevels(levels) {
219
+ let threshold;
220
+ let verbosity = -1;
221
+ for (const name of levels) {
222
+ const level = NEST_LEVEL_TO_LOGIXIA[name];
223
+ const rank = level === void 0 ? -1 : LEVEL_VERBOSITY.indexOf(level);
224
+ if (rank > verbosity) {
225
+ verbosity = rank;
226
+ threshold = level;
227
+ }
228
+ }
229
+ if (threshold !== void 0) this.setLevel(threshold);
230
+ }
156
231
  child(context, data) {
157
- const childService = new _LogixiaLoggerService(this._mergedConfig);
158
- childService.logger = this.logger.child(context, data);
232
+ const childService = Object.create(_LogixiaLoggerService.prototype);
233
+ childService._attach(this._mergedConfig, this.logger.child(context, data));
159
234
  childService.context = context;
160
235
  return childService;
161
236
  }
@@ -175,12 +250,62 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
175
250
  getLogger() {
176
251
  return this.logger;
177
252
  }
178
- setContextIfProvided(context) {
179
- if (typeof context !== "string" || context.length === 0) return;
180
- if (context !== this.context) this.setContext(context);
253
+ withContext(context, fn) {
254
+ if (context === void 0 || context === this.logger.getContext()) return fn();
255
+ const previous = this.logger.getContext() ?? "";
256
+ this.logger.setContext(context);
257
+ try {
258
+ return fn();
259
+ } finally {
260
+ this.logger.setContext(previous);
261
+ }
262
+ }
263
+ /**
264
+ * Split NestJS `...optionalParams` into a per-call context and a payload.
265
+ * A trailing string is the context; plain objects are merged into the payload and
266
+ * an Error goes under `error`. For `error()` (`withStack`), a leading string is the stack
267
+ * trace, and a lone string is the stack only if it looks like one, since Nest's own
268
+ * `Logger` appends the context as the last param. Anything else is listed under `params`.
269
+ */
270
+ parseParams(params, withStack = false) {
271
+ if (params.length === 0) return {};
272
+ let rest = params;
273
+ let context;
274
+ const last = params[params.length - 1];
275
+ if (typeof last === "string" && !(withStack && params.length === 1 && looksLikeStack(last))) {
276
+ context = last.length > 0 ? last : void 0;
277
+ rest = params.slice(0, -1);
278
+ }
279
+ let data;
280
+ const extras = [];
281
+ for (const param of rest) if (withStack && typeof param === "string" && (data === null || data === void 0 ? void 0 : data["stack"]) === void 0) data = {
282
+ ...data,
283
+ stack: param
284
+ };
285
+ else if (param instanceof Error) data = {
286
+ ...data,
287
+ error: param
288
+ };
289
+ else if (isPlainObject(param)) data = {
290
+ ...data,
291
+ ...param
292
+ };
293
+ else if (param !== void 0) extras.push(typeof param === "object" && param !== null ? describeObject(param) : param);
294
+ if (extras.length > 0) data = {
295
+ ...data,
296
+ params: extras
297
+ };
298
+ return context === void 0 ? { data } : {
299
+ context,
300
+ data
301
+ };
302
+ }
303
+ reportFailure(method, result) {
304
+ result.catch((err) => internalError(`LogixiaLoggerService.${method} failed`, err));
181
305
  }
182
306
  formatMessage(message) {
183
307
  if (typeof message === "string") return message;
308
+ if (message !== null && typeof message === "object") return message;
184
309
  return safeToString(message);
185
310
  }
186
311
  };
@@ -191,12 +316,24 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
191
316
  static {
192
317
  _KafkaTraceInterceptor = this;
193
318
  }
319
+ requireTraceId;
320
+ /**
321
+ * Process-wide counters. Readable from anywhere — scrape into your metrics
322
+ * system (Prometheus, Datadog, CloudWatch) on an interval.
323
+ */
324
+ static metrics = {
325
+ accepted: 0,
326
+ acceptedWithoutTrace: 0,
327
+ dropped: 0
328
+ };
194
329
  /** Reset counters (tests). */
195
330
  static resetMetrics() {
196
331
  _KafkaTraceInterceptor.metrics.accepted = 0;
197
332
  _KafkaTraceInterceptor.metrics.acceptedWithoutTrace = 0;
198
333
  _KafkaTraceInterceptor.metrics.dropped = 0;
199
334
  }
335
+ ctx = TraceContext.instance;
336
+ config;
200
337
  /**
201
338
  * @param config - TraceIdConfig options (extractor keys, contextKey, etc.)
202
339
  * @param requireTraceId - When true, messages with no traceId are silently skipped
@@ -207,7 +344,6 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
207
344
  */
208
345
  constructor(config, requireTraceId = false) {
209
346
  this.requireTraceId = requireTraceId;
210
- this.ctx = TraceContext.instance;
211
347
  this.config = {
212
348
  enabled: true,
213
349
  contextKey: "traceId",
@@ -266,11 +402,6 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
266
402
  return () => inner === null || inner === void 0 ? void 0 : inner.unsubscribe();
267
403
  });
268
404
  }
269
- static #_ = () => this.metrics = {
270
- accepted: 0,
271
- acceptedWithoutTrace: 0,
272
- dropped: 0
273
- };
274
405
  };
275
406
  KafkaTraceInterceptor = _KafkaTraceInterceptor = __decorate([Injectable(), __decorateMetadata("design:paramtypes", [Object, Boolean])], KafkaTraceInterceptor);
276
407
  // \0@oxc-project+runtime@0.155.0/helpers/esm/decorateParam.js
@@ -311,9 +442,11 @@ function traceUrl(req, names) {
311
442
  return raw === void 0 ? void 0 : redactUrlQuery(raw, names);
312
443
  }
313
444
  let TraceMiddleware = class TraceMiddleware {
445
+ config;
446
+ ctx = TraceContext.instance;
447
+ redactParams;
314
448
  constructor(config, redactQueryParams) {
315
449
  this.config = config;
316
- this.ctx = TraceContext.instance;
317
450
  this.redactParams = buildNameSet(DEFAULT_REDACT_QUERY_PARAMS, redactQueryParams);
318
451
  const defaultExtractor = {
319
452
  header: DEFAULT_TRACE_HEADERS,
@@ -362,8 +495,9 @@ TraceMiddleware = __decorate([
362
495
  ], TraceMiddleware);
363
496
  // src/core/websocket-trace.interceptor.ts
364
497
  let WebSocketTraceInterceptor = class WebSocketTraceInterceptor {
498
+ ctx = TraceContext.instance;
499
+ config;
365
500
  constructor(config) {
366
- this.ctx = TraceContext.instance;
367
501
  this.config = {
368
502
  enabled: true,
369
503
  contextKey: "traceId",
@@ -432,9 +566,14 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
432
566
  static {
433
567
  _LogixiaLoggerModule = this;
434
568
  }
435
- constructor() {
436
- this.config = {};
437
- }
569
+ config = {};
570
+ static loggerConfig = {};
571
+ /**
572
+ * @internal Backing field for the global logger. Do not read or write
573
+ * directly — use {@link getGlobalLogger} / {@link _setGlobalLogger} which
574
+ * enforce single-init semantics.
575
+ */
576
+ static _globalLogger = null;
438
577
  /**
439
578
  * @internal Set the global logger exactly once.
440
579
  *
@@ -674,7 +813,6 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
674
813
  inject: [options.useExisting || options.useClass]
675
814
  };
676
815
  }
677
- static #_ = () => (this.loggerConfig = {}, this._globalLogger = null);
678
816
  };
679
817
  LogixiaLoggerModule = _LogixiaLoggerModule = __decorate([Module({})], LogixiaLoggerModule);
680
818
  // src/core/nestjs-extras.ts
@@ -711,7 +849,7 @@ const InjectLogger = (context) => context === void 0 ? Inject(LogixiaLoggerServi
711
849
  * ```
712
850
  */
713
851
  function LogMethod(options = {}) {
714
- const { level = "debug", logArgs = true, logResult = false, logErrors = true } = options;
852
+ const { level = "debug", logArgs = false, logResult = false, logErrors = true } = options;
715
853
  return function(target, propertyKey, descriptor) {
716
854
  var _constructor;
717
855
  const originalMethod = descriptor.value;
@@ -852,6 +990,10 @@ function sanitizedError(exception, clean) {
852
990
  }
853
991
  }
854
992
  let LogixiaExceptionFilter = class LogixiaExceptionFilter {
993
+ _logger;
994
+ _traceConfig;
995
+ _options;
996
+ _redactParams;
855
997
  constructor(logger, loggerConfig, options) {
856
998
  var _loggerConfig$redact;
857
999
  this._options = options ?? {};