logixia 2.2.0 → 2.3.1

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 (150) hide show
  1. package/dist/{async-context-CoPhbRG0.js → async-context-BqjwNzgS.js} +2 -2
  2. package/dist/{async-context-CoPhbRG0.js.map → async-context-BqjwNzgS.js.map} +1 -1
  3. package/dist/{async-context-1YMPGgJZ.mjs → async-context-DJdxbbCU.mjs} +2 -2
  4. package/dist/{async-context-1YMPGgJZ.mjs.map → async-context-DJdxbbCU.mjs.map} +1 -1
  5. package/dist/{azure-monitor.transport-C5VjvREZ.d.mts → azure-monitor.transport-BZDaQjy8.d.mts} +2 -2
  6. package/dist/{azure-monitor.transport-C5VjvREZ.d.mts.map → azure-monitor.transport-BZDaQjy8.d.mts.map} +1 -1
  7. package/dist/{azure-monitor.transport-B_dqSV_o.mjs → azure-monitor.transport-DNccn1vp.mjs} +3 -3
  8. package/dist/{azure-monitor.transport-B_dqSV_o.mjs.map → azure-monitor.transport-DNccn1vp.mjs.map} +1 -1
  9. package/dist/{azure-monitor.transport-Bl3xVvpN.js → azure-monitor.transport-DTIgEZwg.js} +3 -3
  10. package/dist/{azure-monitor.transport-Bl3xVvpN.js.map → azure-monitor.transport-DTIgEZwg.js.map} +1 -1
  11. package/dist/{azure-monitor.transport-CyHDjHS-.d.ts → azure-monitor.transport-MDigkKsS.d.ts} +2 -2
  12. package/dist/{azure-monitor.transport-CyHDjHS-.d.ts.map → azure-monitor.transport-MDigkKsS.d.ts.map} +1 -1
  13. package/dist/azure.d.mts +1 -1
  14. package/dist/azure.d.ts +1 -1
  15. package/dist/azure.js +1 -1
  16. package/dist/azure.mjs +1 -1
  17. package/dist/{batch-buffer-C-ETEX3Y.js → batch-buffer-C6EmQcD5.js} +2 -2
  18. package/dist/{batch-buffer-C-ETEX3Y.js.map → batch-buffer-C6EmQcD5.js.map} +1 -1
  19. package/dist/{batch-buffer-BnmVCCwI.mjs → batch-buffer-CcubZ2cW.mjs} +2 -2
  20. package/dist/{batch-buffer-BnmVCCwI.mjs.map → batch-buffer-CcubZ2cW.mjs.map} +1 -1
  21. package/dist/browser.js +3 -2
  22. package/dist/browser.js.map +1 -1
  23. package/dist/browser.mjs +3 -2
  24. package/dist/browser.mjs.map +1 -1
  25. package/dist/{builder-CbttbixM.mjs → builder-CcRxxVwU.mjs} +132 -76
  26. package/dist/builder-CcRxxVwU.mjs.map +1 -0
  27. package/dist/{builder-Ck1tsC5d.js → builder-Dm8M1WXD.js} +132 -76
  28. package/dist/builder-Dm8M1WXD.js.map +1 -0
  29. package/dist/cloudwatch.d.mts +1 -1
  30. package/dist/cloudwatch.d.ts +1 -1
  31. package/dist/cloudwatch.js +1 -1
  32. package/dist/cloudwatch.mjs +1 -1
  33. package/dist/{cloudwatch.transport-_hS7Mcc5.d.mts → cloudwatch.transport-CqXAGHPH.d.mts} +2 -2
  34. package/dist/{cloudwatch.transport-_hS7Mcc5.d.mts.map → cloudwatch.transport-CqXAGHPH.d.mts.map} +1 -1
  35. package/dist/{cloudwatch.transport-DO9e__Z-.js → cloudwatch.transport-DCTWV9p6.js} +3 -3
  36. package/dist/{cloudwatch.transport-DO9e__Z-.js.map → cloudwatch.transport-DCTWV9p6.js.map} +1 -1
  37. package/dist/{cloudwatch.transport-DdSjUWvu.d.ts → cloudwatch.transport-pY96iAfO.d.ts} +2 -2
  38. package/dist/{cloudwatch.transport-DdSjUWvu.d.ts.map → cloudwatch.transport-pY96iAfO.d.ts.map} +1 -1
  39. package/dist/{cloudwatch.transport-Brh5fmRN.mjs → cloudwatch.transport-wWrht2Gv.mjs} +3 -3
  40. package/dist/{cloudwatch.transport-Brh5fmRN.mjs.map → cloudwatch.transport-wWrht2Gv.mjs.map} +1 -1
  41. package/dist/correlation.js +2 -2
  42. package/dist/correlation.mjs +2 -2
  43. package/dist/fastify.d.mts +1 -1
  44. package/dist/fastify.d.ts +1 -1
  45. package/dist/fastify.js +1 -1
  46. package/dist/fastify.mjs +1 -1
  47. package/dist/gcp.d.mts +1 -1
  48. package/dist/gcp.d.ts +1 -1
  49. package/dist/gcp.js +1 -1
  50. package/dist/gcp.mjs +1 -1
  51. package/dist/{gcp.transport-C8VJiEM7.d.mts → gcp.transport-BFlvl8uy.d.mts} +2 -2
  52. package/dist/{gcp.transport-C8VJiEM7.d.mts.map → gcp.transport-BFlvl8uy.d.mts.map} +1 -1
  53. package/dist/{gcp.transport-Ct0BtKFo.d.ts → gcp.transport-Bo60F-_3.d.ts} +2 -2
  54. package/dist/{gcp.transport-Ct0BtKFo.d.ts.map → gcp.transport-Bo60F-_3.d.ts.map} +1 -1
  55. package/dist/{gcp.transport-BY1Z3cS0.mjs → gcp.transport-BqzWORwO.mjs} +3 -3
  56. package/dist/{gcp.transport-BY1Z3cS0.mjs.map → gcp.transport-BqzWORwO.mjs.map} +1 -1
  57. package/dist/{gcp.transport-V9R4dwdT.js → gcp.transport-BvKR7MIz.js} +3 -3
  58. package/dist/{gcp.transport-V9R4dwdT.js.map → gcp.transport-BvKR7MIz.js.map} +1 -1
  59. package/dist/hono.js +1 -1
  60. package/dist/hono.js.map +1 -1
  61. package/dist/hono.mjs +1 -1
  62. package/dist/hono.mjs.map +1 -1
  63. package/dist/{index-B3ajtXJd.d.mts → index-0X_XpQ_f.d.mts} +2 -2
  64. package/dist/{index-B3ajtXJd.d.mts.map → index-0X_XpQ_f.d.mts.map} +1 -1
  65. package/dist/{index-oqD3WNxf.d.ts → index-BnbqeNl6.d.ts} +2 -2
  66. package/dist/{index-oqD3WNxf.d.ts.map → index-BnbqeNl6.d.ts.map} +1 -1
  67. package/dist/index.d.mts +5 -5
  68. package/dist/index.d.ts +5 -5
  69. package/dist/index.js +5 -5
  70. package/dist/index.js.map +1 -1
  71. package/dist/index.mjs +5 -5
  72. package/dist/index.mjs.map +1 -1
  73. package/dist/{logitron-logger-fMOkXr8H.d.mts → logixia-logger-DK6oHsmN.d.mts} +12 -4
  74. package/dist/logixia-logger-DK6oHsmN.d.mts.map +1 -0
  75. package/dist/{logitron-logger-Csn3e6Qu.d.ts → logixia-logger-DSh5ZUEz.d.ts} +12 -4
  76. package/dist/logixia-logger-DSh5ZUEz.d.ts.map +1 -0
  77. package/dist/middleware.d.mts +1 -1
  78. package/dist/middleware.d.ts +1 -1
  79. package/dist/middleware.js +1 -1
  80. package/dist/middleware.mjs +1 -1
  81. package/dist/nest.d.mts +2 -2
  82. package/dist/nest.d.mts.map +1 -1
  83. package/dist/nest.d.ts +2 -2
  84. package/dist/nest.d.ts.map +1 -1
  85. package/dist/nest.js +5 -5
  86. package/dist/nest.js.map +1 -1
  87. package/dist/nest.mjs +5 -5
  88. package/dist/nest.mjs.map +1 -1
  89. package/dist/{otel-BrgvxLDW.js → otel-BAzbTiJw.js} +5 -7
  90. package/dist/otel-BAzbTiJw.js.map +1 -0
  91. package/dist/{otel-C5jBV_l_.mjs → otel-DWVTrsgM.mjs} +5 -7
  92. package/dist/otel-DWVTrsgM.mjs.map +1 -0
  93. package/dist/{request-trace-txUhyyre.mjs → request-trace-B-S5-LVk.mjs} +2 -2
  94. package/dist/request-trace-B-S5-LVk.mjs.map +1 -0
  95. package/dist/{request-trace-6NBSw5lt.js → request-trace-BqU7ARjg.js} +2 -2
  96. package/dist/request-trace-BqU7ARjg.js.map +1 -0
  97. package/dist/{search-BlKBLm5D.d.ts → search-B9fKizkh.d.ts} +2 -2
  98. package/dist/{search-BlKBLm5D.d.ts.map → search-B9fKizkh.d.ts.map} +1 -1
  99. package/dist/{search-B-hJe2N-.d.mts → search-CdTwNSQm.d.mts} +2 -2
  100. package/dist/{search-B-hJe2N-.d.mts.map → search-CdTwNSQm.d.mts.map} +1 -1
  101. package/dist/search.d.mts +1 -1
  102. package/dist/search.d.ts +1 -1
  103. package/dist/{secret-config-Cng7XPLx.mjs → secret-config-BFKJrSYF.mjs} +13 -4
  104. package/dist/secret-config-BFKJrSYF.mjs.map +1 -0
  105. package/dist/{secret-config-OqmIPmpV.js → secret-config-DB84lWy4.js} +18 -3
  106. package/dist/secret-config-DB84lWy4.js.map +1 -0
  107. package/dist/{slack.transport-Ci0swStG.js → slack.transport-BA97gQ8V.js} +4 -4
  108. package/dist/{slack.transport-Ci0swStG.js.map → slack.transport-BA97gQ8V.js.map} +1 -1
  109. package/dist/{slack.transport-C6dzPJHX.mjs → slack.transport-CrRlsrs5.mjs} +4 -4
  110. package/dist/{slack.transport-C6dzPJHX.mjs.map → slack.transport-CrRlsrs5.mjs.map} +1 -1
  111. package/dist/{slack.transport-5OPL7H3u.d.mts → slack.transport-DAGuMvm7.d.mts} +2 -2
  112. package/dist/{slack.transport-5OPL7H3u.d.mts.map → slack.transport-DAGuMvm7.d.mts.map} +1 -1
  113. package/dist/{slack.transport-BFpBD_Ri.d.ts → slack.transport-LvYsOoFZ.d.ts} +2 -2
  114. package/dist/{slack.transport-BFpBD_Ri.d.ts.map → slack.transport-LvYsOoFZ.d.ts.map} +1 -1
  115. package/dist/testing.d.mts +1 -1
  116. package/dist/testing.d.ts +1 -1
  117. package/dist/{transport.types-B1ejJJP6.d.mts → transport.types-MjMDjOQ7.d.mts} +6 -1
  118. package/dist/{transport.types-B1ejJJP6.d.mts.map → transport.types-MjMDjOQ7.d.mts.map} +1 -1
  119. package/dist/{transport.types-B1ejJJP6.d.ts → transport.types-MjMDjOQ7.d.ts} +6 -1
  120. package/dist/{transport.types-B1ejJJP6.d.ts.map → transport.types-MjMDjOQ7.d.ts.map} +1 -1
  121. package/dist/transports.d.mts +8 -10
  122. package/dist/transports.d.mts.map +1 -1
  123. package/dist/transports.d.ts +8 -10
  124. package/dist/transports.d.ts.map +1 -1
  125. package/dist/transports.js +6 -6
  126. package/dist/transports.mjs +6 -6
  127. package/dist/worker-entry.js +3 -2
  128. package/dist/worker.d.mts +1 -1
  129. package/dist/worker.d.ts +1 -1
  130. package/dist/worker.js +1 -1
  131. package/dist/worker.mjs +1 -1
  132. package/dist/{worker.transport-CxFD8mvS.mjs → worker.transport-BN0BmxOr.mjs} +2 -2
  133. package/dist/{worker.transport-CxFD8mvS.mjs.map → worker.transport-BN0BmxOr.mjs.map} +1 -1
  134. package/dist/{worker.transport-B7olL1Uh.d.ts → worker.transport-ByBBDx7U.d.ts} +2 -2
  135. package/dist/{worker.transport-B7olL1Uh.d.ts.map → worker.transport-ByBBDx7U.d.ts.map} +1 -1
  136. package/dist/{worker.transport-CZOutlxC.js → worker.transport-CaVYRowu.js} +2 -2
  137. package/dist/{worker.transport-CZOutlxC.js.map → worker.transport-CaVYRowu.js.map} +1 -1
  138. package/dist/{worker.transport-DnU0_9Bd.d.mts → worker.transport-DWyyRVJW.d.mts} +2 -2
  139. package/dist/{worker.transport-DnU0_9Bd.d.mts.map → worker.transport-DWyyRVJW.d.mts.map} +1 -1
  140. package/package.json +1 -1
  141. package/dist/builder-CbttbixM.mjs.map +0 -1
  142. package/dist/builder-Ck1tsC5d.js.map +0 -1
  143. package/dist/logitron-logger-Csn3e6Qu.d.ts.map +0 -1
  144. package/dist/logitron-logger-fMOkXr8H.d.mts.map +0 -1
  145. package/dist/otel-BrgvxLDW.js.map +0 -1
  146. package/dist/otel-C5jBV_l_.mjs.map +0 -1
  147. package/dist/request-trace-6NBSw5lt.js.map +0 -1
  148. package/dist/request-trace-txUhyyre.mjs.map +0 -1
  149. package/dist/secret-config-Cng7XPLx.mjs.map +0 -1
  150. package/dist/secret-config-OqmIPmpV.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { t as assignOwn } from "./own-property-CjFw9qwZ.mjs";
