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,8 +1,8 @@
1
- const require_secret_config = require("./secret-config-CBZBs0p1.js");
2
- const require_internal_log = require("./internal-log-b0Vp4qrB.js");
1
+ const require_secret_config = require("./secret-config-CmK2wVkr.js");
2
+ const require_internal_log = require("./internal-log-By4Govmu.js");
3
3
  const require_coerce_utils = require("./coerce.utils-C1C5sIX0.js");
4
- const require_safe_stringify = require("./safe-stringify-DLz1Kz3o.js");
5
- const require_entry_fields = require("./entry-fields-RLd1jCoR.js");
4
+ const require_safe_stringify = require("./safe-stringify-J3sh-7YM.js");
5
+ const require_entry_fields = require("./entry-fields-BSLkzw18.js");
6
6
  let node_events = require("node:events");
7
7
  let node_util = require("node:util");
8
8
  let node_zlib = require("node:zlib");
@@ -43,6 +43,7 @@ var ConsoleTransport = class ConsoleTransport {
43
43
  constructor(config = {}) {
44
44
  this.config = config;
45
45
  this.name = "console";
46
+ this.level = config.level;
46
47
  if (config.filter) this.filter = config.filter;
47
48
  }
48
49
  write(entry) {
@@ -280,6 +281,7 @@ var DatabaseTransport = class {
280
281
  this.batchSize = config.batchSize || 100;
281
282
  this.flushInterval = config.flushInterval || 5e3;
282
283
  this.cap = new BufferCap("DatabaseTransport", config.maxBufferSize, this.batchSize);
284
+ this.level = config.level;
283
285
  if (config.filter) this.filter = config.filter;
284
286
  if (config.table) validateSqlIdentifier(config.table, "table");
285
287
  this.setupFlushTimer();
@@ -986,8 +988,12 @@ function tag(key, value) {
986
988
  *
987
989
  * The API key is transmitted via the `DD-API-KEY` request header — never in the URL.
988
990
  *
991
+ * Metric names keep the legacy `logitron.logs.<level>` prefix (kept for
992
+ * dashboards and monitors that already query it; renaming would be a breaking
993
+ * change). Query `logitron.logs.error`, not `logixia.logs.error`.
994
+ *
989
995
  * @example
990
- * transports: { datadog: { apiKey: process.env.DD_API_KEY, service: 'api', env: 'production' } }
996
+ * analytics: { datadog: { apiKey: process.env.DD_API_KEY, service: 'api', env: 'production' } }
991
997
  */
992
998
  var DataDogTransport = class extends AnalyticsTransport {
993
999
  constructor(config) {
@@ -1676,7 +1682,7 @@ var FileTransport = class {
1676
1682
  * Sends log entries as Google Analytics 4 Measurement Protocol events.
1677
1683
  *
1678
1684
  * @example
1679
- * transports: {
1685
+ * analytics: {
1680
1686
  * googleAnalytics: { measurementId: 'G-XXXXXXX', apiSecret: process.env.GA_API_SECRET }
1681
1687
  * }
1682
1688
  */
@@ -1898,12 +1904,42 @@ var GoogleAnalyticsTransport = class extends AnalyticsTransport {
1898
1904
  await this.sendEvent(event);
1899
1905
  }
1900
1906
  };
1907
+ // src/transports/level-filter.ts
1908
+ /** Severity values of the built-in levels; lower is more severe (same scale as the logger). */
1909
+ const BUILTIN_LEVEL_VALUES = {
1910
+ error: 0,
1911
+ warn: 1,
1912
+ info: 2,
1913
+ debug: 3,
1914
+ trace: 4,
1915
+ verbose: 5
1916
+ };
1917
+ /** Built-in levels plus the logger's custom `levelOptions.levels`. */
1918
+ function buildLevelValues(custom) {
1919
+ return new Map([...Object.entries(BUILTIN_LEVEL_VALUES), ...Object.entries(custom ?? {})]);
1920
+ }
1921
+ function lookup(values, level) {
1922
+ return values.get(level) ?? values.get(level.toLowerCase());
1923
+ }
1924
+ /**
1925
+ * Whether an entry at `level` passes a transport's minimum `threshold`, using the
1926
+ * logger's scale (an entry passes when its value is <= the threshold's value).
1927
+ * The logger has already rejected unknown entry levels, so an unknown entry level
1928
+ * or threshold here does not filter.
1929
+ */
1930
+ function meetsTransportLevel(threshold, level, values) {
1931
+ if (!threshold) return true;
1932
+ const min = lookup(values, threshold);
1933
+ const actual = lookup(values, level);
1934
+ if (min === void 0 || actual === void 0) return true;
1935
+ return actual <= min;
1936
+ }
1901
1937
  // src/transports/mixpanel.transport.ts
1902
1938
  /**
1903
1939
  * Sends log entries as Mixpanel events via the Track and Engage HTTP APIs.
1904
1940
  *
1905
1941
  * @example
1906
- * transports: { mixpanel: { token: process.env.MIXPANEL_TOKEN } }
1942
+ * analytics: { mixpanel: { token: process.env.MIXPANEL_TOKEN } }
1907
1943
  */
1908
1944
  var MixpanelTransport = class extends AnalyticsTransport {
1909
1945
  constructor(config) {
@@ -2050,7 +2086,7 @@ const LOGIXIA_VERSION = "1.12.0";
2050
2086
  * Sends log entries as Segment track/identify events via the HTTP Tracking API.
2051
2087
  *
2052
2088
  * @example
2053
- * transports: { segment: { writeKey: process.env.SEGMENT_WRITE_KEY } }
2089
+ * analytics: { segment: { writeKey: process.env.SEGMENT_WRITE_KEY } }
2054
2090
  */
2055
2091
  var SegmentTransport = class extends AnalyticsTransport {
2056
2092
  constructor(config) {
@@ -2317,13 +2353,19 @@ function _sleep(ms) {
2317
2353
  return new Promise((resolve) => setTimeout(resolve, ms));
2318
2354
  }
2319
2355
  var TransportManager = class extends node_events.EventEmitter {
2320
- constructor(config = {}) {
2356
+ /**
2357
+ * @param config Transport configuration.
2358
+ * @param levels The logger's `levelOptions.levels`; used with the built-in levels
2359
+ * to compare entries against each transport's `level`.
2360
+ */
2361
+ constructor(config = {}, levels) {
2321
2362
  super();
2322
2363
  this.transports = /* @__PURE__ */ new Map();
2323
2364
  this.metrics = /* @__PURE__ */ new Map();
2324
2365
  this.isShuttingDown = false;
2325
2366
  this.transportLevelPreferences = /* @__PURE__ */ new Map();
2326
2367
  this.warnedPromptDeprecated = false;
2368
+ this.levelValues = buildLevelValues(levels);
2327
2369
  this.setupTransports(config);
2328
2370
  }
2329
2371
  setupTransports(config) {
@@ -2525,19 +2567,7 @@ var TransportManager = class extends node_events.EventEmitter {
2525
2567
  }
2526
2568
  shouldTransportHandle(transport, level, transportId) {
2527
2569
  if (transportId && this.transportLevelPreferences.has(transportId)) return this.transportLevelPreferences.get(transportId).includes(level.toLowerCase());
2528
- if (!transport.level) return true;
2529
- const levels = [
2530
- "error",
2531
- "warn",
2532
- "info",
2533
- "debug",
2534
- "trace",
2535
- "verbose"
2536
- ];
2537
- const transportLevelIndex = levels.indexOf(transport.level.toLowerCase());
2538
- const entryLevelIndex = levels.indexOf(level.toLowerCase());
2539
- if (transportLevelIndex === -1 || entryLevelIndex === -1) return true;
2540
- return entryLevelIndex <= transportLevelIndex;
2570
+ return meetsTransportLevel(transport.level, level, this.levelValues);
2541
2571
  }
2542
2572
  getTransportType(transport) {
2543
2573
  if (transport.name === "console") return "console";
@@ -2660,6 +2690,125 @@ var TransportManager = class extends node_events.EventEmitter {
2660
2690
  require_internal_log.internalLog("Transport level preferences cleared");
2661
2691
  }
2662
2692
  };
2693
+ // src/utils/otel.ts
2694
+ /** W3C trace-flags bit 0: the span is sampled (`TraceFlags.SAMPLED` in the OTel API). */
2695
+ const TRACE_FLAG_SAMPLED = 1;
2696
+ let _otelApi;
2697
+ function tryLoadOtelApi() {
2698
+ if (_otelApi !== void 0) return _otelApi;
2699
+ try {
2700
+ _otelApi = require("@opentelemetry/api");
2701
+ return _otelApi;
2702
+ } catch {
2703
+ _otelApi = null;
2704
+ return null;
2705
+ }
2706
+ }
2707
+ /**
2708
+ * Read the currently active OTel span context (if any) and return its fields
2709
+ * in a plain object suitable for spreading into a log entry.
2710
+ *
2711
+ * Returns `undefined` when:
2712
+ * - `@opentelemetry/api` is not installed
2713
+ * - No active span exists (root context)
2714
+ * - The span context is invalid (all-zeros)
2715
+ */
2716
+ function getActiveOtelContext(opts = {}) {
2717
+ const api = tryLoadOtelApi();
2718
+ if (!api) return void 0;
2719
+ try {
2720
+ const ctx = api.context.active();
2721
+ const sc = api.trace.getSpanContext(ctx);
2722
+ if (!sc || !api.trace.isSpanContextValid(sc)) return void 0;
2723
+ const isSampled = (sc.traceFlags & TRACE_FLAG_SAMPLED) === TRACE_FLAG_SAMPLED;
2724
+ if (opts.sampledOnly && !isSampled) return void 0;
2725
+ return {
2726
+ traceId: sc.traceId,
2727
+ spanId: sc.spanId,
2728
+ traceFlags: sc.traceFlags,
2729
+ isSampled
2730
+ };
2731
+ } catch {
2732
+ return;
2733
+ }
2734
+ }
2735
+ /**
2736
+ * Returns a metadata object with OTel context fields ready to merge into a log call,
2737
+ * using the configured field names.
2738
+ *
2739
+ * Returns `{}` when no active span exists (safe to spread unconditionally).
2740
+ *
2741
+ * @example
2742
+ * ```ts
2743
+ * await logger.info('Payment processed', {
2744
+ * ...getOtelMetaFields(),
2745
+ * orderId: 'ord_123',
2746
+ * });
2747
+ * ```
2748
+ */
2749
+ function getOtelMetaFields(opts = {}) {
2750
+ const { traceIdField = "traceId", spanIdField = "spanId", traceFlagsField = "traceFlags" } = opts;
2751
+ const ctx = getActiveOtelContext(opts);
2752
+ if (!ctx) return {};
2753
+ return {
2754
+ [traceIdField]: ctx.traceId,
2755
+ [spanIdField]: ctx.spanId,
2756
+ [traceFlagsField]: ctx.traceFlags
2757
+ };
2758
+ }
2759
+ let _bridgeOptions = null;
2760
+ /**
2761
+ * Initialise the global OTel bridge.
2762
+ *
2763
+ * Once called, logixia's internal log pipeline checks for an active OTel span
2764
+ * on **every** log call and automatically merges the span context into the
2765
+ * entry's metadata — no per-call wiring needed.
2766
+ *
2767
+ * Call once at app startup, **after** the OTel SDK has been initialised:
2768
+ * ```ts
2769
+ * import { initOtelBridge } from 'logixia';
2770
+ * initOtelBridge();
2771
+ * ```
2772
+ */
2773
+ function initOtelBridge(opts = {}) {
2774
+ _bridgeOptions = opts;
2775
+ }
2776
+ /**
2777
+ * @internal
2778
+ * True when initOtelBridge() has been called. Lets the logger hot path skip the
2779
+ * `_getOtelPayloadIfEnabled()` call (and its `{}` allocation + Object.keys) on
2780
+ * every log when the bridge is off — the overwhelmingly common case.
2781
+ */
2782
+ function _isOtelBridgeEnabled() {
2783
+ return _bridgeOptions !== null;
2784
+ }
2785
+ /**
2786
+ * @internal
2787
+ * Used by the core logger to inject OTel context when the bridge is active.
2788
+ * Returns `{}` when the bridge is not initialised or no active span exists.
2789
+ */
2790
+ function _getOtelPayloadIfEnabled() {
2791
+ if (!_bridgeOptions) return {};
2792
+ return getOtelMetaFields(_bridgeOptions);
2793
+ }
2794
+ /**
2795
+ * @internal
2796
+ * Payload field names the active bridge writes the trace and span ids to, or
2797
+ * `undefined` when the bridge is not initialised.
2798
+ */
2799
+ function _getOtelBridgeFieldNames() {
2800
+ if (!_bridgeOptions) return void 0;
2801
+ return {
2802
+ traceIdField: _bridgeOptions.traceIdField ?? "traceId",
2803
+ spanIdField: _bridgeOptions.spanIdField ?? "spanId"
2804
+ };
2805
+ }
2806
+ /**
2807
+ * Disable the OTel bridge (useful for tests).
2808
+ */
2809
+ function disableOtelBridge() {
2810
+ _bridgeOptions = null;
2811
+ }
2663
2812
  Object.defineProperty(exports, "AnalyticsTransport", {
2664
2813
  enumerable: true,
2665
2814
  get: function() {
@@ -2720,6 +2869,48 @@ Object.defineProperty(exports, "TransportManager", {
2720
2869
  return TransportManager;
2721
2870
  }
2722
2871
  });
2872
+ Object.defineProperty(exports, "_getOtelBridgeFieldNames", {
2873
+ enumerable: true,
2874
+ get: function() {
2875
+ return _getOtelBridgeFieldNames;
2876
+ }
2877
+ });
2878
+ Object.defineProperty(exports, "_getOtelPayloadIfEnabled", {
2879
+ enumerable: true,
2880
+ get: function() {
2881
+ return _getOtelPayloadIfEnabled;
2882
+ }
2883
+ });
2884
+ Object.defineProperty(exports, "_isOtelBridgeEnabled", {
2885
+ enumerable: true,
2886
+ get: function() {
2887
+ return _isOtelBridgeEnabled;
2888
+ }
2889
+ });
2890
+ Object.defineProperty(exports, "disableOtelBridge", {
2891
+ enumerable: true,
2892
+ get: function() {
2893
+ return disableOtelBridge;
2894
+ }
2895
+ });
2896
+ Object.defineProperty(exports, "getActiveOtelContext", {
2897
+ enumerable: true,
2898
+ get: function() {
2899
+ return getActiveOtelContext;
2900
+ }
2901
+ });
2902
+ Object.defineProperty(exports, "getOtelMetaFields", {
2903
+ enumerable: true,
2904
+ get: function() {
2905
+ return getOtelMetaFields;
2906
+ }
2907
+ });
2908
+ Object.defineProperty(exports, "initOtelBridge", {
2909
+ enumerable: true,
2910
+ get: function() {
2911
+ return initOtelBridge;
2912
+ }
2913
+ });
2723
2914
  Object.defineProperty(exports, "stripControlChars", {
2724
2915
  enumerable: true,
2725
2916
  get: function() {
@@ -2727,4 +2918,4 @@ Object.defineProperty(exports, "stripControlChars", {
2727
2918
  }
2728
2919
  });
2729
2920
 
2730
- //# sourceMappingURL=transport.manager-DkcEOlqV.js.map
2921
+ //# sourceMappingURL=otel-DyeH6DVR.js.map