logixia 2.0.4 → 2.0.7

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 (218) hide show
  1. package/README.md +172 -2614
  2. package/dist/{async-context-B05ArHgM.mjs → async-context-COuvmwsS.mjs} +4 -6
  3. package/dist/async-context-COuvmwsS.mjs.map +1 -0
  4. package/dist/{async-context-DTQgi8f7.js → async-context-Dv0bmPC-.js} +4 -6
  5. package/dist/async-context-Dv0bmPC-.js.map +1 -0
  6. package/dist/{azure-monitor.transport-DV03Z5P4.d.ts → azure-monitor.transport-Bvf7Xegt.d.ts} +2 -2
  7. package/dist/{azure-monitor.transport-DV03Z5P4.d.ts.map → azure-monitor.transport-Bvf7Xegt.d.ts.map} +1 -1
  8. package/dist/{azure-monitor.transport-C7kYyZUW.d.mts → azure-monitor.transport-CbSHOnNX.d.mts} +2 -2
  9. package/dist/{azure-monitor.transport-C7kYyZUW.d.mts.map → azure-monitor.transport-CbSHOnNX.d.mts.map} +1 -1
  10. package/dist/{azure-monitor.transport-BPbgjATu.mjs → azure-monitor.transport-Coz5Gesu.mjs} +5 -5
  11. package/dist/azure-monitor.transport-Coz5Gesu.mjs.map +1 -0
  12. package/dist/{azure-monitor.transport-CwbOLZHB.js → azure-monitor.transport-D6ryi8rA.js} +5 -5
  13. package/dist/azure-monitor.transport-D6ryi8rA.js.map +1 -0
  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-DT4gdXmf.js → batch-buffer-CFzKnuNZ.js} +3 -3
  19. package/dist/{batch-buffer-DT4gdXmf.js.map → batch-buffer-CFzKnuNZ.js.map} +1 -1
  20. package/dist/{batch-buffer-0fgLmIPn.mjs → batch-buffer-CQUWDMYq.mjs} +3 -3
  21. package/dist/{batch-buffer-0fgLmIPn.mjs.map → batch-buffer-CQUWDMYq.mjs.map} +1 -1
  22. package/dist/browser.d.mts +5 -5
  23. package/dist/browser.d.mts.map +1 -1
  24. package/dist/browser.d.ts +5 -5
  25. package/dist/browser.d.ts.map +1 -1
  26. package/dist/browser.js +72 -13
  27. package/dist/browser.js.map +1 -1
  28. package/dist/browser.mjs +72 -13
  29. package/dist/browser.mjs.map +1 -1
  30. package/dist/{builder-D70z6kjj.mjs → builder-C_TgxEOW.mjs} +106 -153
  31. package/dist/builder-C_TgxEOW.mjs.map +1 -0
  32. package/dist/{builder-M7NoaugM.js → builder-CzmM_4Ub.js} +110 -180
  33. package/dist/builder-CzmM_4Ub.js.map +1 -0
  34. package/dist/cli/index.js +157 -66
  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-Bf7L4I59.d.ts → cloudwatch.transport-CQyT6U91.d.ts} +2 -2
  40. package/dist/{cloudwatch.transport-Bf7L4I59.d.ts.map → cloudwatch.transport-CQyT6U91.d.ts.map} +1 -1
  41. package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts → cloudwatch.transport-CjVrI6S4.d.mts} +2 -2
  42. package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts.map → cloudwatch.transport-CjVrI6S4.d.mts.map} +1 -1
  43. package/dist/{cloudwatch.transport-BTvYfLs9.mjs → cloudwatch.transport-Cr1aeTGj.mjs} +6 -6
  44. package/dist/cloudwatch.transport-Cr1aeTGj.mjs.map +1 -0
  45. package/dist/{cloudwatch.transport-B2wKQFF7.js → cloudwatch.transport-D4G5xYfG.js} +6 -6
  46. package/dist/cloudwatch.transport-D4G5xYfG.js.map +1 -0
  47. package/dist/correlation.d.mts +10 -55
  48. package/dist/correlation.d.mts.map +1 -1
  49. package/dist/correlation.d.ts +10 -55
  50. package/dist/correlation.d.ts.map +1 -1
  51. package/dist/correlation.js +15 -13
  52. package/dist/correlation.js.map +1 -1
  53. package/dist/correlation.mjs +15 -13
  54. package/dist/correlation.mjs.map +1 -1
  55. package/dist/{entry-fields-RLd1jCoR.js → entry-fields-CVwoQplO.js} +8 -3
  56. package/dist/entry-fields-CVwoQplO.js.map +1 -0
  57. package/dist/{entry-fields-CGuvT2R0.mjs → entry-fields-DNTKQxoU.mjs} +8 -3
  58. package/dist/entry-fields-DNTKQxoU.mjs.map +1 -0
  59. package/dist/gcp.d.mts +1 -1
  60. package/dist/gcp.d.ts +1 -1
  61. package/dist/gcp.js +1 -1
  62. package/dist/gcp.mjs +1 -1
  63. package/dist/{gcp.transport-CFQfdAOK.d.ts → gcp.transport-BCIvdFV-.d.ts} +4 -4
  64. package/dist/{gcp.transport-CFQfdAOK.d.ts.map → gcp.transport-BCIvdFV-.d.ts.map} +1 -1
  65. package/dist/{gcp.transport-KZe9hCAR.js → gcp.transport-CVuRpchl.js} +20 -16
  66. package/dist/gcp.transport-CVuRpchl.js.map +1 -0
  67. package/dist/{gcp.transport-C5D72b1g.d.mts → gcp.transport-D9SdLPwP.d.mts} +4 -4
  68. package/dist/{gcp.transport-C5D72b1g.d.mts.map → gcp.transport-D9SdLPwP.d.mts.map} +1 -1
  69. package/dist/{gcp.transport-CGKopAhQ.mjs → gcp.transport-LLK2bw2-.mjs} +20 -16
  70. package/dist/gcp.transport-LLK2bw2-.mjs.map +1 -0
  71. package/dist/http-shapes-BnBkJcid.d.mts +32 -0
  72. package/dist/http-shapes-BnBkJcid.d.mts.map +1 -0
  73. package/dist/http-shapes-BnBkJcid.d.ts +32 -0
  74. package/dist/http-shapes-BnBkJcid.d.ts.map +1 -0
  75. package/dist/{index-xqaJtAZn.d.mts → index-BAkPHp5D.d.mts} +150 -8
  76. package/dist/index-BAkPHp5D.d.mts.map +1 -0
  77. package/dist/{index-DwozbmB4.d.ts → index-e7LowmAu.d.ts} +150 -8
  78. package/dist/index-e7LowmAu.d.ts.map +1 -0
  79. package/dist/index.d.mts +21 -65
  80. package/dist/index.d.mts.map +1 -1
  81. package/dist/index.d.ts +21 -65
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +26 -26
  84. package/dist/index.js.map +1 -1
  85. package/dist/index.mjs +21 -21
  86. package/dist/index.mjs.map +1 -1
  87. package/dist/{internal-log-uCSd1PMc.mjs → internal-log-Cy5nF1ZL.mjs} +2 -81
  88. package/dist/internal-log-Cy5nF1ZL.mjs.map +1 -0
  89. package/dist/{internal-log-b0Vp4qrB.js → internal-log-DwqTjhpb.js} +1 -104
  90. package/dist/internal-log-DwqTjhpb.js.map +1 -0
  91. package/dist/{logitron-logger-D2B75Oc7.d.ts → logitron-logger-Qh3y9-WH.d.ts} +13 -100
  92. package/dist/logitron-logger-Qh3y9-WH.d.ts.map +1 -0
  93. package/dist/{logitron-logger-oEd6wNhf.d.mts → logitron-logger-sYuk8fOb.d.mts} +13 -100
  94. package/dist/logitron-logger-sYuk8fOb.d.mts.map +1 -0
  95. package/dist/middleware.d.mts +4 -17
  96. package/dist/middleware.d.mts.map +1 -1
  97. package/dist/middleware.d.ts +4 -17
  98. package/dist/middleware.d.ts.map +1 -1
  99. package/dist/middleware.js +9 -39
  100. package/dist/middleware.js.map +1 -1
  101. package/dist/middleware.mjs +7 -37
  102. package/dist/middleware.mjs.map +1 -1
  103. package/dist/nest.d.mts +24 -8
  104. package/dist/nest.d.mts.map +1 -1
  105. package/dist/nest.d.ts +24 -8
  106. package/dist/nest.d.ts.map +1 -1
  107. package/dist/nest.js +140 -27
  108. package/dist/nest.js.map +1 -1
  109. package/dist/nest.mjs +140 -27
  110. package/dist/nest.mjs.map +1 -1
  111. package/dist/{transport.manager-DkcEOlqV.js → otel-ChnVYRLA.js} +214 -23
  112. package/dist/otel-ChnVYRLA.js.map +1 -0
  113. package/dist/{transport.manager-eZ_EeC00.mjs → otel-DOuwGPCd.mjs} +173 -24
  114. package/dist/otel-DOuwGPCd.mjs.map +1 -0
  115. package/dist/{request-trace-C_fvIDv4.mjs → request-trace-BgNykH9M.mjs} +1 -5
  116. package/dist/{request-trace-C_fvIDv4.mjs.map → request-trace-BgNykH9M.mjs.map} +1 -1
  117. package/dist/{request-trace-wTJdKp6-.js → request-trace-ByujsUZk.js} +1 -5
  118. package/dist/{request-trace-wTJdKp6-.js.map → request-trace-ByujsUZk.js.map} +1 -1
  119. package/dist/{safe-stringify-BMRl3EX3.mjs → safe-stringify--7gbe95n.mjs} +37 -12
  120. package/dist/safe-stringify--7gbe95n.mjs.map +1 -0
  121. package/dist/{safe-stringify-DLz1Kz3o.js → safe-stringify-CN7icp8S.js} +37 -12
  122. package/dist/safe-stringify-CN7icp8S.js.map +1 -0
  123. package/dist/{search-DUfWuzFP.js → search-CRjhHxe9.js} +269 -25
  124. package/dist/search-CRjhHxe9.js.map +1 -0
  125. package/dist/{search-CazwyX5Z.d.ts → search-D-8HJADE.d.mts} +5 -2
  126. package/dist/search-D-8HJADE.d.mts.map +1 -0
  127. package/dist/{search-CWMVYC-R.mjs → search-DAXKE-P9.mjs} +269 -25
  128. package/dist/search-DAXKE-P9.mjs.map +1 -0
  129. package/dist/{search-BH33XhuU.d.mts → search-DPwTKPve.d.ts} +5 -2
  130. package/dist/search-DPwTKPve.d.ts.map +1 -0
  131. package/dist/search.d.mts +1 -1
  132. package/dist/search.d.ts +1 -1
  133. package/dist/search.js +1 -1
  134. package/dist/search.mjs +1 -1
  135. package/dist/{secret-config-CBZBs0p1.js → secret-config-BvFl2dC8.js} +7 -7
  136. package/dist/secret-config-BvFl2dC8.js.map +1 -0
  137. package/dist/{secret-config-BegMLkYl.mjs → secret-config-ByGq7kJd.mjs} +5 -5
  138. package/dist/secret-config-ByGq7kJd.mjs.map +1 -0
  139. package/dist/sensitive-names-CHMowujD.js +276 -0
  140. package/dist/sensitive-names-CHMowujD.js.map +1 -0
  141. package/dist/sensitive-names-o__1PUUR.mjs +217 -0
  142. package/dist/sensitive-names-o__1PUUR.mjs.map +1 -0
  143. package/dist/{slack.transport-DxHOXlLu.d.mts → slack.transport-BDyENuR0.d.mts} +2 -2
  144. package/dist/{slack.transport-DxHOXlLu.d.mts.map → slack.transport-BDyENuR0.d.mts.map} +1 -1
  145. package/dist/{slack.transport-DrirgDNy.d.ts → slack.transport-C6E0l4kw.d.ts} +2 -2
  146. package/dist/{slack.transport-DrirgDNy.d.ts.map → slack.transport-C6E0l4kw.d.ts.map} +1 -1
  147. package/dist/{slack.transport-Ce96JBDk.mjs → slack.transport-CSj1j0_X.mjs} +66 -15
  148. package/dist/slack.transport-CSj1j0_X.mjs.map +1 -0
  149. package/dist/{slack.transport-Dlx3xvb7.js → slack.transport-zLQ9MGxS.js} +67 -16
  150. package/dist/slack.transport-zLQ9MGxS.js.map +1 -0
  151. package/dist/testing.d.mts +11 -4
  152. package/dist/testing.d.mts.map +1 -1
  153. package/dist/testing.d.ts +11 -4
  154. package/dist/testing.d.ts.map +1 -1
  155. package/dist/testing.js +38 -3
  156. package/dist/testing.js.map +1 -1
  157. package/dist/testing.mjs +38 -3
  158. package/dist/testing.mjs.map +1 -1
  159. package/dist/{transport.types-BJVL1QQl.d.ts → transport.types-CzJq4IrF.d.mts} +14 -3
  160. package/dist/transport.types-CzJq4IrF.d.mts.map +1 -0
  161. package/dist/{transport.types-BJVL1QQl.d.mts → transport.types-CzJq4IrF.d.ts} +14 -3
  162. package/dist/transport.types-CzJq4IrF.d.ts.map +1 -0
  163. package/dist/transports.d.mts +25 -13
  164. package/dist/transports.d.mts.map +1 -1
  165. package/dist/transports.d.ts +25 -13
  166. package/dist/transports.d.ts.map +1 -1
  167. package/dist/transports.js +15 -15
  168. package/dist/transports.mjs +6 -6
  169. package/dist/worker-entry.js +130 -25
  170. package/dist/worker.d.mts +1 -1
  171. package/dist/worker.d.ts +1 -1
  172. package/dist/worker.js +1 -1
  173. package/dist/worker.mjs +1 -1
  174. package/dist/{worker.transport-BuPwBi3d.d.ts → worker.transport-B9mCQSM1.d.ts} +7 -2
  175. package/dist/worker.transport-B9mCQSM1.d.ts.map +1 -0
  176. package/dist/{worker.transport-hJay1wxA.d.mts → worker.transport-Bl8lFRck.d.mts} +7 -2
  177. package/dist/worker.transport-Bl8lFRck.d.mts.map +1 -0
  178. package/dist/{worker.transport-DLVA4y2e.mjs → worker.transport-D78xhNhB.mjs} +13 -10
  179. package/dist/worker.transport-D78xhNhB.mjs.map +1 -0
  180. package/dist/{worker.transport-C6GNl_r2.js → worker.transport-DQDv1nAJ.js} +13 -10
  181. package/dist/worker.transport-DQDv1nAJ.js.map +1 -0
  182. package/package.json +33 -65
  183. package/dist/async-context-B05ArHgM.mjs.map +0 -1
  184. package/dist/async-context-DTQgi8f7.js.map +0 -1
  185. package/dist/azure-monitor.transport-BPbgjATu.mjs.map +0 -1
  186. package/dist/azure-monitor.transport-CwbOLZHB.js.map +0 -1
  187. package/dist/builder-D70z6kjj.mjs.map +0 -1
  188. package/dist/builder-M7NoaugM.js.map +0 -1
  189. package/dist/cloudwatch.transport-B2wKQFF7.js.map +0 -1
  190. package/dist/cloudwatch.transport-BTvYfLs9.mjs.map +0 -1
  191. package/dist/entry-fields-CGuvT2R0.mjs.map +0 -1
  192. package/dist/entry-fields-RLd1jCoR.js.map +0 -1
  193. package/dist/gcp.transport-CGKopAhQ.mjs.map +0 -1
  194. package/dist/gcp.transport-KZe9hCAR.js.map +0 -1
  195. package/dist/index-DwozbmB4.d.ts.map +0 -1
  196. package/dist/index-xqaJtAZn.d.mts.map +0 -1
  197. package/dist/internal-log-b0Vp4qrB.js.map +0 -1
  198. package/dist/internal-log-uCSd1PMc.mjs.map +0 -1
  199. package/dist/logitron-logger-D2B75Oc7.d.ts.map +0 -1
  200. package/dist/logitron-logger-oEd6wNhf.d.mts.map +0 -1
  201. package/dist/safe-stringify-BMRl3EX3.mjs.map +0 -1
  202. package/dist/safe-stringify-DLz1Kz3o.js.map +0 -1
  203. package/dist/search-BH33XhuU.d.mts.map +0 -1
  204. package/dist/search-CWMVYC-R.mjs.map +0 -1
  205. package/dist/search-CazwyX5Z.d.ts.map +0 -1
  206. package/dist/search-DUfWuzFP.js.map +0 -1
  207. package/dist/secret-config-BegMLkYl.mjs.map +0 -1
  208. package/dist/secret-config-CBZBs0p1.js.map +0 -1
  209. package/dist/slack.transport-Ce96JBDk.mjs.map +0 -1
  210. package/dist/slack.transport-Dlx3xvb7.js.map +0 -1
  211. package/dist/transport.manager-DkcEOlqV.js.map +0 -1
  212. package/dist/transport.manager-eZ_EeC00.mjs.map +0 -1
  213. package/dist/transport.types-BJVL1QQl.d.mts.map +0 -1
  214. package/dist/transport.types-BJVL1QQl.d.ts.map +0 -1
  215. package/dist/worker.transport-BuPwBi3d.d.ts.map +0 -1
  216. package/dist/worker.transport-C6GNl_r2.js.map +0 -1
  217. package/dist/worker.transport-DLVA4y2e.mjs.map +0 -1
  218. package/dist/worker.transport-hJay1wxA.d.mts.map +0 -1