2
- import { s as TraceContext } from "./request-trace-txUhyyre.mjs";
3
- import { t as LogixiaContext } from "./async-context-1YMPGgJZ.mjs";
2
+ import { s as TraceContext } from "./request-trace-B-S5-LVk.mjs";
3
+ import { t as LogixiaContext } from "./async-context-DJdxbbCU.mjs";
4
4
  import { a as buildNameSet, n as DEFAULT_REDACT_QUERY_PARAMS, o as redactUrlQuery, r as SENSITIVE_KEY_NAMES, s as redactUrlsInText } from "./sensitive-names-BiBM6R1X.mjs";
5
- import { n as protectSecrets } from "./secret-config-Cng7XPLx.mjs";
5
+ import { r as redactedView } from "./secret-config-BFKJrSYF.mjs";
6
6
  import { n as internalLog, r as internalWarn, t as internalError } from "./internal-log-Cy5nF1ZL.mjs";
7
7
  import { i as stringifyForLog } from "./safe-stringify-B5p5ktFe.mjs";
8
8
  import { n as safeToString } from "./csv.utils-ZdxSod5g.mjs";
9
- import { c as TransportManager, n as _getOtelPayloadIfEnabled, r as _isOtelBridgeEnabled, v as stripControlChars } from "./otel-C5jBV_l_.mjs";
9
+ import { c as TransportManager, n as _getOtelPayloadIfEnabled, r as _isOtelBridgeEnabled, v as stripControlChars } from "./otel-DWVTrsgM.mjs";
10
10
  import { i as serializeNestedErrors, r as serializeError, t as isError } from "./error.utils-B8_CwESF.mjs";
