logixia 2.0.4 → 2.0.6

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-2mbUKhcl.mjs} +4 -6
  3. package/dist/async-context-2mbUKhcl.mjs.map +1 -0
  4. package/dist/{async-context-DTQgi8f7.js → async-context-DUFMDYAr.js} +4 -6
  5. package/dist/async-context-DUFMDYAr.js.map +1 -0
  6. package/dist/{azure-monitor.transport-CwbOLZHB.js → azure-monitor.transport-Bu4S2I2q.js} +5 -5
  7. package/dist/azure-monitor.transport-Bu4S2I2q.js.map +1 -0
  8. package/dist/{azure-monitor.transport-DV03Z5P4.d.ts → azure-monitor.transport-Bvf7Xegt.d.ts} +2 -2
  9. package/dist/{azure-monitor.transport-DV03Z5P4.d.ts.map → azure-monitor.transport-Bvf7Xegt.d.ts.map} +1 -1
  10. package/dist/{azure-monitor.transport-BPbgjATu.mjs → azure-monitor.transport-C1RWAumT.mjs} +5 -5
  11. package/dist/azure-monitor.transport-C1RWAumT.mjs.map +1 -0
  12. package/dist/{azure-monitor.transport-C7kYyZUW.d.mts → azure-monitor.transport-CbSHOnNX.d.mts} +2 -2
  13. package/dist/{azure-monitor.transport-C7kYyZUW.d.mts.map → azure-monitor.transport-CbSHOnNX.d.mts.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-0fgLmIPn.mjs → batch-buffer-BvXLDPlV.mjs} +3 -3
  19. package/dist/{batch-buffer-0fgLmIPn.mjs.map → batch-buffer-BvXLDPlV.mjs.map} +1 -1
  20. package/dist/{batch-buffer-DT4gdXmf.js → batch-buffer-C7Am4Mw-.js} +3 -3
  21. package/dist/{batch-buffer-DT4gdXmf.js.map → batch-buffer-C7Am4Mw-.js.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 +47 -12
  27. package/dist/browser.js.map +1 -1
  28. package/dist/browser.mjs +47 -12
  29. package/dist/browser.mjs.map +1 -1
  30. package/dist/{builder-D70z6kjj.mjs → builder-DhNhvOkt.mjs} +106 -153
  31. package/dist/builder-DhNhvOkt.mjs.map +1 -0
  32. package/dist/{builder-M7NoaugM.js → builder-yFvJrz7o.js} +109 -179
  33. package/dist/builder-yFvJrz7o.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-B2wKQFF7.js → cloudwatch.transport-Ch1Uae-0.js} +6 -6
  42. package/dist/cloudwatch.transport-Ch1Uae-0.js.map +1 -0
  43. package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts → cloudwatch.transport-CjVrI6S4.d.mts} +2 -2
  44. package/dist/{cloudwatch.transport-Rj4yTpRn.d.mts.map → cloudwatch.transport-CjVrI6S4.d.mts.map} +1 -1
  45. package/dist/{cloudwatch.transport-BTvYfLs9.mjs → cloudwatch.transport-DZqF2xZO.mjs} +6 -6
  46. package/dist/cloudwatch.transport-DZqF2xZO.mjs.map +1 -0
  47. package/dist/correlation.d.mts +4 -55
  48. package/dist/correlation.d.mts.map +1 -1
  49. package/dist/correlation.d.ts +4 -55
  50. package/dist/correlation.d.ts.map +1 -1
  51. package/dist/correlation.js +13 -13
  52. package/dist/correlation.js.map +1 -1
  53. package/dist/correlation.mjs +13 -13
  54. package/dist/correlation.mjs.map +1 -1
  55. package/dist/{entry-fields-RLd1jCoR.js → entry-fields-BSLkzw18.js} +8 -3
  56. package/dist/entry-fields-BSLkzw18.js.map +1 -0
  57. package/dist/{entry-fields-CGuvT2R0.mjs → entry-fields-J1OBi24o.mjs} +8 -3
  58. package/dist/entry-fields-J1OBi24o.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-C5D72b1g.d.mts → gcp.transport-D9SdLPwP.d.mts} +4 -4
  66. package/dist/{gcp.transport-C5D72b1g.d.mts.map → gcp.transport-D9SdLPwP.d.mts.map} +1 -1
  67. package/dist/{gcp.transport-CGKopAhQ.mjs → gcp.transport-DVCmnA3b.mjs} +20 -16
  68. package/dist/gcp.transport-DVCmnA3b.mjs.map +1 -0
  69. package/dist/{gcp.transport-KZe9hCAR.js → gcp.transport-Dy2Lf8FI.js} +20 -16
  70. package/dist/gcp.transport-Dy2Lf8FI.js.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-BSTtFcQ6.d.mts} +142 -8
  76. package/dist/index-BSTtFcQ6.d.mts.map +1 -0
  77. package/dist/{index-DwozbmB4.d.ts → index-CFDGkI8n.d.ts} +142 -8
  78. package/dist/index-CFDGkI8n.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-Bg4V1cPg.mjs} +30 -2
  88. package/dist/internal-log-Bg4V1cPg.mjs.map +1 -0
  89. package/dist/{internal-log-b0Vp4qrB.js → internal-log-By4Govmu.js} +41 -1
  90. package/dist/internal-log-By4Govmu.js.map +1 -0
  91. package/dist/{logitron-logger-D2B75Oc7.d.ts → logitron-logger-D22Yb61K.d.mts} +13 -100
  92. package/dist/logitron-logger-D22Yb61K.d.mts.map +1 -0
  93. package/dist/{logitron-logger-oEd6wNhf.d.mts → logitron-logger-D_MYYrQt.d.ts} +13 -100
  94. package/dist/logitron-logger-D_MYYrQt.d.ts.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 +14 -7
  104. package/dist/nest.d.mts.map +1 -1
  105. package/dist/nest.d.ts +14 -7
  106. package/dist/nest.d.ts.map +1 -1
  107. package/dist/nest.js +15 -10
  108. package/dist/nest.js.map +1 -1
  109. package/dist/nest.mjs +15 -10
  110. package/dist/nest.mjs.map +1 -1
  111. package/dist/{transport.manager-eZ_EeC00.mjs → otel-Dt5riXuE.mjs} +173 -24
  112. package/dist/otel-Dt5riXuE.mjs.map +1 -0
  113. package/dist/{transport.manager-DkcEOlqV.js → otel-DyeH6DVR.js} +214 -23
  114. package/dist/otel-DyeH6DVR.js.map +1 -0
  115. package/dist/own-property-BWkibepN.js +40 -0
  116. package/dist/own-property-BWkibepN.js.map +1 -0
  117. package/dist/own-property-CjFw9qwZ.mjs +29 -0
  118. package/dist/own-property-CjFw9qwZ.mjs.map +1 -0
  119. package/dist/{request-trace-C_fvIDv4.mjs → request-trace-BgNykH9M.mjs} +1 -5
  120. package/dist/{request-trace-C_fvIDv4.mjs.map → request-trace-BgNykH9M.mjs.map} +1 -1
  121. package/dist/{request-trace-wTJdKp6-.js → request-trace-ByujsUZk.js} +1 -5
  122. package/dist/{request-trace-wTJdKp6-.js.map → request-trace-ByujsUZk.js.map} +1 -1
  123. package/dist/{safe-stringify-BMRl3EX3.mjs → safe-stringify-B5p5ktFe.mjs} +37 -12
  124. package/dist/safe-stringify-B5p5ktFe.mjs.map +1 -0
  125. package/dist/{safe-stringify-DLz1Kz3o.js → safe-stringify-J3sh-7YM.js} +37 -12
  126. package/dist/safe-stringify-J3sh-7YM.js.map +1 -0
  127. package/dist/{search-DUfWuzFP.js → search-CRjhHxe9.js} +269 -25
  128. package/dist/search-CRjhHxe9.js.map +1 -0
  129. package/dist/{search-CazwyX5Z.d.ts → search-DA3ft3X5.d.mts} +5 -2
  130. package/dist/search-DA3ft3X5.d.mts.map +1 -0
  131. package/dist/{search-CWMVYC-R.mjs → search-DAXKE-P9.mjs} +269 -25
  132. package/dist/search-DAXKE-P9.mjs.map +1 -0
  133. package/dist/{search-BH33XhuU.d.mts → search-DEl3Pe47.d.ts} +5 -2
  134. package/dist/search-DEl3Pe47.d.ts.map +1 -0
  135. package/dist/search.d.mts +1 -1
  136. package/dist/search.d.ts +1 -1
  137. package/dist/search.js +1 -1
  138. package/dist/search.mjs +1 -1
  139. package/dist/{secret-config-CBZBs0p1.js → secret-config-CmK2wVkr.js} +6 -5
  140. package/dist/secret-config-CmK2wVkr.js.map +1 -0
  141. package/dist/{secret-config-BegMLkYl.mjs → secret-config-Dhb6pqTU.mjs} +6 -5
  142. package/dist/secret-config-Dhb6pqTU.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-Ce96JBDk.mjs → slack.transport-BTEwsREY.mjs} +66 -15
  146. package/dist/slack.transport-BTEwsREY.mjs.map +1 -0
  147. package/dist/{slack.transport-DrirgDNy.d.ts → slack.transport-C6E0l4kw.d.ts} +2 -2
  148. package/dist/{slack.transport-DrirgDNy.d.ts.map → slack.transport-C6E0l4kw.d.ts.map} +1 -1
  149. package/dist/{slack.transport-Dlx3xvb7.js → slack.transport-UbYvOdKx.js} +67 -16
  150. package/dist/slack.transport-UbYvOdKx.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 +105 -24
  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-BmmOKb1-.mjs} +13 -10
  179. package/dist/worker.transport-BmmOKb1-.mjs.map +1 -0
  180. package/dist/{worker.transport-C6GNl_r2.js → worker.transport-DxxbqQCG.js} +13 -10
  181. package/dist/worker.transport-DxxbqQCG.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,9 +1,9 @@
