@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
package/src/types/core.ts CHANGED
@@ -247,4 +247,50 @@ export interface LogStyles {
247
247
  location?: LogPartConfig;
248
248
  backdrop?: string;
249
249
  transparency?: number;
250
+ }
251
+
252
+ export interface TimerResult {
253
+ label: string;
254
+ duration: number;
255
+ startTime: number;
256
+ endTime: number;
257
+ }
258
+
259
+ export interface IScopedLogger {
260
+ debug(...args: any[]): void;
261
+ info(...args: any[]): void;
262
+ warn(...args: any[]): void;
263
+ error(...args: any[]): void;
264
+ success(...args: any[]): void;
265
+ critical(...args: any[]): void;
266
+ trace(...args: any[]): void;
267
+
268
+ badges(badges: string[]): this;
269
+ badge(badge: string): this;
270
+ clearBadges(): this;
271
+
272
+ time(label: string): void;
273
+ timeEnd(label: string): number | undefined;
274
+
275
+ style(presetName: string): this;
276
+ }
277
+
278
+ export interface IAPILogger extends IScopedLogger {
279
+ slow(message: string, duration?: number): void;
280
+ rateLimit(message: string): void;
281
+ auth(message: string): void;
282
+ deprecated(message: string): void;
283
+ }
284
+
285
+ export interface IComponentLogger extends IScopedLogger {
286
+ lifecycle(event: string, message?: string): void;
287
+ stateChange(from: string, to: string, data?: any): void;
288
+ propsChange(changes: Record<string, any>): void;
289
+ }
290
+
291
+ export interface Bindings {
292
+ scope?: string;
293
+ badges?: string[];
294
+ type?: 'scope' | 'api' | 'component';
295
+ context?: string[];
250
296
  }
@@ -0,0 +1,45 @@
1
+ import type { LogLevel, StackInfo } from './core.js';
2
+
3
+ export interface HookLogEntry {
4
+ level: LogLevel;
5
+ message: string;
6
+ args: any[];
7
+ timestamp: string;
8
+ prefix?: string;
9
+ stackInfo?: StackInfo;
10
+ correlationId?: string;
11
+ context?: Record<string, any>;
12
+ [key: string]: any;
13
+ }
14
+
15
+ export type HookEvent = 'beforeLog' | 'afterLog' | 'onError';
16
+
17
+ export type HookCallback = (entry: HookLogEntry) => void | HookLogEntry | Promise<void | HookLogEntry>;
18
+
19
+ export type MiddlewareFn = (
20
+ entry: HookLogEntry,
21
+ next: () => void | Promise<void>
22
+ ) => void | Promise<void>;
23
+
24
+ export interface HookRegistration {
25
+ id: string;
26
+ event: HookEvent;
27
+ callback: HookCallback;
28
+ priority: number;
29
+ once: boolean;
30
+ }
31
+
32
+ export interface MiddlewareRegistration {
33
+ id: string;
34
+ fn: MiddlewareFn;
35
+ priority: number;
36
+ }
37
+
38
+ export interface IHookManager {
39
+ on(event: HookEvent, callback: HookCallback, priority?: number): () => void;
40
+ once(event: HookEvent, callback: HookCallback, priority?: number): () => void;
41
+ off(event: HookEvent, callback: HookCallback): boolean;
42
+ use(middleware: MiddlewareFn, priority?: number): () => void;
43
+ emit(event: HookEvent, entry: HookLogEntry): Promise<HookLogEntry>;
44
+ process(entry: HookLogEntry): Promise<HookLogEntry>;
45
+ }
@@ -14,12 +14,17 @@ export type {
14
14
  LoggerConfig,
15
15
  StackInfo,
16
16
  TimerEntry,
17
+ TimerResult,
17
18
  StyleOptions,
18
19
  AdaptiveColors,
19
20
  SpacingType,
20
21
  LogLayout,
21
22
  LogPartConfig,
22
23
  LogStyles,
24
+ IScopedLogger,
25
+ IAPILogger,
26
+ IComponentLogger,
27
+ Bindings,
23
28
  } from './core.js';
24
29
 