11
11
  import { constants } from "node:os";
12
12
  // src/types/index.ts
@@ -918,7 +918,7 @@ function warnOnReservedLevelNames(levels) {
918
918
  if (clashes.length > 0) 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.`);
919
919
  return clashes;
920
920
  }
921
- // src/core/logitron-logger.ts
921
+ // src/core/logixia-logger.ts
922
922
  /**
923
923
  * Core Logixia Logger implementation
924
924
  *
@@ -941,6 +941,7 @@ function nowIso() {
941
941
  }
942
942
  const RESOLVED = Promise.resolve();
943
943
  const UNSERIALIZABLE = "[Unserializable]";
944
+ const CONFIGS = /* @__PURE__ */ new WeakMap();
944
945
  const ANSI_COLORS = /* @__PURE__ */ new Map([
945
946
  ["black", "\x1B[30m"],
946
947
  ["red", "\x1B[31m"],
@@ -1018,6 +1019,16 @@ function namespacePatternToRegex(pattern) {
1018
1019
  }
1019
1020
  /** Max compiled patterns to keep in memory. Oldest entry is evicted when full. */
1020
1021
  const _NS_CACHE_MAX = 1e3;
1022
+ const _nsEnvNames = /* @__PURE__ */ new Map();
1023
+ function nsEnvName(ns) {
1024
+ let name = _nsEnvNames.get(ns);
1025
+ if (name === void 0) {
1026
+ name = `LOGIXIA_LEVEL_${ns.split(".")[0].toUpperCase()}`;
1027
+ if (_nsEnvNames.size >= _NS_CACHE_MAX) _nsEnvNames.clear();
1028
+ _nsEnvNames.set(ns, name);
1029
+ }
1030
+ return name;
1031
+ }
1021
1032
  const _nsPatternCache = /* @__PURE__ */ new Map();
1022
1033
  /**
1023
1034
  * One-shot warning so operators notice runaway pattern growth.
@@ -1080,40 +1091,51 @@ function resolveInitialLevel(config) {
1080
1091
  * ```
1081
1092
  */
1082
1093
  var LogixiaLogger = class LogixiaLogger {
1083
- config;
1094
+ get config() {
1095
+ return CONFIGS.get(this);
1096
+ }
1097
+ set config(value) {
1098
+ CONFIGS.set(this, value);
1099
+ }
1084
1100
  context;
1085
- timers = /* @__PURE__ */ new Map();
1101
+ /** Created by the first time() call. */
1102
+ timers;
1086
1103
  contextData = {};
1087
1104
  transportManager;
1088
- fieldState = /* @__PURE__ */ new Map();
1105
+ /** Runtime field overrides; created by the first enableField() / disableField(). */
1106
+ fieldState;
1089
1107
  /** Stable fallback trace ID generated ONCE per logger instance. */
1090
1108
  fallbackTraceId = TraceContext.instance.generate();
1091
1109
  /** Numeric value for each known log level — built once, read on every log call. */
1092
- _levelValues = /* @__PURE__ */ new Map();
1110
+ _levelValues;
1093
1111
  /** Numeric threshold for the currently active log level. */
1094
1112
  _minLevelValue = 2;
1095
1113
  /** Level set via setLevel(); outranks every other level source until the process ends. */
1096
1114
  _runtimeLevel;
1097
1115
  /** `source=value` pairs already reported as unknown levels — warn once per logger. */
1098
- _warnedInvalidLevels = /* @__PURE__ */ new Set();
1116
+ _warnedInvalidLevels;
1099
1117
  /** Pre-built ANSI color codes to avoid recreating the object in colorize(). */
1100
1118
  _colorMap = ANSI_COLORS;
1101
1119
  /** Pre-computed field-enabled booleans so isFieldEnabled() isn't called per log. */
1102
- _fieldCache = /* @__PURE__ */ new Map();
1120
+ _fieldCache;
1121
+ /** False while _fieldCache is still the parent's map; it is copied before the first write. */
1122
+ _ownsFieldCache = false;
1103
1123
  /** True when contextData is non-empty — avoids Object.keys() check on hot path. */
1104
1124
  _hasContextData = false;
1105
1125
  /**
1106
1126
  * Pre-computed `[INFO] `, `[WARN] ` etc. strings — avoids a colorize() call per log.
1107
1127
  * Key: lowercase level name. Value: formatted bracket string ready to concatenate.
1108
1128
  */
1109
- _formattedLevels = /* @__PURE__ */ new Map();
1129
+ _formattedLevels;
1110
1130
  /** Pre-computed `[appName] ` string — avoids template literal allocation per log. */
1111
1131
  _formattedAppName = "";
1112
1132
  /**
1113
1133
  * JSON line pieces between the timestamp and the message, keyed by level, for the
1114
1134
  * appName and environment they were built from. Rebuilt when either changes.
1115
1135
  */
1116
- _jsonHeads = /* @__PURE__ */ new Map();
1136
+ _jsonHeads;
1137
+ /** Custom level shortcuts as [method, level] pairs; a child reuses its parent's list. */
1138
+ _levelMethods;
1117
1139
  _jsonHeadsApp = "";
1118
1140
  _jsonHeadsEnv = "";
1119
1141
  /** The `,"context":"..."` piece for `_jsonContextKey`. */
@@ -1139,41 +1161,41 @@ var LogixiaLogger = class LogixiaLogger {
1139
1161
  };
1140
1162
  this._nsSeenVersion = this._nsStore.version;
1141
1163
  this._pluginRegistry = parent ? parent._pluginRegistry : new PluginRegistry();
1142
- const defaultConfig = {
1143
- appName: "App",
1144
- environment: "development",
1145
- traceId: true,
1146
- format: {
1147
- timestamp: true,
1148
- colorize: true,
1149
- json: false
1150
- },
1151
- silent: false,
1152
- levelOptions: {
1153
- level: LogLevel.INFO,
1154
- levels: {
1155
- [LogLevel.ERROR]: 0,
1156
- [LogLevel.WARN]: 1,
1157
- [LogLevel.INFO]: 2,
1158
- [LogLevel.DEBUG]: 3,
1159
- [LogLevel.TRACE]: 4,
1160
- [LogLevel.VERBOSE]: 5
1161
- },
1162
- colors: {
1163
- [LogLevel.ERROR]: "red",
1164
- [LogLevel.WARN]: "yellow",
1165
- [LogLevel.INFO]: "blue",
1166
- [LogLevel.DEBUG]: "green",
1167
- [LogLevel.TRACE]: "gray",
1168
- [LogLevel.VERBOSE]: "cyan"
1169
- }
1170
- }
1171
- };
1172
1164
  if (parent) this.config = {
1173
1165
  ...config,
1174
1166
  levelOptions: { ...config.levelOptions }
1175
1167
  };
1176
1168
  else {
1169
+ const defaultConfig = {
1170
+ appName: "App",
1171
+ environment: "development",
1172
+ traceId: true,
1173
+ format: {
1174
+ timestamp: true,
1175
+ colorize: true,
1176
+ json: false
1177
+ },
1178
+ silent: false,
1179
+ levelOptions: {
1180
+ level: LogLevel.INFO,
1181
+ levels: {
1182
+ [LogLevel.ERROR]: 0,
1183
+ [LogLevel.WARN]: 1,
1184
+ [LogLevel.INFO]: 2,
1185
+ [LogLevel.DEBUG]: 3,
1186
+ [LogLevel.TRACE]: 4,
1187
+ [LogLevel.VERBOSE]: 5
1188
+ },
1189
+ colors: {
1190
+ [LogLevel.ERROR]: "red",
1191
+ [LogLevel.WARN]: "yellow",
1192
+ [LogLevel.INFO]: "blue",
1193
+ [LogLevel.DEBUG]: "green",
1194
+ [LogLevel.TRACE]: "gray",
1195
+ [LogLevel.VERBOSE]: "cyan"
1196
+ }
1197
+ }
1198
+ };
1177
1199
  this.config = {
1178
1200
  ...defaultConfig,
1179
1201
  ...config
@@ -1194,7 +1216,6 @@ var LogixiaLogger = class LogixiaLogger {
1194
1216
  timeTaken: "[time_taken_MS]"
1195
1217
  };
1196
1218
  this.context = toContextLabel(context);
1197
- protectSecrets(this, ["config"]);
1198
1219
  if (parent) {
1199
1220
  this.transportManager = parent.transportManager;
1200
1221
  this._sampler = parent._sampler;
@@ -1216,7 +1237,7 @@ var LogixiaLogger = class LogixiaLogger {
1216
1237
  }) + "\n");
1217
1238
  });
1218
1239
  if (!parent) this.setupGracefulShutdown();
1219
- this.createCustomLevelMethods();
1240
+ this.createCustomLevelMethods(parent);
1220
1241
  if (!parent) for (const p of globalPluginRegistry._plugins) this._pluginRegistry.register(p);
1221
1242
  this._buildPerfCaches(parent);
1222
1243
  }