1
1
  import { t as __require } from "./rolldown-runtime-D3PmRqjj.mjs";
2
- import { n as internalLog, r as internalWarn, t as internalError } from "./internal-log-uCSd1PMc.mjs";
3
- import { n as protectSecrets, o as urlSecrets, r as scrubError, t as collectSecrets } from "./secret-config-BegMLkYl.mjs";
2
+ import { n as internalLog, r as internalWarn, t as internalError } from "./internal-log-Bg4V1cPg.mjs";
3
+ import { n as protectSecrets, o as urlSecrets, r as scrubError, t as collectSecrets } from "./secret-config-Dhb6pqTU.mjs";
4
4
  import { t as safeToString } from "./coerce.utils-B_rEudCn.mjs";
5
- import { i as stringifyForLog } from "./safe-stringify-BMRl3EX3.mjs";
6
- import { t as mergeCoreFields } from "./entry-fields-CGuvT2R0.mjs";
5
+ import { i as stringifyForLog } from "./safe-stringify-B5p5ktFe.mjs";
6
+ import { t as mergeCoreFields } from "./entry-fields-J1OBi24o.mjs";
7
7
  import { EventEmitter } from "node:events";
8
8
  import { promisify } from "node:util";
9
9
  import { createGzip, gzip } from "node:zlib";
