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.js CHANGED
@@ -1,10 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_secret_config = require("./secret-config-BvFl2dC8.js");
3
- const require_builder = require("./builder-BLIStsCK.js");
4
- const require_sensitive_names = require("./sensitive-names-CHMowujD.js");
5
- const require_request_trace = require("./request-trace-ByujsUZk.js");
2
+ const require_secret_config = require("./secret-config--cVTOWwp.js");
3
+ const require_builder = require("./builder-jMlVYaQa.js");
4
+ const require_own_property = require("./own-property-BWkibepN.js");
5
+ const require_request_trace = require("./request-trace-C7kXMjx5.js");
6
+ const require_sensitive_names = require("./sensitive-names-NiKIRhp5.js");
6
7
  const require_internal_log = require("./internal-log-DwqTjhpb.js");
7
- const require_coerce_utils = require("./coerce.utils-C1C5sIX0.js");
8
+ const require_csv_utils = require("./csv.utils-CbVHY1pd.js");
8
9
  let _nestjs_common = require("@nestjs/common");
9
10
  let rxjs = require("rxjs");
10
11
  // \0@oxc-project+runtime@0.155.0/helpers/esm/decorateMetadata.js
@@ -20,9 +21,37 @@ function __decorate(decorators, target, key, desc) {
20
21
  }
21
22
  // src/core/logitron-nestjs.service.ts
22
23
  var _LogixiaLoggerService;
24
+ const looksLikeStack = (value) => value.includes("\n at ");
25
+ const NEST_LEVEL_TO_LOGIXIA = {
26
+ fatal: require_builder.LogLevel.ERROR,
27
+ error: require_builder.LogLevel.ERROR,
28
+ warn: require_builder.LogLevel.WARN,
29
+ log: require_builder.LogLevel.INFO,
30
+ debug: require_builder.LogLevel.DEBUG,
31
+ verbose: require_builder.LogLevel.TRACE
32
+ };
33
+ const LEVEL_VERBOSITY = [
34
+ require_builder.LogLevel.ERROR,
35
+ require_builder.LogLevel.WARN,
36
+ require_builder.LogLevel.INFO,
37
+ require_builder.LogLevel.DEBUG,
38
+ require_builder.LogLevel.TRACE
39
+ ];
40
+ function isPlainObject(value) {
41
+ if (typeof value !== "object" || value === null) return false;
42
+ const proto = Object.getPrototypeOf(value);
43
+ return proto === Object.prototype || proto === null;
44
+ }
45
+ function describeObject(value) {
46
+ var _value$constructor;
47
+ return Array.isArray(value) ? require_csv_utils.safeToString(value) : `[${((_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name) ?? "Object"}]`;
48
+ }
23
49
  let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
50
+ logger;
51
+ context;
52
+ _mergedConfig;
24
53
  constructor(config) {
25
- const defaultConfig = {
54
+ const mergedConfig = {
26
55
  appName: "NestJS-App",
27
56
  environment: "development",
28
57
  traceId: true,
@@ -57,37 +86,40 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
57
86
  message: "[message]",
58
87
  payload: "[payload]",
59
88
  timeTaken: "[time_taken_MS]"
60
- }
61
- };
62
- require_secret_config.protectSecrets(this, ["_mergedConfig"]);
63
- this._mergedConfig = {
64
- ...defaultConfig,
89
+ },
65
90
  ...config
66
91
  };
67
- this.logger = new require_builder.LogixiaLogger(this._mergedConfig);
92
+ this._attach(mergedConfig, new require_builder.LogixiaLogger(mergedConfig));
93
+ }
94
+ _attach(mergedConfig, logger) {
95
+ require_secret_config.protectSecrets(this, ["_mergedConfig"]);
96
+ this._mergedConfig = mergedConfig;
97
+ this.logger = logger;
68
98
  this._createCustomLevelMethods();
69
99
  }
70
100
  _createCustomLevelMethods() {
71
101
  var _this$_mergedConfig$l;
72
102
  const levels = (_this$_mergedConfig$l = this._mergedConfig.levelOptions) === null || _this$_mergedConfig$l === void 0 ? void 0 : _this$_mergedConfig$l.levels;
73
103
  if (!levels) return;
74
- for (const levelName of Object.keys(levels)) {
75
- const lower = levelName.toLowerCase();
76
- if (typeof this[lower] !== "undefined") continue;
77
- this[lower] = async (message, data) => {
78
- return this.logger.logLevel(lower, message, data);
79
- };
80
- }
104
+ const self = this;
105
+ const define = (method, levelName) => {
106
+ if (typeof self[method] !== "undefined") return;
107
+ self[method] = async (message, data) => this.logger.logLevel(levelName, message, data);
108
+ };
109
+ const names = Object.keys(levels);
110
+ for (const levelName of names) define(levelName, levelName);
111
+ for (const levelName of names) define(levelName.toLowerCase(), levelName);
81
112
  }