@@ -1,10 +1,11 @@
1
- const require_secret_config = require("./secret-config-CBZBs0p1.js");
2
- const require_request_trace = require("./request-trace-wTJdKp6-.js");
3
- const require_async_context = require("./async-context-DTQgi8f7.js");
4
- const require_internal_log = require("./internal-log-b0Vp4qrB.js");
1
+ const require_secret_config = require("./secret-config-BvFl2dC8.js");
2
+ const require_sensitive_names = require("./sensitive-names-CHMowujD.js");
3
+ const require_request_trace = require("./request-trace-ByujsUZk.js");
4
+ const require_async_context = require("./async-context-Dv0bmPC-.js");
5
+ const require_internal_log = require("./internal-log-DwqTjhpb.js");
5
6
  const require_coerce_utils = require("./coerce.utils-C1C5sIX0.js");
6
- const require_safe_stringify = require("./safe-stringify-DLz1Kz3o.js");
7
- const require_transport_manager = require("./transport.manager-DkcEOlqV.js");
7
+ const require_safe_stringify = require("./safe-stringify-CN7icp8S.js");
8
+ const require_otel = require("./otel-ChnVYRLA.js");
8
9
  let fast_json_stringify = require("fast-json-stringify");
9
10
  fast_json_stringify = require_secret_config.__toESM(fast_json_stringify);