@@ -42,6 +42,7 @@ var ConsoleTransport = class ConsoleTransport {
42
42
  constructor(config = {}) {
43
43
  this.config = config;
44
44
  this.name = "console";
45
+ this.level = config.level;
45
46
  if (config.filter) this.filter = config.filter;
46
47
  }
47
48
  write(entry) {
@@ -279,6 +280,7 @@ var DatabaseTransport = class {
279
280
  this.batchSize = config.batchSize || 100;
280
281
  this.flushInterval = config.flushInterval || 5e3;
281
282
  this.cap = new BufferCap("DatabaseTransport", config.maxBufferSize, this.batchSize);
283
+ this.level = config.level;
282
284
  if (config.filter) this.filter = config.filter;
283
285
  if (config.table) validateSqlIdentifier(config.table, "table");
284
286
  this.setupFlushTimer();
@@ -985,8 +987,12 @@ function tag(key, value) {
985
987
  *
986
988
  * The API key is transmitted via the `DD-API-KEY` request header — never in the URL.
987
989
  *
990
+ * Metric names keep the legacy `logitron.logs.<level>` prefix (kept for
991
+ * dashboards and monitors that already query it; renaming would be a breaking
992
+ * change). Query `logitron.logs.error`, not `logixia.logs.error`.
993
+ *
988
994
  * @example
989
- * transports: { datadog: { apiKey: process.env.DD_API_KEY, service: 'api', env: 'production' } }
995
+ * analytics: { datadog: { apiKey: process.env.DD_API_KEY, service: 'api', env: 'production' } }
990
996
  */
991
997
  var DataDogTransport = class extends AnalyticsTransport {
992
998
  constructor(config) {
@@ -1675,7 +1681,7 @@ var FileTransport = class {
1675
1681
  * Sends log entries as Google Analytics 4 Measurement Protocol events.
1676
1682
  *
1677
1683
  * @example
1678
- * transports: {
1684
+ * analytics: {
1679
1685
  * googleAnalytics: { measurementId: 'G-XXXXXXX', apiSecret: process.env.GA_API_SECRET }
1680
1686
  * }
1681
1687
  */
@@ -1897,12 +1903,42 @@ var GoogleAnalyticsTransport = class extends AnalyticsTransport {
1897
1903
  await this.sendEvent(event);
1898
1904
  }
1899
1905
  };
1906
+ // src/transports/level-filter.ts
1907
+ /** Severity values of the built-in levels; lower is more severe (same scale as the logger). */
1908
+ const BUILTIN_LEVEL_VALUES = {
1909
+ error: 0,
1910
+ warn: 1,
1911
+ info: 2,
1912
+ debug: 3,
1913
+ trace: 4,
1914
+ verbose: 5
1915
+ };
1916
+ /** Built-in levels plus the logger's custom `levelOptions.levels`. */
1917
+ function buildLevelValues(custom) {
1918
+ return new Map([...Object.entries(BUILTIN_LEVEL_VALUES), ...Object.entries(custom ?? {})]);
1919
+ }
1920
+ function lookup(values, level) {
1921
+ return values.get(level) ?? values.get(level.toLowerCase());
1922
+ }
1923
+ /**
1924
+ * Whether an entry at `level` passes a transport's minimum `threshold`, using the
1925
+ * logger's scale (an entry passes when its value is <= the threshold's value).
1926
+ * The logger has already rejected unknown entry levels, so an unknown entry level
1927
+ * or threshold here does not filter.
1928
+ */
1929
+ function meetsTransportLevel(threshold, level, values) {
1930
+ if (!threshold) return true;
1931
+ const min = lookup(values, threshold);
1932
+ const actual = lookup(values, level);
1933
+ if (min === void 0 || actual === void 0) return true;
1934
+ return actual <= min;
1935
+ }
1900
1936
  // src/transports/mixpanel.transport.ts
1901
1937
  /**
1902
1938
  * Sends log entries as Mixpanel events via the Track and Engage HTTP APIs.
1903
1939
  *
1904
1940
  * @example
1905
- * transports: { mixpanel: { token: process.env.MIXPANEL_TOKEN } }
1941
+ * analytics: { mixpanel: { token: process.env.MIXPANEL_TOKEN } }
1906
1942
  */
1907
1943
  var MixpanelTransport = class extends AnalyticsTransport {
1908
1944
  constructor(config) {
@@ -2049,7 +2085,7 @@ const LOGIXIA_VERSION = "1.12.0";
2049
2085
  * Sends log entries as Segment track/identify events via the HTTP Tracking API.
2050
2086
  *
2051
2087
  * @example
2052
- * transports: { segment: { writeKey: process.env.SEGMENT_WRITE_KEY } }
2088
+ * analytics: { segment: { writeKey: process.env.SEGMENT_WRITE_KEY } }
2053
2089
  */
2054
2090
  var SegmentTransport = class extends AnalyticsTransport {
2055
2091
  constructor(config) {
@@ -2316,13 +2352,19 @@ function _sleep(ms) {
2316
2352
  return new Promise((resolve) => setTimeout(resolve, ms));
2317
2353
  }
2318
2354
  var TransportManager = class extends EventEmitter {
2319
- constructor(config = {}) {
2355
+ /**
2356
+ * @param config Transport configuration.
2357
+ * @param levels The logger's `levelOptions.levels`; used with the built-in levels
2358
+ * to compare entries against each transport's `level`.
2359
+ */
2360
+ constructor(config = {}, levels) {
2320
2361
  super();
2321
2362
  this.transports = /* @__PURE__ */ new Map();
2322
2363
  this.metrics = /* @__PURE__ */ new Map();
2323
2364
  this.isShuttingDown = false;
2324
2365
  this.transportLevelPreferences = /* @__PURE__ */ new Map();
2325
2366
  this.warnedPromptDeprecated = false;
2367
+ this.levelValues = buildLevelValues(levels);
2326
2368
  this.setupTransports(config);
2327
2369
  }
2328
2370
  setupTransports(config) {
@@ -2524,19 +2566,7 @@ var TransportManager = class extends EventEmitter {
2524
2566
  }
2525
2567
  shouldTransportHandle(transport, level, transportId) {
2526
2568
  if (transportId && this.transportLevelPreferences.has(transportId)) return this.transportLevelPreferences.get(transportId).includes(level.toLowerCase());
2527
- if (!transport.level) return true;
2528
- const levels = [
2529
- "error",
2530
- "warn",
2531
- "info",
2532
- "debug",
2533
- "trace",
2534
- "verbose"
2535
- ];
2536
- const transportLevelIndex = levels.indexOf(transport.level.toLowerCase());
2537
- const entryLevelIndex = levels.indexOf(level.toLowerCase());
2538
- if (transportLevelIndex === -1 || entryLevelIndex === -1) return true;
2539
- return entryLevelIndex <= transportLevelIndex;
2569
+ return meetsTransportLevel(transport.level, level, this.levelValues);
2540
2570
  }
2541
2571
  getTransportType(transport) {
2542
2572
  if (transport.name === "console") return "console";
@@ -2659,6 +2689,125 @@ var TransportManager = class extends EventEmitter {
2659
2689
  internalLog("Transport level preferences cleared");
2660
2690
  }
2661
2691
  };
2662
- export { FileTransport as a, DatabaseTransport as c, stripControlChars as d, GoogleAnalyticsTransport as i, BufferCap as l, SegmentTransport as n, DataDogTransport as o, MixpanelTransport as r, AnalyticsTransport as s, TransportManager as t, ConsoleTransport as u };
2692
+ // src/utils/otel.ts
2693
+ /** W3C trace-flags bit 0: the span is sampled (`TraceFlags.SAMPLED` in the OTel API). */
2694
+ const TRACE_FLAG_SAMPLED = 1;
2695
+ let _otelApi;
2696
+ function tryLoadOtelApi() {
2697
+ if (_otelApi !== void 0) return _otelApi;
2698
+ try {
2699
+ _otelApi = __require("@opentelemetry/api");
2700
+ return _otelApi;
2701
+ } catch {
2702
+ _otelApi = null;
2703
+ return null;
2704
+ }
2705
+ }
2706
+ /**
2707
+ * Read the currently active OTel span context (if any) and return its fields
2708
+ * in a plain object suitable for spreading into a log entry.
2709
+ *
2710
+ * Returns `undefined` when:
2711
+ * - `@opentelemetry/api` is not installed
2712
+ * - No active span exists (root context)
2713
+ * - The span context is invalid (all-zeros)
2714
+ */
2715
+ function getActiveOtelContext(opts = {}) {
2716
+ const api = tryLoadOtelApi();
2717
+ if (!api) return void 0;
2718
+ try {
2719
+ const ctx = api.context.active();
2720
+ const sc = api.trace.getSpanContext(ctx);
2721
+ if (!sc || !api.trace.isSpanContextValid(sc)) return void 0;
2722
+ const isSampled = (sc.traceFlags & TRACE_FLAG_SAMPLED) === TRACE_FLAG_SAMPLED;
2723
+ if (opts.sampledOnly && !isSampled) return void 0;
2724
+ return {
2725
+ traceId: sc.traceId,
2726
+ spanId: sc.spanId,
2727
+ traceFlags: sc.traceFlags,
2728
+ isSampled
2729
+ };
2730
+ } catch {
2731
+ return;
2732
+ }
2733
+ }
2734
+ /**
2735
+ * Returns a metadata object with OTel context fields ready to merge into a log call,
2736
+ * using the configured field names.
2737
+ *
2738
+ * Returns `{}` when no active span exists (safe to spread unconditionally).
2739
+ *
2740
+ * @example
2741
+ * ```ts
2742
+ * await logger.info('Payment processed', {
2743
+ * ...getOtelMetaFields(),
2744
+ * orderId: 'ord_123',
2745
+ * });
2746
+ * ```
2747
+ */
2748
+ function getOtelMetaFields(opts = {}) {
2749
+ const { traceIdField = "traceId", spanIdField = "spanId", traceFlagsField = "traceFlags" } = opts;
2750
+ const ctx = getActiveOtelContext(opts);
2751
+ if (!ctx) return {};
2752
+ return {
2753
+ [traceIdField]: ctx.traceId,
2754
+ [spanIdField]: ctx.spanId,
2755
+ [traceFlagsField]: ctx.traceFlags
2756
+ };
2757
+ }
2758
+ let _bridgeOptions = null;
2759
+ /**
2760
+ * Initialise the global OTel bridge.
2761
+ *
2762
+ * Once called, logixia's internal log pipeline checks for an active OTel span
2763
+ * on **every** log call and automatically merges the span context into the
2764
+ * entry's metadata — no per-call wiring needed.
2765
+ *
2766
+ * Call once at app startup, **after** the OTel SDK has been initialised:
2767
+ * ```ts
2768
+ * import { initOtelBridge } from 'logixia';
2769
+ * initOtelBridge();
2770
+ * ```
2771
+ */
2772
+ function initOtelBridge(opts = {}) {
2773
+ _bridgeOptions = opts;
2774
+ }
2775
+ /**
2776
+ * @internal
2777
+ * True when initOtelBridge() has been called. Lets the logger hot path skip the
2778
+ * `_getOtelPayloadIfEnabled()` call (and its `{}` allocation + Object.keys) on
2779
+ * every log when the bridge is off — the overwhelmingly common case.
2780
+ */
2781
+ function _isOtelBridgeEnabled() {
2782
+ return _bridgeOptions !== null;
2783
+ }
2784
+ /**
2785
+ * @internal
2786
+ * Used by the core logger to inject OTel context when the bridge is active.
2787
+ * Returns `{}` when the bridge is not initialised or no active span exists.
2788
+ */
2789
+ function _getOtelPayloadIfEnabled() {
2790
+ if (!_bridgeOptions) return {};
2791
+ return getOtelMetaFields(_bridgeOptions);
2792
+ }
2793
+ /**
2794
+ * @internal
2795
+ * Payload field names the active bridge writes the trace and span ids to, or
2796
+ * `undefined` when the bridge is not initialised.
2797
+ */
2798
+ function _getOtelBridgeFieldNames() {
2799
+ if (!_bridgeOptions) return void 0;
2800
+ return {
2801
+ traceIdField: _bridgeOptions.traceIdField ?? "traceId",
2802
+ spanIdField: _bridgeOptions.spanIdField ?? "spanId"
2803
+ };
2804
+ }
2805
+ /**
2806
+ * Disable the OTel bridge (useful for tests).
2807
+ */
2808
+ function disableOtelBridge() {
2809
+ _bridgeOptions = null;
2810
+ }
2811
+ export { ConsoleTransport as _, getActiveOtelContext as a, TransportManager as c, GoogleAnalyticsTransport as d, FileTransport as f, BufferCap as g, DatabaseTransport as h, disableOtelBridge as i, SegmentTransport as l, AnalyticsTransport as m, _getOtelPayloadIfEnabled as n, getOtelMetaFields as o, DataDogTransport as p, _isOtelBridgeEnabled as r, initOtelBridge as s, _getOtelBridgeFieldNames as t, MixpanelTransport as u, stripControlChars as v };
2663
2812
 
2664
- //# sourceMappingURL=transport.manager-eZ_EeC00.mjs.map
2813
+ //# sourceMappingURL=otel-Dt5riXuE.mjs.map