@@ -1232,28 +1253,39 @@ var LogixiaLogger = class LogixiaLogger {
1232
1253
  ...normalized.exit ? { exit: normalized.exit } : {}
1233
1254
  });
1234
1255
  }
1235
- createCustomLevelMethods() {
1236
- var _this$config$levelOpt3;
1237
- const levels = (_this$config$levelOpt3 = this.config.levelOptions) === null || _this$config$levelOpt3 === void 0 ? void 0 : _this$config$levelOpt3.levels;
1238
- warnOnReservedLevelNames(levels);
1239
- if (!levels) return;
1256
+ createCustomLevelMethods(parent) {
1257
+ if (parent) this._levelMethods = parent._levelMethods;
1258
+ else {
1259
+ var _this$config$levelOpt3;
1260
+ const levels = (_this$config$levelOpt3 = this.config.levelOptions) === null || _this$config$levelOpt3 === void 0 ? void 0 : _this$config$levelOpt3.levels;
1261
+ warnOnReservedLevelNames(levels);
1262
+ const names = Object.keys(levels ?? {});
1263
+ const methods = [];
1264
+ const taken = /* @__PURE__ */ new Set();
1265
+ const candidates = [...names.map((name) => [name, name]), ...names.map((name) => [name.toLowerCase(), name])];
1266
+ for (const [method, levelName] of candidates) {
1267
+ if (method in this || taken.has(method)) continue;
1268
+ taken.add(method);
1269
+ methods.push([method, levelName]);
1270
+ }
1271
+ this._levelMethods = methods;
1272
+ }
1240
1273
  const self = this;
1241
- const names = Object.keys(levels);
1242
- const define = (method, levelName) => {
1243
- if (!self[method]) self[method] = (message, data) => this.logLevel(levelName, message, data);
1244
- };
1245
- for (const levelName of names) define(levelName, levelName);
1246
- for (const levelName of names) define(levelName.toLowerCase(), levelName);
1274
+ for (const [method, levelName] of this._levelMethods) self[method] = (message, data) => this.logLevel(levelName, message, data);
1247
1275
  }
1248
1276
  /**
1249
1277
  * Rebuild all hot-path caches after any config mutation or level change.
1250
1278
  * Keeps the actual log() call free of allocations in the common case.
1251
1279
  */
1252
1280
  _buildPerfCaches(inheritFrom) {
1253
- var _this$config$levelOpt4, _this$config$format, _this$config$redact$p, _this$config$redact$p2;
1254
- if (inheritFrom && inheritFrom.fieldState.size === 0) {
1281
+ var _inheritFrom$fieldSta, _this$config$levelOpt4, _this$config$format, _this$config$redact$p, _this$config$redact$p2;
1282
+ if (inheritFrom && !((_inheritFrom$fieldSta = inheritFrom.fieldState) === null || _inheritFrom$fieldSta === void 0 ? void 0 : _inheritFrom$fieldSta.size)) {
1255
1283
  this._levelValues = inheritFrom._levelValues;
1256
- this._fieldCache = new Map(inheritFrom._fieldCache);
1284
+ this._fieldCache = inheritFrom._fieldCache;
1285
+ inheritFrom._ownsFieldCache = false;
1286
+ this._jsonHeads = inheritFrom._jsonHeads;
1287
+ this._jsonHeadsApp = inheritFrom._jsonHeadsApp;
1288
+ this._jsonHeadsEnv = inheritFrom._jsonHeadsEnv;
1257
1289
  this._formattedLevels = inheritFrom._formattedLevels;
1258
1290
  this._formattedAppName = inheritFrom._formattedAppName;
1259
1291
  this._hasRedact = inheritFrom._hasRedact;
@@ -1275,6 +1307,8 @@ var LogixiaLogger = class LogixiaLogger {
1275
1307
  const effectiveLevel = this.resolveEffectiveLevel();
1276
1308
  this._minLevelValue = this._levelValues.get(effectiveLevel) ?? 2;
1277
1309
  this._colorMap = ANSI_COLORS;
1310
+ const fieldCache = this._writableFieldCache();
1311
+ this._jsonHeads ??= /* @__PURE__ */ new Map();
1278
1312
  for (const f of [
1279
1313
  "timestamp",
1280
1314
  "level",
@@ -1284,10 +1318,11 @@ var LogixiaLogger = class LogixiaLogger {
1284
1318
  "message",
1285
1319
  "payload"
1286
1320
  ]) {
1287
- var _this$config$fields;
1288
- if (this.fieldState.has(f)) this._fieldCache.set(f, this.fieldState.get(f));
1289
- else if (((_this$config$fields = this.config.fields) === null || _this$config$fields === void 0 ? void 0 : _this$config$fields[f]) === void 0) this._fieldCache.set(f, true);
1290
- else this._fieldCache.set(f, this.config.fields[f] !== false);
1321
+ var _this$fieldState, _this$config$fields;
1322
+ const own = (_this$fieldState = this.fieldState) === null || _this$fieldState === void 0 ? void 0 : _this$fieldState.get(f);
1323
+ if (own !== void 0) fieldCache.set(f, own);
1324
+ else if (((_this$config$fields = this.config.fields) === null || _this$config$fields === void 0 ? void 0 : _this$config$fields[f]) === void 0) fieldCache.set(f, true);
1325
+ else fieldCache.set(f, this.config.fields[f] !== false);
1291
1326
  }
1292
1327
  const colorize = ((_this$config$format = this.config.format) === null || _this$config$format === void 0 ? void 0 : _this$config$format.colorize) ?? true;
1293
1328
  this._formattedLevels = /* @__PURE__ */ new Map();
@@ -1329,6 +1364,13 @@ var LogixiaLogger = class LogixiaLogger {
1329
1364
  else this._formattedAppName = colorize ? `${this._colorMap.get("gray")}${appNameRaw}${this._colorMap.get("reset")} ` : `${appNameRaw} `;
1330
1365
  this._hasRedact = !!(this.config.redact && ((((_this$config$redact$p = this.config.redact.paths) === null || _this$config$redact$p === void 0 ? void 0 : _this$config$redact$p.length) ?? 0) > 0 || (((_this$config$redact$p2 = this.config.redact.patterns) === null || _this$config$redact$p2 === void 0 ? void 0 : _this$config$redact$p2.length) ?? 0) > 0 || !!this.config.redact.autoDetect));
1331
1366
  }
1367
+ _writableFieldCache() {
1368
+ if (!this._ownsFieldCache) {
1369
+ this._fieldCache = new Map(this._fieldCache);
1370
+ this._ownsFieldCache = true;
1371
+ }
1372
+ return this._fieldCache;
1373
+ }
1332
1374
  /**
1333
1375
  * Log at `error` level. An `Error` is logged with its message and serialized
1334
1376
  * (name, message, stack) under `data.error`; a string is logged as-is.
@@ -1384,6 +1426,7 @@ var LogixiaLogger = class LogixiaLogger {
1384
1426
  }
1385
1427
  /** Start a named timer; finish it with {@link timeEnd}. Reusing a label restarts it. */
1386
1428
  time(label) {
1429
+ this.timers ??= /* @__PURE__ */ new Map();
1387
1430
  this.timers.set(label, {
1388
1431
  label,
1389
1432
  startTime: Date.now()
@@ -1402,7 +1445,8 @@ var LogixiaLogger = class LogixiaLogger {
1402
1445
  * ```
1403
1446
  */
1404
1447
  async timeEnd(label) {
1405
- const timer = this.timers.get(label);
1448
+ var _this$timers, _this$timers2;
1449
+ const timer = (_this$timers = this.timers) === null || _this$timers === void 0 ? void 0 : _this$timers.get(label);
1406
1450
  if (!timer) {
1407
1451
  await this.warn(`Timer '${label}' does not exist`);
1408
1452
  return;
@@ -1416,7 +1460,7 @@ var LogixiaLogger = class LogixiaLogger {
1416
1460
  startTime: new Date(timer.startTime).toISOString(),
1417
1461
  endTime: new Date(endTime).toISOString()
1418
1462
  });
1419
- this.timers.delete(label);
1463
+ (_this$timers2 = this.timers) === null || _this$timers2 === void 0 || _this$timers2.delete(label);
1420
1464
  return duration;
1421
1465
  }
1422
1466
  async timeAsync(label, fn) {
@@ -1473,6 +1517,7 @@ var LogixiaLogger = class LogixiaLogger {
1473
1517
  const canonical = canonicalLevel(level, this._levelValues);
1474
1518
  if (canonical === void 0) {
1475
1519
  const key = `${source}=${String(level)}`;
1520
+ this._warnedInvalidLevels ??= /* @__PURE__ */ new Set();
1476
1521
  if (!this._warnedInvalidLevels.has(key)) {
1477
1522
  this._warnedInvalidLevels.add(key);
1478
1523
  internalWarn(`Unknown log level '${String(level)}' from ${source}; valid levels: ${this._validLevelList()}. Falling back to the next level source (default '${LogLevel.INFO}').`);
@@ -1531,22 +1576,25 @@ var LogixiaLogger = class LogixiaLogger {
1531
1576
  }
1532
1577
  /** Show `fieldName` in log output, overriding the config for this logger instance. */
1533
1578
  enableField(fieldName) {
1579
+ this.fieldState ??= /* @__PURE__ */ new Map();
1534
1580
  this.fieldState.set(fieldName, true);
1535
- this._fieldCache.set(fieldName, true);
1581
+ this._writableFieldCache().set(fieldName, true);
1536
1582
  if (fieldName === "level" || fieldName === "appName") this._buildPerfCaches();
1537
1583
  internalLog(`Field '${fieldName}' enabled`);
1538
1584
  }
1539
1585
  /** Hide `fieldName` from log output, overriding the config for this logger instance. */
1540
1586
  disableField(fieldName) {
1587
+ this.fieldState ??= /* @__PURE__ */ new Map();
1541
1588
  this.fieldState.set(fieldName, false);
1542
- this._fieldCache.set(fieldName, false);
1589
+ this._writableFieldCache().set(fieldName, false);
1543
1590
  if (fieldName === "level" || fieldName === "appName") this._buildPerfCaches();
1544
1591
  internalLog(`Field '${fieldName}' disabled`);
1545
1592
  }
1546
1593
  /** Whether `fieldName` is currently shown: runtime override first, then config, default `true`. */
1547
1594
  isFieldEnabled(fieldName) {
1548
- var _this$config$fields2;
1549
- if (this.fieldState.has(fieldName)) return this.fieldState.get(fieldName);
1595
+ var _this$fieldState2, _this$config$fields2;
1596
+ const own = (_this$fieldState2 = this.fieldState) === null || _this$fieldState2 === void 0 ? void 0 : _this$fieldState2.get(fieldName);
1597
+ if (own !== void 0) return own;
1550
1598
  if (((_this$config$fields2 = this.config.fields) === null || _this$config$fields2 === void 0 ? void 0 : _this$config$fields2[fieldName]) !== void 0) return this.config.fields[fieldName] !== false;
1551
1599
  return true;
1552
1600
  }
@@ -1569,7 +1617,8 @@ var LogixiaLogger = class LogixiaLogger {
1569
1617
  }
1570
1618
  /** Drop all runtime enable/disable overrides so field visibility follows the config again. */
1571
1619
  resetFieldState() {
1572
- this.fieldState.clear();
1620
+ var _this$fieldState3;
1621
+ (_this$fieldState3 = this.fieldState) === null || _this$fieldState3 === void 0 || _this$fieldState3.clear();
1573
1622
  internalLog("Field state reset to configuration defaults");
1574
1623
  }
1575
1624
  /** @deprecated No-op. Library code never prompts on stdin; use setTransportLevels(). */
@@ -1675,12 +1724,12 @@ var LogixiaLogger = class LogixiaLogger {
1675
1724
  * ```
1676
1725
  */
1677
1726
  async close() {
1678
- var _this$_sampler;
1679
- for (const [label, timer] of this.timers) await this.warn(`Timer '${label}' was not ended properly`, {
1727
+ var _this$timers3, _this$_sampler;
1728
+ for (const [label, timer] of this.timers ?? []) await this.warn(`Timer '${label}' was not ended properly`, {
1680
1729
  startTime: new Date(timer.startTime).toISOString(),
1681
1730
  duration: `${Date.now() - timer.startTime}ms (incomplete)`
1682
1731
  });
1683
- this.timers.clear();
1732
+ (_this$timers3 = this.timers) === null || _this$timers3 === void 0 || _this$timers3.clear();
1684
1733
  if (this._parent) return;
1685
1734
  if (this.transportManager) await this.transportManager.close();
1686
1735
  (_this$_sampler = this._sampler) === null || _this$_sampler === void 0 || _this$_sampler.destroy();
@@ -1786,8 +1835,8 @@ var LogixiaLogger = class LogixiaLogger {
1786
1835
  if (this._runtimeLevel) return this._runtimeLevel;
1787
1836
  const ns = this.context;
1788
1837
  if (ns) {
1789
- const nsKey = ns.split(".")[0].toUpperCase();
1790
- const envNsLevel = this._validLevel(process.env[`LOGIXIA_LEVEL_${nsKey}`], `LOGIXIA_LEVEL_${nsKey}`);
1838
+ const envName = nsEnvName(ns);
1839
+ const envNsLevel = this._validLevel(process.env[envName], envName);
1791
1840
  if (envNsLevel) return envNsLevel;
1792
1841
  const namespaceLevels = this._nsStore.levels;
1793
1842
  if (Object.keys(namespaceLevels).length > 0) {
@@ -1902,6 +1951,13 @@ var LogixiaLogger = class LogixiaLogger {
1902
1951
  (level === LogLevel.ERROR ? process.stderr : process.stdout).write(this.formatLog(entry) + "\n");
1903
1952
  }
1904
1953
  };
1954
+ function loggerView() {
1955
+ return redactedView(this, /* @__PURE__ */ new Map([["config", CONFIGS.get(this)]]));
1956
+ }
1957
+ for (const key of ["toJSON", Symbol.for("nodejs.util.inspect.custom")]) Object.defineProperty(LogixiaLogger.prototype, key, {
1958
+ value: loggerView,
1959
+ configurable: true
1960
+ });
1905
1961
  /**
1906
1962
  * Create a logger from `config`, with an optional default `context` label.
1907
1963
  *
@@ -2162,4 +2218,4 @@ var ErrorResponseBuilder = class {
2162
2218
  };
2163
2219
  export { usePlugin as _, isLogixiaException as a, DEFAULT_LOG_LEVELS as b, _shutdownRegistrySize as c, registerForShutdown as d, resetShutdownHandlers as f, globalPluginRegistry as g, PluginRegistry as h, LogixiaException as i, deregisterFromShutdown as l, redactObject as m, generateRequestId as n, LogixiaLogger as o, applyRedaction as p, generateTraceId as r, createLogger as s, ErrorResponseBuilder as t, flushOnExit as u, DEFAULT_CONFIG as v, LogLevel as x, DEFAULT_LOG_COLORS as y };
2164
2220
 
2165
- //# sourceMappingURL=builder-CbttbixM.mjs.map
2221
+ //# sourceMappingURL=builder-CcRxxVwU.mjs.map