10
11
  let node_os = require("node:os");
@@ -243,11 +244,10 @@ function _serializeError(error, includeStack, maxDepth, excludeFields, depth, se
243
244
  ]);
244
245
  for (const key of Object.getOwnPropertyNames(error)) {
245
246
  if (skip.has(key)) continue;
246
- if (key === "__proto__" || key === "constructor" || key === "prototype") continue;
247
247
  try {
248
- serialized[key] = serializeValue(errorRecord[key], maxDepth - depth - 1, seen);
248
+ require_sensitive_names.assignOwn(serialized, key, serializeValue(errorRecord[key], maxDepth - depth - 1, seen));
249
249
  } catch {
250
- serialized[key] = "[Unserializable]";
250
+ require_sensitive_names.assignOwn(serialized, key, "[Unserializable]");
251
251
  }
252
252
  }
253
253
  return serialized;
@@ -282,13 +282,10 @@ function serializeValue(value, remainingDepth, seen) {
282
282
  if (seen.has(value)) return "[Circular]";
283
283
  seen.add(value);
284
284
  const out = {};
285
- for (const [k, v] of Object.entries(value)) {
286
- if (k === "__proto__" || k === "constructor" || k === "prototype") continue;
287
- try {
288
- out[k] = serializeValue(v, remainingDepth - 1, seen);
289
- } catch {
290
- out[k] = "[Unserializable]";
291
- }
285
+ for (const [k, v] of Object.entries(value)) try {
286
+ require_sensitive_names.assignOwn(out, k, serializeValue(v, remainingDepth - 1, seen));
287
+ } catch {
288
+ require_sensitive_names.assignOwn(out, k, "[Unserializable]");
292
289
  }
293
290
  return out;
294
291
  }
@@ -314,111 +311,6 @@ function normalizeError(error) {
314
311
  }
315
312
  return new Error(String(error));
316
313
  }
