logan-logger 1.1.21 → 2.0.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.
Files changed (66) hide show
  1. package/README.md +83 -7
  2. package/dist/browser.cjs +1 -1
  3. package/dist/browser.mjs +20 -42
  4. package/dist/bun.cjs +1 -1
  5. package/dist/bun.d.cts +4 -1
  6. package/dist/bun.d.mts +4 -1
  7. package/dist/bun.d.ts +4 -1
  8. package/dist/bun.mjs +5 -4
  9. package/dist/chunks/{browser-D5QY2oJb.mjs → config-Db6PTLH2.mjs} +158 -23
  10. package/dist/chunks/config-PPDFSral.cjs +1 -0
  11. package/dist/chunks/config-file-37L8z8Lm.mjs +56 -0
  12. package/dist/chunks/config-file-Dvyi1e80.cjs +1 -0
  13. package/dist/chunks/factory-BPYE1-Nw.cjs +1 -0
  14. package/dist/chunks/factory-CXO2aNcc.mjs +169 -0
  15. package/dist/chunks/file-transport-DRyxQq8t.mjs +80 -0
  16. package/dist/chunks/file-transport-SA6KG1oM.cjs +1 -0
  17. package/dist/core/factory.d.cts +22 -0
  18. package/dist/core/factory.d.mts +22 -0
  19. package/dist/core/factory.d.ts +22 -0
  20. package/dist/core/transport.d.cts +73 -0
  21. package/dist/core/transport.d.mts +73 -0
  22. package/dist/core/transport.d.ts +73 -0
  23. package/dist/core/types.d.cts +9 -0
  24. package/dist/core/types.d.mts +9 -0
  25. package/dist/core/types.d.ts +9 -0
  26. package/dist/deno.cjs +1 -1
  27. package/dist/deno.d.cts +3 -1
  28. package/dist/deno.d.mts +3 -1
  29. package/dist/deno.d.ts +3 -1
  30. package/dist/deno.mjs +4 -4
  31. package/dist/index.cjs +1 -1
  32. package/dist/index.d.cts +2 -0
  33. package/dist/index.d.mts +2 -0
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.mjs +9 -9
  36. package/dist/node.cjs +1 -1
  37. package/dist/node.d.cts +3 -1
  38. package/dist/node.d.mts +3 -1
  39. package/dist/node.d.ts +3 -1
  40. package/dist/node.mjs +3 -2
  41. package/dist/runtime/file-transport.d.cts +62 -0
  42. package/dist/runtime/file-transport.d.mts +62 -0
  43. package/dist/runtime/file-transport.d.ts +62 -0
  44. package/dist/runtime/node.d.cts +39 -8
  45. package/dist/runtime/node.d.mts +39 -8
  46. package/dist/runtime/node.d.ts +39 -8
  47. package/dist/utils/config-file.d.cts +2 -0
  48. package/dist/utils/config-file.d.mts +2 -0
  49. package/dist/utils/config-file.d.ts +2 -0
  50. package/dist/utils/config.d.cts +33 -2
  51. package/dist/utils/config.d.mts +33 -2
  52. package/dist/utils/config.d.ts +33 -2
  53. package/dist/utils/formatting.d.cts +14 -1
  54. package/dist/utils/formatting.d.mts +14 -1
  55. package/dist/utils/formatting.d.ts +14 -1
  56. package/dist/utils/serialization.d.cts +30 -3
  57. package/dist/utils/serialization.d.mts +30 -3
  58. package/dist/utils/serialization.d.ts +30 -3
  59. package/package.json +3 -10
  60. package/dist/chunks/__vite-browser-external-BgoQtmXf.mjs +0 -7
  61. package/dist/chunks/__vite-browser-external-Bjj3r6ML.cjs +0 -1
  62. package/dist/chunks/browser-Bq67gUmd.cjs +0 -1
  63. package/dist/chunks/factory-2po65gyH.mjs +0 -262
  64. package/dist/chunks/factory-CluPoiZb.cjs +0 -1
  65. package/dist/chunks/formatting-CLctAPm9.mjs +0 -29
  66. package/dist/chunks/formatting-Cb_xXgov.cjs +0 -1
package/README.md CHANGED
@@ -6,11 +6,15 @@
6
6
 
7
7
  A universal TypeScript logging library that works consistently across all JavaScript runtimes: Node.js, Deno, Bun, browsers, and WebAssembly environments.
8
8
 
9
+ > **Upgrading from 1.x?** See the [2.0 migration guide](./docs/migration-2.0.md).
10
+ > Winston is gone, file logging is opt-in, and repeated object references are no
11
+ > longer reported as `[Circular]`.
12
+
9
13
  ## Features
10
14
 
11
15
  - 🌐 **Universal Runtime Support** - Works in Node.js, Deno, Bun, browsers, and WebAssembly
12
16
  - âš›ī¸ **Next.js Ready** - Full compatibility with App Router, Server Components, and API Routes
13
- - đŸĒļ **Zero Dependencies** - Core functionality with no required dependencies
17
+ - đŸĒļ **Zero Dependencies** - No dependencies at all, required or optional, on any runtime
14
18
  - ⚡ **Performance First** - Lazy evaluation, zero-allocation logging, minimal memory footprint
15
19
  - đŸŽ¯ **TypeScript Native** - Full type safety with comprehensive type definitions
16
20
  - 🔧 **Flexible Configuration** - Environment-based auto-configuration or manual setup
@@ -170,13 +174,18 @@ const logger = createLoggerForEnvironment();
170
174
 
171
175
  Logan Logger provides runtime-specific entry points for optimal bundling and type safety:
172
176
 
173
- **đŸŸĸ Node.js with Winston Support:**
177
+ **đŸŸĸ Node.js with file logging:**
174
178
  ```typescript
175
- import { createLogger, NodeLogger, createMorganStream } from 'logan-logger/node';
179
+ import { createLogger, LogLevel, NodeLogger, createMorganStream } from 'logan-logger/node';
176
180
 
177
181
  const logger = new NodeLogger({
178
182
  transports: [
179
- { type: 'file', options: { filename: 'app.log' } }
183
+ { type: 'console', options: {} },
184
+ {
185
+ type: 'file',
186
+ level: LogLevel.ERROR,
187
+ options: { filename: 'logs/error.log', maxsize: 5_242_880, maxFiles: 5 }
188
+ }
180
189
  ]
181
190
  });
182
191
 
@@ -184,6 +193,17 @@ const logger = new NodeLogger({
184
193
  app.use(morgan('combined', { stream: createMorganStream(logger) }));
185
194
  ```
186
195
 
