logan-logger 1.1.2 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,334 @@
1
+ import { g as L, L as r, s as w, d as l, B as c } from "./browser-C6UkWymL.mjs";
2
+ class i extends L {
3
+ constructor(e = {}) {
4
+ super(e), this.initializeWinston();
5
+ }
6
+ async initializeWinston() {
7
+ try {
8
+ const e = await import("winston");
9
+ this.winston = this.createWinstonLogger(e);
10
+ } catch {
11
+ console.warn("[logan-logger] Winston not found, falling back to console logging");
12
+ }
13
+ }
14
+ createWinstonLogger(e) {
15
+ const n = e.format.combine(
16
+ e.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
17
+ e.format.errors({ stack: !0 }),
18
+ e.format.json(),
19
+ e.format.prettyPrint()
20
+ ), o = e.format.combine(
21
+ e.format.colorize(),
22
+ e.format.timestamp({ format: "HH:mm:ss" }),
23
+ e.format.printf(({ timestamp: a, level: g, message: d, ...u }) => {
24
+ const p = Object.keys(u).length ? JSON.stringify(u, null, 2) : "";
25
+ return `${a} [${g}]: ${d} ${p}`;
26
+ })
27
+ ), s = e.createLogger({
28
+ level: this.getWinstonLevel(this.level),
29
+ format: n,
30
+ transports: [
31
+ new e.transports.Console({
32
+ format: process.env.NODE_ENV === "production" ? n : o
33
+ })
34
+ ]
35
+ });
36
+ return process.env.NODE_ENV === "production" && (s.add(
37
+ new e.transports.File({
38
+ filename: "logs/error.log",
39
+ level: "error",
40
+ maxsize: 5242880,
41
+ // 5MB
42
+ maxFiles: 5
43
+ })
44
+ ), s.add(
45
+ new e.transports.File({
46
+ filename: "logs/combined.log",
47
+ maxsize: 5242880,
48
+ // 5MB
49
+ maxFiles: 10
50
+ })
51
+ )), s;
52
+ }
53
+ writeLog(e) {
54
+ this.winston ? this.winston.log({
55
+ level: this.getWinstonLevel(e.level),
56
+ message: e.message,
57
+ timestamp: e.timestamp,
58
+ ...e.metadata
59
+ }) : this.writeToConsole(e);
60
+ }
61
+ createChild() {
62
+ return new i(this.config);
63
+ }
64
+ writeToConsole(e) {
65
+ const n = e.timestamp.toISOString(), o = r[e.level].toLowerCase(), s = e.metadata ? ` ${w(e.metadata)}` : "", a = `[${n}] ${o.toUpperCase()}: ${e.message}${s}`;
66
+ switch (e.level) {
67
+ case r.DEBUG:
68
+ console.debug(a);
69
+ break;
70
+ case r.INFO:
71
+ console.info(a);
72
+ break;
73
+ case r.WARN:
74
+ console.warn(a);
75
+ break;
76
+ case r.ERROR:
77
+ console.error(a);
78
+ break;
79
+ }
80
+ }
81
+ getWinstonLevel(e) {
82
+ switch (e) {
83
+ case r.DEBUG:
84
+ return "debug";
85
+ case r.INFO:
86
+ return "info";
87
+ case r.WARN:
88
+ return "warn";
89
+ case r.ERROR:
90
+ return "error";
91
+ default:
92
+ return "info";
93
+ }
94
+ }
95
+ setLevel(e) {
96
+ super.setLevel(e), this.winston && (this.winston.level = this.getWinstonLevel(e));
97
+ }
98
+ }
99
+ function b(t) {
100
+ return {
101
+ write: (e) => {
102
+ t.info(e.trim());
103
+ }
104
+ };
105
+ }
106
+ function f() {
107
+ const t = l();
108
+ return {
109
+ level: r.INFO,
110
+ format: "text",
111
+ timestamp: !0,
112
+ colorize: t.capabilities.colorSupport,
113
+ metadata: {},
114
+ transports: [
115
+ {
116
+ type: "console",
117
+ options: {}
118
+ }
119
+ ]
120
+ };
121
+ }
122
+ function T() {
123
+ const t = {};
124
+ if (typeof process < "u" && process.env) {
125
+ const e = process.env;
126
+ e.LOG_LEVEL && (t.level = E(e.LOG_LEVEL)), e.LOG_FORMAT && ["json", "text"].includes(e.LOG_FORMAT) && (t.format = e.LOG_FORMAT), e.LOG_TIMESTAMP && (t.timestamp = e.LOG_TIMESTAMP.toLowerCase() === "true"), e.LOG_COLOR && (t.colorize = e.LOG_COLOR.toLowerCase() === "true");
127
+ }
128
+ return t;
129
+ }
130
+ async function W(t) {
131
+ const e = l();
132
+ if (!e.capabilities.fileSystem)
133
+ return {};
134
+ const n = t ? [t] : [
135
+ "logan.config.json",
136
+ "logan.config.js",
137
+ ".loganrc",
138
+ "package.json"
139
+ // Check for logan config in package.json
140
+ ];
141
+ for (const o of n)
142
+ try {
143
+ if (e.name === "node")
144
+ return await m(o);
145
+ if (e.name === "deno")
146
+ return await v(o);
147
+ if (e.name === "bun")
148
+ return await O(o);
149
+ } catch {
150
+ }
151
+ return {};
152
+ }
153
+ async function m(t) {
154
+ try {
155
+ const e = await import("./__vite-browser-external-DYxpcVy9.mjs"), n = await import("./__vite-browser-external-DYxpcVy9.mjs");
156
+ if (t.endsWith(".json")) {
157
+ const o = await e.readFile(t, "utf-8"), s = JSON.parse(o);
158
+ return t === "package.json" ? s.logan || {} : s;
159
+ } else if (t.endsWith(".js")) {
160
+ const s = await import(n.resolve(t));
161
+ return s.default || s;
162
+ }
163
+ } catch {
164
+ }
165
+ return {};
166
+ }
167
+ async function v(t) {
168
+ try {
169
+ if (t.endsWith(".json")) {
170
+ const e = await globalThis.Deno.readTextFile(t), n = JSON.parse(e);
171
+ return t === "package.json" ? n.logan || {} : n;
172
+ } else if (t.endsWith(".js")) {
173
+ const e = await import(
174
+ /* @vite-ignore */
175
+ `./${t}`
176
+ );
177
+ return e.default || e;
178
+ }
179
+ } catch {
180
+ }
181
+ return {};
182
+ }
183
+ async function O(t) {
184
+ return m(t);
185
+ }
186
+ function E(t) {
187
+ switch (t.toLowerCase()) {
188
+ case "debug":
189
+ return r.DEBUG;
190
+ case "info":
191
+ return r.INFO;
192
+ case "warn":
193
+ case "warning":
194
+ return r.WARN;
195
+ case "error":
196
+ return r.ERROR;
197
+ case "silent":
198
+ case "none":
199
+ return r.SILENT;
200
+ default:
201
+ return r.INFO;
202
+ }
203
+ }
204
+ function _(...t) {
205
+ const e = f();
206
+ return t.reduce((n, o) => ({
207
+ ...n,
208
+ ...o,
209
+ metadata: {
210
+ ...n.metadata,
211
+ ...o.metadata
212
+ },
213
+ transports: o.transports || n.transports
214
+ }), e);
215
+ }
216
+ class N {
217
+ /**
218
+ * Create a logger instance appropriate for the current runtime.
219
+ * @param config - Optional configuration for the logger
220
+ * @returns A logger instance
221
+ */
222
+ static create(e = {}) {
223
+ const n = l(), o = this.mergeConfig(e);
224
+ switch (n.name) {
225
+ case "node":
226
+ return new i(o);
227
+ case "deno":
228
+ return new c(o);
229
+ case "bun":
230
+ return new i(o);
231
+ case "browser":
232
+ case "webworker":
233
+ return new c(o);
234
+ default:
235
+ return new c(o);
236
+ }
237
+ }
238
+ /**
239
+ * Create a child logger with additional metadata.
240
+ * @param parent - The parent logger instance
241
+ * @param metadata - Additional metadata to include in all child log messages
242
+ * @returns A new logger instance with the additional metadata
243
+ */
244
+ static createChild(e, n) {
245
+ return e.child(n);
246
+ }
247
+ static mergeConfig(e) {
248
+ const n = f();
249
+ return {
250
+ ...n,
251
+ ...e,
252
+ metadata: {
253
+ ...n.metadata,
254
+ ...e.metadata
255
+ }
256
+ };
257
+ }
258
+ }
259
+ function h(t) {
260
+ return N.create(t);
261
+ }
262
+ function I() {
263
+ const t = R(), e = {
264
+ level: F(t),
265
+ colorize: t !== "production",
266
+ timestamp: !0,
267
+ format: t === "production" ? "json" : "text"
268
+ };
269
+ return h(e);
270
+ }
271
+ function R() {
272
+ 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";
273
+ }
274
+ function F(t) {
275
+ switch (t) {
276
+ case "production":
277
+ return r.ERROR;
278
+ case "staging":
279
+ case "test":
280
+ return r.WARN;
281
+ case "development":
282
+ case "dev":
283
+ return r.DEBUG;
284
+ default:
285
+ return r.INFO;
286
+ }
287
+ }
288
+ function S(t) {
289
+ switch (t.toLowerCase()) {
290
+ case "debug":
291
+ return r.DEBUG;
292
+ case "info":
293
+ return r.INFO;
294
+ case "warn":
295
+ case "warning":
296
+ return r.WARN;
297
+ case "error":
298
+ return r.ERROR;
299
+ case "silent":
300
+ case "none":
301
+ return r.SILENT;
302
+ default:
303
+ return r.INFO;
304
+ }
305
+ }
306
+ function G(t) {
307
+ switch (t) {
308
+ case r.DEBUG:
309
+ return "debug";
310
+ case r.INFO:
311
+ return "info";
312
+ case r.WARN:
313
+ return "warn";
314
+ case r.ERROR:
315
+ return "error";
316
+ case r.SILENT:
317
+ return "silent";
318
+ default:
319
+ return "info";
320
+ }
321
+ }
322
+ export {
323
+ N as L,
324
+ i as N,
325
+ I as a,
326
+ W as b,
327
+ h as c,
328
+ G as d,
329
+ b as e,
330
+ f as g,
331
+ T as l,
332
+ _ as m,
333
+ S as s
334
+ };
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.create;var g=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var h=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of O(e))!N.call(t,s)&&s!==o&&g(t,s,{get:()=>e[s],enumerable:!(n=w(e,s))||n.enumerable});return t};var R=(t,e,o)=>(o=t!=null?p(E(t)):{},h(e||!t||!t.__esModule?g(o,"default",{value:t,enumerable:!0}):o,t));const r=require("./browser-BzeNXjes.js");class i extends r.BaseLogger{constructor(e={}){super(e),this.initializeWinston()}async initializeWinston(){try{const e=await import("winston");this.winston=this.createWinstonLogger(e)}catch{console.warn("[logan-logger] Winston not found, falling back to console logging")}}createWinstonLogger(e){const o=e.format.combine(e.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),e.format.errors({stack:!0}),e.format.json(),e.format.prettyPrint()),n=e.format.combine(e.format.colorize(),e.format.timestamp({format:"HH:mm:ss"}),e.format.printf(({timestamp:a,level:m,message:d,...l})=>{const v=Object.keys(l).length?JSON.stringify(l,null,2):"";return`${a} [${m}]: ${d} ${v}`})),s=e.createLogger({level:this.getWinstonLevel(this.level),format:o,transports:[new e.transports.Console({format:process.env.NODE_ENV==="production"?o:n})]});return process.env.NODE_ENV==="production"&&(s.add(new e.transports.File({filename:"logs/error.log",level:"error",maxsize:5242880,maxFiles:5})),s.add(new e.transports.File({filename:"logs/combined.log",maxsize:5242880,maxFiles:10}))),s}writeLog(e){this.winston?this.winston.log({level:this.getWinstonLevel(e.level),message:e.message,timestamp:e.timestamp,...e.metadata}):this.writeToConsole(e)}createChild(){return new i(this.config)}writeToConsole(e){const o=e.timestamp.toISOString(),n=r.LogLevel[e.level].toLowerCase(),s=e.metadata?` ${r.safeStringify(e.metadata)}`:"",a=`[${o}] ${n.toUpperCase()}: ${e.message}${s}`;switch(e.level){case r.LogLevel.DEBUG:console.debug(a);break;case r.LogLevel.INFO:console.info(a);break;case r.LogLevel.WARN:console.warn(a);break;case r.LogLevel.ERROR:console.error(a);break}}getWinstonLevel(e){switch(e){case r.LogLevel.DEBUG:return"debug";case r.LogLevel.INFO:return"info";case r.LogLevel.WARN:return"warn";case r.LogLevel.ERROR:return"error";default:return"info"}}setLevel(e){super.setLevel(e),this.winston&&(this.winston.level=this.getWinstonLevel(e))}}function F(t){return{write:e=>{t.info(e.trim())}}}function c(){const t=r.detectRuntime();return{level:r.LogLevel.INFO,format:"text",timestamp:!0,colorize:t.capabilities.colorSupport,metadata:{},transports:[{type:"console",options:{}}]}}function C(){const t={};if(typeof process<"u"&&process.env){const e=process.env;e.LOG_LEVEL&&(t.level=W(e.LOG_LEVEL)),e.LOG_FORMAT&&["json","text"].includes(e.LOG_FORMAT)&&(t.format=e.LOG_FORMAT),e.LOG_TIMESTAMP&&(t.timestamp=e.LOG_TIMESTAMP.toLowerCase()==="true"),e.LOG_COLOR&&(t.colorize=e.LOG_COLOR.toLowerCase()==="true")}return t}async function b(t){const e=r.detectRuntime();if(!e.capabilities.fileSystem)return{};const o=t?[t]:["logan.config.json","logan.config.js",".loganrc","package.json"];for(const n of o)try{if(e.name==="node")return await u(n);if(e.name==="deno")return await T(n);if(e.name==="bun")return await S(n)}catch{}return{}}async function u(t){try{const e=await Promise.resolve().then(()=>require("./__vite-browser-external-BcPniuRQ.js")),o=await Promise.resolve().then(()=>require("./__vite-browser-external-BcPniuRQ.js"));if(t.endsWith(".json")){const n=await e.readFile(t,"utf-8"),s=JSON.parse(n);return t==="package.json"?s.logan||{}:s}else if(t.endsWith(".js")){const s=await import(o.resolve(t));return s.default||s}}catch{}return{}}async function T(t){try{if(t.endsWith(".json")){const e=await globalThis.Deno.readTextFile(t),o=JSON.parse(e);return t==="package.json"?o.logan||{}:o}else if(t.endsWith(".js")){const e=await import(`./${t}`);return e.default||e}}catch{}return{}}async function S(t){return u(t)}function W(t){switch(t.toLowerCase()){case"debug":return r.LogLevel.DEBUG;case"info":return r.LogLevel.INFO;case"warn":case"warning":return r.LogLevel.WARN;case"error":return r.LogLevel.ERROR;case"silent":case"none":return r.LogLevel.SILENT;default:return r.LogLevel.INFO}}function _(...t){const e=c();return t.reduce((o,n)=>({...o,...n,metadata:{...o.metadata,...n.metadata},transports:n.transports||o.transports}),e)}class L{static create(e={}){const o=r.detectRuntime(),n=this.mergeConfig(e);switch(o.name){case"node":return new i(n);case"deno":return new r.BrowserLogger(n);case"bun":return new i(n);case"browser":case"webworker":return new r.BrowserLogger(n);default:return new r.BrowserLogger(n)}}static createChild(e,o){return e.child(o)}static mergeConfig(e){const o=c();return{...o,...e,metadata:{...o.metadata,...e.metadata}}}}function f(t){return L.create(t)}function I(){const t=D(),e={level:G(t),colorize:t!=="production",timestamp:!0,format:t==="production"?"json":"text"};return f(e)}function D(){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 G(t){switch(t){case"production":return r.LogLevel.ERROR;case"staging":case"test":return r.LogLevel.WARN;case"development":case"dev":return r.LogLevel.DEBUG;default:return r.LogLevel.INFO}}function j(t){switch(t.toLowerCase()){case"debug":return r.LogLevel.DEBUG;case"info":return r.LogLevel.INFO;case"warn":case"warning":return r.LogLevel.WARN;case"error":return r.LogLevel.ERROR;case"silent":case"none":return r.LogLevel.SILENT;default:return r.LogLevel.INFO}}function M(t){switch(t){case r.LogLevel.DEBUG:return"debug";case r.LogLevel.INFO:return"info";case r.LogLevel.WARN:return"warn";case r.LogLevel.ERROR:return"error";case r.LogLevel.SILENT:return"silent";default:return"info"}}exports.LoggerFactory=L;exports.NodeLogger=i;exports.createLogger=f;exports.createLoggerForEnvironment=I;exports.createMorganStream=F;exports.getDefaultConfig=c;exports.loadConfigFromEnvironment=C;exports.loadConfigFromFile=b;exports.logLevelToString=M;exports.mergeConfigs=_;exports.stringToLogLevel=j;
package/dist/node.d.ts CHANGED
@@ -1,190 +1,3 @@
1
- declare abstract class BaseLogger implements ILogger {
2
- protected level: LogLevel;
3
- protected config: Partial<LoggerConfig>;
4
- protected runtime: RuntimeName;
5
- protected childMetadata: Record<string, any>;
6
- protected constructor(config?: Partial<LoggerConfig>);
7
- debug(message: LogMessage, metadata?: any): void;
8
- info(message: LogMessage, metadata?: any): void;
9
- warn(message: LogMessage, metadata?: any): void;
10
- error(message: LogMessage, metadata?: any): void;
11
- log(level: LogLevel, message: LogMessage, metadata?: any): void;
12
- setLevel(level: LogLevel): void;
13
- getLevel(): LogLevel;
14
- child(metadata: Record<string, any>): ILogger;
15
- protected shouldLog(level: LogLevel): boolean;
16
- protected abstract writeLog(entry: LogEntry): void;
17
- protected abstract createChild(): BaseLogger;
18
- }
19
-
20
- /**
21
- * Convenience function for creating a logger instance.
22
- * @param config - Optional configuration for the logger
23
- * @returns A logger instance appropriate for the current runtime
24
- * @example
25
- * ```typescript
26
- * import { createLogger, LogLevel } from 'logan-logger';
27
- *
28
- * const logger = createLogger({
29
- * level: LogLevel.DEBUG,
30
- * colorize: true
31
- * });
32
- *
33
- * logger.info('Hello world!');
34
- * ```
35
- */
36
- export declare function createLogger(config?: Partial<LoggerConfig>): ILogger;
37
-
38
- /**
39
- * Create a logger with configuration based on the current environment.
40
- * Automatically detects production/development/test environments and
41
- * sets appropriate log levels and formatting.
42
- * @returns A logger instance configured for the current environment
43
- */
44
- export declare function createLoggerForEnvironment(): ILogger;
45
-
46
- export declare function createMorganStream(logger: NodeLogger): {
47
- write: (message: string) => void;
48
- };
49
-
50
- /**
51
- * Main logger interface providing methods for logging at different levels.
52
- * This interface is implemented by all logger implementations across different runtimes.
53
- */
54
- export declare interface ILogger {
55
- /**
56
- * Log a debug message. Only shown when log level is DEBUG.
57
- * @param message - The message to log (string or lazy function)
58
- * @param metadata - Optional structured data to include
59
- */
60
- debug(message: LogMessage, metadata?: any): void;
61
- /**
62
- * Log an informational message.
63
- * @param message - The message to log (string or lazy function)
64
- * @param metadata - Optional structured data to include
65
- */
66
- info(message: LogMessage, metadata?: any): void;
67
- /**
68
- * Log a warning message.
69
- * @param message - The message to log (string or lazy function)
70
- * @param metadata - Optional structured data to include
71
- */
72
- warn(message: LogMessage, metadata?: any): void;
73
- /**
74
- * Log an error message.
75
- * @param message - The message to log (string or lazy function)
76
- * @param metadata - Optional structured data to include
77
- */
78
- error(message: LogMessage, metadata?: any): void;
79
- /**
80
- * Log a message at a specific level.
81
- * @param level - The log level
82
- * @param message - The message to log (string or lazy function)
83
- * @param metadata - Optional structured data to include
84
- */
85
- log(level: LogLevel, message: LogMessage, metadata?: any): void;
86
- /**
87
- * Set the minimum log level for this logger.
88
- * @param level - The minimum log level
89
- */
90
- setLevel(level: LogLevel): void;
91
- /**
92
- * Get the current minimum log level.
93
- * @returns The current log level
94
- */
95
- getLevel(): LogLevel;
96
- /**
97
- * Create a child logger with additional metadata.
98
- * @param metadata - Additional metadata to include in all child log messages
99
- * @returns A new logger instance with the additional metadata
100
- */
101
- child(metadata: Record<string, any>): ILogger;
102
- }
103
-
104
- /**
105
- * Internal representation of a log entry.
106
- */
107
- declare interface LogEntry {
108
- /** When the log entry was created */
109
- timestamp: Date;
110
- /** Log level of this entry */
111
- level: LogLevel;
112
- /** The log message */
113
- message: string;
114
- /** Additional structured data */
115
- metadata?: Record<string, any>;
116
- /** Runtime that generated this log entry */
117
- runtime: RuntimeName;
118
- }
119
-
120
- /**
121
- * Configuration options for creating a logger instance.
122
- */
123
- export declare interface LoggerConfig {
124
- /** Minimum log level to output */
125
- level: LogLevel;
126
- /** Output format for log messages */
127
- format: 'json' | 'text' | 'custom';
128
- /** Whether to include timestamps in log output */
129
- timestamp: boolean;
130
- /** Whether to colorize log output (if supported) */
131
- colorize: boolean;
132
- /** Default metadata to include with all log messages */
133
- metadata: Record<string, any>;
134
- /** Transport configurations for log output */
135
- transports?: TransportConfig[];
136
- }
137
-
138
- /**
139
- * Log levels in ascending order of severity.
140
- * Used to filter which messages should be logged.
141
- */
142
- export declare enum LogLevel {
143
- /** Debug messages - most verbose */
144
- DEBUG = 0,
145
- /** Informational messages */
146
- INFO = 1,
147
- /** Warning messages */
148
- WARN = 2,
149
- /** Error messages */
150
- ERROR = 3,
151
- /** No messages - silent mode */
152
- SILENT = 4
153
- }
154
-
155
- /**
156
- * A log message can be a string or a function that returns a string.
157
- * Functions enable lazy evaluation for expensive log message generation.
158
- */
159
- declare type LogMessage = string | (() => string);
160
-
161
- export declare class NodeLogger extends BaseLogger {
162
- private winston?;
163
- constructor(config?: Partial<LoggerConfig>);
164
- private initializeWinston;
165
- private createWinstonLogger;
166
- protected writeLog(entry: LogEntry): void;
167
- protected createChild(): BaseLogger;
168
- private writeToConsole;
169
- private getWinstonLevel;
170
- setLevel(level: LogLevel): void;
171
- }
172
-
173
- /**
174
- * Supported JavaScript runtime environments.
175
- */
176
- declare type RuntimeName = 'node' | 'deno' | 'bun' | 'browser' | 'webworker' | 'unknown';
177
-
178
- /**
179
- * Configuration for a specific log transport (output destination).
180
- */
181
- declare interface TransportConfig {
182
- /** Type of transport */
183
- type: 'console' | 'file' | 'http' | 'custom';
184
- /** Minimum log level for this transport */
185
- level?: LogLevel;
186
- /** Transport-specific options */
187
- options: Record<string, any>;
188
- }
189
-
190
- export { }
1
+ export { NodeLogger, createMorganStream } from './runtime/node';
2
+ export type { ILogger, LoggerConfig, LogLevel } from './core/types';
3
+ export { createLogger, createLoggerForEnvironment } from './core/factory';
package/dist/node.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { N as a, a as o, c as g, r as t } from "./node-BqvVrzA_.mjs";
1
+ import { N as a, c as o, a as g, e as t } from "./node-NjRZ5jt7.mjs";
2
2
  export {
3
3
  a as NodeLogger,
4
4
  o as createLogger,
package/dist/node.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./node-BKsollr4.js");exports.NodeLogger=e.NodeLogger;exports.createLogger=e.createLogger;exports.createLoggerForEnvironment=e.createLoggerForEnvironment;exports.createMorganStream=e.createMorganStream;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./node-jP3ESR8x.js");exports.NodeLogger=e.NodeLogger;exports.createLogger=e.createLogger;exports.createLoggerForEnvironment=e.createLoggerForEnvironment;exports.createMorganStream=e.createMorganStream;
@@ -0,0 +1,31 @@
1
+ import { BaseLogger } from '../core/logger';
2
+ import { LogEntry, LogLevel, LoggerConfig } from '../core/types';
3
+ export declare class BrowserLogger extends BaseLogger {
4
+ constructor(config?: Partial<LoggerConfig>);
5
+ protected writeLog(entry: LogEntry): void;
6
+ protected createChild(): BaseLogger;
7
+ private formatMessage;
8
+ private getConsoleStyle;
9
+ private shouldLogInProduction;
10
+ protected shouldLog(level: LogLevel): boolean;
11
+ }
12
+ export declare class ConsoleGroupLogger extends BrowserLogger {
13
+ private groupStack;
14
+ group(label: string): void;
15
+ groupCollapsed(label: string): void;
16
+ groupEnd(): void;
17
+ getCurrentGroupStack(): string[];
18
+ getCurrentGroupPath(): string;
19
+ time(label: string): void;
20
+ timeEnd(label: string): void;
21
+ trace(message: string, metadata?: any): void;
22
+ count(label?: string): void;
23
+ countReset(label?: string): void;
24
+ table(data: any): void;
25
+ }
26
+ export declare class PerformanceLogger extends BrowserLogger {
27
+ mark(name: string): void;
28
+ measure(name: string, startMark?: string, endMark?: string): void;
29
+ clearMarks(name?: string): void;
30
+ clearMeasures(name?: string): void;
31
+ }
@@ -0,0 +1,16 @@
1
+ import { BaseLogger } from '../core/logger';
2
+ import { LogEntry, LogLevel, LoggerConfig } from '../core/types';
3
+ export declare class NodeLogger extends BaseLogger {
4
+ private winston?;
5
+ constructor(config?: Partial<LoggerConfig>);
6
+ private initializeWinston;
7
+ private createWinstonLogger;
8
+ protected writeLog(entry: LogEntry): void;
9
+ protected createChild(): BaseLogger;
10
+ private writeToConsole;
11
+ private getWinstonLevel;
12
+ setLevel(level: LogLevel): void;
13
+ }
14
+ export declare function createMorganStream(logger: NodeLogger): {
15
+ write: (message: string) => void;
16
+ };
@@ -0,0 +1,5 @@
1
+ import { LoggerConfig } from '../core/types';
2
+ export declare function getDefaultConfig(): LoggerConfig;
3
+ export declare function loadConfigFromEnvironment(): Partial<LoggerConfig>;
4
+ export declare function loadConfigFromFile(configPath?: string): Promise<Partial<LoggerConfig>>;
5
+ export declare function mergeConfigs(...configs: Partial<LoggerConfig>[]): LoggerConfig;
@@ -0,0 +1,31 @@
1
+ import { LogEntry, LogLevel } from '../core/types';
2
+ /**
3
+ * Format a log entry for output in different formats.
4
+ * @param entry - The log entry to format
5
+ * @param format - Output format ('json' or 'text')
6
+ * @returns Formatted log string
7
+ * @example
8
+ * ```typescript
9
+ * const entry: LogEntry = {
10
+ * timestamp: new Date(),
11
+ * level: LogLevel.INFO,
12
+ * message: 'User logged in',
13
+ * metadata: { userId: 123 },
14
+ * runtime: 'node'
15
+ * };
16
+ *
17
+ * const textFormat = formatLogEntry(entry, 'text');
18
+ * // Result: "[2024-01-01T12:00:00.000Z] INFO: User logged in {\"userId\":123}"
19
+ *
20
+ * const jsonFormat = formatLogEntry(entry, 'json');
21
+ * // Result: {"timestamp":"2024-01-01T12:00:00.000Z","level":"info","message":"User logged in","metadata":{"userId":123},"runtime":"node"}
22
+ * ```
23
+ */
24
+ export declare function formatLogEntry(entry: LogEntry, format?: 'json' | 'text'): string;
25
+ /**
26
+ * Format log level as a colored string for terminal output.
27
+ * @param level - The log level to format
28
+ * @param colorize - Whether to apply ANSI color codes
29
+ * @returns Formatted level string with optional colors
30
+ */
31
+ export declare function formatLevel(level: LogLevel, colorize?: boolean): string;
@@ -0,0 +1,31 @@
1
+ import { RuntimeInfo } from '../core/types';
2
+ /**
3
+ * Detects the current JavaScript runtime environment and its capabilities.
4
+ * @returns Information about the detected runtime
5
+ * @example
6
+ * ```typescript
7
+ * const runtime = detectRuntime();
8
+ * console.log(`Running on: ${runtime.name} ${runtime.version}`);
9
+ * ```
10
+ */
11
+ export declare function detectRuntime(): RuntimeInfo;
12
+ /**
13
+ * Check if the current runtime is Node.js.
14
+ * @returns True if running in Node.js
15
+ */
16
+ export declare function isNode(): boolean;
17
+ /**
18
+ * Check if the current runtime is a browser.
19
+ * @returns True if running in a browser
20
+ */
21
+ export declare function isBrowser(): boolean;
22
+ /**
23
+ * Check if the current runtime is Deno.
24
+ * @returns True if running in Deno
25
+ */
26
+ export declare function isDeno(): boolean;
27
+ /**
28
+ * Check if the current runtime is Bun.
29
+ * @returns True if running in Bun
30
+ */
31
+ export declare function isBun(): boolean;