@mks2508/better-logger 2.1.0 → 3.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 (85) hide show
  1. package/.claude/settings.local.json +6 -1
  2. package/CHANGELOG.json +93 -1
  3. package/CHANGELOG.md +127 -0
  4. package/CLAUDE.md +14 -1
  5. package/README.md +111 -20
  6. package/dist/Logger.d.ts +205 -58
  7. package/dist/Logger.d.ts.map +1 -1
  8. package/dist/ScopedLogger.d.ts +23 -276
  9. package/dist/ScopedLogger.d.ts.map +1 -1
  10. package/dist/chunks/Logger-BCfx_yCK.js +2 -0
  11. package/dist/chunks/Logger-BCfx_yCK.js.map +1 -0
  12. package/dist/chunks/{Logger-B7L-ujY4.js → Logger-C126NTrD.js} +862 -96
  13. package/dist/chunks/Logger-C126NTrD.js.map +1 -0
  14. package/dist/exports-module.d.ts +1 -1
  15. package/dist/exports-module.d.ts.map +1 -1
  16. package/dist/exports.cjs +1 -1
  17. package/dist/exports.js +1 -1
  18. package/dist/hooks/HookManager.d.ts +21 -0
  19. package/dist/hooks/HookManager.d.ts.map +1 -0
  20. package/dist/hooks/index.d.ts +2 -0
  21. package/dist/hooks/index.d.ts.map +1 -0
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.ts +23 -3
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +240 -9
  27. package/dist/index.js.map +1 -1
  28. package/dist/serializers/SerializerRegistry.d.ts +16 -0
  29. package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
  30. package/dist/serializers/index.d.ts +2 -0
  31. package/dist/serializers/index.d.ts.map +1 -0
  32. package/dist/styling/StyleCache.d.ts +42 -0
  33. package/dist/styling/StyleCache.d.ts.map +1 -0
  34. package/dist/styling-module.d.ts +1 -1
  35. package/dist/styling-module.d.ts.map +1 -1
  36. package/dist/styling.cjs +1 -1
  37. package/dist/styling.js +2 -2
  38. package/dist/transports/ConsoleTransport.d.ts +9 -0
  39. package/dist/transports/ConsoleTransport.d.ts.map +1 -0
  40. package/dist/transports/FileTransport.d.ts +15 -0
  41. package/dist/transports/FileTransport.d.ts.map +1 -0
  42. package/dist/transports/HttpTransport.d.ts +16 -0
  43. package/dist/transports/HttpTransport.d.ts.map +1 -0
  44. package/dist/transports/TransportManager.d.ts +14 -0
  45. package/dist/transports/TransportManager.d.ts.map +1 -0
  46. package/dist/transports/index.d.ts +5 -0
  47. package/dist/transports/index.d.ts.map +1 -0
  48. package/dist/types/core.d.ts +38 -0
  49. package/dist/types/core.d.ts.map +1 -1
  50. package/dist/types/hooks.d.ts +36 -0
  51. package/dist/types/hooks.d.ts.map +1 -0
  52. package/dist/types/index.d.ts +5 -1
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/dist/types/serializers.d.ts +25 -0
  55. package/dist/types/serializers.d.ts.map +1 -0
  56. package/dist/types/transports.d.ts +47 -0
  57. package/dist/types/transports.d.ts.map +1 -0
  58. package/docs/API.md +227 -0
  59. package/package.json +1 -1
  60. package/packages/core/package.json +1 -1
  61. package/src/Logger.ts +391 -102
  62. package/src/ScopedLogger.ts +78 -318
  63. package/src/hooks/HookManager.ts +177 -0
  64. package/src/hooks/index.ts +1 -0
  65. package/src/index.ts +77 -2
  66. package/src/serializers/SerializerRegistry.ts +173 -0
  67. package/src/serializers/index.ts +1 -0
  68. package/src/styling/StyleCache.ts +131 -0
  69. package/src/transports/ConsoleTransport.ts +28 -0
  70. package/src/transports/FileTransport.ts +53 -0
  71. package/src/transports/HttpTransport.ts +56 -0
  72. package/src/transports/TransportManager.ts +130 -0
  73. package/src/transports/index.ts +4 -0
  74. package/src/types/core.ts +46 -0
  75. package/src/types/hooks.ts +45 -0
  76. package/src/types/index.ts +39 -1
  77. package/src/types/serializers.ts +30 -0
  78. package/src/types/transports.ts +52 -0
  79. package/dist/chunks/Logger-B7L-ujY4.js.map +0 -1
  80. package/dist/chunks/Logger-DzU_c5sX.js +0 -2
  81. package/dist/chunks/Logger-DzU_c5sX.js.map +0 -1
  82. package/dist/chunks/ScopedLogger-BY3-E8Ov.js +0 -2
  83. package/dist/chunks/ScopedLogger-BY3-E8Ov.js.map +0 -1
  84. package/dist/chunks/ScopedLogger-D-RbiFZn.js +0 -361
  85. package/dist/chunks/ScopedLogger-D-RbiFZn.js.map +0 -1
@@ -174,7 +174,7 @@ export declare const groupEnd: () => void;
174
174
  export declare const time: (label: string) => void;
175
175
  export declare const timeEnd: (label: string) => void;
176
176
  export declare const setGlobalPrefix: (prefix: string) => void;
177
- export declare const scope: (prefix: string) => any;
177
+ export declare const scope: (prefix: string) => import('./ScopedLogger.js').ScopedLogger;
178
178
  export declare const setVerbosity: (level: Verbosity) => void;
179
179
  export declare const addHandler: (handler: ILogHandler) => void;
180
180
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"exports-module.d.ts","sourceRoot":"","sources":["../src/exports-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports-module.d.ts","sourceRoot":"","sources":["../src/exports-module.ts"],"names":[],"mappings":"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"}
package/dist/exports.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-DzU_c5sX.js");require("./chunks/environment-Ba5kShbx.js");const r=require("./chunks/RemoteLogHandler-ymkQ97xl.js");class ExportLogger extends e.Logger{exportLogHandler;remoteHandlers=[];constructor(r={}){super(r),r.bufferSize&&(this.exportLogHandler=new e.ExportLogHandler(r.bufferSize),this.addHandler(this.exportLogHandler))}async exportLogs(e,r){if(!this.exportLogHandler)throw new Error("Export handler not initialized. Set bufferSize in constructor.");return JSON.stringify([])}getLogs(){return this.exportLogHandler,[]}clearLogs(){this.exportLogHandler}getLogStats(){return this.exportLogHandler,{}}addRemoteHandler(e,t){const o=new r.RemoteLogHandler(e,t);this.remoteHandlers.push(o),this.addHandler(o)}clearRemoteHandlers(){const e=this.getHandlers();this.remoteHandlers.forEach(r=>{const t=e.indexOf(r);t>-1&&e.splice(t,1)}),this.remoteHandlers=[]}async flushRemoteHandlers(){const e=this.remoteHandlers.map(e=>Promise.resolve());await Promise.all(e)}}const t=new ExportLogger({bufferSize:1e3}),o={exportCSV:async e=>await t.exportLogs("csv",e),exportJSON:async e=>await t.exportLogs("json",e),exportXML:async e=>await t.exportLogs("xml",e),getStats:()=>t.getLogStats(),clear(){t.clearLogs()}},s={addEndpoint(e,r){t.addRemoteHandler(e,r)},clearEndpoints(){t.clearRemoteHandlers()},async flush(){await t.flushRemoteHandlers()}};exports.ExportLogHandler=e.ExportLogHandler,exports.RemoteLogHandler=r.RemoteLogHandler,exports.ExportLogger=ExportLogger,exports.addHandler=e=>t.addHandler(e),exports.addRemoteHandler=(e,r)=>t.addRemoteHandler(e,r),exports.clearLogs=()=>t.clearLogs(),exports.clearRemoteHandlers=()=>t.clearRemoteHandlers(),exports.critical=(...e)=>t.critical(...e),exports.debug=(...e)=>t.debug(...e),exports.default=t,exports.error=(...e)=>t.error(...e),exports.exportLogs=async(e,r)=>await t.exportLogs(e,r),exports.exportUtils=o,exports.flushRemoteHandlers=async()=>await t.flushRemoteHandlers(),exports.getLogStats=()=>t.getLogStats(),exports.getLogs=()=>t.getLogs(),exports.group=(e,r)=>t.group(e,r),exports.groupEnd=()=>t.groupEnd(),exports.info=(...e)=>t.info(...e),exports.remoteUtils=s,exports.scope=e=>t.scope(e),exports.setGlobalPrefix=e=>t.setGlobalPrefix(e),exports.setVerbosity=e=>t.setVerbosity(e),exports.success=(...e)=>t.success(...e),exports.table=(e,r)=>t.table(e,r),exports.time=e=>t.time(e),exports.timeEnd=e=>t.timeEnd(e),exports.trace=(...e)=>t.trace(...e),exports.warn=(...e)=>t.warn(...e);
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-BCfx_yCK.js");require("./chunks/environment-Ba5kShbx.js");const r=require("./chunks/RemoteLogHandler-ymkQ97xl.js");class ExportLogger extends e.Logger{exportLogHandler;remoteHandlers=[];constructor(r={}){super(r),r.bufferSize&&(this.exportLogHandler=new e.ExportLogHandler(r.bufferSize),this.addHandler(this.exportLogHandler))}async exportLogs(e,r){if(!this.exportLogHandler)throw new Error("Export handler not initialized. Set bufferSize in constructor.");return JSON.stringify([])}getLogs(){return this.exportLogHandler,[]}clearLogs(){this.exportLogHandler}getLogStats(){return this.exportLogHandler,{}}addRemoteHandler(e,t){const o=new r.RemoteLogHandler(e,t);this.remoteHandlers.push(o),this.addHandler(o)}clearRemoteHandlers(){const e=this.getHandlers();this.remoteHandlers.forEach(r=>{const t=e.indexOf(r);t>-1&&e.splice(t,1)}),this.remoteHandlers=[]}async flushRemoteHandlers(){const e=this.remoteHandlers.map(e=>Promise.resolve());await Promise.all(e)}}const t=new ExportLogger({bufferSize:1e3}),o={exportCSV:async e=>await t.exportLogs("csv",e),exportJSON:async e=>await t.exportLogs("json",e),exportXML:async e=>await t.exportLogs("xml",e),getStats:()=>t.getLogStats(),clear(){t.clearLogs()}},s={addEndpoint(e,r){t.addRemoteHandler(e,r)},clearEndpoints(){t.clearRemoteHandlers()},async flush(){await t.flushRemoteHandlers()}};exports.ExportLogHandler=e.ExportLogHandler,exports.RemoteLogHandler=r.RemoteLogHandler,exports.ExportLogger=ExportLogger,exports.addHandler=e=>t.addHandler(e),exports.addRemoteHandler=(e,r)=>t.addRemoteHandler(e,r),exports.clearLogs=()=>t.clearLogs(),exports.clearRemoteHandlers=()=>t.clearRemoteHandlers(),exports.critical=(...e)=>t.critical(...e),exports.debug=(...e)=>t.debug(...e),exports.default=t,exports.error=(...e)=>t.error(...e),exports.exportLogs=async(e,r)=>await t.exportLogs(e,r),exports.exportUtils=o,exports.flushRemoteHandlers=async()=>await t.flushRemoteHandlers(),exports.getLogStats=()=>t.getLogStats(),exports.getLogs=()=>t.getLogs(),exports.group=(e,r)=>t.group(e,r),exports.groupEnd=()=>t.groupEnd(),exports.info=(...e)=>t.info(...e),exports.remoteUtils=s,exports.scope=e=>t.scope(e),exports.setGlobalPrefix=e=>t.setGlobalPrefix(e),exports.setVerbosity=e=>t.setVerbosity(e),exports.success=(...e)=>t.success(...e),exports.table=(e,r)=>t.table(e,r),exports.time=e=>t.time(e),exports.timeEnd=e=>t.timeEnd(e),exports.trace=(...e)=>t.trace(...e),exports.warn=(...e)=>t.warn(...e);
2
2
  //# sourceMappingURL=exports.cjs.map