25
30
  export { LOG_LEVELS } from './core.js';
@@ -33,4 +38,37 @@ export type {
33
38
  ExportOptions,
34
39
  ExportResult,
35
40
  BufferStats,
36
- } from './handlers.js';
41
+ } from './handlers.js';
42
+
43
+ // Serializer types
44
+ export type {
45
+ SerializerFn,
46
+ SerializerContext,
47
+ SerializerEntry,
48
+ SerializerConfig,
49
+ ISerializerRegistry,
50
+ } from './serializers.js';
51
+
52
+ // Hook types
53
+ export type {
54
+ HookLogEntry,
55
+ HookEvent,
56
+ HookCallback,
57
+ MiddlewareFn,
58
+ HookRegistration,
59
+ MiddlewareRegistration,
60
+ IHookManager,
61
+ } from './hooks.js';
62
+
63
+ // Transport types
64
+ export type {
65
+ TransportRecord,
66
+ TransportOptions,
67
+ TransportTarget,
68
+ ITransport,
69
+ IBufferedTransport,
70
+ ITransportManager,
71
+ } from './transports.js';
72
+
73
+ // Style Cache types
74
+ export type { StyleCacheConfig } from '../styling/StyleCache.js';
@@ -0,0 +1,30 @@
1
+ import type { LogLevel } from './core.js';
2
+
3
+ export type SerializerFn<T = any> = (value: T, context: SerializerContext) => any;
4
+
5
+ export interface SerializerContext {
6
+ depth: number;
7
+ maxDepth: number;
8
+ path: string[];
9
+ seen: WeakSet<object>;
10
+ }
11
+
12
+ export interface SerializerEntry<T = any> {
13
+ type: new (...args: any[]) => T;
14
+ serializer: SerializerFn<T>;
15
+ priority: number;
16
+ }
17
+
18
+ export interface SerializerConfig {
19
+ maxDepth?: number;
20
+ circular?: 'error' | 'skip' | 'placeholder';
21
+ preserveUndefined?: boolean;
22
+ }
23
+
24
+ export interface ISerializerRegistry {
25
+ add<T>(type: new (...args: any[]) => T, serializer: SerializerFn<T>, priority?: number): void;
26
+ remove<T>(type: new (...args: any[]) => T): boolean;
27
+ has<T>(type: new (...args: any[]) => T): boolean;
28
+ serialize(value: any, config?: SerializerConfig): any;
29
+ getAll(): SerializerEntry[];
30
+ }
@@ -0,0 +1,52 @@
1
+ import type { LogLevel, StackInfo } from './core.js';
2
+
3
+ export interface TransportRecord {
4
+ level: LogLevel;
5
+ levelValue: number;
6
+ time: number;
7
+ msg: string;
8
+ prefix?: string;
9
+ location?: {
10
+ file: string;
11
+ line: number;
12
+ column: number;
13
+ function?: string;
14
+ };
15
+ [key: string]: any;
16
+ }
17
+
18
+ export interface TransportOptions {
19
+ level?: LogLevel;
20
+ transform?: (record: TransportRecord) => TransportRecord | null;
21
+ batchSize?: number;
22
+ flushInterval?: number;
23
+ [key: string]: any;
24
+ }
25
+
26
+ export interface TransportTarget {
27
+ target: string | ITransport;
28
+ options?: TransportOptions;
29
+ level?: LogLevel;
30
+ }
31
+
32
+ export interface ITransport {
33
+ readonly name: string;
34
+ write(record: TransportRecord): void | Promise<void>;
35
+ flush?(): void | Promise<void>;
36
+ close?(): void | Promise<void>;
37
+ isReady?(): boolean;
38
+ }
39
+
40
+ export interface IBufferedTransport extends ITransport {
41
+ readonly bufferSize: number;
42
+ readonly maxBufferSize: number;
43
+ flush(): Promise<void>;
44
+ }
45
+
46
+ export interface ITransportManager {
47
+ add(target: TransportTarget): string;
48
+ remove(id: string): boolean;
49
+ write(record: TransportRecord): Promise<void>;
50
+ flush(): Promise<void>;
51
+ close(): Promise<void>;
52
+ }