@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.
- package/.claude/settings.local.json +6 -1
- package/CHANGELOG.json +93 -1
- package/CHANGELOG.md +127 -0
- package/CLAUDE.md +14 -1
- package/README.md +111 -20
- package/dist/Logger.d.ts +205 -58
- package/dist/Logger.d.ts.map +1 -1
- package/dist/ScopedLogger.d.ts +23 -276
- package/dist/ScopedLogger.d.ts.map +1 -1
- package/dist/chunks/Logger-BCfx_yCK.js +2 -0
- package/dist/chunks/Logger-BCfx_yCK.js.map +1 -0
- package/dist/chunks/{Logger-B7L-ujY4.js → Logger-C126NTrD.js} +862 -96
- package/dist/chunks/Logger-C126NTrD.js.map +1 -0
- package/dist/exports-module.d.ts +1 -1
- package/dist/exports-module.d.ts.map +1 -1
- package/dist/exports.cjs +1 -1
- package/dist/exports.js +1 -1
- package/dist/hooks/HookManager.d.ts +21 -0
- package/dist/hooks/HookManager.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +23 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +240 -9
- package/dist/index.js.map +1 -1
- package/dist/serializers/SerializerRegistry.d.ts +16 -0
- package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
- package/dist/serializers/index.d.ts +2 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/styling/StyleCache.d.ts +42 -0
- package/dist/styling/StyleCache.d.ts.map +1 -0
- package/dist/styling-module.d.ts +1 -1
- package/dist/styling-module.d.ts.map +1 -1
- package/dist/styling.cjs +1 -1
- package/dist/styling.js +2 -2
- package/dist/transports/ConsoleTransport.d.ts +9 -0
- package/dist/transports/ConsoleTransport.d.ts.map +1 -0
- package/dist/transports/FileTransport.d.ts +15 -0
- package/dist/transports/FileTransport.d.ts.map +1 -0
- package/dist/transports/HttpTransport.d.ts +16 -0
- package/dist/transports/HttpTransport.d.ts.map +1 -0
- package/dist/transports/TransportManager.d.ts +14 -0
- package/dist/transports/TransportManager.d.ts.map +1 -0
- package/dist/transports/index.d.ts +5 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/types/core.d.ts +38 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +36 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/serializers.d.ts +25 -0
- package/dist/types/serializers.d.ts.map +1 -0
- package/dist/types/transports.d.ts +47 -0
- package/dist/types/transports.d.ts.map +1 -0
- package/docs/API.md +227 -0
- package/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/Logger.ts +391 -102
- package/src/ScopedLogger.ts +78 -318
- package/src/hooks/HookManager.ts +177 -0
- package/src/hooks/index.ts +1 -0
- package/src/index.ts +77 -2
- package/src/serializers/SerializerRegistry.ts +173 -0
- package/src/serializers/index.ts +1 -0
- package/src/styling/StyleCache.ts +131 -0
- package/src/transports/ConsoleTransport.ts +28 -0
- package/src/transports/FileTransport.ts +53 -0
- package/src/transports/HttpTransport.ts +56 -0
- package/src/transports/TransportManager.ts +130 -0
- package/src/transports/index.ts +4 -0
- package/src/types/core.ts +46 -0
- package/src/types/hooks.ts +45 -0
- package/src/types/index.ts +39 -1
- package/src/types/serializers.ts +30 -0
- package/src/types/transports.ts +52 -0
- package/dist/chunks/Logger-B7L-ujY4.js.map +0 -1
- package/dist/chunks/Logger-DzU_c5sX.js +0 -2
- package/dist/chunks/Logger-DzU_c5sX.js.map +0 -1
- package/dist/chunks/ScopedLogger-BY3-E8Ov.js +0 -2
- package/dist/chunks/ScopedLogger-BY3-E8Ov.js.map +0 -1
- package/dist/chunks/ScopedLogger-D-RbiFZn.js +0 -361
- 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
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -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
|
+
}
|