317
- // src/utils/otel.ts
318
- let _otelApi;
319
- function tryLoadOtelApi() {
320
- if (_otelApi !== void 0) return _otelApi;
321
- try {
322
- _otelApi = require("@opentelemetry/api");
323
- return _otelApi;
324
- } catch {
325
- _otelApi = null;
326
- return null;
327
- }
328
- }
329
- /**
330
- * Read the currently active OTel span context (if any) and return its fields
331
- * in a plain object suitable for spreading into a log entry.
332
- *
333
- * Returns `undefined` when:
334
- * - `@opentelemetry/api` is not installed
335
- * - No active span exists (root context)
336
- * - The span context is invalid (all-zeros)
337
- */
338
- function getActiveOtelContext(opts = {}) {
339
- const api = tryLoadOtelApi();
340
- if (!api) return void 0;
341
- try {
342
- const ctx = api.context.active();
343
- const sc = api.trace.getSpanContext(ctx);
344
- if (!sc || !api.trace.isSpanContextValid(sc)) return void 0;
345
- const isSampled = (sc.traceFlags & api.trace.TraceFlags.SAMPLED) === api.trace.TraceFlags.SAMPLED;
346
- if (opts.sampledOnly && !isSampled) return void 0;
347
- return {
348
- traceId: sc.traceId,
349
- spanId: sc.spanId,
350
- traceFlags: sc.traceFlags,
351
- isSampled
352
- };
353
- } catch {
354
- return;
355
- }
356
- }
357
- /**
358
- * Returns a metadata object with OTel context fields ready to merge into a log call,
359
- * using the configured field names.
360
- *
361
- * Returns `{}` when no active span exists (safe to spread unconditionally).
362
- *
363
- * @example
364
- * ```ts
365
- * await logger.info('Payment processed', {
366
- * ...getOtelMetaFields(),
367
- * orderId: 'ord_123',
368
- * });
369
- * ```
370
- */
371
- function getOtelMetaFields(opts = {}) {
372
- const { traceIdField = "traceId", spanIdField = "spanId", traceFlagsField = "traceFlags" } = opts;
373
- const ctx = getActiveOtelContext(opts);
374
- if (!ctx) return {};
375
- return {
376
- [traceIdField]: ctx.traceId,
377
- [spanIdField]: ctx.spanId,
378
- [traceFlagsField]: ctx.traceFlags
379
- };
380
- }
381
- let _bridgeOptions = null;
382
- /**
383
- * Initialise the global OTel bridge.
384
- *
385
- * Once called, logixia's internal log pipeline checks for an active OTel span
386
- * on **every** log call and automatically merges the span context into the
387
- * entry's metadata — no per-call wiring needed.
388
- *
389
- * Call once at app startup, **after** the OTel SDK has been initialised:
390
- * ```ts
391
- * import { initOtelBridge } from 'logixia';
392
- * initOtelBridge();
393
- * ```
394
- */
395
- function initOtelBridge(opts = {}) {
396
- _bridgeOptions = opts;
397
- }
398
- /**
399
- * @internal
400
- * True when initOtelBridge() has been called. Lets the logger hot path skip the
401
- * `_getOtelPayloadIfEnabled()` call (and its `{}` allocation + Object.keys) on
402
- * every log when the bridge is off — the overwhelmingly common case.
403
- */
404
- function _isOtelBridgeEnabled() {
405
- return _bridgeOptions !== null;
406
- }
407
- /**
408
- * @internal
409
- * Used by the core logger to inject OTel context when the bridge is active.
410
- * Returns `{}` when the bridge is not initialised or no active span exists.
411
- */
412
- function _getOtelPayloadIfEnabled() {
413
- if (!_bridgeOptions) return {};
414
- return getOtelMetaFields(_bridgeOptions);
415
- }
416
- /**
417
- * Disable the OTel bridge (useful for tests).
418
- */
419
- function disableOtelBridge() {
420
- _bridgeOptions = null;
421
- }
422
314
  // src/utils/redact.utils.ts