82
113
  /**
83
- * NestJS `LoggerService.log` — void, string context.
84
- * Maps internally to `info`.
114
+ * NestJS `LoggerService.log` — void. Maps internally to `info`.
115
+ * A trailing string is the context for this call only; object params are merged into the payload.
85
116
  *
86
117
  * @example `logger.log('User signed up', 'AuthService')`
118
+ * @example `logger.log('User signed up', { userId: 'u_abc' }, 'AuthService')`
87
119
  */
88
- log(message, context) {
89
- this.setContextIfProvided(context);
90
- this.logger.info(this.formatMessage(message)).catch((err) => require_internal_log.internalError("LogixiaLoggerService.log failed", err));
120
+ log(message, ...optionalParams) {
121
+ const { context, data } = this.parseParams(optionalParams);
122
+ this.reportFailure("log", this.withContext(context, () => this.logger.info(this.formatMessage(message), data)));
91
123
  }
92
124
  /**
93
125
  * Native async `info` — structured data, returns `Promise<void>`.
@@ -97,27 +129,49 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
97
129
  async info(message, data) {
98
130
  return this.logger.info(message, data);
99
131
  }
100
- error(message, dataOrTrace, context) {
101
- if (typeof dataOrTrace === "object" && dataOrTrace !== null) return message instanceof Error ? this.logger.error(message, dataOrTrace) : this.logger.error(this.formatMessage(message), dataOrTrace);
102
- this.setContextIfProvided(context);
103
- const errorData = {};
104
- if (typeof dataOrTrace === "string" && dataOrTrace) errorData.stack = dataOrTrace;
105
- (message instanceof Error ? this.logger.error(message, errorData) : this.logger.error(this.formatMessage(message), errorData)).catch((err) => require_internal_log.internalError("LogixiaLoggerService.error failed", err));
132
+ error(message, ...optionalParams) {
133
+ const only = optionalParams[0];
134
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) {
135
+ const data = only;
136
+ return message instanceof Error ? this.logger.error(message, data) : this.logger.error(this.formatMessage(message), data);
137
+ }
138
+ const { context, data } = this.parseParams(optionalParams, true);
139
+ this.reportFailure("error", this.withContext(context, () => message instanceof Error ? this.logger.error(message, data) : this.logger.error(this.formatMessage(message), data)));
140
+ }
141
+ /**
142
+ * NestJS `LoggerService.fatal`. logixia has no level above `error`, so this logs
143
+ * at `error` with `fatal: true` in the payload, or at a custom `fatal` level when
144
+ * one is configured.
145
+ *
146
+ * @example `logger.fatal('Cannot reach the database, shutting down', 'Bootstrap')`
147
+ */
148
+ fatal(message, ...optionalParams) {
149
+ var _this$_mergedConfig$l2;
150
+ const { context, data } = this.parseParams(optionalParams, true);
151
+ const text = this.formatMessage(message);
152
+ 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;
153
+ this.reportFailure("fatal", this.withContext(context, () => hasFatalLevel ? this.logger.logLevel("fatal", text, data) : this.logger.error(text, {
154
+ ...data,
155
+ fatal: true
156
+ })));
106
157
  }
107
- warn(message, dataOrContext) {
108
- if (typeof dataOrContext === "object" && dataOrContext !== null) return this.logger.warn(this.formatMessage(message), dataOrContext);
109
- this.setContextIfProvided(typeof dataOrContext === "string" ? dataOrContext : void 0);
110
- this.logger.warn(this.formatMessage(message)).catch((err) => require_internal_log.internalError("LogixiaLoggerService.warn failed", err));
158
+ warn(message, ...optionalParams) {
159
+ const only = optionalParams[0];
160
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.warn(this.formatMessage(message), only);
161
+ const { context, data } = this.parseParams(optionalParams);
162
+ this.reportFailure("warn", this.withContext(context, () => this.logger.warn(this.formatMessage(message), data)));
111
163
  }
112
- debug(message, dataOrContext) {
113
- if (typeof dataOrContext === "object" && dataOrContext !== null) return this.logger.debug(this.formatMessage(message), dataOrContext);
114
- this.setContextIfProvided(typeof dataOrContext === "string" ? dataOrContext : void 0);
115
- this.logger.debug(this.formatMessage(message)).catch((err) => require_internal_log.internalError("LogixiaLoggerService.debug failed", err));
164
+ debug(message, ...optionalParams) {
165
+ const only = optionalParams[0];
166
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.debug(this.formatMessage(message), only);
167
+ const { context, data } = this.parseParams(optionalParams);
168
+ this.reportFailure("debug", this.withContext(context, () => this.logger.debug(this.formatMessage(message), data)));
116
169
  }
117
- verbose(message, dataOrContext) {
118
- if (typeof dataOrContext === "object" && dataOrContext !== null) return this.logger.trace(this.formatMessage(message), dataOrContext);
119
- this.setContextIfProvided(typeof dataOrContext === "string" ? dataOrContext : void 0);
120
- this.logger.trace(this.formatMessage(message)).catch((err) => require_internal_log.internalError("LogixiaLoggerService.verbose failed", err));
170
+ verbose(message, ...optionalParams) {
171
+ const only = optionalParams[0];
172
+ if (optionalParams.length === 1 && typeof only === "object" && only !== null) return this.logger.trace(this.formatMessage(message), only);
173
+ const { context, data } = this.parseParams(optionalParams);
174
+ this.reportFailure("verbose", this.withContext(context, () => this.logger.trace(this.formatMessage(message), data)));
121
175
  }
122
176
  /**
123
177
  * Native async `trace` — lowest verbosity level, structured data.
@@ -141,7 +195,7 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
141
195
  return this.logger.timeAsync(label, fn);
142
196
  }
143
197
  setContext(context) {
144
- const coerced = typeof context === "string" ? context : require_coerce_utils.safeToString(context);
198
+ const coerced = typeof context === "string" ? context : require_csv_utils.safeToString(context);
145
199
  this.context = coerced;
146
200
  this.logger.setContext(coerced);
147
201
  }
@@ -154,9 +208,30 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
154
208
  getLevel() {
155
209
  return this.logger.getLevel();
156
210
  }
211
+ /**
212
+ * NestJS `LoggerService.setLogLevels`. logixia filters by a minimum level, not a
213
+ * set, so the most verbose of `levels` becomes the threshold and everything more
214
+ * severe stays on (`['log', 'error']` also enables `warn`). Unknown names are
215
+ * ignored, and an empty list is ignored too: use `silent` to turn logging off.
216
+ *
217
+ * @example `logger.setLogLevels(['error', 'warn'])`
218
+ */
219
+ setLogLevels(levels) {
220
+ let threshold;
221
+ let verbosity = -1;
222
+ for (const name of levels) {
223
+ const level = NEST_LEVEL_TO_LOGIXIA[name];
224
+ const rank = level === void 0 ? -1 : LEVEL_VERBOSITY.indexOf(level);
225
+ if (rank > verbosity) {
226
+ verbosity = rank;
227
+ threshold = level;
228
+ }
229
+ }
230
+ if (threshold !== void 0) this.setLevel(threshold);
231
+ }
157
232
  child(context, data) {
158
- const childService = new _LogixiaLoggerService(this._mergedConfig);
159
- childService.logger = this.logger.child(context, data);
233
+ const childService = Object.create(_LogixiaLoggerService.prototype);
234
+ childService._attach(this._mergedConfig, this.logger.child(context, data));
160
235
  childService.context = context;
161
236
  return childService;
162
237
  }
@@ -176,13 +251,63 @@ let LogixiaLoggerService = _LogixiaLoggerService = class LogixiaLoggerService {
176
251
  getLogger() {
177
252
  return this.logger;
178
253
  }
179
- setContextIfProvided(context) {
180
- if (typeof context !== "string" || context.length === 0) return;
181
- if (context !== this.context) this.setContext(context);
254
+ withContext(context, fn) {
255
+ if (context === void 0 || context === this.logger.getContext()) return fn();
256
+ const previous = this.logger.getContext() ?? "";
257
+ this.logger.setContext(context);
258
+ try {
259
+ return fn();
260
+ } finally {
261
+ this.logger.setContext(previous);
262
+ }
263
+ }
264
+ /**
265
+ * Split NestJS `...optionalParams` into a per-call context and a payload.
266
+ * A trailing string is the context; plain objects are merged into the payload and
267
+ * an Error goes under `error`. For `error()` (`withStack`), a leading string is the stack
268
+ * trace, and a lone string is the stack only if it looks like one, since Nest's own
269
+ * `Logger` appends the context as the last param. Anything else is listed under `params`.
270
+ */
271
+ parseParams(params, withStack = false) {
272
+ if (params.length === 0) return {};
273
+ let rest = params;
274
+ let context;
275
+ const last = params[params.length - 1];
276
+ if (typeof last === "string" && !(withStack && params.length === 1 && looksLikeStack(last))) {
277
+ context = last.length > 0 ? last : void 0;
278
+ rest = params.slice(0, -1);
279
+ }
280
+ let data;
281
+ const extras = [];
282
+ for (const param of rest) if (withStack && typeof param === "string" && (data === null || data === void 0 ? void 0 : data["stack"]) === void 0) data = {
283
+ ...data,
284
+ stack: param
285
+ };
286
+ else if (param instanceof Error) data = {
287
+ ...data,
288
+ error: param
289
+ };
290
+ else if (isPlainObject(param)) data = {
291
+ ...data,
292
+ ...param
293
+ };
294
+ else if (param !== void 0) extras.push(typeof param === "object" && param !== null ? describeObject(param) : param);
295
+ if (extras.length > 0) data = {
296
+ ...data,
297
+ params: extras
298
+ };
299
+ return context === void 0 ? { data } : {
300
+ context,
301
+ data
302
+ };
303
+ }
304
+ reportFailure(method, result) {
305
+ result.catch((err) => require_internal_log.internalError(`LogixiaLoggerService.${method} failed`, err));
182
306
  }
183
307
  formatMessage(message) {
184
308
  if (typeof message === "string") return message;
185
- return require_coerce_utils.safeToString(message);
309
+ if (message !== null && typeof message === "object") return message;
310
+ return require_csv_utils.safeToString(message);
186
311
  }
187
312
  };
188
313
  LogixiaLoggerService = _LogixiaLoggerService = __decorate([(0, _nestjs_common.Injectable)({ scope: _nestjs_common.Scope.TRANSIENT }), __decorateMetadata("design:paramtypes", [Object])], LogixiaLoggerService);
@@ -192,12 +317,24 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
192
317
  static {
193
318
  _KafkaTraceInterceptor = this;
194
319
  }
320
+ requireTraceId;
321
+ /**
322
+ * Process-wide counters. Readable from anywhere — scrape into your metrics
323
+ * system (Prometheus, Datadog, CloudWatch) on an interval.
324
+ */
325
+ static metrics = {
326
+ accepted: 0,
327
+ acceptedWithoutTrace: 0,
328
+ dropped: 0
329
+ };
195
330
  /** Reset counters (tests). */
196
331
  static resetMetrics() {
197
332
  _KafkaTraceInterceptor.metrics.accepted = 0;
198
333
  _KafkaTraceInterceptor.metrics.acceptedWithoutTrace = 0;
199
334
  _KafkaTraceInterceptor.metrics.dropped = 0;
200
335
  }
336
+ ctx = require_request_trace.TraceContext.instance;
337
+ config;
201
338
  /**
202
339
  * @param config - TraceIdConfig options (extractor keys, contextKey, etc.)
203
340
  * @param requireTraceId - When true, messages with no traceId are silently skipped
@@ -208,7 +345,6 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
208
345
  */
209
346
  constructor(config, requireTraceId = false) {
210
347
  this.requireTraceId = requireTraceId;
211
- this.ctx = require_request_trace.TraceContext.instance;
212
348
  this.config = {
213
349
  enabled: true,
214
350
  contextKey: "traceId",
@@ -267,11 +403,6 @@ let KafkaTraceInterceptor = class KafkaTraceInterceptor {
267
403
  return () => inner === null || inner === void 0 ? void 0 : inner.unsubscribe();
268
404
  });
269
405
  }
270
- static #_ = () => this.metrics = {
271
- accepted: 0,
272
- acceptedWithoutTrace: 0,
273
- dropped: 0
274
- };
275
406
  };
276
407
  KafkaTraceInterceptor = _KafkaTraceInterceptor = __decorate([(0, _nestjs_common.Injectable)(), __decorateMetadata("design:paramtypes", [Object, Boolean])], KafkaTraceInterceptor);
277
408
  // \0@oxc-project+runtime@0.155.0/helpers/esm/decorateParam.js
@@ -312,9 +443,11 @@ function traceUrl(req, names) {
312
443
  return raw === void 0 ? void 0 : require_sensitive_names.redactUrlQuery(raw, names);
313
444
  }
314
445
  let TraceMiddleware = class TraceMiddleware {
446
+ config;
447
+ ctx = require_request_trace.TraceContext.instance;
448
+ redactParams;
315
449
  constructor(config, redactQueryParams) {
316
450
  this.config = config;
317
- this.ctx = require_request_trace.TraceContext.instance;
318
451
  this.redactParams = require_sensitive_names.buildNameSet(require_sensitive_names.DEFAULT_REDACT_QUERY_PARAMS, redactQueryParams);
319
452
  const defaultExtractor = {
320
453
  header: require_request_trace.DEFAULT_TRACE_HEADERS,
@@ -363,8 +496,9 @@ TraceMiddleware = __decorate([
363
496
  ], TraceMiddleware);
364
497
  // src/core/websocket-trace.interceptor.ts
365
498
  let WebSocketTraceInterceptor = class WebSocketTraceInterceptor {
499
+ ctx = require_request_trace.TraceContext.instance;
500
+ config;
366
501
  constructor(config) {
367
- this.ctx = require_request_trace.TraceContext.instance;
368
502
  this.config = {
369
503
  enabled: true,
370
504
  contextKey: "traceId",
@@ -433,9 +567,14 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
433
567
  static {
434
568
  _LogixiaLoggerModule = this;
435
569
  }
436
- constructor() {
437
- this.config = {};
438
- }
570
+ config = {};
571
+ static loggerConfig = {};
572
+ /**
573
+ * @internal Backing field for the global logger. Do not read or write
574
+ * directly — use {@link getGlobalLogger} / {@link _setGlobalLogger} which
575
+ * enforce single-init semantics.
576
+ */
577
+ static _globalLogger = null;
439
578
  /**
440
579
  * @internal Set the global logger exactly once.
441
580
  *
@@ -675,7 +814,6 @@ let LogixiaLoggerModule = class LogixiaLoggerModule {
675
814
  inject: [options.useExisting || options.useClass]
676
815
  };
677
816
  }
678
- static #_ = () => (this.loggerConfig = {}, this._globalLogger = null);
679
817
  };
680
818
  LogixiaLoggerModule = _LogixiaLoggerModule = __decorate([(0, _nestjs_common.Module)({})], LogixiaLoggerModule);
681
819
  // src/core/nestjs-extras.ts
@@ -712,7 +850,7 @@ const InjectLogger = (context) => context === void 0 ? (0, _nestjs_common.Inject
712
850
  * ```
713
851
  */
714
852
  function LogMethod(options = {}) {
715
- const { level = "debug", logArgs = true, logResult = false, logErrors = true } = options;
853
+ const { level = "debug", logArgs = false, logResult = false, logErrors = true } = options;
716
854
  return function(target, propertyKey, descriptor) {
717
855
  var _constructor;
718
856
  const originalMethod = descriptor.value;
@@ -806,7 +944,7 @@ function scrubSerialized(value, clean, depth, seen) {
806
944
  try {
807
945
  if (Array.isArray(value)) return value.map((item) => scrubSerialized(item, clean, depth + 1, seen));
808
946
  const out = {};
809
- for (const [key, item] of Object.entries(value)) require_sensitive_names.assignOwn(out, key, scrubSerialized(item, clean, depth + 1, seen));
947
+ for (const [key, item] of Object.entries(value)) require_own_property.assignOwn(out, key, scrubSerialized(item, clean, depth + 1, seen));
810
948
  return out;
811
949
  } finally {
812
950
  seen.delete(value);
@@ -824,7 +962,7 @@ function fallbackError(exception, clean) {
824
962
  } catch {}
825
963
  const copy = new Error(message);
826
964
  copy.name = name;
827
- require_sensitive_names.assignOwn(copy, "serialization", "[Unserializable]");
965
+ require_own_property.assignOwn(copy, "serialization", "[Unserializable]");
828
966
  return copy;
829
967
  }
830
968
  /**
@@ -845,7 +983,7 @@ function sanitizedError(exception, clean) {
845
983
  writable: true,
846
984
  configurable: true
847
985
  });
848
- else require_sensitive_names.assignOwn(copy, key, value);
986
+ else require_own_property.assignOwn(copy, key, value);
849
987
  }
850
988
  return copy;
851
989
  } catch {
@@ -853,6 +991,10 @@ function sanitizedError(exception, clean) {
853
991
  }
854
992
  }
855
993
  let LogixiaExceptionFilter = class LogixiaExceptionFilter {
994
+ _logger;
995
+ _traceConfig;
996
+ _options;
997
+ _redactParams;
856
998
  constructor(logger, loggerConfig, options) {
857
999
  var _loggerConfig$redact;
858
1000
  this._options = options ?? {};