196
+ File logging is **opt-in**: with no `transports` configured a logger writes to the
197
+ console and nowhere else, whatever `NODE_ENV` says. The log directory is created
198
+ lazily on the first write, so a logger that is configured but never used touches
199
+ the disk zero times.
200
+
201
+ The `file` transport is registered by the `logan-logger/node` and
202
+ `logan-logger/bun` entry points. It is deliberately absent from the main
203
+ `logan-logger` entry so that `node:fs` never reaches a browser bundle — configure
204
+ a file transport from the main entry and you get a warning telling you which
205
+ entry point to import instead.
206
+
187
207
  **🌐 Browser-Optimized (Webpack/Vite-Safe):**
188
208
  ```typescript
189
209
  import { createLogger, BrowserLogger, PerformanceLogger } from 'logan-logger/browser';
@@ -240,7 +260,7 @@ logger.info('User processed', safeData);
240
260
  | Runtime | Import Path | Status | Implementation | Features |
241
261
  |---------|-------------|--------|----------------|----------|
242
262
  | **Next.js 13+** | `logan-logger` | ✅ **Full** | **Auto-detection** | **Server/Client Components, API Routes, Edge Runtime** |
243
- | Node.js 20+ | `logan-logger/node` | ✅ Full | Winston + Console | File logging, transports, Morgan integration |
263
+ | Node.js 20+ | `logan-logger/node` | ✅ Full | Console + File transports | File logging with size rotation, custom transports, Morgan integration |
244
264
  | Bun | `logan-logger/bun` | ✅ Full | NodeLogger adapter | Same as Node.js |
245
265
  | Browser | `logan-logger/browser` | ✅ Full | Console API | CSS styling, performance marks, grouping |
246
266
  | Deno | `@logan/logger/deno` (JSR) | ✅ Basic | BrowserLogger adapter | Console logging (native implementation planned) |
@@ -264,10 +284,16 @@ enum LogLevel {
264
284
  ```bash
265
285
  LOG_LEVEL=debug # debug, info, warn, error, silent
266
286
  LOG_FORMAT=json # json, text
267
- LOG_TIMESTAMP=true # true, false
268
- LOG_COLOR=false # true, false
287
+ LOG_TIMESTAMP=true # true/1/yes/on, false/0/no/off
288
+ LOG_COLOR=false # true/1/yes/on, false/0/no/off
269
289
  ```
270
290
 
291
+ These sit at the **top** of the precedence chain — above configuration passed to
292
+ `createLogger()` — so an operator can change logging on a running service without
293
+ a deploy. Opt out with `createLogger({ ..., ignoreEnvironment: true })`. A value
294
+ that does not parse is ignored with a warning rather than silently resolving to a
295
+ default.
296
+
271
297
  > **📋 See [Environment Variables Documentation](./docs/environment-variables.md) for complete details, examples, and runtime-specific considerations.**
272
298
 
273
299
  ### Configuration Options
@@ -282,6 +308,56 @@ interface LoggerConfig {
282
308
  }
283
309
  ```
284
310
 
311
+ `timestamp` and `colorize` apply to the **text** form only. The JSON envelope
312
+ always carries a timestamp and is never colorized, so a structured log stream
313
+ stays parseable. `colorize` additionally defers to the terminal: ANSI escapes are
314
+ suppressed when stdout is not a TTY, and the `NO_COLOR` / `FORCE_COLOR`
315
+ conventions are honored.
316
+
317
+ ### Transports
318
+
319
+ `transports` lists exactly where records go, in order. Omit it and you get the
320
+ console alone.
321
+
322
+ ```typescript
323
+ import { LogLevel, NodeLogger } from 'logan-logger/node';
324
+
325
+ const logger = new NodeLogger({
326
+ transports: [
327
+ { type: 'console', options: { format: 'text', colorize: true } },
328
+ { type: 'file', level: LogLevel.ERROR, options: { filename: 'logs/error.log' } }
329
+ ]
330
+ });
331
+ ```
332
+
333
+ | Type | Available from | Options |
334
+ |---|---|---|
335
+ | `console` | everywhere | `format`, `timestamp`, `colorize` |
336
+ | `file` | `logan-logger/node`, `logan-logger/bun` | `filename`, `maxsize`, `maxFiles`, `format`, `timestamp` |
337
+ | `custom` | everywhere | `transport` — any object with a `write(entry)` method |
338
+
339
+ Each transport is constructed behind its own guard: one failing to initialize
340
+ warns and is dropped, and the rest keep working. The same applies at write time.
341
+
342
+ A child logger **shares** its parent's transport instances, so
343
+ `logger.child({ requestId })` per request costs no extra file handles.
344
+
345
+ Plug in your own destination either inline:
346
+
347
+ ```typescript
348
+ const logger = new NodeLogger({
349
+ transports: [{ type: 'custom', options: { transport: { type: 'syslog', write(entry) { /* â€Ļ */ } } } }]
350
+ });
351
+ ```
352
+
353
+ or by name, so it can be selected from configuration:
354
+
355
+ ```typescript
356
+ import { registerTransport } from 'logan-logger';
357
+
358
+ registerTransport('syslog', (config, context) => new SyslogTransport(config.options));
359
+ ```
360
+
285
361
  ## API Reference
286
362
 
287
363
  ### Core Methods
