@aryan-vashishth/advanced-logger 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.d.ts CHANGED
@@ -14,9 +14,23 @@ export interface FileToggles {
14
14
  export interface LogConfig {
15
15
  /** Root threshold for console + partial-trace. Debug/full traces always capture everything. */
16
16
  level: RootLevel;
17
- /** ANSI output on/off. This is the theme toggle: on = HIGH_CONTRAST, off = plain text. */
17
+ /** ANSI output on/off. This is the theme toggle: on = HIGH_CONTRAST, off = plain text. Overrides fg and bg. */
18
18
  ansi: boolean;
19
- /** Console-only: color the caller suffix separately. Breaks one-ANSI-block-per-line. */
19
+ /** Intent-based foreground colors (plus the level foreground on BASE lines). Only matters when ansi is on. */
20
+ fg: boolean;
21
+ /** The theme background (one constant, BG_BLACK, for every level). Only matters when ansi is on. */
22
+ bg: boolean;
23
+ /**
24
+ * Max log files kept per trace kind (partial-trace, debug-trace, full-trace, jsonl); older ones are deleted by
25
+ * mtime. Files of the current run are never deleted. null (or 0) keeps everything.
26
+ */
27
+ maxLogFiles: number | null;
28
+ /**
29
+ * Max chars for an INFO log (tables excluded). Longer ones print truncated with the total char count, followed by a
30
+ * WARN and a DEBUG line holding the full text. null (or 0) means no limit.
31
+ */
32
+ infoLogsCharLimit: number | null;
33
+ /** Console-only: color the caller suffix separately. Breaks one-ANSI-block-per-line. Independent of fg and bg. */
20
34
  callerColor: boolean;
21
35
  /** Java-style pattern (yyyy MM dd HH mm ss SSS) or a formatter function. */
22
36
  tsFormat: string | ((d: Date) => string);
@@ -43,6 +57,7 @@ export interface LogConfig {
43
57
  export declare const levelEnabled: (root: RootLevel, level: LevelName) => boolean;
44
58
  /** Explicit env wins, then NO_COLOR/FORCE_COLOR, then TTY/terminal hints, then CI renderers that show ANSI. */
45
59
  export declare function detectAnsiSupport(env?: NodeJS.ProcessEnv, isTTY?: boolean): boolean;
60
+ /** Built lazily on first use, so the project config file is read once in every process (every Playwright worker included). */
46
61
  export declare const config: () => LogConfig;
47
62
  export type LogConfigPatch = Partial<Omit<LogConfig, 'files' | 'suppressContains' | 'suppressMethodPrefixes' | 'includeOnlyPrefixes'>> & {
48
63
  files?: Partial<FileToggles>;
@@ -52,11 +67,22 @@ export type LogConfigPatch = Partial<Omit<LogConfig, 'files' | 'suppressContains
52
67
  };
53
68
  /** Merge a patch, or mutate in place with a callback. Set-typed fields accept arrays in a patch. */
54
69
  export declare function configure(patch: LogConfigPatch | ((cfg: LogConfig) => void)): LogConfig;
55
- /** Restore defaults (re-reads env). Mainly for tests. */
70
+ /** Tells the reader where to raise infoLogsCharLimit, based on which layer set the active value. */
71
+ export declare function infoLimitHint(): string;
72
+ /** Types a logger.config.* file. Returns its argument unchanged; the type is exactly LogConfigPatch. */
73
+ export declare function defineConfig(patch: LogConfigPatch): LogConfigPatch;
74
+ export declare function defineConfig(fn: (config: LogConfig) => LogConfigPatch): (config: LogConfig) => LogConfigPatch;
75
+ /** Restore defaults and re-read env and the config file. Mainly for tests. */
56
76
  export declare function resetConfig(): LogConfig;
57
77
  export declare const enableAnsi: () => void;
58
78
  export declare const disableAnsi: () => void;
59
79
  export declare const isAnsiEnabled: () => boolean;
80
+ export declare const enableFg: () => void;
81
+ export declare const disableFg: () => void;
82
+ export declare const isFgEnabled: () => boolean;
83
+ export declare const enableBg: () => void;
84
+ export declare const disableBg: () => void;
85
+ export declare const isBgEnabled: () => boolean;
60
86
  export declare const enableCallerColor: () => void;
61
87
  export declare const disableCallerColor: () => void;
62
88
  export declare const isCallerColorEnabled: () => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.disableTableCellLimit = exports.LINE_BREAKS_NO_G = exports.LINE_BREAKS = exports.clearIncludes = exports.isDebugEnabled = exports.isCallerColorEnabled = exports.disableCallerColor = exports.enableCallerColor = exports.isAnsiEnabled = exports.disableAnsi = exports.enableAnsi = exports.config = exports.levelEnabled = void 0;
3
+ exports.disableTableCellLimit = exports.LINE_BREAKS_NO_G = exports.LINE_BREAKS = exports.clearIncludes = exports.isDebugEnabled = exports.isCallerColorEnabled = exports.disableCallerColor = exports.enableCallerColor = exports.isBgEnabled = exports.disableBg = exports.enableBg = exports.isFgEnabled = exports.disableFg = exports.enableFg = exports.isAnsiEnabled = exports.disableAnsi = exports.enableAnsi = exports.config = exports.levelEnabled = void 0;
4
4
  exports.detectAnsiSupport = detectAnsiSupport;
5
5
  exports.configure = configure;
6
+ exports.infoLimitHint = infoLimitHint;
7
+ exports.defineConfig = defineConfig;
6
8
  exports.resetConfig = resetConfig;
7
9
  exports.includeOnlyPackages = includeOnlyPackages;
8
10
  exports.suppressClassContains = suppressClassContains;
@@ -13,21 +15,23 @@ exports.formatTs = formatTs;
13
15
  exports.initRun = initRun;
14
16
  exports.getRun = getRun;
15
17
  exports.workerLabel = workerLabel;
18
+ const configFile_1 = require("./configFile");
16
19
  const LEVEL_ORDER = { debug: 10, info: 20, warn: 30, error: 40, off: 99 };
17
20
  const NAME_ORDER = { DEBUG: 10, INFO: 20, WARN: 30, ERROR: 40 };
18
21
  const levelEnabled = (root, level) => NAME_ORDER[level] >= LEVEL_ORDER[root];
19
22
  exports.levelEnabled = levelEnabled;
23
+ /** undefined for anything that is not a valid level, so an invalid env value never overrides a lower layer. */
20
24
  function parseLevel(v) {
21
25
  const l = (v ?? '').trim().toLowerCase();
22
- return l in LEVEL_ORDER ? l : 'info';
26
+ return l in LEVEL_ORDER ? l : undefined;
23
27
  }
24
28
  function envBool(v) {
25
29
  if (v == null || v === '')
26
30
  return undefined;
27
31
  return /^(1|true|yes|on)$/i.test(v);
28
32
  }
29
- /** Explicit env wins, then NO_COLOR/FORCE_COLOR, then TTY/terminal hints, then CI renderers that show ANSI. */
30
- function detectAnsiSupport(env = process.env, isTTY = !!process.stdout?.isTTY) {
33
+ /** The env-level ANSI decision: VOID_LOG_ANSI, then NO_COLOR, then FORCE_COLOR. undefined when none is set. */
34
+ function explicitAnsi(env) {
31
35
  const explicit = envBool(env.VOID_LOG_ANSI);
32
36
  if (explicit !== undefined)
33
37
  return explicit;
@@ -35,6 +39,10 @@ function detectAnsiSupport(env = process.env, isTTY = !!process.stdout?.isTTY) {
35
39
  return false;
36
40
  if (env.FORCE_COLOR != null && env.FORCE_COLOR !== '')
37
41
  return env.FORCE_COLOR !== '0' && env.FORCE_COLOR !== 'false';
42
+ return undefined;
43
+ }
44
+ /** TTY/terminal hints, then CI renderers that show ANSI. This is the lowest layer (a config file beats it). */
45
+ function heuristicAnsi(env, isTTY) {
38
46
  if (isTTY)
39
47
  return true;
40
48
  if (env.GITHUB_ACTIONS === 'true')
@@ -43,10 +51,19 @@ function detectAnsiSupport(env = process.env, isTTY = !!process.stdout?.isTTY) {
43
51
  return true;
44
52
  return !!env.TERM && env.TERM !== 'dumb';
45
53
  }
46
- function defaults(env = process.env) {
54
+ /** Explicit env wins, then NO_COLOR/FORCE_COLOR, then TTY/terminal hints, then CI renderers that show ANSI. */
55
+ function detectAnsiSupport(env = process.env, isTTY = !!process.stdout?.isTTY) {
56
+ return explicitAnsi(env) ?? heuristicAnsi(env, isTTY);
57
+ }
58
+ /** Built-in defaults only. Env overrides are applied separately so a config file can sit between the two. */
59
+ function builtinDefaults(env) {
47
60
  return {
48
- level: parseLevel(env.VOID_LOG_LEVEL),
49
- ansi: detectAnsiSupport(env),
61
+ level: 'info',
62
+ ansi: heuristicAnsi(env, !!process.stdout?.isTTY),
63
+ fg: true,
64
+ bg: true,
65
+ infoLogsCharLimit: null,
66
+ maxLogFiles: null,
50
67
  callerColor: false,
51
68
  tsFormat: 'yyyy-MM-dd HH:mm:ss.SSS',
52
69
  segmentDivider: ' │ ',
@@ -61,69 +78,175 @@ function defaults(env = process.env) {
61
78
  debugTrace: true,
62
79
  partialTrace: true,
63
80
  fullTrace: true,
64
- jsonl: envBool(env.VOID_LOG_JSONL) ?? false,
81
+ jsonl: false,
65
82
  },
66
- logDir: env.VOID_LOG_DIR || './logs',
83
+ logDir: './logs',
67
84
  githubAnnotations: env.GITHUB_ACTIONS === 'true',
68
85
  redactKeys: ['password', 'passwd', 'secret', 'token', 'authorization', 'apikey', 'api_key'],
69
86
  attach: 'on-failure',
70
87
  };
71
88
  }
72
- let CURRENT = defaults();
73
- const config = () => CURRENT;
74
- exports.config = config;
75
- /** Merge a patch, or mutate in place with a callback. Set-typed fields accept arrays in a patch. */
76
- function configure(patch) {
77
- if (typeof patch === 'function') {
78
- patch(CURRENT);
79
- return CURRENT;
89
+ /** Each env var is applied only when set (and, for the level, valid). */
90
+ function applyEnv(cfg, env) {
91
+ const level = parseLevel(env.VOID_LOG_LEVEL);
92
+ if (level)
93
+ cfg.level = level;
94
+ if (env.VOID_LOG_DIR)
95
+ cfg.logDir = env.VOID_LOG_DIR;
96
+ const ansi = explicitAnsi(env);
97
+ if (ansi !== undefined)
98
+ cfg.ansi = ansi;
99
+ const jsonl = envBool(env.VOID_LOG_JSONL);
100
+ if (jsonl !== undefined)
101
+ cfg.files.jsonl = jsonl;
102
+ const trunc = env.VOID_LOG_INFO_LOGS_CHAR_LIMIT?.trim();
103
+ if (trunc && /^\d+$/.test(trunc)) {
104
+ cfg.infoLogsCharLimit = Number(trunc) > 0 ? Number(trunc) : null;
105
+ LIMIT_SOURCE = 'env';
80
106
  }
107
+ const maxFiles = env.VOID_LOG_MAX_FILES?.trim();
108
+ if (maxFiles && /^\d+$/.test(maxFiles))
109
+ cfg.maxLogFiles = Number(maxFiles) > 0 ? Number(maxFiles) : null;
110
+ const fg = envBool(env.VOID_LOG_FG);
111
+ if (fg !== undefined)
112
+ cfg.fg = fg;
113
+ const bg = envBool(env.VOID_LOG_BG);
114
+ if (bg !== undefined)
115
+ cfg.bg = bg;
116
+ }
117
+ function cloneConfig(c) {
118
+ return {
119
+ ...c,
120
+ files: { ...c.files },
121
+ suppressContains: new Set(c.suppressContains),
122
+ suppressMethodPrefixes: new Set(c.suppressMethodPrefixes),
123
+ includeOnlyPrefixes: new Set(c.includeOnlyPrefixes),
124
+ projectRoots: [...c.projectRoots],
125
+ redactKeys: [...c.redactKeys],
126
+ };
127
+ }
128
+ let CURRENT;
129
+ /** Which layer set the active infoLogsCharLimit, so the truncation warning can say what to edit. */
130
+ let LIMIT_SOURCE = 'default';
131
+ /**
132
+ * Precedence, lowest to highest: built-in defaults, config file, env vars. configure() calls land on top afterwards.
133
+ * A failing config file throws on every call until it is fixed, so the mistake cannot be missed.
134
+ */
135
+ function build(env = process.env) {
136
+ const cfg = builtinDefaults(env);
137
+ // Re-entrancy guard: a config file that imports this package and touches config() while loading sees the defaults.
138
+ CURRENT = cfg;
139
+ LIMIT_SOURCE = 'default';
140
+ try {
141
+ const loaded = (0, configFile_1.loadConfigFile)(env, process.cwd());
142
+ if (loaded !== undefined) {
143
+ const patch = typeof loaded === 'function' ? loaded(cloneConfig(cfg)) : loaded;
144
+ applyPatch(cfg, patch);
145
+ if (patch.infoLogsCharLimit !== undefined)
146
+ LIMIT_SOURCE = 'file';
147
+ }
148
+ applyEnv(cfg, env);
149
+ }
150
+ catch (err) {
151
+ CURRENT = undefined;
152
+ throw err;
153
+ }
154
+ return cfg;
155
+ }
156
+ /** Built lazily on first use, so the project config file is read once in every process (every Playwright worker included). */
157
+ const config = () => CURRENT ?? build();
158
+ exports.config = config;
159
+ function applyPatch(target, patch) {
81
160
  const { files, suppressContains, suppressMethodPrefixes, includeOnlyPrefixes, ...rest } = patch;
82
- Object.assign(CURRENT, rest);
161
+ Object.assign(target, rest);
83
162
  if (files)
84
- Object.assign(CURRENT.files, files);
163
+ Object.assign(target.files, files);
85
164
  if (suppressContains)
86
- CURRENT.suppressContains = new Set(suppressContains);
165
+ target.suppressContains = new Set(suppressContains);
87
166
  if (suppressMethodPrefixes)
88
- CURRENT.suppressMethodPrefixes = new Set(suppressMethodPrefixes);
167
+ target.suppressMethodPrefixes = new Set(suppressMethodPrefixes);
89
168
  if (includeOnlyPrefixes)
90
- CURRENT.includeOnlyPrefixes = new Set(includeOnlyPrefixes);
91
- return CURRENT;
169
+ target.includeOnlyPrefixes = new Set(includeOnlyPrefixes);
170
+ }
171
+ /** Merge a patch, or mutate in place with a callback. Set-typed fields accept arrays in a patch. */
172
+ function configure(patch) {
173
+ const cur = (0, exports.config)();
174
+ if (typeof patch === 'function') {
175
+ const before = cur.infoLogsCharLimit;
176
+ patch(cur);
177
+ if (cur.infoLogsCharLimit !== before)
178
+ LIMIT_SOURCE = 'code';
179
+ return cur;
180
+ }
181
+ applyPatch(cur, patch);
182
+ if (patch.infoLogsCharLimit !== undefined)
183
+ LIMIT_SOURCE = 'code';
184
+ return cur;
185
+ }
186
+ /** Tells the reader where to raise infoLogsCharLimit, based on which layer set the active value. */
187
+ function infoLimitHint() {
188
+ const file = (0, configFile_1.loadedConfigFile)();
189
+ switch (LIMIT_SOURCE) {
190
+ case 'file':
191
+ return `To increase the limit, change infoLogsCharLimit in ${file}.`;
192
+ case 'env':
193
+ return 'To increase the limit, change the VOID_LOG_INFO_LOGS_CHAR_LIMIT environment variable.';
194
+ case 'code':
195
+ return 'To increase the limit, change the infoLogsCharLimit passed to configure() in your code.';
196
+ default:
197
+ return 'To increase the limit, set infoLogsCharLimit in your logger config file or VOID_LOG_INFO_LOGS_CHAR_LIMIT.';
198
+ }
199
+ }
200
+ function defineConfig(c) {
201
+ return c;
92
202
  }
93
- /** Restore defaults (re-reads env). Mainly for tests. */
203
+ /** Restore defaults and re-read env and the config file. Mainly for tests. */
94
204
  function resetConfig() {
95
- CURRENT = defaults();
96
- return CURRENT;
205
+ CURRENT = undefined;
206
+ (0, configFile_1.forgetConfigFile)();
207
+ return (0, exports.config)();
97
208
  }
98
209
  // -- Convenience mutators (parity with CustomLogger) -------------------------
99
- const enableAnsi = () => void (CURRENT.ansi = true);
210
+ const enableAnsi = () => void ((0, exports.config)().ansi = true);
100
211
  exports.enableAnsi = enableAnsi;
101
- const disableAnsi = () => void (CURRENT.ansi = false);
212
+ const disableAnsi = () => void ((0, exports.config)().ansi = false);
102
213
  exports.disableAnsi = disableAnsi;
103
- const isAnsiEnabled = () => CURRENT.ansi;
214
+ const isAnsiEnabled = () => (0, exports.config)().ansi;
104
215
  exports.isAnsiEnabled = isAnsiEnabled;
105
- const enableCallerColor = () => void (CURRENT.callerColor = true);
216
+ const enableFg = () => void ((0, exports.config)().fg = true);
217
+ exports.enableFg = enableFg;
218
+ const disableFg = () => void ((0, exports.config)().fg = false);
219
+ exports.disableFg = disableFg;
220
+ const isFgEnabled = () => (0, exports.config)().fg;
221
+ exports.isFgEnabled = isFgEnabled;
222
+ const enableBg = () => void ((0, exports.config)().bg = true);
223
+ exports.enableBg = enableBg;
224
+ const disableBg = () => void ((0, exports.config)().bg = false);
225
+ exports.disableBg = disableBg;
226
+ const isBgEnabled = () => (0, exports.config)().bg;
227
+ exports.isBgEnabled = isBgEnabled;
228
+ const enableCallerColor = () => void ((0, exports.config)().callerColor = true);
106
229
  exports.enableCallerColor = enableCallerColor;
107
- const disableCallerColor = () => void (CURRENT.callerColor = false);
230
+ const disableCallerColor = () => void ((0, exports.config)().callerColor = false);
108
231
  exports.disableCallerColor = disableCallerColor;
109
- const isCallerColorEnabled = () => CURRENT.callerColor;
232
+ const isCallerColorEnabled = () => (0, exports.config)().callerColor;
110
233
  exports.isCallerColorEnabled = isCallerColorEnabled;
111
- const isDebugEnabled = () => (0, exports.levelEnabled)(CURRENT.level, 'DEBUG');
234
+ const isDebugEnabled = () => (0, exports.levelEnabled)((0, exports.config)().level, 'DEBUG');
112
235
  exports.isDebugEnabled = isDebugEnabled;
113
236
  function includeOnlyPackages(...prefixes) {
114
- CURRENT.includeOnlyPrefixes = new Set(prefixes.filter((p) => p && p.trim()));
237
+ (0, exports.config)().includeOnlyPrefixes = new Set(prefixes.filter((p) => p && p.trim()));
115
238
  }
116
239
  function suppressClassContains(...substrings) {
117
240
  for (const s of substrings)
118
241
  if (s && s.trim())
119
- CURRENT.suppressContains.add(s);
242
+ (0, exports.config)().suppressContains.add(s);
120
243
  }
121
244
  function suppressMethodPrefix(...prefixes) {
122
245
  for (const p of prefixes)
123
246
  if (p && p.trim())
124
- CURRENT.suppressMethodPrefixes.add(p);
247
+ (0, exports.config)().suppressMethodPrefixes.add(p);
125
248
  }
126
- const clearIncludes = () => CURRENT.includeOnlyPrefixes.clear();
249
+ const clearIncludes = () => (0, exports.config)().includeOnlyPrefixes.clear();
127
250
  exports.clearIncludes = clearIncludes;
128
251
  // -- Line breaks (Java \R equivalent) ----------------------------------------
129
252
  const EXTRA_BREAKS = String.fromCharCode(0x2028, 0x2029, 0x85, 0x0b, 0x0c);
@@ -135,17 +258,18 @@ function truncateCell(s) {
135
258
  if (s == null)
136
259
  return '';
137
260
  const str = String(s).replace(exports.LINE_BREAKS, ' ');
138
- const cfg = CURRENT;
261
+ const cfg = (0, exports.config)();
139
262
  if (!cfg.tableCellLimitEnabled || str.length <= cfg.tableCellLimit)
140
263
  return str;
141
264
  return str.slice(0, Math.max(1, cfg.tableCellLimit - 3)) + '...';
142
265
  }
143
266
  /** Set a table cell limit (min 4) and enable it. */
144
267
  function setTableCellLimit(limit) {
145
- CURRENT.tableCellLimit = Math.max(4, limit);
146
- CURRENT.tableCellLimitEnabled = true;
268
+ const cfg = (0, exports.config)();
269
+ cfg.tableCellLimit = Math.max(4, limit);
270
+ cfg.tableCellLimitEnabled = true;
147
271
  }
148
- const disableTableCellLimit = () => void (CURRENT.tableCellLimitEnabled = false);
272
+ const disableTableCellLimit = () => void ((0, exports.config)().tableCellLimitEnabled = false);
149
273
  exports.disableTableCellLimit = disableTableCellLimit;
150
274
  // -- Timestamp formatting ----------------------------------------------------
151
275
  const pad = (n, w = 2) => String(n).padStart(w, '0');
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { LogConfig, LogConfigPatch } from './config';
2
+ /** Looked up in this order in the project root; the first one that exists wins. */
3
+ export declare const CONFIG_FILE_NAMES: readonly ["logger.config.ts", "logger.config.js", "logger.config.cjs", "logger.config.json"];
4
+ type Loaded = LogConfigPatch | ((config: LogConfig) => LogConfigPatch);
5
+ /** Resolved path for a config file, or undefined when none exists. An explicit VOID_LOG_CONFIG must exist. */
6
+ export declare function resolveConfigFile(env: NodeJS.ProcessEnv, cwd: string): string | undefined;
7
+ /**
8
+ * Load the project config file once per process. Returns undefined when there is none (silently fine).
9
+ * A file that exists but throws, or has the wrong shape, throws an Error naming the file.
10
+ */
11
+ export declare function loadConfigFile(env: NodeJS.ProcessEnv, cwd: string): Loaded | undefined;
12
+ /** Absolute path of the config file loaded in this process, if any. */
13
+ export declare const loadedConfigFile: () => string | undefined;
14
+ /** Drop the cached module so the next load re-reads the file (tests, resetConfig). */
15
+ export declare function forgetConfigFile(): void;
16
+ export {};
17
+ //# sourceMappingURL=configFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configFile.d.ts","sourceRoot":"","sources":["../src/configFile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1D,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,8FAA+F,CAAC;AAE9H,KAAK,MAAM,GAAG,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,KAAK,cAAc,CAAC,CAAC;AAEvE,8GAA8G;AAC9G,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAczF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA4BtF;AAID,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,QAAO,MAAM,GAAG,SAAmB,CAAC;AAEjE,sFAAsF;AACtF,wBAAgB,gBAAgB,IAAI,IAAI,CASvC"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadedConfigFile = exports.CONFIG_FILE_NAMES = void 0;
37
+ exports.resolveConfigFile = resolveConfigFile;
38
+ exports.loadConfigFile = loadConfigFile;
39
+ exports.forgetConfigFile = forgetConfigFile;
40
+ const fs = __importStar(require("node:fs"));
41
+ const path = __importStar(require("node:path"));
42
+ /** Looked up in this order in the project root; the first one that exists wins. */
43
+ exports.CONFIG_FILE_NAMES = ['logger.config.ts', 'logger.config.js', 'logger.config.cjs', 'logger.config.json'];
44
+ /** Resolved path for a config file, or undefined when none exists. An explicit VOID_LOG_CONFIG must exist. */
45
+ function resolveConfigFile(env, cwd) {
46
+ const explicit = env.VOID_LOG_CONFIG;
47
+ if (explicit) {
48
+ const file = path.resolve(cwd, explicit);
49
+ if (!fs.existsSync(file)) {
50
+ throw new Error(`[advanced-logger] VOID_LOG_CONFIG points to a file that does not exist: ${file}`);
51
+ }
52
+ return file;
53
+ }
54
+ for (const name of exports.CONFIG_FILE_NAMES) {
55
+ const file = path.join(cwd, name);
56
+ if (fs.existsSync(file))
57
+ return file;
58
+ }
59
+ return undefined;
60
+ }
61
+ /**
62
+ * Load the project config file once per process. Returns undefined when there is none (silently fine).
63
+ * A file that exists but throws, or has the wrong shape, throws an Error naming the file.
64
+ */
65
+ function loadConfigFile(env, cwd) {
66
+ const file = resolveConfigFile(env, cwd);
67
+ if (file === undefined)
68
+ return undefined;
69
+ LOADED = file;
70
+ let value;
71
+ try {
72
+ // Lazy require, so Playwright's TypeScript hook (or Node's own type stripping) handles .ts files.
73
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
74
+ const mod = require(file);
75
+ value = unwrapDefault(mod);
76
+ }
77
+ catch (err) {
78
+ throw fail(file, err, 'could not be loaded');
79
+ }
80
+ if (typeof value === 'function') {
81
+ const fn = value;
82
+ return (cfg) => {
83
+ let result;
84
+ try {
85
+ result = fn(cfg);
86
+ }
87
+ catch (err) {
88
+ throw fail(file, err, 'threw while computing the config');
89
+ }
90
+ return validatePatch(result, file, 'the function must return an object');
91
+ };
92
+ }
93
+ return validatePatch(value, file, 'it must default-export an object or a function');
94
+ }
95
+ let LOADED;
96
+ /** Absolute path of the config file loaded in this process, if any. */
97
+ const loadedConfigFile = () => LOADED;
98
+ exports.loadedConfigFile = loadedConfigFile;
99
+ /** Drop the cached module so the next load re-reads the file (tests, resetConfig). */
100
+ function forgetConfigFile() {
101
+ if (LOADED !== undefined) {
102
+ try {
103
+ delete require.cache[require.resolve(LOADED)];
104
+ }
105
+ catch {
106
+ /* not cached */
107
+ }
108
+ LOADED = undefined;
109
+ }
110
+ }
111
+ /** `export default x` (transpiled or native), `module.exports = x`, and plain JSON all end up as x. */
112
+ function unwrapDefault(mod) {
113
+ if (mod !== null && typeof mod === 'object' && mod.__esModule) {
114
+ return mod.default;
115
+ }
116
+ return mod;
117
+ }
118
+ function fail(file, err, what) {
119
+ const msg = err instanceof Error ? err.message : String(err);
120
+ return new Error(`[advanced-logger] Config file ${file} ${what}: ${msg}`, { cause: err });
121
+ }
122
+ // -- Shape validation ----------------------------------------------------------
123
+ const isPlainObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
124
+ const bool = (v) => typeof v === 'boolean';
125
+ const str = (v) => typeof v === 'string';
126
+ const strList = (v) => (Array.isArray(v) || v instanceof Set) && [...v].every((x) => typeof x === 'string');
127
+ const strArr = (v) => Array.isArray(v) && v.every((x) => typeof x === 'string');
128
+ const oneOf = (...allowed) => (v) => typeof v === 'string' && allowed.includes(v);
129
+ const KEYS = {
130
+ level: [oneOf('debug', 'info', 'warn', 'error', 'off'), "one of 'debug' | 'info' | 'warn' | 'error' | 'off'"],
131
+ ansi: [bool, 'a boolean'],
132
+ fg: [bool, 'a boolean'],
133
+ bg: [bool, 'a boolean'],
134
+ infoLogsCharLimit: [(v) => v === null || (typeof v === 'number' && Number.isFinite(v) && v >= 0), 'a number >= 0 or null'],
135
+ maxLogFiles: [(v) => v === null || (Number.isInteger(v) && v >= 0), 'an integer >= 0 or null'],
136
+ callerColor: [bool, 'a boolean'],
137
+ tsFormat: [(v) => str(v) || typeof v === 'function', 'a string or a function'],
138
+ segmentDivider: [str, 'a string'],
139
+ tableCellLimit: [(v) => typeof v === 'number' && Number.isFinite(v), 'a finite number'],
140
+ tableCellLimitEnabled: [bool, 'a boolean'],
141
+ suppressContains: [strList, 'an array of strings'],
142
+ suppressMethodPrefixes: [strList, 'an array of strings'],
143
+ includeOnlyPrefixes: [strList, 'an array of strings'],
144
+ projectRoots: [strArr, 'an array of strings'],
145
+ console: [bool, 'a boolean'],
146
+ files: [isPlainObject, 'an object'],
147
+ logDir: [str, 'a string'],
148
+ githubAnnotations: [bool, 'a boolean'],
149
+ redactKeys: [strArr, 'an array of strings'],
150
+ attach: [oneOf('on-failure', 'always', 'never'), "one of 'on-failure' | 'always' | 'never'"],
151
+ };
152
+ const FILE_KEYS = ['debugTrace', 'partialTrace', 'fullTrace', 'jsonl'];
153
+ /** Unknown keys are rejected (a typo such as `levl` must not be silently ignored); undefined values are dropped. */
154
+ function validatePatch(value, file, hint) {
155
+ if (!isPlainObject(value)) {
156
+ throw new Error(`[advanced-logger] Config file ${file} has an invalid shape: ${hint} (got ${describe(value)}).`);
157
+ }
158
+ const out = {};
159
+ for (const [key, v] of Object.entries(value)) {
160
+ if (v === undefined)
161
+ continue;
162
+ const rule = KEYS[key];
163
+ if (!rule) {
164
+ throw new Error(`[advanced-logger] Config file ${file} has an unknown option '${key}'. Valid options: ${Object.keys(KEYS).join(', ')}.`);
165
+ }
166
+ if (!rule[0](v)) {
167
+ throw new Error(`[advanced-logger] Config file ${file}: option '${key}' must be ${rule[1]} (got ${describe(v)}).`);
168
+ }
169
+ if (key === 'files') {
170
+ for (const [fk, fv] of Object.entries(v)) {
171
+ if (fv === undefined)
172
+ continue;
173
+ if (!FILE_KEYS.includes(fk) || typeof fv !== 'boolean') {
174
+ throw new Error(`[advanced-logger] Config file ${file}: option 'files.${fk}' must be a boolean and one of ${FILE_KEYS.join(', ')}.`);
175
+ }
176
+ }
177
+ }
178
+ out[key] = v;
179
+ }
180
+ return out;
181
+ }
182
+ function describe(v) {
183
+ if (v === null)
184
+ return 'null';
185
+ if (Array.isArray(v))
186
+ return 'an array';
187
+ if (typeof v === 'string')
188
+ return `string ${JSON.stringify(v)}`;
189
+ return typeof v === 'object' ? 'an object' : `${typeof v} ${String(v)}`;
190
+ }
191
+ //# sourceMappingURL=configFile.js.map