423
315
  const DEFAULT_CENSOR = "[REDACTED]";
424
316
  /** Maximum nesting depth walked; deeper values are replaced with a marker. */
@@ -448,7 +340,7 @@ const PII_CONSERVATIVE_PATTERNS = [
448
340
  /**
449
341
  * Conservative field-name paths auto-redacted by name regardless of value.
450
342
  */
451
- const PII_CONSERVATIVE_PATHS = require_internal_log.SENSITIVE_KEY_NAMES.map((name) => `**.${name}`);
343
+ const PII_CONSERVATIVE_PATHS = require_sensitive_names.SENSITIVE_KEY_NAMES.map((name) => `**.${name}`);
452
344
  /**
453
345
  * Aggressive patterns: also catch personal data that could identify a person.
454
346
  * Applied when `autoDetect: 'aggressive'`.
@@ -620,10 +512,9 @@ function walkRecord(obj, state, fullPath, bare, depth) {
620
512
  let result;
621
513
  const entries = Object.entries(obj);
622
514
  for (const [index, [key, value]] of entries.entries()) {
623
- const forbidden = key === "__proto__" || key === "constructor" || key === "prototype";
624
- const next = forbidden ? void 0 : walkValue(value, state, joinPath(fullPath, key), joinPath(bare, key), depth);
625
- if ((forbidden || next !== value) && !result) result = Object.fromEntries(entries.slice(0, index));
626
- if (result && !forbidden) result[key] = next;
515
+ const next = walkValue(value, state, joinPath(fullPath, key), joinPath(bare, key), depth);
516
+ if (next !== value && !result) result = Object.fromEntries(entries.slice(0, index));
517
+ if (result) require_sensitive_names.assignOwn(result, key, next);
627
518
  }
628
519
  return result ?? obj;
629
520
  }
@@ -1035,6 +926,48 @@ function resetShutdownHandlers() {
1035
926
  shutdownHandlerRegistered = false;
1036
927
  shutdownInProgress = false;
1037
928
  }
929
+ const RESERVED = /* @__PURE__ */ new Set([
930
+ "logLevel",
931
+ "time",
932
+ "timeEnd",
933
+ "timeAsync",
934
+ "setLevel",
935
+ "getLevel",
936
+ "setNamespaceLevels",
937
+ "patchNamespaceLevels",
938
+ "getNamespaceLevels",
939
+ "setContext",
940
+ "getContext",
941
+ "enableField",
942
+ "disableField",
943
+ "isFieldEnabled",
944
+ "getFieldState",
945
+ "resetFieldState",
946
+ "enableTransportLevelPrompting",
947
+ "disableTransportLevelPrompting",
948
+ "setTransportLevels",
949
+ "getTransportLevels",
950
+ "clearTransportLevelPreferences",
951
+ "getAvailableTransports",
952
+ "child",
953
+ "flush",
954
+ "healthCheck",
955
+ "close",
956
+ "use",
957
+ "unuse"
958
+ ]);
959
+ /**
960
+ * Warn when `levels` defines a level named like a logger method (e.g. `flush`, `child`).
961
+ * The method keeps its normal behaviour and no level shortcut is installed for that
962
+ * name; log at it with `logger.logLevel(name, ...)` or pick a different level name.
963
+ * Returns the clashing names.
964
+ */
965
+ function warnOnReservedLevelNames(levels) {
966
+ if (!levels) return [];
967
+ const clashes = Object.keys(levels).filter((name) => RESERVED.has(name));
968
+ if (clashes.length > 0) require_internal_log.internalWarn(`levelOptions.levels uses reserved logger method name(s): ${clashes.join(", ")}. No level shortcut is created for them; use logger.logLevel(name, ...) or rename the level.`);
969
+ return clashes;
970
+ }
1038
971
  // src/core/logitron-logger.ts
1039
972
  /**
1040
973
  * Core Logixia Logger implementation
@@ -1155,7 +1088,13 @@ var LogixiaLogger = class LogixiaLogger {
1155
1088
  this._formattedLevels = /* @__PURE__ */ new Map();
1156
1089
  this._formattedAppName = "";
1157
1090
  this._hasRedact = false;
1091
+ this._nsSeenVersion = 0;
1158
1092
  this._parent = parent;
1093
+ this._nsStore = parent ? parent._nsStore : {
1094
+ levels: { ...config.namespaceLevels },
1095
+ version: 0
1096
+ };
1097
+ this._nsSeenVersion = this._nsStore.version;
1159
1098
  this._pluginRegistry = parent ? parent._pluginRegistry : new PluginRegistry();
1160
1099
  const defaultConfig = {
1161
1100
  appName: "App",
@@ -1211,14 +1150,14 @@ var LogixiaLogger = class LogixiaLogger {
1211
1150
  this.transportManager = parent.transportManager;
1212
1151
  this._sampler = parent._sampler;
1213
1152
  } else if (this.config.transports) {
1214
- var _this$config$levelOpt;
1153
+ var _this$config$levelOpt, _this$config$levelOpt2;
1215
1154
  const transportsWithColors = { ...this.config.transports };
1216
1155
  const userColors = (_this$config$levelOpt = this.config.levelOptions) === null || _this$config$levelOpt === void 0 ? void 0 : _this$config$levelOpt.colors;
1217
1156
  if (userColors && transportsWithColors.console) transportsWithColors.console = {
1218
1157
  ...typeof transportsWithColors.console === "object" ? transportsWithColors.console : {},
1219
1158
  levelColors: userColors
1220
1159
  };
1221
- this.transportManager = new require_transport_manager.TransportManager(transportsWithColors);
1160
+ this.transportManager = new require_otel.TransportManager(transportsWithColors, (_this$config$levelOpt2 = this.config.levelOptions) === null || _this$config$levelOpt2 === void 0 ? void 0 : _this$config$levelOpt2.levels);
1222
1161
  }
1223
1162
  if (!parent && this.config.sampling) this._sampler = new Sampler(this.config.sampling, (stats) => {
1224
1163
  process.stdout.write(JSON.stringify({
@@ -1245,8 +1184,9 @@ var LogixiaLogger = class LogixiaLogger {
1245
1184
  });
1246
1185
  }
1247
1186
  createCustomLevelMethods() {
1248
- var _this$config$levelOpt2;
1249
- if ((_this$config$levelOpt2 = this.config.levelOptions) === null || _this$config$levelOpt2 === void 0 ? void 0 : _this$config$levelOpt2.levels) {
1187
+ var _this$config$levelOpt3, _this$config$levelOpt4;
1188
+ warnOnReservedLevelNames((_this$config$levelOpt3 = this.config.levelOptions) === null || _this$config$levelOpt3 === void 0 ? void 0 : _this$config$levelOpt3.levels);
1189
+ if ((_this$config$levelOpt4 = this.config.levelOptions) === null || _this$config$levelOpt4 === void 0 ? void 0 : _this$config$levelOpt4.levels) {
1250
1190
  for (const levelName of Object.keys(this.config.levelOptions.levels)) if (!this[levelName.toLowerCase()]) this[levelName.toLowerCase()] = async (message, data) => {
1251
1191
  await this.logLevel(levelName.toLowerCase(), message, data);
1252
1192
  };
@@ -1257,8 +1197,8 @@ var LogixiaLogger = class LogixiaLogger {
1257
1197
  * Keeps the actual log() call free of allocations in the common case.
1258
1198
  */
1259
1199
  _buildPerfCaches() {
1260
- var _this$config$levelOpt3, _this$config$format, _this$config$redact$p, _this$config$redact$p2;
1261
- const customLevelEntries = Object.entries(((_this$config$levelOpt3 = this.config.levelOptions) === null || _this$config$levelOpt3 === void 0 ? void 0 : _this$config$levelOpt3.levels) ?? {});
1200
+ var _this$config$levelOpt5, _this$config$format, _this$config$redact$p, _this$config$redact$p2;
1201
+ const customLevelEntries = Object.entries(((_this$config$levelOpt5 = this.config.levelOptions) === null || _this$config$levelOpt5 === void 0 ? void 0 : _this$config$levelOpt5.levels) ?? {});
1262
1202
  this._levelValues = new Map([
1263
1203
  [LogLevel.ERROR, 0],
1264
1204
  [LogLevel.WARN, 1],
@@ -1327,8 +1267,8 @@ var LogixiaLogger = class LogixiaLogger {
1327
1267
  for (const [lvl] of this._levelValues) {
1328
1268
  const upper = lvl.toUpperCase();
1329
1269
  if (colorize && this._fieldCache.get("level") !== false) {
1330
- var _this$config$levelOpt4;
1331
- let colorName = (_this$config$levelOpt4 = this.config.levelOptions) === null || _this$config$levelOpt4 === void 0 || (_this$config$levelOpt4 = _this$config$levelOpt4.colors) === null || _this$config$levelOpt4 === void 0 ? void 0 : _this$config$levelOpt4[lvl];
1270
+ var _this$config$levelOpt6;
1271
+ let colorName = (_this$config$levelOpt6 = this.config.levelOptions) === null || _this$config$levelOpt6 === void 0 || (_this$config$levelOpt6 = _this$config$levelOpt6.colors) === null || _this$config$levelOpt6 === void 0 ? void 0 : _this$config$levelOpt6[lvl];
1332
1272
  if (!colorName) {
1333
1273
  if (_BUILTIN_LEVELS.has(lvl)) colorName = "white";
1334
1274
  else {
@@ -1462,8 +1402,8 @@ var LogixiaLogger = class LogixiaLogger {
1462
1402
  * else a `NODE_ENV` default (`debug` in development, `warn` in test), else `info`.
1463
1403
  */
1464
1404
  getLevel() {
1465
- var _this$config$levelOpt5;
1466
- return ((_this$config$levelOpt5 = this.config.levelOptions) === null || _this$config$levelOpt5 === void 0 ? void 0 : _this$config$levelOpt5.level) ?? LogLevel.INFO;
1405
+ var _this$config$levelOpt7;
1406
+ return ((_this$config$levelOpt7 = this.config.levelOptions) === null || _this$config$levelOpt7 === void 0 ? void 0 : _this$config$levelOpt7.level) ?? LogLevel.INFO;
1467
1407
  }
1468
1408
  _validLevelList() {
1469
1409
  return [...this._levelValues.keys()].join(", ");
@@ -1492,6 +1432,10 @@ var LogixiaLogger = class LogixiaLogger {
1492
1432
  * (flip a module's verbosity live to chase a bug without raising global
1493
1433
  * volume). The new map fully replaces the previous one.
1494
1434
  *
1435
+ * The map is shared by a logger and all its `child()` loggers: calling this on
1436
+ * a child changes the whole family, and existing children pick the change up on
1437
+ * their next log call.
1438
+ *
1495
1439
  * @example
1496
1440
  * ```ts
1497
1441
  * // Turn on debug for the DB layer only, live:
@@ -1499,20 +1443,26 @@ var LogixiaLogger = class LogixiaLogger {
1499
1443
  * ```
1500
1444
  */
1501
1445
  setNamespaceLevels(levels) {
1502
- this.config.namespaceLevels = { ...levels };
1503
- this._buildPerfCaches();
1446
+ this._nsStore.levels = { ...levels };
1447
+ this._nsStore.version++;
1448
+ this._syncNamespaceLevels();
1504
1449
  }
1505
1450
  /** Merge entries into the existing per-namespace level map at runtime. */
1506
1451
  patchNamespaceLevels(levels) {
1507
- this.config.namespaceLevels = {
1508
- ...this.config.namespaceLevels,
1452
+ this._nsStore.levels = {
1453
+ ...this._nsStore.levels,
1509
1454
  ...levels
1510
1455
  };
1511
- this._buildPerfCaches();
1456
+ this._nsStore.version++;
1457
+ this._syncNamespaceLevels();
1512
1458
  }
1513
1459
  /** Return a copy of the current per-namespace level map. */
1514
1460
  getNamespaceLevels() {
1515
- return { ...this.config.namespaceLevels };
1461
+ return { ...this._nsStore.levels };
1462
+ }
1463
+ _syncNamespaceLevels() {
1464
+ this._nsSeenVersion = this._nsStore.version;
1465
+ this._minLevelValue = this._levelValues.get(this.resolveEffectiveLevel()) ?? 2;
1516
1466
  }
1517
1467
  /** Set the context label (e.g. a class or module name) attached to every subsequent entry. */
1518
1468
  setContext(context) {
@@ -1691,15 +1641,19 @@ var LogixiaLogger = class LogixiaLogger {
1691
1641
  }
1692
1642
  if (this._sampler && !this._sampler.shouldEmit(level, activeTraceId)) return;
1693
1643
  const hasAls = alsContext !== void 0 && Object.keys(alsContext).length > 0;
1694
- const otelFields = _isOtelBridgeEnabled() ? _getOtelPayloadIfEnabled() : void 0;
1644
+ const otelFields = require_otel._isOtelBridgeEnabled() ? require_otel._getOtelPayloadIfEnabled() : void 0;
1695
1645
  const hasOtel = otelFields !== void 0 && Object.keys(otelFields).length > 0;
1646
+ const traceId = this.config.traceId ? activeTraceId ?? this.fallbackTraceId : void 0;
1696
1647
  let mergedData;
1697
- if (hasAls) mergedData = {
1698
- ...alsContext,
1699
- ...hasOtel ? otelFields : {},
1700
- ...data
1701
- };
1702
- else if (hasOtel) mergedData = {
1648
+ if (hasAls) {
1649
+ const als = { ...alsContext };
1650
+ if (traceId !== void 0 && als["traceId"] === traceId) delete als["traceId"];
1651
+ mergedData = {
1652
+ ...als,
1653
+ ...hasOtel ? otelFields : {},
1654
+ ...data
1655
+ };
1656
+ } else if (hasOtel) mergedData = {
1703
1657
  ...otelFields,
1704
1658
  ...data
1705
1659
  };
@@ -1718,7 +1672,6 @@ var LogixiaLogger = class LogixiaLogger {
1718
1672
  }
1719
1673
  else payload = rawPayload;
1720
1674
  }
1721
- const traceId = this.config.traceId ? activeTraceId ?? this.fallbackTraceId : void 0;
1722
1675
  let safeMessage = message;
1723
1676
  if (this._hasRedact) try {
1724
1677
  safeMessage = applyRedactionToString(message, this.config.redact);
@@ -1749,6 +1702,7 @@ var LogixiaLogger = class LogixiaLogger {
1749
1702
  * The level map and threshold are pre-built in _buildPerfCaches().
1750
1703
  */
1751
1704
  shouldLog(level) {
1705
+ if (this._nsSeenVersion !== this._nsStore.version) this._syncNamespaceLevels();
1752
1706
  const v = this._levelValues.get(level);
1753
1707
  return v !== void 0 && v <= this._minLevelValue;
1754
1708
  }
@@ -1769,8 +1723,8 @@ var LogixiaLogger = class LogixiaLogger {
1769
1723
  const nsKey = ns.split(".")[0].toUpperCase();
1770
1724
  const envNsLevel = this._validLevel(process.env[`LOGIXIA_LEVEL_${nsKey}`], `LOGIXIA_LEVEL_${nsKey}`);
1771
1725
  if (envNsLevel) return envNsLevel;
1772
- const namespaceLevels = this.config.namespaceLevels;
1773
- if (namespaceLevels) {
1726
+ const namespaceLevels = this._nsStore.levels;
1727
+ if (Object.keys(namespaceLevels).length > 0) {
1774
1728
  const sortedPatterns = Object.keys(namespaceLevels).sort((a, b) => b.length - a.length);
1775
1729
  for (const pattern of sortedPatterns) if (matchesNamespacePattern(ns, pattern)) {
1776
1730
  const nsLevel = this._validLevel(namespaceLevels[pattern], `namespaceLevels['${pattern}']`);
@@ -1798,9 +1752,9 @@ var LogixiaLogger = class LogixiaLogger {
1798
1752
  if (((_this$config$format4 = this.config.format) === null || _this$config$format4 === void 0 ? void 0 : _this$config$format4.timestamp) !== false && this._fieldCache.get("timestamp") !== false) formatted += `${gray}[${entry.timestamp}]${reset} `;
1799
1753
  if (this._fieldCache.get("level") !== false) formatted += this._formattedLevels.get(entry.level) ?? `[${entry.level.toUpperCase()}] `;
1800
1754
  formatted += this._formattedAppName;
1801
- if (entry.traceId && this._fieldCache.get("traceId") !== false) formatted += `${cyan}[${require_transport_manager.stripControlChars(String(entry.traceId))}]${reset} `;
1802
- if (entry.context && this._fieldCache.get("context") !== false) formatted += `${yellow}[${require_transport_manager.stripControlChars(String(entry.context))}]${reset} `;
1803
- if (this._fieldCache.get("message") !== false) formatted += require_transport_manager.stripControlChars(require_coerce_utils.safeToString(entry.message));
1755
+ if (entry.traceId && this._fieldCache.get("traceId") !== false) formatted += `${cyan}[${require_otel.stripControlChars(String(entry.traceId))}]${reset} `;
1756
+ if (entry.context && this._fieldCache.get("context") !== false) formatted += `${yellow}[${require_otel.stripControlChars(String(entry.context))}]${reset} `;
1757
+ if (this._fieldCache.get("message") !== false) formatted += require_otel.stripControlChars(require_coerce_utils.safeToString(entry.message));
1804
1758
  if (entry.payload !== void 0 && this._fieldCache.get("payload") !== false) formatted += ` ${require_safe_stringify.stringifyForLog(entry.payload)}`;
1805
1759
  return formatted;
1806
1760
  }
@@ -2159,12 +2113,6 @@ Object.defineProperty(exports, "deregisterFromShutdown", {
2159
2113
  return deregisterFromShutdown;
2160
2114
  }
2161
2115
  });
2162
- Object.defineProperty(exports, "disableOtelBridge", {
2163
- enumerable: true,
2164
- get: function() {
2165
- return disableOtelBridge;
2166
- }
2167
- });
2168
2116
  Object.defineProperty(exports, "flushOnExit", {
2169
2117
  enumerable: true,
2170
2118
  get: function() {
@@ -2183,30 +2131,12 @@ Object.defineProperty(exports, "generateTraceId", {
2183
2131
  return generateTraceId;
2184
2132
  }
2185
2133
  });
2186
- Object.defineProperty(exports, "getActiveOtelContext", {
2187
- enumerable: true,
2188
- get: function() {
2189
- return getActiveOtelContext;
2190
- }
2191
- });
2192
- Object.defineProperty(exports, "getOtelMetaFields", {
2193
- enumerable: true,
2194
- get: function() {
2195
- return getOtelMetaFields;
2196
- }
2197
- });
2198
2134
  Object.defineProperty(exports, "globalPluginRegistry", {
2199
2135
  enumerable: true,
2200
2136
  get: function() {
2201
2137
  return globalPluginRegistry;
2202
2138
  }
2203
2139
  });
2204
- Object.defineProperty(exports, "initOtelBridge", {
2205
- enumerable: true,
2206
- get: function() {
2207
- return initOtelBridge;
2208
- }
2209
- });
2210
2140
  Object.defineProperty(exports, "isError", {
2211
2141
  enumerable: true,
2212
2142
  get: function() {
@@ -2256,4 +2186,4 @@ Object.defineProperty(exports, "usePlugin", {
2256
2186
  }
2257
2187
  });
2258
2188
 
2259
- //# sourceMappingURL=builder-M7NoaugM.js.map
2189
+ //# sourceMappingURL=builder-CzmM_4Ub.js.map