package/dist/browser.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/browser-Bq67gUmd.cjs"),t=require("./chunks/formatting-Cb_xXgov.cjs");function n(){let t=e.l();return{level:e.c.INFO,format:`text`,timestamp:!0,colorize:t.capabilities.colorSupport,metadata:{},transports:[{type:`console`,options:{}}]}}function r(){return typeof process<`u`&&process.env?process.env.NODE_ENV||process.env.NEXT_PUBLIC_APP_ENV||process.env.ENVIRONMENT||`development`:typeof window<`u`&&globalThis.__ENV__||`development`}function i(t){switch(t){case`production`:return e.c.ERROR;case`staging`:case`test`:return e.c.WARN;case`development`:case`dev`:return e.c.DEBUG;default:return e.c.INFO}}function a(t={}){let r=n(),i={...r,...t,metadata:{...r.metadata,...t.metadata}};return new e.t(i)}function o(){let e=r();return a({level:i(e),colorize:e!==`production`,timestamp:!0,format:e===`production`?`json`:`text`})}var s=o(),c={debug:(e,t)=>s.debug(e,t),info:(e,t)=>s.info(e,t),warn:(e,t)=>s.warn(e,t),error:(e,t)=>s.error(e,t)};exports.BrowserLogger=e.t,exports.ConsoleGroupLogger=e.n,exports.LogLevel=e.c,exports.PerformanceLogger=e.r,exports.createLogger=a,exports.createLoggerForEnvironment=o,exports.detectRuntime=e.l,exports.filterSensitiveData=e.i,exports.formatLevel=t.t,exports.formatLogEntry=t.n,exports.isBrowser=e.u,exports.isBun=e.d,exports.isDeno=e.f,exports.isNode=e.p,exports.log=c,exports.logger=s,exports.safeStringify=e.a,exports.serializeError=e.o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-PPDFSral.cjs");function t(){return typeof process<`u`&&process.env?process.env.NODE_ENV||process.env.NEXT_PUBLIC_APP_ENV||process.env.ENVIRONMENT||`development`:typeof window<`u`&&globalThis.__ENV__||`development`}function n(t){switch(t){case`production`:return e.g.ERROR;case`staging`:case`test`:return e.g.WARN;case`development`:case`dev`:return e.g.DEBUG;default:return e.g.INFO}}function r(t={}){let n=t.ignoreEnvironment?{}:e.n();return new e.l(e.r(t,n))}function i(){let e=t();return r({level:n(e),colorize:e!==`production`,timestamp:!0,format:e===`production`?`json`:`text`})}var a=i(),o={debug:(e,t)=>a.debug(e,t),info:(e,t)=>a.info(e,t),warn:(e,t)=>a.warn(e,t),error:(e,t)=>a.error(e,t)};exports.BrowserLogger=e.l,exports.ConsoleGroupLogger=e.u,exports.LogLevel=e.g,exports.PerformanceLogger=e.d,exports.createLogger=r,exports.createLoggerForEnvironment=i,exports.detectRuntime=e._,exports.filterSensitiveData=e.f,exports.formatLevel=e.s,exports.formatLogEntry=e.c,exports.isBrowser=e.v,exports.isBun=e.y,exports.isDeno=e.b,exports.isNode=e.x,exports.log=o,exports.logger=a,exports.safeStringify=e.p,exports.serializeError=e.m;
package/dist/browser.mjs CHANGED
@@ -1,58 +1,36 @@
1
- import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, t as u, u as d } from "./chunks/browser-D5QY2oJb.mjs";
2
- import { n as f, t as p } from "./chunks/formatting-CLctAPm9.mjs";
1
+ import { _ as e, b as t, c as n, d as r, f as i, g as a, l as o, m as s, n as c, p as l, r as u, s as d, u as f, v as p, x as m, y as h } from "./chunks/config-Db6PTLH2.mjs";
3
2
  //#region src/browser.ts