package/dist/exports.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as Logger, E as ExportLogHandler } from "./chunks/Logger-B7L-ujY4.js";
1
+ import { L as Logger, E as ExportLogHandler } from "./chunks/Logger-C126NTrD.js";
2
2
  import "./chunks/environment-TI2ByCPT.js";
3
3
  import { R as RemoteLogHandler } from "./chunks/RemoteLogHandler-CjWpWZGl.js";
4
4
  class ExportLogger extends Logger {
@@ -0,0 +1,21 @@
1
+ import { HookLogEntry, HookEvent, HookCallback, MiddlewareFn, IHookManager } from '../types/index.js';
2
+ export declare class HookManager implements IHookManager {
3
+ private hooks;
4
+ private middlewares;
5
+ constructor();
6
+ on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
7
+ once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
8
+ off(event: HookEvent, callback: HookCallback): boolean;
9
+ private removeHook;
10
+ use(middleware: MiddlewareFn, priority?: number): () => void;
11
+ emit(event: HookEvent, entry: HookLogEntry): Promise<HookLogEntry>;
12
+ process(entry: HookLogEntry): Promise<HookLogEntry>;
13
+ afterProcess(entry: HookLogEntry): Promise<void>;
14
+ clear(): void;
15
+ getStats(): {
16
+ hooks: Record<HookEvent, number>;
17
+ middlewares: number;
18
+ };
19
+ }
20
+ export declare function getDefaultHookManager(): HookManager;
21
+ //# sourceMappingURL=HookManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HookManager.d.ts","sourceRoot":"","sources":["../../src/hooks/HookManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EAGZ,YAAY,EACf,MAAM,mBAAmB,CAAC;AAM3B,qBAAa,WAAY,YAAW,YAAY;IAC5C,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,WAAW,CAAgC;;IAQnD,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,IAAI;IAgB/E,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,IAAI;IAgBjF,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO;IAYtD,OAAO,CAAC,UAAU;IAUlB,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,IAAI;IAkB1D,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BlE,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBnD,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,KAAK,IAAI,IAAI;IAKb,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;CAUxE;AAID,wBAAgB,qBAAqB,IAAI,WAAW,CAKnD"}
@@ -0,0 +1,2 @@
1
+ export { HookManager, getDefaultHookManager } from './HookManager.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-DzU_c5sX.js"),t=require("./chunks/environment-Ba5kShbx.js"),r=require("./chunks/formatting-Blwy-f0W.js"),o=require("./chunks/RemoteLogHandler-ymkQ97xl.js");let s=null;function getLogger(){return s||(s=new e.Logger),s}const i=getLogger(),a={success:t.StylePresets.success().build(),error:t.StylePresets.error().build(),warning:t.StylePresets.warning().build(),info:t.StylePresets.info().build(),accent:t.StylePresets.accent().build()};exports.BANNER_VARIANTS=e.BANNER_VARIANTS,exports.Logger=e.Logger,exports.THEME_BANNERS=e.THEME_BANNERS,exports.THEME_PRESETS=e.THEME_PRESETS,exports.BUILD_PRESETS=t.BUILD_PRESETS,exports.DEFAULT_CONFIG=t.DEFAULT_CONFIG,exports.ENVIRONMENT_DETECTION=t.ENVIRONMENT_DETECTION,exports.StyleBuilder=t.StyleBuilder,exports.StylePresets=t.StylePresets,exports.detectEnvironmentPreset=t.detectEnvironmentPreset,exports.formatTimestamp=t.formatTimestamp,exports.getOptimalConfig=t.getOptimalConfig,exports.parseStackTrace=t.parseStackTrace,exports.BUILD_FORMATTERS=r.BUILD_FORMATTERS,exports.ansiBackground=r.ansiBackground,exports.ansiBold=r.ansiBold,exports.ansiColor=r.ansiColor,exports.ansiDim=r.ansiDim,exports.ansiStyle=r.ansiStyle,exports.ansiUnderline=r.ansiUnderline,exports.createANSIOutput=r.createANSIOutput,exports.createBuildOutput=r.createBuildOutput,exports.createCIOutput=r.createCIOutput,exports.createOutput=r.createOutput,exports.detectOptimalFormat=r.detectOptimalFormat,exports.formatLogLevelANSI=r.formatLogLevelANSI,exports.formatSuccessANSI=r.formatSuccessANSI,exports.sanitizeEmojis=r.sanitizeEmojis,exports.RemoteLogHandler=o.RemoteLogHandler,exports.AnalyticsLogHandler=class{handle(e,t,r,o){"error"!==e&&"critical"!==e||o.timestamp}},exports.FileLogHandler=class{filename;maxSize;fs;constructor(e="app.log",r){if(this.filename=e,this.maxSize=r,t.isNode)try{this.fs=require("fs")}catch(o){console.warn("FileLogHandler: Unable to load fs module:",o)}}handle(e,o,s,i){const a={timestamp:i.timestamp,level:e.toUpperCase(),prefix:i.prefix,message:o,args:s.slice(1).map(e=>r.safeSerialize(e)),location:i.stackInfo},l=this.formatLogLine(a);t.isNode&&this.fs?this.writeToFileNode(l):t.isBrowser?this.writeToFileLocal(l):console.log(`[FILE-LOG] ${l}`)}formatLogLine(e){let t=[e.timestamp,`[${e.level}]`,e.prefix?`[${e.prefix}]`:"",e.message].filter(Boolean).join(" ");return e.args&&e.args.length>0&&(t+=" "+e.args.map(e=>"object"==typeof e?JSON.stringify(e):String(e)).join(" ")),e.location&&(t+=` (${e.location.file}:${e.location.line}:${e.location.column})`),t}writeToFileNode(e){if(this.fs)try{if(this.maxSize)try{if(this.fs.statSync(this.filename).size>this.maxSize){const e=`${this.filename}.bak`;this.fs.renameSync(this.filename,e)}}catch(t){}this.fs.appendFileSync(this.filename,e+"\n","utf8")}catch(t){console.error("FileLogHandler: Failed to write to file:",t)}}writeToFileLocal(e){try{const t=`logger_${this.filename}`,r=localStorage.getItem(t)||"";let o=r;if(r.length>0&&(o+="\n"),o+=e,this.maxSize||o.split("\n").length>1e3){const e=o.split("\n"),t=this.maxSize?Math.floor(this.maxSize/100):1e3;e.length>t&&(o=e.slice(-t).join("\n"))}localStorage.setItem(t,o)}catch(t){console.error("FileLogHandler: Failed to write to localStorage:",t)}}getLogs(){if(t.isNode&&this.fs)try{return this.fs.readFileSync(this.filename,"utf8")}catch(e){return null}else if(t.isBrowser){const e=`logger_${this.filename}`;return localStorage.getItem(e)}return null}clearLogs(){if(t.isNode&&this.fs)try{this.fs.writeFileSync(this.filename,"","utf8")}catch(e){console.error("FileLogHandler: Failed to clear file:",e)}else if(t.isBrowser){const e=`logger_${this.filename}`;localStorage.removeItem(e)}}},exports.addHandler=e=>getLogger().addHandler(e),exports.cli=e=>getLogger().cli(e),exports.createStyle=()=>new t.StyleBuilder,exports.critical=(...e)=>getLogger().critical(...e),exports.debug=(...e)=>getLogger().debug(...e),exports.default=i,exports.error=(...e)=>getLogger().error(...e),exports.group=(e,t)=>getLogger().group(e,t),exports.groupEnd=()=>getLogger().groupEnd(),exports.info=(...e)=>getLogger().info(...e),exports.logAnimated=(e,t)=>getLogger().logAnimated(e,t),exports.logWithSVG=(e,t,r)=>getLogger().logWithSVG(e,t,r),exports.scope=e=>getLogger().scope(e),exports.setBannerType=e=>getLogger().setBannerType(e),exports.setGlobalPrefix=e=>getLogger().setGlobalPrefix(e),exports.setTheme=e=>getLogger().setTheme(e),exports.setVerbosity=e=>getLogger().setVerbosity(e),exports.showBanner=e=>getLogger().showBanner(e),exports.stylePresets=a,exports.success=(...e)=>getLogger().success(...e),exports.table=(e,t)=>getLogger().table(e,t),exports.time=e=>getLogger().time(e),exports.timeEnd=e=>getLogger().timeEnd(e),exports.trace=(...e)=>getLogger().trace(...e),exports.warn=(...e)=>getLogger().warn(...e);
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./chunks/Logger-BCfx_yCK.js"),t=require("./chunks/environment-Ba5kShbx.js"),s=require("./chunks/formatting-Blwy-f0W.js"),r=require("./chunks/RemoteLogHandler-ymkQ97xl.js"),o={maxEntries:100,ttl:3e5,enabled:!0};class StyleCache{cache=/* @__PURE__ */new Map;config;hitCount=0;missCount=0;constructor(e={}){this.config={...o,...e}}generateKey(e){return`${e.level}:${e.theme}:${e.presetName||"default"}:${e.hasPrefix}:${e.hasLocation}`}get(e){if(!this.config.enabled)return null;const t=this.generateKey(e),s=this.cache.get(t);return s?Date.now()-s.createdAt>this.config.ttl?(this.cache.delete(t),this.missCount++,null):(s.hits++,this.cache.delete(t),this.cache.set(t,s),this.hitCount++,s):(this.missCount++,null)}set(e,t,s){if(!this.config.enabled)return;const r=this.generateKey(e);if(this.cache.size>=this.config.maxEntries){const e=this.cache.keys().next().value;e&&this.cache.delete(e)}this.cache.set(r,{format:t,styles:[...s],createdAt:Date.now(),hits:0})}clear(){this.cache.clear(),this.hitCount=0,this.missCount=0}getStats(){const e=this.hitCount+this.missCount;return{size:this.cache.size,maxSize:this.config.maxEntries,hitRate:e>0?this.hitCount/e:0,hits:this.hitCount,misses:this.missCount}}setEnabled(e){this.config.enabled=e,e||this.clear()}isEnabled(){return this.config.enabled}}let i=null,n=null;function getLogger(){return n||(n=new e.Logger),n}const a=getLogger(),l={success:t.StylePresets.success().build(),error:t.StylePresets.error().build(),warning:t.StylePresets.warning().build(),info:t.StylePresets.info().build(),accent:t.StylePresets.accent().build()};exports.APILogger=e.APILogger,exports.BANNER_VARIANTS=e.BANNER_VARIANTS,exports.ComponentLogger=e.ComponentLogger,exports.ContextLogger=e.ContextLogger,exports.HookManager=e.HookManager,exports.Logger=e.Logger,exports.ScopedLogger=e.ScopedLogger,exports.SerializerRegistry=e.SerializerRegistry,exports.THEME_BANNERS=e.THEME_BANNERS,exports.THEME_PRESETS=e.THEME_PRESETS,exports.TransportManager=e.TransportManager,exports.BUILD_PRESETS=t.BUILD_PRESETS,exports.DEFAULT_CONFIG=t.DEFAULT_CONFIG,exports.ENVIRONMENT_DETECTION=t.ENVIRONMENT_DETECTION,exports.StyleBuilder=t.StyleBuilder,exports.StylePresets=t.StylePresets,exports.detectEnvironmentPreset=t.detectEnvironmentPreset,exports.formatTimestamp=t.formatTimestamp,exports.getOptimalConfig=t.getOptimalConfig,exports.parseStackTrace=t.parseStackTrace,exports.BUILD_FORMATTERS=s.BUILD_FORMATTERS,exports.ansiBackground=s.ansiBackground,exports.ansiBold=s.ansiBold,exports.ansiColor=s.ansiColor,exports.ansiDim=s.ansiDim,exports.ansiStyle=s.ansiStyle,exports.ansiUnderline=s.ansiUnderline,exports.createANSIOutput=s.createANSIOutput,exports.createBuildOutput=s.createBuildOutput,exports.createCIOutput=s.createCIOutput,exports.createOutput=s.createOutput,exports.detectOptimalFormat=s.detectOptimalFormat,exports.formatLogLevelANSI=s.formatLogLevelANSI,exports.formatSuccessANSI=s.formatSuccessANSI,exports.sanitizeEmojis=s.sanitizeEmojis,exports.RemoteLogHandler=r.RemoteLogHandler,exports.AnalyticsLogHandler=class{handle(e,t,s,r){"error"!==e&&"critical"!==e||r.timestamp}},exports.ConsoleTransport=class{constructor(e){this.options=e}name="console";write(e){const t=this.getConsoleMethod(e.level),s=e.prefix?`[${e.prefix}] `:"",r=e.location?` (${e.location.file}:${e.location.line})`:"";console[t](`[${e.level.toUpperCase()}]${s} ${e.msg}${r}`)}getConsoleMethod(e){switch(e){case"debug":default:return"log";case"info":return"info";case"warn":return"warn";case"error":case"critical":return"error"}}},exports.FileLogHandler=class{filename;maxSize;fs;constructor(e="app.log",s){if(this.filename=e,this.maxSize=s,t.isNode)try{this.fs=require("fs")}catch(r){console.warn("FileLogHandler: Unable to load fs module:",r)}}handle(e,r,o,i){const n={timestamp:i.timestamp,level:e.toUpperCase(),prefix:i.prefix,message:r,args:o.slice(1).map(e=>s.safeSerialize(e)),location:i.stackInfo},a=this.formatLogLine(n);t.isNode&&this.fs?this.writeToFileNode(a):t.isBrowser?this.writeToFileLocal(a):console.log(`[FILE-LOG] ${a}`)}formatLogLine(e){let t=[e.timestamp,`[${e.level}]`,e.prefix?`[${e.prefix}]`:"",e.message].filter(Boolean).join(" ");return e.args&&e.args.length>0&&(t+=" "+e.args.map(e=>"object"==typeof e?JSON.stringify(e):String(e)).join(" ")),e.location&&(t+=` (${e.location.file}:${e.location.line}:${e.location.column})`),t}writeToFileNode(e){if(this.fs)try{if(this.maxSize)try{if(this.fs.statSync(this.filename).size>this.maxSize){const e=`${this.filename}.bak`;this.fs.renameSync(this.filename,e)}}catch(t){}this.fs.appendFileSync(this.filename,e+"\n","utf8")}catch(t){console.error("FileLogHandler: Failed to write to file:",t)}}writeToFileLocal(e){try{const t=`logger_${this.filename}`,s=localStorage.getItem(t)||"";let r=s;if(s.length>0&&(r+="\n"),r+=e,this.maxSize||r.split("\n").length>1e3){const e=r.split("\n"),t=this.maxSize?Math.floor(this.maxSize/100):1e3;e.length>t&&(r=e.slice(-t).join("\n"))}localStorage.setItem(t,r)}catch(t){console.error("FileLogHandler: Failed to write to localStorage:",t)}}getLogs(){if(t.isNode&&this.fs)try{return this.fs.readFileSync(this.filename,"utf8")}catch(e){return null}else if(t.isBrowser){const e=`logger_${this.filename}`;return localStorage.getItem(e)}return null}clearLogs(){if(t.isNode&&this.fs)try{this.fs.writeFileSync(this.filename,"","utf8")}catch(e){console.error("FileLogHandler: Failed to clear file:",e)}else if(t.isBrowser){const e=`logger_${this.filename}`;localStorage.removeItem(e)}}},exports.FileTransport=class{name="file";buffer=[];flushTimer;options;constructor(e){this.options=e||{},this.options.flushInterval&&(this.flushTimer=setInterval(()=>this.flush(),this.options.flushInterval))}write(e){const t=JSON.stringify(e)+"\n";this.buffer.push(t),this.buffer.length>=(this.options.batchSize||100)&&this.flush()}async flush(){if(0===this.buffer.length)return;const e=this.buffer.join("");if(this.buffer=[],void 0!==globalThis.process&&"function"==typeof require)try{const t=require("fs"),s=this.options.destination||"app.log";t.appendFileSync(s,e)}catch{}}close(){this.flushTimer&&clearInterval(this.flushTimer),this.flush()}},exports.HttpTransport=class{name="http";buffer=[];flushTimer;options;constructor(e){this.options=e||{},this.options.flushInterval&&(this.flushTimer=setInterval(()=>this.flush(),this.options.flushInterval))}write(e){this.buffer.push(e),this.buffer.length>=(this.options.batchSize||50)&&this.flush()}async flush(){if(0===this.buffer.length||!this.options.url)return;const e=[...this.buffer];this.buffer=[];try{await fetch(this.options.url,{method:"POST",headers:{"Content-Type":"application/json",...this.options.headers},body:JSON.stringify({logs:e})})}catch{this.buffer.unshift(...e)}}close(){this.flushTimer&&clearInterval(this.flushTimer),this.flush()}},exports.StyleCache=StyleCache,exports.addHandler=e=>getLogger().addHandler(e),exports.addSerializer=(e,t,s)=>getLogger().addSerializer(e,t,s),exports.addTransport=e=>getLogger().addTransport(e),exports.api=e=>getLogger().api(e),exports.badge=e=>getLogger().badge(e),exports.badges=e=>getLogger().badges(e),exports.clearBadges=()=>getLogger().clearBadges(),exports.cli=e=>getLogger().cli(e),exports.closeTransports=()=>getLogger().closeTransports(),exports.component=e=>getLogger().component(e),exports.createStyle=()=>new t.StyleBuilder,exports.critical=(...e)=>getLogger().critical(...e),exports.debug=(...e)=>getLogger().debug(...e),exports.default=a,exports.error=(...e)=>getLogger().error(...e),exports.flushTransports=()=>getLogger().flushTransports(),exports.getStyleCache=function(){return i||(i=new StyleCache),i},exports.group=(e,t)=>getLogger().group(e,t),exports.groupEnd=()=>getLogger().groupEnd(),exports.info=(...e)=>getLogger().info(...e),exports.logAnimated=(e,t)=>getLogger().logAnimated(e,t),exports.logWithSVG=(e,t,s)=>getLogger().logWithSVG(e,t,s),exports.off=(e,t)=>getLogger().off(e,t),exports.on=(e,t,s)=>getLogger().on(e,t,s),exports.once=(e,t,s)=>getLogger().once(e,t,s),exports.removeSerializer=e=>getLogger().removeSerializer(e),exports.removeTransport=e=>getLogger().removeTransport(e),exports.scope=e=>getLogger().scope(e),exports.setBannerType=e=>getLogger().setBannerType(e),exports.setGlobalPrefix=e=>getLogger().setGlobalPrefix(e),exports.setTheme=e=>getLogger().setTheme(e),exports.setVerbosity=e=>getLogger().setVerbosity(e),exports.showBanner=e=>getLogger().showBanner(e),exports.stylePresets=l,exports.success=(...e)=>getLogger().success(...e),exports.table=(e,t)=>getLogger().table(e,t),exports.time=e=>getLogger().time(e),exports.timeEnd=e=>getLogger().timeEnd(e),exports.trace=(...e)=>getLogger().trace(...e),exports.use=(e,t)=>getLogger().use(e,t),exports.warn=(...e)=>getLogger().warn(...e);
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.ts","../src/handlers/AnalyticsLogHandler.ts","../src/handlers/FileLogHandler.ts"],"sourcesContent":["/**\n * @fileoverview Better Logger - Librería completa con todas las características\n * @version 0.3.0\n * @since 2024\n * \n * Punto de entrada principal que proporciona la experiencia completa de Better Logger\n * con características avanzadas incluyendo estilos CSS, soporte SVG, animaciones,\n * capacidades de exportación y logging remoto.\n * \n * @module @mks2508/better-logger\n */\n\n// Main Logger class with all features\nimport { Logger } from './Logger.js';\nimport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler\n} from './types/index.js';\n\n// Lazy singleton - se inicializa solo cuando se necesita\nlet _logger: Logger | null = null;\n\nfunction getLogger(): Logger {\n if (!_logger) {\n _logger = new Logger();\n }\n return _logger;\n}\n\n/**\n * Clase principal Logger con conjunto completo de características\n * \n * @example\n * // Importación y uso básico\n * import { Logger } from '@mks2508/better-logger';\n * \n * const logger = new Logger();\n * logger.preset('cyberpunk'); // Aplicar preset completo\n * logger.info('¡Hola mundo!');\n * \n * @example\n * // Logger con scope para componentes\n * const auth = logger.component('Auth');\n * auth.info('Usuario autenticando...');\n * auth.success('Login exitoso');\n * \n * @example\n * // Logger para APIs con badges\n * const api = logger.api('GraphQL');\n * api.badges(['v2', 'cached']).info('Query ejecutada');\n * \n * @since 0.3.0\n */\nexport { Logger };\n\n/**\n * Instancia singleton del logger lista para usar\n * @default\n * \n * @example\n * // Uso directo sin crear instancia\n * import logger from '@mks2508/better-logger';\n * \n * logger.info('Aplicación iniciada');\n * logger.success('Conexión establecida');\n * logger.warn('Memoria al 80%');\n * logger.error('Fallo en conexión');\n */\nexport default getLogger();\n\n/**\n * Métodos de logging individuales (enlazados al singleton)\n * \n * @example\n * // Importar solo los métodos necesarios\n * import { info, error, success } from '@mks2508/better-logger';\n * \n * info('Proceso iniciado');\n * success('✓ Completado exitosamente');\n * error('Error:', errorDetails);\n * \n * @since 0.3.0\n */\nexport const debug = (...args: any[]) => getLogger().debug(...args);\nexport const info = (...args: any[]) => getLogger().info(...args);\nexport const warn = (...args: any[]) => getLogger().warn(...args);\nexport const error = (...args: any[]) => getLogger().error(...args);\nexport const success = (...args: any[]) => getLogger().success(...args);\nexport const critical = (...args: any[]) => getLogger().critical(...args);\nexport const trace = (...args: any[]) => getLogger().trace(...args);\nexport const table = (data: any, columns?: string[]) => getLogger().table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => getLogger().group(label, collapsed);\nexport const groupEnd = () => getLogger().groupEnd();\nexport const time = (label: string) => getLogger().time(label);\nexport const timeEnd = (label: string) => getLogger().timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => getLogger().setGlobalPrefix(prefix);\nexport const scope = (prefix: string) => getLogger().scope(prefix);\nexport const setVerbosity = (level: Verbosity) => getLogger().setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => getLogger().addHandler(handler);\nexport const setTheme = (theme: ThemeVariant) => getLogger().setTheme(theme);\nexport const setBannerType = (bannerType: BannerType) => getLogger().setBannerType(bannerType);\nexport const showBanner = (bannerType?: BannerType) => getLogger().showBanner(bannerType);\nexport const logWithSVG = (message: string, svgContent?: string, options?: StyleOptions) => \n getLogger().logWithSVG(message, svgContent, options);\nexport const logAnimated = (message: string, duration?: number) => \n getLogger().logAnimated(message, duration);\nexport const cli = (command: string) => getLogger().cli(command);\n\n// Type exports\nexport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler,\n LoggerConfig,\n LogMetadata,\n StackInfo,\n TimerEntry,\n OutputFormat\n} from './types/index.js';\n\n// Styling utilities\nexport { \n StyleBuilder,\n StylePresets,\n THEME_PRESETS,\n THEME_BANNERS,\n BANNER_VARIANTS\n} from './styling/index.js';\n\n// Handler exports\nexport {\n FileLogHandler,\n RemoteLogHandler,\n AnalyticsLogHandler\n} from './handlers/index.js';\n\n// Constants\nexport { DEFAULT_CONFIG } from './constants.js';\n\n// Utility exports\nexport {\n parseStackTrace,\n formatTimestamp,\n detectOptimalFormat,\n createOutput,\n createANSIOutput,\n createBuildOutput,\n createCIOutput\n} from './utils/index.js';\n\n// ANSI color utilities\nexport {\n ansiStyle,\n ansiColor,\n ansiBackground,\n ansiBold,\n ansiDim,\n ansiUnderline,\n formatLogLevelANSI,\n formatSuccessANSI,\n BUILD_FORMATTERS,\n sanitizeEmojis\n} from './utils/ansi-colors.js';\n\n// Environment detection and presets\nexport {\n BUILD_PRESETS,\n ENVIRONMENT_DETECTION,\n detectEnvironmentPreset,\n getOptimalConfig\n} from './constants.js';\n\n/**\n * Utilidades de estilo para crear estilos personalizados de consola\n * \n * @example\n * // Crear estilo personalizado\n * import { createStyle, stylePresets } from '@mks2508/better-logger';\n * \n * const miEstilo = createStyle()\n * .bg('linear-gradient(45deg, #ff6b6b, #feca57)')\n * .color('white')\n * .padding('10px')\n * .rounded('8px')\n * .bold()\n * .build();\n * \n * console.log('%cMensaje estilizado', miEstilo);\n * \n * @example\n * // Usar presets predefinidos\n * console.log('%cÉxito!', stylePresets.success);\n * console.log('%cError!', stylePresets.error);\n * \n * @since 0.3.0\n */\nimport { StyleBuilder, StylePresets } from './styling/index.js';\n\n/**\n * Crea una nueva instancia de StyleBuilder para estilos personalizados de consola\n * \n * @returns {StyleBuilder} Constructor de estilos encadenable\n * \n * @example\n * const estilo = createStyle()\n * .gradient('#667eea', '#764ba2')\n * .color('white')\n * .padding('8px 16px')\n * .rounded('4px')\n * .shadow('0 2px 4px rgba(0,0,0,0.2)')\n * .build();\n * \n * @since 0.3.0\n */\nexport const createStyle = () => new StyleBuilder();\n\n/**\n * Presets de estilo predefinidos para casos de uso comunes\n * \n * @constant {Object} stylePresets\n * \n * @example\n * console.log('%cOperación exitosa', stylePresets.success);\n * console.log('%cAdvertencia', stylePresets.warning);\n * console.log('%cError crítico', stylePresets.error);\n * console.log('%cInformación', stylePresets.info);\n * console.log('%cDestacado', stylePresets.accent);\n * \n * @since 0.3.0\n */\nexport const stylePresets = {\n success: StylePresets.success().build(),\n error: StylePresets.error().build(),\n warning: StylePresets.warning().build(),\n info: StylePresets.info().build(),\n accent: StylePresets.accent().build(),\n};","/**\n * @fileoverview Analytics log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\n\n/**\n * Example custom handler for analytics demonstration\n */\nexport class AnalyticsLogHandler implements ILogHandler {\n handle(level: LogLevel, message: string, _args: any[], metadata: LogMetadata): void {\n // In a real implementation, this could send analytics data\n if (level === 'error' || level === 'critical') {\n // Track errors for analytics\n console.debug('Analytics: Error tracked', { \n level, \n message, \n timestamp: metadata.timestamp \n });\n }\n }\n}","/**\n * @fileoverview File-based log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\nimport { isNode, isBrowser } from '../utils/environment.js';\nimport { safeSerialize } from '../utils/formatting.js';\n\n/**\n * Universal file-based log handler for persistent logging\n * Works in both Node.js (real files) and browser (localStorage)\n */\nexport class FileLogHandler implements ILogHandler {\n private filename: string;\n private maxSize?: number;\n private fs?: any; // Node.js fs module\n\n constructor(filename: string = 'app.log', maxSize?: number) {\n this.filename = filename;\n this.maxSize = maxSize;\n \n // Load Node.js fs module if in Node environment\n if (isNode) {\n try {\n this.fs = require('fs');\n } catch (error) {\n console.warn('FileLogHandler: Unable to load fs module:', error);\n }\n }\n }\n\n handle(level: LogLevel, message: string, args: any[], metadata: LogMetadata): void {\n const logEntry = {\n timestamp: metadata.timestamp,\n level: level.toUpperCase(),\n prefix: metadata.prefix,\n message,\n args: args.slice(1).map(arg => safeSerialize(arg)),\n location: metadata.stackInfo,\n };\n\n const logLine = this.formatLogLine(logEntry);\n\n if (isNode && this.fs) {\n this.writeToFileNode(logLine);\n } else if (isBrowser) {\n this.writeToFileLocal(logLine);\n } else {\n // Fallback - just console output\n console.log(`[FILE-LOG] ${logLine}`);\n }\n }\n\n /**\n * Format log entry as a single line for file storage\n */\n private formatLogLine(entry: any): string {\n const parts = [\n entry.timestamp,\n `[${entry.level}]`,\n entry.prefix ? `[${entry.prefix}]` : '',\n entry.message\n ].filter(Boolean);\n\n let line = parts.join(' ');\n \n if (entry.args && entry.args.length > 0) {\n line += ' ' + entry.args.map((arg: any) => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n }\n \n if (entry.location) {\n line += ` (${entry.location.file}:${entry.location.line}:${entry.location.column})`;\n }\n \n return line;\n }\n\n /**\n * Write to actual file in Node.js environment\n */\n private writeToFileNode(logLine: string): void {\n if (!this.fs) return;\n\n try {\n // Check file size if maxSize is set\n if (this.maxSize) {\n try {\n const stats = this.fs.statSync(this.filename);\n if (stats.size > this.maxSize) {\n // Simple rotation: backup current file and start fresh\n const backupName = `${this.filename}.bak`;\n this.fs.renameSync(this.filename, backupName);\n }\n } catch (error) {\n // File doesn't exist yet, that's fine\n }\n }\n\n // Append to file\n this.fs.appendFileSync(this.filename, logLine + '\\n', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to write to file:', error);\n }\n }\n\n /**\n * Write to localStorage in browser environment\n */\n private writeToFileLocal(logLine: string): void {\n try {\n const storageKey = `logger_${this.filename}`;\n const existingLogs = localStorage.getItem(storageKey) || '';\n \n let newLogs = existingLogs;\n if (existingLogs.length > 0) {\n newLogs += '\\n';\n }\n newLogs += logLine;\n \n // Simple size management - keep last 1000 lines max\n if (this.maxSize || newLogs.split('\\n').length > 1000) {\n const lines = newLogs.split('\\n');\n const maxLines = this.maxSize ? Math.floor(this.maxSize / 100) : 1000;\n if (lines.length > maxLines) {\n newLogs = lines.slice(-maxLines).join('\\n');\n }\n }\n \n localStorage.setItem(storageKey, newLogs);\n } catch (error) {\n console.error('FileLogHandler: Failed to write to localStorage:', error);\n }\n }\n\n /**\n * Get stored logs (useful for debugging)\n */\n getLogs(): string | null {\n if (isNode && this.fs) {\n try {\n return this.fs.readFileSync(this.filename, 'utf8');\n } catch (error) {\n return null;\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n return localStorage.getItem(storageKey);\n }\n return null;\n }\n\n /**\n * Clear stored logs\n */\n clearLogs(): void {\n if (isNode && this.fs) {\n try {\n this.fs.writeFileSync(this.filename, '', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to clear file:', error);\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n localStorage.removeItem(storageKey);\n }\n }\n}"],"names":["_logger","getLogger","Logger","index","stylePresets","success","StylePresets","build","error","warning","info","accent","handle","level","message","_args","metadata","timestamp","filename","maxSize","fs","constructor","this","isNode","require","console","warn","args","logEntry","toUpperCase","prefix","slice","map","arg","safeSerialize","location","stackInfo","logLine","formatLogLine","writeToFileNode","isBrowser","writeToFileLocal","log","entry","line","filter","Boolean","join","length","JSON","stringify","String","file","column","statSync","size","backupName","renameSync","appendFileSync","storageKey","existingLogs","localStorage","getItem","newLogs","split","lines","maxLines","Math","floor","setItem","getLogs","readFileSync","clearLogs","writeFileSync","removeItem","handler","addHandler","command","cli","StyleBuilder","critical","debug","label","collapsed","group","groupEnd","duration","logAnimated","svgContent","options","logWithSVG","scope","bannerType","setBannerType","setGlobalPrefix","theme","setTheme","setVerbosity","showBanner","data","columns","table","time","timeEnd","trace"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/styling/StyleCache.ts","../src/index.ts","../src/handlers/AnalyticsLogHandler.ts","../src/transports/ConsoleTransport.ts","../src/handlers/FileLogHandler.ts","../src/transports/FileTransport.ts","../src/transports/HttpTransport.ts"],"sourcesContent":["import type { LogLevel, DevToolsTheme } from '../types/core.js';\n\ninterface CacheKey {\n level: LogLevel | 'success';\n theme: DevToolsTheme;\n presetName?: string;\n hasPrefix: boolean;\n hasLocation: boolean;\n}\n\ninterface CacheEntry {\n styles: string[];\n format: string;\n createdAt: number;\n hits: number;\n}\n\nexport interface StyleCacheConfig {\n maxEntries?: number;\n ttl?: number;\n enabled?: boolean;\n}\n\nconst DEFAULT_CONFIG: Required<StyleCacheConfig> = {\n maxEntries: 100,\n ttl: 5 * 60 * 1000,\n enabled: true\n};\n\nexport class StyleCache {\n private cache: Map<string, CacheEntry> = new Map();\n private config: Required<StyleCacheConfig>;\n private hitCount = 0;\n private missCount = 0;\n\n constructor(config: StyleCacheConfig = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n private generateKey(key: CacheKey): string {\n return `${key.level}:${key.theme}:${key.presetName || 'default'}:${key.hasPrefix}:${key.hasLocation}`;\n }\n\n get(key: CacheKey): CacheEntry | null {\n if (!this.config.enabled) return null;\n\n const cacheKey = this.generateKey(key);\n const entry = this.cache.get(cacheKey);\n\n if (!entry) {\n this.missCount++;\n return null;\n }\n\n if (Date.now() - entry.createdAt > this.config.ttl) {\n this.cache.delete(cacheKey);\n this.missCount++;\n return null;\n }\n\n entry.hits++;\n this.cache.delete(cacheKey);\n this.cache.set(cacheKey, entry);\n this.hitCount++;\n\n return entry;\n }\n\n set(key: CacheKey, format: string, styles: string[]): void {\n if (!this.config.enabled) return;\n\n const cacheKey = this.generateKey(key);\n\n if (this.cache.size >= this.config.maxEntries) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(cacheKey, {\n format,\n styles: [...styles],\n createdAt: Date.now(),\n hits: 0\n });\n }\n\n clear(): void {\n this.cache.clear();\n this.hitCount = 0;\n this.missCount = 0;\n }\n\n getStats(): {\n size: number;\n maxSize: number;\n hitRate: number;\n hits: number;\n misses: number;\n } {\n const total = this.hitCount + this.missCount;\n return {\n size: this.cache.size,\n maxSize: this.config.maxEntries,\n hitRate: total > 0 ? this.hitCount / total : 0,\n hits: this.hitCount,\n misses: this.missCount\n };\n }\n\n setEnabled(enabled: boolean): void {\n this.config.enabled = enabled;\n if (!enabled) {\n this.clear();\n }\n }\n\n isEnabled(): boolean {\n return this.config.enabled;\n }\n}\n\nlet _styleCache: StyleCache | null = null;\n\nexport function getStyleCache(): StyleCache {\n if (!_styleCache) {\n _styleCache = new StyleCache();\n }\n return _styleCache;\n}\n","/**\n * @fileoverview Better Logger - Librería completa con todas las características\n * @version 0.3.0\n * @since 2024\n * \n * Punto de entrada principal que proporciona la experiencia completa de Better Logger\n * con características avanzadas incluyendo estilos CSS, soporte SVG, animaciones,\n * capacidades de exportación y logging remoto.\n * \n * @module @mks2508/better-logger\n */\n\n// Main Logger class with all features\nimport { Logger } from './Logger.js';\nimport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler\n} from './types/index.js';\n\n// Lazy singleton - se inicializa solo cuando se necesita\nlet _logger: Logger | null = null;\n\nfunction getLogger(): Logger {\n if (!_logger) {\n _logger = new Logger();\n }\n return _logger;\n}\n\n/**\n * Clase principal Logger con conjunto completo de características\n * \n * @example\n * // Importación y uso básico\n * import { Logger } from '@mks2508/better-logger';\n * \n * const logger = new Logger();\n * logger.preset('cyberpunk'); // Aplicar preset completo\n * logger.info('¡Hola mundo!');\n * \n * @example\n * // Logger con scope para componentes\n * const auth = logger.component('Auth');\n * auth.info('Usuario autenticando...');\n * auth.success('Login exitoso');\n * \n * @example\n * // Logger para APIs con badges\n * const api = logger.api('GraphQL');\n * api.badges(['v2', 'cached']).info('Query ejecutada');\n * \n * @since 0.3.0\n */\nexport { Logger };\n\n/**\n * Instancia singleton del logger lista para usar\n * @default\n * \n * @example\n * // Uso directo sin crear instancia\n * import logger from '@mks2508/better-logger';\n * \n * logger.info('Aplicación iniciada');\n * logger.success('Conexión establecida');\n * logger.warn('Memoria al 80%');\n * logger.error('Fallo en conexión');\n */\nexport default getLogger();\n\n/**\n * Métodos de logging individuales (enlazados al singleton)\n * \n * @example\n * // Importar solo los métodos necesarios\n * import { info, error, success } from '@mks2508/better-logger';\n * \n * info('Proceso iniciado');\n * success('✓ Completado exitosamente');\n * error('Error:', errorDetails);\n * \n * @since 0.3.0\n */\nexport const debug = (...args: any[]) => getLogger().debug(...args);\nexport const info = (...args: any[]) => getLogger().info(...args);\nexport const warn = (...args: any[]) => getLogger().warn(...args);\nexport const error = (...args: any[]) => getLogger().error(...args);\nexport const success = (...args: any[]) => getLogger().success(...args);\nexport const critical = (...args: any[]) => getLogger().critical(...args);\nexport const trace = (...args: any[]) => getLogger().trace(...args);\nexport const table = (data: any, columns?: string[]) => getLogger().table(data, columns);\nexport const group = (label: string, collapsed?: boolean) => getLogger().group(label, collapsed);\nexport const groupEnd = () => getLogger().groupEnd();\nexport const time = (label: string) => getLogger().time(label);\nexport const timeEnd = (label: string) => getLogger().timeEnd(label);\nexport const setGlobalPrefix = (prefix: string) => getLogger().setGlobalPrefix(prefix);\nexport const scope = (name: string) => getLogger().scope(name);\nexport const component = (name: string) => getLogger().component(name);\nexport const api = (name: string) => getLogger().api(name);\nexport const badges = (badgeList: string[]) => getLogger().badges(badgeList);\nexport const badge = (badgeName: string) => getLogger().badge(badgeName);\nexport const clearBadges = () => getLogger().clearBadges();\nexport const setVerbosity = (level: Verbosity) => getLogger().setVerbosity(level);\nexport const addHandler = (handler: ILogHandler) => getLogger().addHandler(handler);\nexport const setTheme = (theme: ThemeVariant) => getLogger().setTheme(theme);\nexport const setBannerType = (bannerType: BannerType) => getLogger().setBannerType(bannerType);\nexport const showBanner = (bannerType?: BannerType) => getLogger().showBanner(bannerType);\nexport const logWithSVG = (message: string, svgContent?: string, options?: StyleOptions) => \n getLogger().logWithSVG(message, svgContent, options);\nexport const logAnimated = (message: string, duration?: number) => \n getLogger().logAnimated(message, duration);\nexport const cli = (command: string) => getLogger().cli(command);\n\n// Type exports\nexport type {\n LogLevel,\n Verbosity,\n ThemeVariant,\n BannerType,\n StyleOptions,\n ILogHandler,\n LoggerConfig,\n LogMetadata,\n StackInfo,\n TimerEntry,\n TimerResult,\n OutputFormat,\n IScopedLogger,\n IAPILogger,\n IComponentLogger,\n Bindings,\n SerializerFn,\n SerializerContext,\n SerializerConfig,\n ISerializerRegistry,\n HookLogEntry,\n HookEvent,\n HookCallback,\n MiddlewareFn,\n IHookManager,\n TransportRecord,\n TransportOptions,\n TransportTarget,\n ITransport,\n StyleCacheConfig\n} from './types/index.js';\n\n// Styling utilities\nexport { \n StyleBuilder,\n StylePresets,\n THEME_PRESETS,\n THEME_BANNERS,\n BANNER_VARIANTS\n} from './styling/index.js';\n\n// Handler exports\nexport {\n FileLogHandler,\n RemoteLogHandler,\n AnalyticsLogHandler\n} from './handlers/index.js';\n\n// Serializers\nexport { SerializerRegistry } from './serializers/index.js';\n\n// Hooks & Middleware\nexport { HookManager } from './hooks/index.js';\n\n// Transports\nexport {\n TransportManager,\n ConsoleTransport,\n FileTransport,\n HttpTransport\n} from './transports/index.js';\n\n// Style Cache\nexport { StyleCache, getStyleCache } from './styling/StyleCache.js';\n\n// Enterprise feature function exports\nimport type { SerializerFn, HookEvent, HookCallback, MiddlewareFn, TransportTarget } from './types/index.js';\nexport const addSerializer = <T>(\n type: new (...args: any[]) => T,\n serializer: SerializerFn<T>,\n priority?: number\n) => getLogger().addSerializer(type, serializer, priority);\nexport const removeSerializer = <T>(type: new (...args: any[]) => T) =>\n getLogger().removeSerializer(type);\nexport const on = (event: HookEvent, callback: HookCallback, priority?: number) =>\n getLogger().on(event, callback, priority);\nexport const once = (event: HookEvent, callback: HookCallback, priority?: number) =>\n getLogger().once(event, callback, priority);\nexport const off = (event: HookEvent, callback: HookCallback) =>\n getLogger().off(event, callback);\nexport const use = (middleware: MiddlewareFn, priority?: number) =>\n getLogger().use(middleware, priority);\nexport const addTransport = (target: TransportTarget) =>\n getLogger().addTransport(target);\nexport const removeTransport = (id: string) =>\n getLogger().removeTransport(id);\nexport const flushTransports = () =>\n getLogger().flushTransports();\nexport const closeTransports = () =>\n getLogger().closeTransports();\n\n// Scoped loggers\nexport {\n ScopedLogger,\n APILogger,\n ComponentLogger,\n ContextLogger\n} from './ScopedLogger.js';\n\n// Constants\nexport { DEFAULT_CONFIG } from './constants.js';\n\n// Utility exports\nexport {\n parseStackTrace,\n formatTimestamp,\n detectOptimalFormat,\n createOutput,\n createANSIOutput,\n createBuildOutput,\n createCIOutput\n} from './utils/index.js';\n\n// ANSI color utilities\nexport {\n ansiStyle,\n ansiColor,\n ansiBackground,\n ansiBold,\n ansiDim,\n ansiUnderline,\n formatLogLevelANSI,\n formatSuccessANSI,\n BUILD_FORMATTERS,\n sanitizeEmojis\n} from './utils/ansi-colors.js';\n\n// Environment detection and presets\nexport {\n BUILD_PRESETS,\n ENVIRONMENT_DETECTION,\n detectEnvironmentPreset,\n getOptimalConfig\n} from './constants.js';\n\n/**\n * Utilidades de estilo para crear estilos personalizados de consola\n * \n * @example\n * // Crear estilo personalizado\n * import { createStyle, stylePresets } from '@mks2508/better-logger';\n * \n * const miEstilo = createStyle()\n * .bg('linear-gradient(45deg, #ff6b6b, #feca57)')\n * .color('white')\n * .padding('10px')\n * .rounded('8px')\n * .bold()\n * .build();\n * \n * console.log('%cMensaje estilizado', miEstilo);\n * \n * @example\n * // Usar presets predefinidos\n * console.log('%cÉxito!', stylePresets.success);\n * console.log('%cError!', stylePresets.error);\n * \n * @since 0.3.0\n */\nimport { StyleBuilder, StylePresets } from './styling/index.js';\n\n/**\n * Crea una nueva instancia de StyleBuilder para estilos personalizados de consola\n * \n * @returns {StyleBuilder} Constructor de estilos encadenable\n * \n * @example\n * const estilo = createStyle()\n * .gradient('#667eea', '#764ba2')\n * .color('white')\n * .padding('8px 16px')\n * .rounded('4px')\n * .shadow('0 2px 4px rgba(0,0,0,0.2)')\n * .build();\n * \n * @since 0.3.0\n */\nexport const createStyle = () => new StyleBuilder();\n\n/**\n * Presets de estilo predefinidos para casos de uso comunes\n * \n * @constant {Object} stylePresets\n * \n * @example\n * console.log('%cOperación exitosa', stylePresets.success);\n * console.log('%cAdvertencia', stylePresets.warning);\n * console.log('%cError crítico', stylePresets.error);\n * console.log('%cInformación', stylePresets.info);\n * console.log('%cDestacado', stylePresets.accent);\n * \n * @since 0.3.0\n */\nexport const stylePresets = {\n success: StylePresets.success().build(),\n error: StylePresets.error().build(),\n warning: StylePresets.warning().build(),\n info: StylePresets.info().build(),\n accent: StylePresets.accent().build(),\n};","/**\n * @fileoverview Analytics log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\n\n/**\n * Example custom handler for analytics demonstration\n */\nexport class AnalyticsLogHandler implements ILogHandler {\n handle(level: LogLevel, message: string, _args: any[], metadata: LogMetadata): void {\n // In a real implementation, this could send analytics data\n if (level === 'error' || level === 'critical') {\n // Track errors for analytics\n console.debug('Analytics: Error tracked', { \n level, \n message, \n timestamp: metadata.timestamp \n });\n }\n }\n}","import type { TransportRecord, TransportOptions, ITransport, LogLevel } from '../types/index.js';\n\nexport class ConsoleTransport implements ITransport {\n readonly name = 'console';\n\n constructor(private options?: TransportOptions) {}\n\n write(record: TransportRecord): void {\n const method = this.getConsoleMethod(record.level);\n const prefix = record.prefix ? `[${record.prefix}] ` : '';\n const location = record.location\n ? ` (${record.location.file}:${record.location.line})`\n : '';\n\n console[method](`[${record.level.toUpperCase()}]${prefix} ${record.msg}${location}`);\n }\n\n private getConsoleMethod(level: LogLevel): 'log' | 'info' | 'warn' | 'error' {\n switch (level) {\n case 'debug': return 'log';\n case 'info': return 'info';\n case 'warn': return 'warn';\n case 'error':\n case 'critical': return 'error';\n default: return 'log';\n }\n }\n}\n","/**\n * @fileoverview File-based log handler for Advanced Logger\n */\n\nimport type { ILogHandler, LogLevel, LogMetadata } from '../types/index.js';\nimport { isNode, isBrowser } from '../utils/environment.js';\nimport { safeSerialize } from '../utils/formatting.js';\n\n/**\n * Universal file-based log handler for persistent logging\n * Works in both Node.js (real files) and browser (localStorage)\n */\nexport class FileLogHandler implements ILogHandler {\n private filename: string;\n private maxSize?: number;\n private fs?: any; // Node.js fs module\n\n constructor(filename: string = 'app.log', maxSize?: number) {\n this.filename = filename;\n this.maxSize = maxSize;\n \n // Load Node.js fs module if in Node environment\n if (isNode) {\n try {\n this.fs = require('fs');\n } catch (error) {\n console.warn('FileLogHandler: Unable to load fs module:', error);\n }\n }\n }\n\n handle(level: LogLevel, message: string, args: any[], metadata: LogMetadata): void {\n const logEntry = {\n timestamp: metadata.timestamp,\n level: level.toUpperCase(),\n prefix: metadata.prefix,\n message,\n args: args.slice(1).map(arg => safeSerialize(arg)),\n location: metadata.stackInfo,\n };\n\n const logLine = this.formatLogLine(logEntry);\n\n if (isNode && this.fs) {\n this.writeToFileNode(logLine);\n } else if (isBrowser) {\n this.writeToFileLocal(logLine);\n } else {\n // Fallback - just console output\n console.log(`[FILE-LOG] ${logLine}`);\n }\n }\n\n /**\n * Format log entry as a single line for file storage\n */\n private formatLogLine(entry: any): string {\n const parts = [\n entry.timestamp,\n `[${entry.level}]`,\n entry.prefix ? `[${entry.prefix}]` : '',\n entry.message\n ].filter(Boolean);\n\n let line = parts.join(' ');\n \n if (entry.args && entry.args.length > 0) {\n line += ' ' + entry.args.map((arg: any) => \n typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n ).join(' ');\n }\n \n if (entry.location) {\n line += ` (${entry.location.file}:${entry.location.line}:${entry.location.column})`;\n }\n \n return line;\n }\n\n /**\n * Write to actual file in Node.js environment\n */\n private writeToFileNode(logLine: string): void {\n if (!this.fs) return;\n\n try {\n // Check file size if maxSize is set\n if (this.maxSize) {\n try {\n const stats = this.fs.statSync(this.filename);\n if (stats.size > this.maxSize) {\n // Simple rotation: backup current file and start fresh\n const backupName = `${this.filename}.bak`;\n this.fs.renameSync(this.filename, backupName);\n }\n } catch (error) {\n // File doesn't exist yet, that's fine\n }\n }\n\n // Append to file\n this.fs.appendFileSync(this.filename, logLine + '\\n', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to write to file:', error);\n }\n }\n\n /**\n * Write to localStorage in browser environment\n */\n private writeToFileLocal(logLine: string): void {\n try {\n const storageKey = `logger_${this.filename}`;\n const existingLogs = localStorage.getItem(storageKey) || '';\n \n let newLogs = existingLogs;\n if (existingLogs.length > 0) {\n newLogs += '\\n';\n }\n newLogs += logLine;\n \n // Simple size management - keep last 1000 lines max\n if (this.maxSize || newLogs.split('\\n').length > 1000) {\n const lines = newLogs.split('\\n');\n const maxLines = this.maxSize ? Math.floor(this.maxSize / 100) : 1000;\n if (lines.length > maxLines) {\n newLogs = lines.slice(-maxLines).join('\\n');\n }\n }\n \n localStorage.setItem(storageKey, newLogs);\n } catch (error) {\n console.error('FileLogHandler: Failed to write to localStorage:', error);\n }\n }\n\n /**\n * Get stored logs (useful for debugging)\n */\n getLogs(): string | null {\n if (isNode && this.fs) {\n try {\n return this.fs.readFileSync(this.filename, 'utf8');\n } catch (error) {\n return null;\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n return localStorage.getItem(storageKey);\n }\n return null;\n }\n\n /**\n * Clear stored logs\n */\n clearLogs(): void {\n if (isNode && this.fs) {\n try {\n this.fs.writeFileSync(this.filename, '', 'utf8');\n } catch (error) {\n console.error('FileLogHandler: Failed to clear file:', error);\n }\n } else if (isBrowser) {\n const storageKey = `logger_${this.filename}`;\n localStorage.removeItem(storageKey);\n }\n }\n}","import type { TransportRecord, TransportOptions, ITransport } from '../types/index.js';\n\nexport interface FileTransportOptions extends TransportOptions {\n destination?: string;\n}\n\nexport class FileTransport implements ITransport {\n readonly name = 'file';\n private buffer: string[] = [];\n private flushTimer?: ReturnType<typeof setInterval>;\n private options: FileTransportOptions;\n\n constructor(options?: FileTransportOptions) {\n this.options = options || {};\n\n if (this.options.flushInterval) {\n this.flushTimer = setInterval(() => this.flush(), this.options.flushInterval);\n }\n }\n\n write(record: TransportRecord): void {\n const line = JSON.stringify(record) + '\\n';\n this.buffer.push(line);\n\n if (this.buffer.length >= (this.options.batchSize || 100)) {\n this.flush();\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0) return;\n\n const lines = this.buffer.join('');\n this.buffer = [];\n\n if (typeof globalThis.process !== 'undefined' && typeof require === 'function') {\n try {\n const fs = require('fs');\n const dest = this.options.destination || 'app.log';\n fs.appendFileSync(dest, lines);\n } catch {\n // Silent fail in browser or if fs not available\n }\n }\n }\n\n close(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n }\n this.flush();\n }\n}\n","import type { TransportRecord, TransportOptions, ITransport } from '../types/index.js';\n\nexport interface HttpTransportOptions extends TransportOptions {\n url?: string;\n headers?: Record<string, string>;\n}\n\nexport class HttpTransport implements ITransport {\n readonly name = 'http';\n private buffer: TransportRecord[] = [];\n private flushTimer?: ReturnType<typeof setInterval>;\n private options: HttpTransportOptions;\n\n constructor(options?: HttpTransportOptions) {\n this.options = options || {};\n\n if (this.options.flushInterval) {\n this.flushTimer = setInterval(() => this.flush(), this.options.flushInterval);\n }\n }\n\n write(record: TransportRecord): void {\n this.buffer.push(record);\n\n if (this.buffer.length >= (this.options.batchSize || 50)) {\n this.flush();\n }\n }\n\n async flush(): Promise<void> {\n if (this.buffer.length === 0 || !this.options.url) return;\n\n const records = [...this.buffer];\n this.buffer = [];\n\n try {\n await fetch(this.options.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...this.options.headers\n },\n body: JSON.stringify({ logs: records })\n });\n } catch {\n this.buffer.unshift(...records);\n }\n }\n\n close(): void {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n }\n this.flush();\n }\n}\n"],"names":["DEFAULT_CONFIG","maxEntries","ttl","enabled","StyleCache","cache","Map","config","hitCount","missCount","constructor","this","generateKey","key","level","theme","presetName","hasPrefix","hasLocation","get","cacheKey","entry","Date","now","createdAt","delete","hits","set","format","styles","size","firstKey","keys","next","value","clear","getStats","total","maxSize","hitRate","misses","setEnabled","isEnabled","_styleCache","_logger","getLogger","Logger","index","stylePresets","success","StylePresets","build","error","warning","info","accent","handle","message","_args","metadata","timestamp","options","name","write","record","method","getConsoleMethod","prefix","location","file","line","console","toUpperCase","msg","filename","fs","isNode","require","warn","args","logEntry","slice","map","arg","safeSerialize","stackInfo","logLine","formatLogLine","writeToFileNode","isBrowser","writeToFileLocal","log","filter","Boolean","join","length","JSON","stringify","String","column","statSync","backupName","renameSync","appendFileSync","storageKey","existingLogs","localStorage","getItem","newLogs","split","lines","maxLines","Math","floor","setItem","getLogs","readFileSync","clearLogs","writeFileSync","removeItem","buffer","flushTimer","flushInterval","setInterval","flush","push","batchSize","globalThis","process","dest","destination","close","clearInterval","url","records","fetch","headers","body","logs","unshift","handler","addHandler","type","serializer","priority","addSerializer","target","addTransport","api","badgeName","badge","badgeList","badges","clearBadges","command","cli","closeTransports","component","StyleBuilder","critical","debug","flushTransports","label","collapsed","group","groupEnd","duration","logAnimated","svgContent","logWithSVG","event","callback","off","on","once","removeSerializer","id","removeTransport","scope","bannerType","setBannerType","setGlobalPrefix","setTheme","setVerbosity","showBanner","data","columns","table","time","timeEnd","trace","middleware","use"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Logger } from './Logger.js';
2
- import { Verbosity, ThemeVariant, BannerType, StyleOptions, ILogHandler } from './types/index.js';
2
+ import { Verbosity, ThemeVariant, BannerType, StyleOptions, ILogHandler, SerializerFn, HookEvent, HookCallback, MiddlewareFn, TransportTarget } from './types/index.js';
3
3
  import { StyleBuilder } from './styling/index.js';
4
4
  /**
5
5
  * Clase principal Logger con conjunto completo de características
@@ -67,7 +67,12 @@ export declare const groupEnd: () => void;
67
67
  export declare const time: (label: string) => void;
68
68
  export declare const timeEnd: (label: string) => void;
69
69
  export declare const setGlobalPrefix: (prefix: string) => void;
70
- export declare const scope: (prefix: string) => any;
70
+ export declare const scope: (name: string) => import('./ScopedLogger.js').ScopedLogger;
71
+ export declare const component: (name: string) => import('./ScopedLogger.js').ComponentLogger;
72
+ export declare const api: (name: string) => import('./ScopedLogger.js').APILogger;
73
+ export declare const badges: (badgeList: string[]) => Logger;
74
+ export declare const badge: (badgeName: string) => Logger;
75
+ export declare const clearBadges: () => Logger;
71
76
  export declare const setVerbosity: (level: Verbosity) => void;
72
77
  export declare const addHandler: (handler: ILogHandler) => void;
73
78
  export declare const setTheme: (theme: ThemeVariant) => void;
@@ -76,9 +81,24 @@ export declare const showBanner: (bannerType?: BannerType) => void;
76
81
  export declare const logWithSVG: (message: string, svgContent?: string, options?: StyleOptions) => void;
77
82
  export declare const logAnimated: (message: string, duration?: number) => void;
78
83
  export declare const cli: (command: string) => Promise<void>;
79
- export type { LogLevel, Verbosity, ThemeVariant, BannerType, StyleOptions, ILogHandler, LoggerConfig, LogMetadata, StackInfo, TimerEntry, OutputFormat } from './types/index.js';
84
+ export type { LogLevel, Verbosity, ThemeVariant, BannerType, StyleOptions, ILogHandler, LoggerConfig, LogMetadata, StackInfo, TimerEntry, TimerResult, OutputFormat, IScopedLogger, IAPILogger, IComponentLogger, Bindings, SerializerFn, SerializerContext, SerializerConfig, ISerializerRegistry, HookLogEntry, HookEvent, HookCallback, MiddlewareFn, IHookManager, TransportRecord, TransportOptions, TransportTarget, ITransport, StyleCacheConfig } from './types/index.js';
80
85
  export { StyleBuilder, StylePresets, THEME_PRESETS, THEME_BANNERS, BANNER_VARIANTS } from './styling/index.js';
81
86
  export { FileLogHandler, RemoteLogHandler, AnalyticsLogHandler } from './handlers/index.js';
87
+ export { SerializerRegistry } from './serializers/index.js';
88
+ export { HookManager } from './hooks/index.js';
89
+ export { TransportManager, ConsoleTransport, FileTransport, HttpTransport } from './transports/index.js';
90
+ export { StyleCache, getStyleCache } from './styling/StyleCache.js';
91
+ export declare const addSerializer: <T>(type: new (...args: any[]) => T, serializer: SerializerFn<T>, priority?: number) => void;
92
+ export declare const removeSerializer: <T>(type: new (...args: any[]) => T) => boolean;
93
+ export declare const on: (event: HookEvent, callback: HookCallback, priority?: number) => () => void;
94
+ export declare const once: (event: HookEvent, callback: HookCallback, priority?: number) => () => void;
95
+ export declare const off: (event: HookEvent, callback: HookCallback) => boolean;
96
+ export declare const use: (middleware: MiddlewareFn, priority?: number) => () => void;
97
+ export declare const addTransport: (target: TransportTarget) => string;
98
+ export declare const removeTransport: (id: string) => boolean;
99
+ export declare const flushTransports: () => Promise<void>;
100
+ export declare const closeTransports: () => Promise<void>;
101
+ export { ScopedLogger, APILogger, ComponentLogger, ContextLogger } from './ScopedLogger.js';
82
102
  export { DEFAULT_CONFIG } from './constants.js';
83
103
  export { parseStackTrace, formatTimestamp, detectOptimalFormat, createOutput, createANSIOutput, createBuildOutput, createCIOutput } from './utils/index.js';
84
104
  export { ansiStyle, ansiColor, ansiBackground, ansiBold, ansiDim, ansiUnderline, formatLogLevelANSI, formatSuccessANSI, BUILD_FORMATTERS, sanitizeEmojis } from './utils/ansi-colors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}