4
- function m() {
5
- let e = a();
6
- return {
7
- level: t.INFO,
8
- format: "text",
9
- timestamp: !0,
10
- colorize: e.capabilities.colorSupport,
11
- metadata: {},
12
- transports: [{
13
- type: "console",
14
- options: {}
15
- }]
16
- };
17
- }
18
- function h() {
3
+ function g() {
19
4
  return typeof process < "u" && process.env ? process.env.NODE_ENV || process.env.NEXT_PUBLIC_APP_ENV || process.env.ENVIRONMENT || "development" : typeof window < "u" && globalThis.__ENV__ || "development";
20
5
  }
21
- function g(e) {
6
+ function _(e) {
22
7
  switch (e) {
23
- case "production": return t.ERROR;
8
+ case "production": return a.ERROR;
24
9
  case "staging":
25
- case "test": return t.WARN;
10
+ case "test": return a.WARN;
26
11
  case "development":
27
- case "dev": return t.DEBUG;
28
- default: return t.INFO;
12
+ case "dev": return a.DEBUG;
13
+ default: return a.INFO;
29
14
  }
30
15
  }
31
- function _(e = {}) {
32
- let t = m(), n = {
33
- ...t,
34
- ...e,
35
- metadata: {
36
- ...t.metadata,
37
- ...e.metadata
38
- }
39
- };
40
- return new u(n);
16
+ function v(e = {}) {
17
+ let t = e.ignoreEnvironment ? {} : c();
18
+ return new o(u(e, t));
41
19
  }
42
- function v() {
43
- let e = h();
44
- return _({
45
- level: g(e),
20
+ function y() {
21
+ let e = g();
22
+ return v({
23
+ level: _(e),
46
24
  colorize: e !== "production",
47
25
  timestamp: !0,
48
26
  format: e === "production" ? "json" : "text"
49
27
  });
50
28
  }
51
- var y = v(), b = {
52
- debug: (e, t) => y.debug(e, t),
53
- info: (e, t) => y.info(e, t),
54
- warn: (e, t) => y.warn(e, t),
55
- error: (e, t) => y.error(e, t)
29
+ var b = y(), x = {
30
+ debug: (e, t) => b.debug(e, t),
31
+ info: (e, t) => b.info(e, t),
32
+ warn: (e, t) => b.warn(e, t),
33
+ error: (e, t) => b.error(e, t)
56
34
  };
57
35
  //#endregion
58
- export { u as BrowserLogger, o as ConsoleGroupLogger, t as LogLevel, l as PerformanceLogger, _ as createLogger, v as createLoggerForEnvironment, a as detectRuntime, i as filterSensitiveData, p as formatLevel, f as formatLogEntry, d as isBrowser, n as isBun, r as isDeno, c as isNode, b as log, y as logger, e as safeStringify, s as serializeError };
36
+ export { o as BrowserLogger, f as ConsoleGroupLogger, a as LogLevel, r as PerformanceLogger, v as createLogger, y as createLoggerForEnvironment, e as detectRuntime, i as filterSensitiveData, d as formatLevel, n as formatLogEntry, p as isBrowser, h as isBun, t as isDeno, m as isNode, x as log, b as logger, l as safeStringify, s as serializeError };
package/dist/bun.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/factory-CluPoiZb.cjs"),t=require("./chunks/browser-Bq67gUmd.cjs"),n=require("./chunks/formatting-Cb_xXgov.cjs");exports.NodeLogger=e.u,exports.createLogger=e.n,exports.createLoggerForEnvironment=e.r,exports.detectRuntime=t.l,exports.filterSensitiveData=t.i,exports.formatLevel=n.t,exports.formatLogEntry=n.n,exports.getDefaultConfig=e.o,exports.isBrowser=t.u,exports.isBun=t.d,exports.isDeno=t.f,exports.isNode=t.p,exports.loadConfigFromEnvironment=e.s,exports.loadConfigFromFile=e.c,exports.mergeConfigs=e.l,exports.safeStringify=t.a,exports.serializeError=t.o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunks/config-PPDFSral.cjs"),t=require("./chunks/factory-BPYE1-Nw.cjs"),n=require("./chunks/config-file-Dvyi1e80.cjs"),r=require("./chunks/file-transport-SA6KG1oM.cjs");exports.ConsoleTransport=t.c,exports.FileTransport=r.t,exports.NodeLogger=t.o,exports.createLogger=t.n,exports.createLoggerForEnvironment=t.r,exports.createTransports=t.l,exports.detectRuntime=e._,exports.filterSensitiveData=e.f,exports.formatLevel=e.s,exports.formatLogEntry=e.c,exports.getDefaultConfig=e.t,exports.isBrowser=e.v,exports.isBun=e.y,exports.isDeno=e.b,exports.isNode=e.x,exports.loadConfigFromEnvironment=e.n,exports.loadConfigFromFile=n.t,exports.mergeConfigs=e.r,exports.registerTransport=t.d,exports.resetEnvironmentWarnings=e.i,exports.safeStringify=e.p,exports.serializeError=e.m,exports.shouldColorize=e.a,exports.tryParseLogLevel=e.o;
package/dist/bun.d.cts CHANGED
@@ -1,6 +1,9 @@
1
1
  export { createLogger, createLoggerForEnvironment } from './core/factory.cjs';
2
- export type { ILogger, LoggerConfig, LogLevel } from './core/types.cjs';
2
+ export { ConsoleTransport, createTransports, registerTransport, type Transport, type TransportFactory, } from './core/transport.cjs';
3
+ export type { ILogger, LoggerConfig, LogLevel, TransportConfig } from './core/types.cjs';
4
+ export { FileTransport, type FileTransportOptions } from './runtime/file-transport.cjs';
3
5
  export { NodeLogger } from './runtime/node.cjs';
6
+ export * from './utils/config-file.cjs';
4
7
  export * from './utils/config.cjs';
5
8
  export * from './utils/formatting.cjs';
6
9
  export * from './utils/runtime.cjs';
package/dist/bun.d.mts CHANGED
@@ -1,6 +1,9 @@
1
1
  export { createLogger, createLoggerForEnvironment } from './core/factory.mjs';
2
- export type { ILogger, LoggerConfig, LogLevel } from './core/types.mjs';
2
+ export { ConsoleTransport, createTransports, registerTransport, type Transport, type TransportFactory, } from './core/transport.mjs';
3
+ export type { ILogger, LoggerConfig, LogLevel, TransportConfig } from './core/types.mjs';
4
+ export { FileTransport, type FileTransportOptions } from './runtime/file-transport.mjs';
3
5
  export { NodeLogger } from './runtime/node.mjs';
6
+ export * from './utils/config-file.mjs';
4
7
  export * from './utils/config.mjs';
5
8
  export * from './utils/formatting.mjs';
6
9
  export * from './utils/runtime.mjs';
package/dist/bun.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  export { createLogger, createLoggerForEnvironment } from './core/factory';
2
- export type { ILogger, LoggerConfig, LogLevel } from './core/types';
2
+ export { ConsoleTransport, createTransports, registerTransport, type Transport, type TransportFactory, } from './core/transport';
3
+ export type { ILogger, LoggerConfig, LogLevel, TransportConfig } from './core/types';
4
+ export { FileTransport, type FileTransportOptions } from './runtime/file-transport';
3
5
  export { NodeLogger } from './runtime/node';
6
+ export * from './utils/config-file';
4
7
  export * from './utils/config';
5
8
  export * from './utils/formatting';
6
9
  export * from './utils/runtime';
package/dist/bun.mjs CHANGED
@@ -1,4 +1,5 @@
1
- import { c as e, l as t, n, o as r, r as i, s as a, u as o } from "./chunks/factory-2po65gyH.mjs";
2
- import { a as s, d as c, f as l, i as u, l as d, o as f, p, u as m } from "./chunks/browser-D5QY2oJb.mjs";
3
- import { n as h, t as g } from "./chunks/formatting-CLctAPm9.mjs";
4
- export { o as NodeLogger, n as createLogger, i as createLoggerForEnvironment, d as detectRuntime, u as filterSensitiveData, g as formatLevel, h as formatLogEntry, r as getDefaultConfig, m as isBrowser, c as isBun, l as isDeno, p as isNode, a as loadConfigFromEnvironment, e as loadConfigFromFile, t as mergeConfigs, s as safeStringify, f as serializeError };
1
+ import { _ as e, a as t, b as n, c as r, f as i, i as a, m as o, n as s, o as c, p as l, r as u, s as d, t as f, v as p, x as m, y as h } from "./chunks/config-Db6PTLH2.mjs";
2
+ import { c as g, d as _, l as v, n as y, o as b, r as x } from "./chunks/factory-CXO2aNcc.mjs";
3
+ import { t as S } from "./chunks/config-file-37L8z8Lm.mjs";
4
+ import { t as C } from "./chunks/file-transport-DRyxQq8t.mjs";
5
+ export { g as ConsoleTransport, C as FileTransport, b as NodeLogger, y as createLogger, x as createLoggerForEnvironment, v as createTransports, e as detectRuntime, i as filterSensitiveData, d as formatLevel, r as formatLogEntry, f as getDefaultConfig, p as isBrowser, h as isBun, n as isDeno, m as isNode, s as loadConfigFromEnvironment, S as loadConfigFromFile, u as mergeConfigs, _ as registerTransport, a as resetEnvironmentWarnings, l as safeStringify, o as serializeError, t as shouldColorize, c as tryParseLogLevel };
@@ -77,7 +77,7 @@ var c = /* @__PURE__ */ function(e) {
77
77
  return e[e.DEBUG = 0] = "DEBUG", e[e.INFO = 1] = "INFO", e[e.WARN = 2] = "WARN", e[e.ERROR = 3] = "ERROR", e[e.SILENT = 4] = "SILENT", e;
78
78
  }({}), l = class {
79
79
  constructor(t = {}) {
80
- this.childMetadata = {}, this.config = t, this.level = t.level ?? c.INFO, this.runtime = e().name;
80
+ this.childMetadata = {}, this.config = t, this.level = t.level ?? c.INFO, this.runtime = e().name, this.childMetadata = { ...t.metadata };
81
81
  }
82
82
  debug(e, t) {
83
83
  this.log(c.DEBUG, e, t);
@@ -121,20 +121,41 @@ var c = /* @__PURE__ */ function(e) {
121
121
  shouldLog(e) {
122
122
  return e >= this.level;
123
123
  }
124
- };
125
- //#endregion
126
- //#region src/utils/serialization.ts
127
- function u(e, t) {
128
- let n = /* @__PURE__ */ new WeakSet();
129
- return JSON.stringify(e, (e, t) => {
130
- if (typeof t == "object" && t) {
131
- if (n.has(t)) return "[Circular]";
132
- n.add(t);
124
+ }, u = 100;
125
+ function d(e, t, n, r) {
126
+ if (e === void 0) return "[undefined]";
127
+ if (typeof e == "bigint") return `[BigInt: ${e.toString()}]`;
128
+ if (typeof e == "symbol") return `[Symbol: ${e.toString()}]`;
129
+ if (typeof e == "function") return `[Function: ${e.name || "anonymous"}]`;
130
+ if (typeof e != "object" || !e) return e;
131
+ let i = e;
132
+ if (t.has(i)) return "[Circular]";
133
+ if (n >= r) return "[MaxDepth]";
134
+ t.add(i);
135
+ try {
136
+ if (i instanceof Error) return f(_(i), t, n, r);
137
+ let e = i.toJSON;
138
+ if (typeof e == "function") return d(e.call(i), t, n, r);
139
+ if (Array.isArray(i)) {
140
+ let e = [];
141
+ for (let a = 0; a < i.length; a++) e.push(d(i[a], t, n + 1, r));
142
+ return e;
133
143
  }
134
- return t instanceof Error ? m(t) : typeof t == "function" ? `[Function: ${t.name || "anonymous"}]` : t === void 0 ? "[undefined]" : typeof t == "bigint" ? `[BigInt: ${t.toString()}]` : typeof t == "symbol" ? `[Symbol: ${t.toString()}]` : t;
135
- }, t);
144
+ return f(i, t, n, r);
145
+ } finally {
146
+ t.delete(i);
147
+ }
136
148
  }
137
- function d(e, t = [
149
+ function f(e, t, n, r) {
150
+ let i = {};
151
+ for (let [a, o] of Object.entries(e)) i[a] = d(o, t, n + 1, r);
152
+ return i;
153
+ }
154
+ function p(e, t, n = {}) {
155
+ let r = n.maxDepth ?? u;
156
+ return JSON.stringify(d(e, /* @__PURE__ */ new Set(), 0, r), null, t);
157
+ }
158
+ function m(e, t = [
138
159
  "password",
139
160
  "token",
140
161
  "secret",
@@ -143,15 +164,15 @@ function d(e, t = [
143
164
  ]) {
144
165
  if (typeof e != "object" || !e) return e;
145
166
  let n = Array.isArray(e) ? [] : {};
146
- for (let [r, i] of Object.entries(e)) n[r] = t.some((e) => r.toLowerCase().includes(e.toLowerCase())) ? "[REDACTED]" : typeof i == "object" && i ? d(i, t) : i;
167
+ for (let [r, i] of Object.entries(e)) n[r] = t.some((e) => r.toLowerCase().includes(e.toLowerCase())) ? "[REDACTED]" : typeof i == "object" && i ? m(i, t) : i;
147
168
  return n;
148
169
  }
149
- var f = [
170
+ var h = [
150
171
  "name",
151
172
  "message",
152
173
  "stack"
153
174
  ];
154
- function p(e, t) {
175
+ function g(e, t) {
155
176
  let n = Object.getOwnPropertyDescriptor(e, t);
156
177
  if (n) {
157
178
  if (n.get) try {
@@ -162,24 +183,24 @@ function p(e, t) {
162
183
  return n.value;
163
184
  }
164
185
  }
165
- function m(e) {
186
+ function _(e) {
166
187
  if (!(e instanceof Error)) return e;
167
188
  let t = {
168
189
  name: e.name,
169
190
  message: e.message
170
191
  };
171
192
  e.stack !== void 0 && (t.stack = e.stack);
172
- for (let n of Object.getOwnPropertyNames(e)) f.includes(n) || (t[n] = p(e, n));
193
+ for (let n of Object.getOwnPropertyNames(e)) h.includes(n) || (t[n] = g(e, n));
173
194
  return t;
174
195
  }
175
196
  //#endregion
176
197
  //#region src/runtime/browser.ts
177
- var h = class e extends l {
198
+ var v = class e extends l {
178
199
  constructor(e = {}) {
179
200
  super(e);
180
201
  }
181
202
  writeLog(e) {
182
- let t = this.formatMessage(e), n = this.getConsoleStyle(e.level), r = `%c${t}${e.metadata ? ` ${u(e.metadata)}` : ""}`;
203
+ let t = this.formatMessage(e), n = this.getConsoleStyle(e.level), r = `%c${t}${e.metadata ? ` ${p(e.metadata)}` : ""}`;
183
204
  switch (e.level) {
184
205
  case c.DEBUG:
185
206
  console.debug ? console.debug(r, n) : console.log(r, n);
@@ -215,7 +236,7 @@ var h = class e extends l {
215
236
  shouldLog(e) {
216
237
  return !this.shouldLogInProduction() && e < c.ERROR ? !1 : super.shouldLog(e);
217
238
  }
218
- }, g = class extends h {
239
+ }, y = class extends v {
219
240
  constructor(...e) {
220
241
  super(...e), this.groupStack = [];
221
242
  }
@@ -252,7 +273,7 @@ var h = class e extends l {
252
273
  table(e) {
253
274
  console.table(e);
254
275
  }
255
- }, _ = class extends h {
276
+ }, b = class extends v {
256
277
  mark(e) {
257
278
  typeof performance < "u" && performance.mark && performance.mark(e);
258
279
  }
@@ -282,4 +303,118 @@ var h = class e extends l {
282
303
  }
283
304
  };
284
305
  //#endregion
285
- export { u as a, c, s as d, o as f, d as i, e as l, g as n, m as o, i as p, _ as r, l as s, h as t, a as u };
306
+ //#region src/utils/formatting.ts
307
+ function x(e, t = "text", n = {}) {
308
+ if (t === "json") {
309
+ let t = {
310
+ timestamp: e.timestamp.toISOString(),
311
+ level: c[e.level].toLowerCase(),
312
+ message: e.message,
313
+ runtime: e.runtime
314
+ };
315
+ return e.metadata !== void 0 && (t.metadata = e.metadata), p(t);
316
+ }
317
+ let r = n.timestamp === !1 ? "" : `[${e.timestamp.toISOString()}] `, i = S(e.level, n.colorize === !0), a = e.metadata ? ` ${p(e.metadata)}` : "";
318
+ return `${r}${i}: ${e.message}${a}`;
319
+ }
320
+ function S(e, t = !1) {
321
+ let n = c[e].toUpperCase();
322
+ if (!t) return n;
323
+ let r = {
324
+ [c.DEBUG]: "\x1B[36m",
325
+ [c.INFO]: "\x1B[32m",
326
+ [c.WARN]: "\x1B[33m",
327
+ [c.ERROR]: "\x1B[31m",
328
+ [c.SILENT]: "\x1B[37m"
329
+ };
330
+ return `${r[e] || r[c.INFO]}${n}`;
331
+ }
332
+ //#endregion
333
+ //#region src/utils/config.ts
334
+ function C() {
335
+ return e().capabilities.colorSupport ? typeof process > "u" || !process.env ? !0 : process.env.NO_COLOR ? !1 : process.env.FORCE_COLOR ? process.env.FORCE_COLOR !== "0" : process.stdout?.isTTY === !0 : !1;
336
+ }
337
+ function w() {
338
+ return {
339
+ level: c.INFO,
340
+ format: "text",
341
+ timestamp: !0,
342
+ colorize: C(),
343
+ metadata: {},
344
+ transports: [{
345
+ type: "console",
346
+ options: {}
347
+ }]
348
+ };
349
+ }
350
+ var T = [
351
+ "true",
352
+ "1",
353
+ "yes",
354
+ "on"
355
+ ], E = [
356
+ "false",
357
+ "0",
358
+ "no",
359
+ "off"
360
+ ], D = /* @__PURE__ */ new Set();
361
+ function O(e) {
362
+ D.has(e) || (D.add(e), console.warn(e));
363
+ }
364
+ function k() {
365
+ D.clear();
366
+ }
367
+ function A(e) {
368
+ switch (e.trim().toLowerCase()) {
369
+ case "debug": return c.DEBUG;
370
+ case "info": return c.INFO;
371
+ case "warn":
372
+ case "warning": return c.WARN;
373
+ case "error": return c.ERROR;
374
+ case "silent":
375
+ case "none": return c.SILENT;
376
+ default: return;
377
+ }
378
+ }
379
+ function j(e, t) {
380
+ let n = t.trim().toLowerCase();
381
+ if (T.includes(n)) return !0;
382
+ if (E.includes(n)) return !1;
383
+ O(`[logan-logger] ${e}="${t}" is not a recognized boolean and was ignored. Accepted: ${T.join(", ")} / ${E.join(", ")}.`);
384
+ }
385
+ function M() {
386
+ let e = {};
387
+ if (typeof process > "u" || !process.env) return e;
388
+ let t = process.env;
389
+ if (t.LOG_LEVEL) {
390
+ let n = A(t.LOG_LEVEL);
391
+ n === void 0 ? O(`[logan-logger] LOG_LEVEL="${t.LOG_LEVEL}" is not a recognized level and was ignored. Accepted: debug, info, warn, error, silent.`) : e.level = n;
392
+ }
393
+ if (t.LOG_FORMAT) {
394
+ let n = t.LOG_FORMAT.trim().toLowerCase();
395
+ n === "json" || n === "text" ? e.format = n : O(`[logan-logger] LOG_FORMAT="${t.LOG_FORMAT}" is not a recognized format and was ignored. Accepted: json, text.`);
396
+ }
397
+ if (t.LOG_TIMESTAMP) {
398
+ let n = j("LOG_TIMESTAMP", t.LOG_TIMESTAMP);
399
+ n !== void 0 && (e.timestamp = n);
400
+ }
401
+ if (t.LOG_COLOR) {
402
+ let n = j("LOG_COLOR", t.LOG_COLOR);
403
+ n !== void 0 && (e.colorize = n);
404
+ }
405
+ return e;
406
+ }
407
+ function N(...e) {
408
+ let t = w();
409
+ return e.reduce((e, t) => ({
410
+ ...e,
411
+ ...t,
412
+ metadata: {
413
+ ...e.metadata,
414
+ ...t.metadata
415
+ },
416
+ transports: t.transports || e.transports
417
+ }), t);
418
+ }
419
+ //#endregion
420
+ export { e as _, C as a, o as b, x as c, b as d, m as f, c as g, l as h, k as i, v as l, _ as m, M as n, A as o, p, N as r, S as s, w as t, y as u, a as v, i as x, s as y };
@@ -0,0 +1 @@
1
+ function e(){let e=t();return{name:e,version:n(e),capabilities:r(e)}}function t(){return globalThis.Deno===void 0?globalThis.Bun===void 0?typeof window<`u`&&typeof document<`u`?`browser`:typeof globalThis.importScripts==`function`&&typeof window>`u`?`webworker`:typeof process<`u`&&process.versions&&process.versions.node?`node`:`unknown`:`bun`:`deno`}function n(e){switch(e){case`node`:return typeof process<`u`?process.version:void 0;case`deno`:return globalThis.Deno===void 0?void 0:globalThis.Deno.version?.deno;case`bun`:return globalThis.Bun===void 0?void 0:globalThis.Bun.version;case`browser`:return typeof navigator<`u`?navigator.userAgent:void 0;default:return}}function r(e){switch(e){case`node`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`deno`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`bun`:return{fileSystem:!0,colorSupport:!0,processInfo:!0,streams:!0};case`browser`:return{fileSystem:!1,colorSupport:!0,processInfo:!1,streams:!1};case`webworker`:return{fileSystem:!1,colorSupport:!1,processInfo:!1,streams:!1};default:return{fileSystem:!1,colorSupport:!1,processInfo:!1,streams:!1}}}function i(){return t()===`node`}function a(){return t()===`browser`}function o(){return t()===`deno`}function s(){return t()===`bun`}var c=function(e){return e[e.DEBUG=0]=`DEBUG`,e[e.INFO=1]=`INFO`,e[e.WARN=2]=`WARN`,e[e.ERROR=3]=`ERROR`,e[e.SILENT=4]=`SILENT`,e}({}),l=class{constructor(t={}){this.childMetadata={},this.config=t,this.level=t.level??c.INFO,this.runtime=e().name,this.childMetadata={...t.metadata}}debug(e,t){this.log(c.DEBUG,e,t)}info(e,t){this.log(c.INFO,e,t)}warn(e,t){this.log(c.WARN,e,t)}error(e,t){this.log(c.ERROR,e,t)}log(e,t,n){if(!this.shouldLog(e))return;let r=typeof t==`function`?t():t,i={...this.childMetadata,...n},a={timestamp:new Date,level:e,message:r,metadata:Object.keys(i).length>0?i:void 0,runtime:this.runtime};this.writeLog(a)}setLevel(e){this.level=e}getLevel(){return this.level}child(e){let t=this.createChild();return t.childMetadata={...this.childMetadata,...e},t}shouldLog(e){return e>=this.level}},u=100;function d(e,t,n,r){if(e===void 0)return`[undefined]`;if(typeof e==`bigint`)return`[BigInt: ${e.toString()}]`;if(typeof e==`symbol`)return`[Symbol: ${e.toString()}]`;if(typeof e==`function`)return`[Function: ${e.name||`anonymous`}]`;if(typeof e!=`object`||!e)return e;let i=e;if(t.has(i))return`[Circular]`;if(n>=r)return`[MaxDepth]`;t.add(i);try{if(i instanceof Error)return f(_(i),t,n,r);let e=i.toJSON;if(typeof e==`function`)return d(e.call(i),t,n,r);if(Array.isArray(i)){let e=[];for(let a=0;a<i.length;a++)e.push(d(i[a],t,n+1,r));return e}return f(i,t,n,r)}finally{t.delete(i)}}function f(e,t,n,r){let i={};for(let[a,o]of Object.entries(e))i[a]=d(o,t,n+1,r);return i}function p(e,t,n={}){let r=n.maxDepth??u;return JSON.stringify(d(e,new Set,0,r),null,t)}function m(e,t=[`password`,`token`,`secret`,`key`,`auth`]){if(typeof e!=`object`||!e)return e;let n=Array.isArray(e)?[]:{};for(let[r,i]of Object.entries(e))n[r]=t.some(e=>r.toLowerCase().includes(e.toLowerCase()))?`[REDACTED]`:typeof i==`object`&&i?m(i,t):i;return n}var h=[`name`,`message`,`stack`];function g(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(n){if(n.get)try{return n.get.call(e)}catch{return`[Throws]`}return n.value}}function _(e){if(!(e instanceof Error))return e;let t={name:e.name,message:e.message};e.stack!==void 0&&(t.stack=e.stack);for(let n of Object.getOwnPropertyNames(e))h.includes(n)||(t[n]=g(e,n));return t}var v=class e extends l{constructor(e={}){super(e)}writeLog(e){let t=this.formatMessage(e),n=this.getConsoleStyle(e.level),r=`%c${t}${e.metadata?` ${p(e.metadata)}`:``}`;switch(e.level){case c.DEBUG:console.debug?console.debug(r,n):console.log(r,n);break;case c.INFO:console.info(r,n);break;case c.WARN:console.warn(r,n);break;case c.ERROR:console.error(r,n)}}createChild(){return new e(this.config)}formatMessage(e){return`[${e.timestamp.toISOString()}] ${c[e.level].toUpperCase()}: ${e.message}`}getConsoleStyle(e){if(!this.config.colorize)return``;switch(e){case c.DEBUG:return`color: #888; font-weight: normal;`;case c.INFO:return`color: #007acc; font-weight: normal;`;case c.WARN:return`color: #ff8c00; font-weight: bold;`;case c.ERROR:return`color: #dc3545; font-weight: bold;`;default:return``}}shouldLogInProduction(){return(globalThis.process?.env?.NODE_ENV||globalThis.process?.env?.NEXT_PUBLIC_APP_ENV||`development`)!==`production`||this.level<=c.ERROR}shouldLog(e){return!this.shouldLogInProduction()&&e<c.ERROR?!1:super.shouldLog(e)}},y=class extends v{constructor(...e){super(...e),this.groupStack=[]}group(e){console.group(e),this.groupStack.push(e)}groupCollapsed(e){console.groupCollapsed(e),this.groupStack.push(e)}groupEnd(){console.groupEnd(),this.groupStack.pop()}getCurrentGroupStack(){return[...this.groupStack]}getCurrentGroupPath(){return this.groupStack.join(` > `)}time(e){console.time(e)}timeEnd(e){console.timeEnd(e)}trace(e,t){console.trace(e,t)}count(e){console.count(e)}countReset(e){console.countReset(e)}table(e){console.table(e)}},b=class extends v{mark(e){typeof performance<`u`&&performance.mark&&performance.mark(e)}measure(e,t,n){if(typeof performance<`u`&&performance.measure)try{performance.measure(e,t,n);let r=performance.getEntriesByName(e,`measure`);if(r.length>0){let t=r[r.length-1];this.info(`Performance: ${e}`,{duration:t.duration,startTime:t.startTime})}}catch(t){this.warn(`Failed to measure performance`,{name:e,error:t})}}clearMarks(e){typeof performance<`u`&&performance.clearMarks&&performance.clearMarks(e)}clearMeasures(e){typeof performance<`u`&&performance.clearMeasures&&performance.clearMeasures(e)}};function x(e,t=`text`,n={}){if(t===`json`){let t={timestamp:e.timestamp.toISOString(),level:c[e.level].toLowerCase(),message:e.message,runtime:e.runtime};return e.metadata!==void 0&&(t.metadata=e.metadata),p(t)}let r=n.timestamp===!1?``:`[${e.timestamp.toISOString()}] `,i=S(e.level,n.colorize===!0),a=e.metadata?` ${p(e.metadata)}`:``;return`${r}${i}: ${e.message}${a}`}function S(e,t=!1){let n=c[e].toUpperCase();if(!t)return n;let r={[c.DEBUG]:`\x1B[36m`,[c.INFO]:`\x1B[32m`,[c.WARN]:`\x1B[33m`,[c.ERROR]:`\x1B[31m`,[c.SILENT]:`\x1B[37m`};return`${r[e]||r[c.INFO]}${n}`}function C(){return e().capabilities.colorSupport?typeof process>`u`||!process.env?!0:process.env.NO_COLOR?!1:process.env.FORCE_COLOR?process.env.FORCE_COLOR!==`0`:process.stdout?.isTTY===!0:!1}function w(){return{level:c.INFO,format:`text`,timestamp:!0,colorize:C(),metadata:{},transports:[{type:`console`,options:{}}]}}var T=[`true`,`1`,`yes`,`on`],E=[`false`,`0`,`no`,`off`],D=new Set;function O(e){D.has(e)||(D.add(e),console.warn(e))}function k(){D.clear()}function A(e){switch(e.trim().toLowerCase()){case`debug`:return c.DEBUG;case`info`:return c.INFO;case`warn`:case`warning`:return c.WARN;case`error`:return c.ERROR;case`silent`:case`none`:return c.SILENT;default:return}}function j(e,t){let n=t.trim().toLowerCase();if(T.includes(n))return!0;if(E.includes(n))return!1;O(`[logan-logger] ${e}="${t}" is not a recognized boolean and was ignored. Accepted: ${T.join(`, `)} / ${E.join(`, `)}.`)}function M(){let e={};if(typeof process>`u`||!process.env)return e;let t=process.env;if(t.LOG_LEVEL){let n=A(t.LOG_LEVEL);n===void 0?O(`[logan-logger] LOG_LEVEL="${t.LOG_LEVEL}" is not a recognized level and was ignored. Accepted: debug, info, warn, error, silent.`):e.level=n}if(t.LOG_FORMAT){let n=t.LOG_FORMAT.trim().toLowerCase();n===`json`||n===`text`?e.format=n:O(`[logan-logger] LOG_FORMAT="${t.LOG_FORMAT}" is not a recognized format and was ignored. Accepted: json, text.`)}if(t.LOG_TIMESTAMP){let n=j(`LOG_TIMESTAMP`,t.LOG_TIMESTAMP);n!==void 0&&(e.timestamp=n)}if(t.LOG_COLOR){let n=j(`LOG_COLOR`,t.LOG_COLOR);n!==void 0&&(e.colorize=n)}return e}function N(...e){let t=w();return e.reduce((e,t)=>({...e,...t,metadata:{...e.metadata,...t.metadata},transports:t.transports||e.transports}),t)}Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return s}});
@@ -0,0 +1,56 @@
1
+ import { _ as e } from "./config-Db6PTLH2.mjs";
2
+ //#region src/utils/config-file.ts
3
+ async function t(t) {
4
+ let a = e();
5
+ if (!a.capabilities.fileSystem) return {};
6
+ let o = t ? [t] : [
7
+ "logan.config.json",
8
+ "logan.config.js",
9
+ ".loganrc",
10
+ "package.json"
11
+ ];
12
+ for (let e of o) try {
13
+ if (a.name === "node") return await n(e);
14
+ if (a.name === "deno") return await r(e);
15
+ if (a.name === "bun") return await i(e);
16
+ } catch {}
17
+ return {};
18
+ }
19
+ async function n(e) {
20
+ try {
21
+ let t = await import("node:fs/promises"), n = await import("node:path");
22
+ if (e.endsWith(".json")) {
23
+ let n = await t.readFile(e, "utf-8"), r = JSON.parse(n);
24
+ return e === "package.json" ? r.logan || {} : r;
25
+ }
26
+ if (e.endsWith(".js")) {
27
+ let t = await import(
28
+ /* @vite-ignore */
29
+ `file://${n.resolve(e)}`
30
+ );
31
+ return t.default || t;
32
+ }
33
+ } catch {}
34
+ return {};
35
+ }
36
+ async function r(e) {
37
+ try {
38
+ if (e.endsWith(".json")) {
39
+ let t = await globalThis.Deno.readTextFile(e), n = JSON.parse(t);
40
+ return e === "package.json" ? n.logan || {} : n;
41
+ }
42
+ if (e.endsWith(".js")) {
43
+ let t = await import(
44
+ /* @vite-ignore */
45
+ `./${e}`
46
+ );
47
+ return t.default || t;
48
+ }
49
+ } catch {}
50
+ return {};
51
+ }
52
+ async function i(e) {
53
+ return n(e);
54
+ }
55
+ //#endregion
56
+ export { t };
@@ -0,0 +1 @@
1
+ const e=require("./config-PPDFSral.cjs");async function t(t){let a=e._();if(!a.capabilities.fileSystem)return{};let o=t?[t]:[`logan.config.json`,`logan.config.js`,`.loganrc`,`package.json`];for(let e of o)try{if(a.name===`node`)return await n(e);if(a.name===`deno`)return await r(e);if(a.name===`bun`)return await i(e)}catch{}return{}}async function n(e){try{let t=await import(`node:fs/promises`),n=await import(`node:path`);if(e.endsWith(`.json`)){let n=await t.readFile(e,`utf-8`),r=JSON.parse(n);return e===`package.json`?r.logan||{}:r}if(e.endsWith(`.js`)){let t=await import(`file://${n.resolve(e)}`);return t.default||t}}catch{}return{}}async function r(e){try{if(e.endsWith(`.json`)){let t=await globalThis.Deno.readTextFile(e),n=JSON.parse(t);return e===`package.json`?n.logan||{}:n}if(e.endsWith(`.js`)){let t=await import(`./${e}`);return t.default||t}}catch{}return{}}async function i(e){return n(e)}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
@@ -0,0 +1 @@
1
+ const e=require("./config-PPDFSral.cjs");var t=new Map;function n(e,n){t.set(e,n)}function r(e){return t.get(e)}var i=class{constructor(e={}){this.type=`console`,this.level=e.level,this.format=e.format===`json`?`json`:`text`,this.formatOptions={timestamp:e.timestamp!==!1,colorize:e.colorize===!0}}write(t){let n=e.c(t,this.format,this.formatOptions);switch(t.level){case e.g.DEBUG:console.debug(n);break;case e.g.WARN:console.warn(n);break;case e.g.ERROR:console.error(n);break;default:console.info(n)}}};n(`console`,(e,t)=>{let n=e.options??{};return new i({format:n.format??t.format,timestamp:n.timestamp??t.timestamp,colorize:n.colorize??t.colorize,level:e.level})}),n(`custom`,e=>{let t=e.options?.transport;if(!t||typeof t.write!=`function`)throw Error(`custom transport requires options.transport to be an object with a write(entry) method`);return e.level===void 0?t:{type:t.type??`custom`,level:e.level,write:e=>t.write(e),close:t.close?()=>t.close?.():void 0}});function a(e){let t={format:e.format??`text`,timestamp:e.timestamp??!0,colorize:e.colorize??!1};if(e.transports===void 0)return[new i({format:t.format,timestamp:t.timestamp,colorize:t.colorize})];let n=[];for(let i of e.transports){let e=r(i.type);if(!e){console.warn(`[logan-logger] ${o(i.type)}`);continue}try{n.push(e(i,t))}catch(e){console.warn(`[logan-logger] transport '${i.type}' failed to initialize:`,e)}}return n}function o(e){return e===`file`?`the 'file' transport is not registered; import from 'logan-logger/node' (or 'logan-logger/bun') rather than the main entry point to use file logging`:e===`http`?`the 'http' transport is not built in; supply one with { type: 'custom', options: { transport } }`:`unknown transport type '${e}'; skipping`}var s=class t extends e.h{constructor(e={},t){super(e),this.transports=t??a(e)}getTransports(){return this.transports}close(){for(let e of this.transports)e.close?.()}writeLog(e){for(let t of this.transports)if(!(t.level!==void 0&&e.level<t.level))try{t.write(e)}catch(e){console.warn(`[logan-logger] transport '${t.type}' failed to write:`,e)}}createChild(){return new t(this.config,this.transports)}};function c(e){return{write:t=>{e.info(t.trim())}}}var l=class t{static create(n={}){let r=e._(),i=t.mergeConfig(n);switch(r.name){case`node`:return new s(i);case`deno`:return new e.l(i);case`bun`:return new s(i);case`browser`:case`webworker`:return new e.l(i);default:return new e.l(i)}}static createChild(e,t){return e.child(t)}static mergeConfig(t){let n=t.ignoreEnvironment?{}:e.n();return e.r(t,n)}};function u(e){return l.create(e)}function d(){let t=f();return u({level:p(t),colorize:t!==`production`&&e.a(),timestamp:!0,format:t===`production`?`json`:`text`})}function f(){return typeof process<`u`&&process.env?process.env.NODE_ENV||process.env.NEXT_PUBLIC_APP_ENV||process.env.ENVIRONMENT||`development`:typeof window<`u`&&globalThis.__ENV__||`development`}function p(t){switch(t){case`production`:return e.g.ERROR;case`staging`:case`test`:return e.g.WARN;case`development`:case`dev`:return e.g.DEBUG;default:return e.g.INFO}}function m(t){return e.o(t)??e.g.INFO}function h(t){switch(t){case e.g.DEBUG:return`debug`;case e.g.INFO:return`info`;case e.g.WARN:return`warn`;case e.g.ERROR:return`error`;case e.g.SILENT:return`silent`;default:return`info`}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return r}});