@hamak/logging 0.5.1

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 (92) hide show
  1. package/README.md +252 -0
  2. package/dist/api/index.d.ts +12 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +14 -0
  5. package/dist/api/interfaces/index.d.ts +4 -0
  6. package/dist/api/interfaces/index.d.ts.map +1 -0
  7. package/dist/api/interfaces/index.js +3 -0
  8. package/dist/api/interfaces/logger.d.ts +105 -0
  9. package/dist/api/interfaces/logger.d.ts.map +1 -0
  10. package/dist/api/interfaces/logger.js +1 -0
  11. package/dist/api/interfaces/manager.d.ts +120 -0
  12. package/dist/api/interfaces/manager.d.ts.map +1 -0
  13. package/dist/api/interfaces/manager.js +1 -0
  14. package/dist/api/interfaces/transport.d.ts +97 -0
  15. package/dist/api/interfaces/transport.d.ts.map +1 -0
  16. package/dist/api/interfaces/transport.js +1 -0
  17. package/dist/api/tokens/index.d.ts +2 -0
  18. package/dist/api/tokens/index.d.ts.map +1 -0
  19. package/dist/api/tokens/index.js +1 -0
  20. package/dist/api/tokens/service-tokens.d.ts +51 -0
  21. package/dist/api/tokens/service-tokens.d.ts.map +1 -0
  22. package/dist/api/tokens/service-tokens.js +42 -0
  23. package/dist/api/types/index.d.ts +3 -0
  24. package/dist/api/types/index.d.ts.map +1 -0
  25. package/dist/api/types/index.js +2 -0
  26. package/dist/api/types/log-config.d.ts +72 -0
  27. package/dist/api/types/log-config.d.ts.map +1 -0
  28. package/dist/api/types/log-config.js +1 -0
  29. package/dist/api/types/log-entry.d.ts +64 -0
  30. package/dist/api/types/log-entry.d.ts.map +1 -0
  31. package/dist/api/types/log-entry.js +12 -0
  32. package/dist/impl/core/context-logger.d.ts +26 -0
  33. package/dist/impl/core/context-logger.d.ts.map +1 -0
  34. package/dist/impl/core/context-logger.js +102 -0
  35. package/dist/impl/core/index.d.ts +3 -0
  36. package/dist/impl/core/index.d.ts.map +1 -0
  37. package/dist/impl/core/index.js +2 -0
  38. package/dist/impl/core/log-manager.d.ts +41 -0
  39. package/dist/impl/core/log-manager.d.ts.map +1 -0
  40. package/dist/impl/core/log-manager.js +278 -0
  41. package/dist/impl/formatters/dev-formatter.d.ts +20 -0
  42. package/dist/impl/formatters/dev-formatter.d.ts.map +1 -0
  43. package/dist/impl/formatters/dev-formatter.js +145 -0
  44. package/dist/impl/formatters/index.d.ts +3 -0
  45. package/dist/impl/formatters/index.d.ts.map +1 -0
  46. package/dist/impl/formatters/index.js +2 -0
  47. package/dist/impl/formatters/json-formatter.d.ts +24 -0
  48. package/dist/impl/formatters/json-formatter.d.ts.map +1 -0
  49. package/dist/impl/formatters/json-formatter.js +70 -0
  50. package/dist/impl/index.d.ts +16 -0
  51. package/dist/impl/index.d.ts.map +1 -0
  52. package/dist/impl/index.js +19 -0
  53. package/dist/impl/plugin/index.d.ts +2 -0
  54. package/dist/impl/plugin/index.d.ts.map +1 -0
  55. package/dist/impl/plugin/index.js +1 -0
  56. package/dist/impl/plugin/logging-plugin-factory.d.ts +37 -0
  57. package/dist/impl/plugin/logging-plugin-factory.d.ts.map +1 -0
  58. package/dist/impl/plugin/logging-plugin-factory.js +112 -0
  59. package/dist/impl/transports/console-transport.d.ts +16 -0
  60. package/dist/impl/transports/console-transport.d.ts.map +1 -0
  61. package/dist/impl/transports/console-transport.js +55 -0
  62. package/dist/impl/transports/index.d.ts +2 -0
  63. package/dist/impl/transports/index.d.ts.map +1 -0
  64. package/dist/impl/transports/index.js +1 -0
  65. package/dist/impl/utils/console-interceptor.d.ts +36 -0
  66. package/dist/impl/utils/console-interceptor.d.ts.map +1 -0
  67. package/dist/impl/utils/console-interceptor.js +121 -0
  68. package/dist/impl/utils/event-emitter.d.ts +11 -0
  69. package/dist/impl/utils/event-emitter.d.ts.map +1 -0
  70. package/dist/impl/utils/event-emitter.js +44 -0
  71. package/dist/impl/utils/index.d.ts +3 -0
  72. package/dist/impl/utils/index.d.ts.map +1 -0
  73. package/dist/impl/utils/index.js +2 -0
  74. package/dist/index.d.ts +15 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +14 -0
  77. package/dist/spi/formatter/formatter-provider.d.ts +67 -0
  78. package/dist/spi/formatter/formatter-provider.d.ts.map +1 -0
  79. package/dist/spi/formatter/formatter-provider.js +1 -0
  80. package/dist/spi/formatter/index.d.ts +2 -0
  81. package/dist/spi/formatter/index.d.ts.map +1 -0
  82. package/dist/spi/formatter/index.js +1 -0
  83. package/dist/spi/index.d.ts +12 -0
  84. package/dist/spi/index.d.ts.map +1 -0
  85. package/dist/spi/index.js +12 -0
  86. package/dist/spi/transport/index.d.ts +2 -0
  87. package/dist/spi/transport/index.d.ts.map +1 -0
  88. package/dist/spi/transport/index.js +1 -0
  89. package/dist/spi/transport/transport-provider.d.ts +89 -0
  90. package/dist/spi/transport/transport-provider.d.ts.map +1 -0
  91. package/dist/spi/transport/transport-provider.js +1 -0
  92. package/package.json +65 -0
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Dependency Injection tokens for logging services
3
+ */
4
+ /**
5
+ * Token for injecting the LogManager service
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * export const myPlugin: PluginModule = {
10
+ * initialize(ctx) {
11
+ * const logManager = ctx.resolve(LOG_MANAGER_TOKEN);
12
+ * const logger = logManager.createLogger({ plugin: 'my-plugin' });
13
+ * }
14
+ * };
15
+ * ```
16
+ */
17
+ export declare const LOG_MANAGER_TOKEN: unique symbol;
18
+ /**
19
+ * Token for injecting a Logger instance
20
+ * This is typically a factory that creates plugin-scoped loggers
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * export const myPlugin: PluginModule = {
25
+ * initialize(ctx) {
26
+ * // Get logger factory
27
+ * const createLogger = ctx.resolve(LOGGER_TOKEN);
28
+ * const logger = createLogger('my-plugin');
29
+ * }
30
+ * };
31
+ * ```
32
+ */
33
+ export declare const LOGGER_TOKEN: unique symbol;
34
+ /**
35
+ * Token for injecting the LogConfig
36
+ */
37
+ export declare const LOG_CONFIG_TOKEN: unique symbol;
38
+ /**
39
+ * Token for injecting the transport registry
40
+ * Used internally by the logging system
41
+ */
42
+ export declare const LOG_TRANSPORTS_TOKEN: unique symbol;
43
+ /**
44
+ * Type helper for LOG_MANAGER_TOKEN
45
+ */
46
+ export type LogManagerToken = typeof LOG_MANAGER_TOKEN;
47
+ /**
48
+ * Type helper for LOGGER_TOKEN
49
+ */
50
+ export type LoggerToken = typeof LOGGER_TOKEN;
51
+ //# sourceMappingURL=service-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-tokens.d.ts","sourceRoot":"","sources":["../../../src/api/tokens/service-tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,eAA0C,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,eAAsC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAAsC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAA0C,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Dependency Injection tokens for logging services
3
+ */
4
+ /**
5
+ * Token for injecting the LogManager service
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * export const myPlugin: PluginModule = {
10
+ * initialize(ctx) {
11
+ * const logManager = ctx.resolve(LOG_MANAGER_TOKEN);
12
+ * const logger = logManager.createLogger({ plugin: 'my-plugin' });
13
+ * }
14
+ * };
15
+ * ```
16
+ */
17
+ export const LOG_MANAGER_TOKEN = Symbol.for('@hamak/logging:LogManager');
18
+ /**
19
+ * Token for injecting a Logger instance
20
+ * This is typically a factory that creates plugin-scoped loggers
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * export const myPlugin: PluginModule = {
25
+ * initialize(ctx) {
26
+ * // Get logger factory
27
+ * const createLogger = ctx.resolve(LOGGER_TOKEN);
28
+ * const logger = createLogger('my-plugin');
29
+ * }
30
+ * };
31
+ * ```
32
+ */
33
+ export const LOGGER_TOKEN = Symbol.for('@hamak/logging:Logger');
34
+ /**
35
+ * Token for injecting the LogConfig
36
+ */
37
+ export const LOG_CONFIG_TOKEN = Symbol.for('@hamak/logging:Config');
38
+ /**
39
+ * Token for injecting the transport registry
40
+ * Used internally by the logging system
41
+ */
42
+ export const LOG_TRANSPORTS_TOKEN = Symbol.for('@hamak/logging:Transports');
@@ -0,0 +1,3 @@
1
+ export * from './log-entry';
2
+ export * from './log-config';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './log-entry';
2
+ export * from './log-config';
@@ -0,0 +1,72 @@
1
+ import { LogLevel, LogEntry } from './log-entry';
2
+ /**
3
+ * Configuration for a log transport
4
+ */
5
+ export interface TransportConfig {
6
+ /** Unique identifier for the transport */
7
+ id: string;
8
+ /** Whether the transport is enabled */
9
+ enabled?: boolean;
10
+ /** Minimum log level to handle */
11
+ minLevel?: LogLevel;
12
+ /** Maximum log level to handle */
13
+ maxLevel?: LogLevel;
14
+ /** Custom filter function */
15
+ filter?: (entry: LogEntry) => boolean;
16
+ /** Only log from specific plugins */
17
+ plugins?: string[];
18
+ /** Only log from specific modules */
19
+ modules?: string[];
20
+ /** Only log entries with specific tags */
21
+ tags?: string[];
22
+ }
23
+ /**
24
+ * Configuration for the log manager
25
+ */
26
+ export interface LogManagerConfig {
27
+ /** Global minimum log level */
28
+ globalLevel?: LogLevel;
29
+ /** Buffer size before forcing flush */
30
+ bufferSize?: number;
31
+ /** Automatic flush interval in milliseconds */
32
+ flushInterval?: number;
33
+ /** Default transports to register */
34
+ defaultTransports?: TransportConfig[];
35
+ /** Plugin-specific log levels */
36
+ pluginLevels?: Record<string, LogLevel>;
37
+ /** Module-specific log levels */
38
+ moduleLevels?: Record<string, LogLevel>;
39
+ }
40
+ /**
41
+ * Configuration for console transport
42
+ */
43
+ export interface ConsoleTransportConfig {
44
+ /** Use colors in output */
45
+ colors?: boolean;
46
+ /** Use emojis in output */
47
+ emojis?: boolean;
48
+ /** Show timestamps */
49
+ timestamps?: boolean;
50
+ /** Show context (plugin/module/component) */
51
+ showContext?: boolean;
52
+ }
53
+ /**
54
+ * Configuration for remote transport
55
+ */
56
+ export interface RemoteTransportConfig {
57
+ /** Remote logging endpoint URL */
58
+ endpoint: string;
59
+ /** API key for authentication */
60
+ apiKey?: string;
61
+ /** Client identifier */
62
+ clientId?: string;
63
+ /** Environment (dev, staging, production) */
64
+ environment?: string;
65
+ /** Batch size for sending logs */
66
+ batchSize?: number;
67
+ /** Timeout for requests in milliseconds */
68
+ timeout?: number;
69
+ /** Retry attempts on failure */
70
+ retryAttempts?: number;
71
+ }
72
+ //# sourceMappingURL=log-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-config.d.ts","sourceRoot":"","sources":["../../../src/api/types/log-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IACtC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Log severity levels
3
+ */
4
+ export declare enum LogLevel {
5
+ TRACE = 0,
6
+ DEBUG = 1,
7
+ INFO = 2,
8
+ WARN = 3,
9
+ ERROR = 4,
10
+ FATAL = 5
11
+ }
12
+ /**
13
+ * Context information for a log entry
14
+ * Automatically tracks plugin, module, component hierarchy
15
+ */
16
+ export interface LogContext {
17
+ /** Plugin that created the log */
18
+ plugin?: string;
19
+ /** Module within the plugin */
20
+ module?: string;
21
+ /** Component (e.g., React component name) */
22
+ component?: string;
23
+ /** Operation being performed */
24
+ operation?: string;
25
+ /** Request ID for distributed tracing */
26
+ requestId?: string;
27
+ /** User ID for user-specific logs */
28
+ userId?: string;
29
+ /** Additional custom context */
30
+ [key: string]: any;
31
+ }
32
+ /**
33
+ * Additional metadata for a log entry
34
+ */
35
+ export interface LogMetadata {
36
+ /** Error object (for ERROR/FATAL logs) */
37
+ error?: Error;
38
+ /** Stack trace */
39
+ stack?: string;
40
+ /** Duration in milliseconds (for performance logs) */
41
+ duration?: number;
42
+ /** Tags for categorization */
43
+ tags?: string[];
44
+ /** Additional custom metadata */
45
+ [key: string]: any;
46
+ }
47
+ /**
48
+ * Complete log entry
49
+ */
50
+ export interface LogEntry {
51
+ /** Timestamp in milliseconds since epoch */
52
+ timestamp: number;
53
+ /** Log severity level */
54
+ level: LogLevel;
55
+ /** Log message */
56
+ message: string;
57
+ /** Context information */
58
+ context: LogContext;
59
+ /** Additional metadata */
60
+ metadata?: LogMetadata;
61
+ /** Pre-formatted message (optional, for caching) */
62
+ formattedMessage?: string;
63
+ }
64
+ //# sourceMappingURL=log-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-entry.d.ts","sourceRoot":"","sources":["../../../src/api/types/log-entry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACV;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iCAAiC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,KAAK,EAAE,QAAQ,CAAC;IAChB,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,EAAE,UAAU,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Log severity levels
3
+ */
4
+ export var LogLevel;
5
+ (function (LogLevel) {
6
+ LogLevel[LogLevel["TRACE"] = 0] = "TRACE";
7
+ LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
8
+ LogLevel[LogLevel["INFO"] = 2] = "INFO";
9
+ LogLevel[LogLevel["WARN"] = 3] = "WARN";
10
+ LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
11
+ LogLevel[LogLevel["FATAL"] = 5] = "FATAL";
12
+ })(LogLevel || (LogLevel = {}));
@@ -0,0 +1,26 @@
1
+ import type { ILogger, ILogManager, LogLevel, LogContext, LogMetadata } from '../../api/index';
2
+ /**
3
+ * Logger implementation with context awareness
4
+ *
5
+ * Tracks plugin/module/component hierarchy and supports child loggers.
6
+ */
7
+ export declare class ContextLogger implements ILogger {
8
+ private manager;
9
+ private context;
10
+ private minLevel;
11
+ private timers;
12
+ constructor(manager: ILogManager, context: LogContext | undefined, minLevel: LogLevel);
13
+ trace(message: string, meta?: LogMetadata): void;
14
+ debug(message: string, meta?: LogMetadata): void;
15
+ info(message: string, meta?: LogMetadata): void;
16
+ warn(message: string, meta?: LogMetadata): void;
17
+ error(message: string, error?: Error, meta?: LogMetadata): void;
18
+ fatal(message: string, error?: Error, meta?: LogMetadata): void;
19
+ private log;
20
+ child(context: LogContext): ILogger;
21
+ scoped(context: LogContext, fn: (logger: ILogger) => void): void;
22
+ isLevelEnabled(level: LogLevel): boolean;
23
+ time(label: string): void;
24
+ timeEnd(label: string): void;
25
+ }
26
+ //# sourceMappingURL=context-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-logger.d.ts","sourceRoot":"","sources":["../../../src/impl/core/context-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;;GAIG;AACH,qBAAa,aAAc,YAAW,OAAO;IAIzC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,MAAM,CAA6B;gBAGjC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,UAAU,YAAK,EACxB,QAAQ,EAAE,QAAQ;IAG5B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI;IAKhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI;IAKhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI;IAK/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI;IAK/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI;IAS/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI;IAS/D,OAAO,CAAC,GAAG;IAYX,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAQnC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAKhE,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIxC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAQ7B"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Logger implementation with context awareness
3
+ *
4
+ * Tracks plugin/module/component hierarchy and supports child loggers.
5
+ */
6
+ export class ContextLogger {
7
+ constructor(manager, context = {}, minLevel) {
8
+ Object.defineProperty(this, "manager", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: manager
13
+ });
14
+ Object.defineProperty(this, "context", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: context
19
+ });
20
+ Object.defineProperty(this, "minLevel", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: minLevel
25
+ });
26
+ Object.defineProperty(this, "timers", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: new Map()
31
+ });
32
+ }
33
+ trace(message, meta) {
34
+ if (!this.isLevelEnabled(0))
35
+ return; // LogLevel.TRACE = 0
36
+ this.log(0, message, meta);
37
+ }
38
+ debug(message, meta) {
39
+ if (!this.isLevelEnabled(1))
40
+ return; // LogLevel.DEBUG = 1
41
+ this.log(1, message, meta);
42
+ }
43
+ info(message, meta) {
44
+ if (!this.isLevelEnabled(2))
45
+ return; // LogLevel.INFO = 2
46
+ this.log(2, message, meta);
47
+ }
48
+ warn(message, meta) {
49
+ if (!this.isLevelEnabled(3))
50
+ return; // LogLevel.WARN = 3
51
+ this.log(3, message, meta);
52
+ }
53
+ error(message, error, meta) {
54
+ if (!this.isLevelEnabled(4))
55
+ return; // LogLevel.ERROR = 4
56
+ this.log(4, message, {
57
+ ...meta,
58
+ error,
59
+ stack: error?.stack,
60
+ });
61
+ }
62
+ fatal(message, error, meta) {
63
+ if (!this.isLevelEnabled(5))
64
+ return; // LogLevel.FATAL = 5
65
+ this.log(5, message, {
66
+ ...meta,
67
+ error,
68
+ stack: error?.stack,
69
+ });
70
+ }
71
+ log(level, message, metadata) {
72
+ const entry = {
73
+ timestamp: Date.now(),
74
+ level,
75
+ message,
76
+ context: { ...this.context },
77
+ metadata,
78
+ };
79
+ this.manager.dispatch(entry);
80
+ }
81
+ child(context) {
82
+ return new ContextLogger(this.manager, { ...this.context, ...context }, this.minLevel);
83
+ }
84
+ scoped(context, fn) {
85
+ const scopedLogger = this.child(context);
86
+ fn(scopedLogger);
87
+ }
88
+ isLevelEnabled(level) {
89
+ return level >= this.minLevel;
90
+ }
91
+ time(label) {
92
+ this.timers.set(label, Date.now());
93
+ }
94
+ timeEnd(label) {
95
+ const start = this.timers.get(label);
96
+ if (start !== undefined) {
97
+ const duration = Date.now() - start;
98
+ this.debug(`${label}`, { duration, tags: ['performance'] });
99
+ this.timers.delete(label);
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,3 @@
1
+ export * from './context-logger';
2
+ export * from './log-manager';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/impl/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './context-logger';
2
+ export * from './log-manager';
@@ -0,0 +1,41 @@
1
+ import type { ILogManager, ILogger, ILogTransport, LogLevel, LogContext, LogEntry, LogManagerConfig, TransportConfig } from '../../api/index';
2
+ /**
3
+ * Central log manager implementation
4
+ *
5
+ * Manages transports, creates loggers, and dispatches log entries.
6
+ */
7
+ export declare class LogManager implements ILogManager {
8
+ private transports;
9
+ private transportConfigs;
10
+ private loggers;
11
+ private buffer;
12
+ private config;
13
+ private eventEmitter;
14
+ private flushTimer?;
15
+ constructor(config?: LogManagerConfig);
16
+ registerTransport(transport: ILogTransport, config?: TransportConfig): void;
17
+ unregisterTransport(id: string): void;
18
+ getTransport(id: string): ILogTransport | undefined;
19
+ listTransports(): ILogTransport[];
20
+ createLogger(context?: LogContext): ILogger;
21
+ getLogger(context?: LogContext): ILogger;
22
+ setGlobalLevel(level: LogLevel): void;
23
+ setPluginLevel(plugin: string, level: LogLevel): void;
24
+ setModuleLevel(module: string, level: LogLevel): void;
25
+ flush(): Promise<void>;
26
+ clearBuffer(): void;
27
+ on(event: 'log' | 'error' | 'flush', handler: (...args: any[]) => void): void;
28
+ off(event: string, handler: (...args: any[]) => void): void;
29
+ dispatch(entry: LogEntry): void;
30
+ /**
31
+ * Clean up resources
32
+ */
33
+ destroy(): Promise<void>;
34
+ private dispatchToTransports;
35
+ private shouldDispatch;
36
+ private resolveLevel;
37
+ private createCacheKey;
38
+ private startFlushTimer;
39
+ private handleTransportError;
40
+ }
41
+ //# sourceMappingURL=log-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-manager.d.ts","sourceRoot":"","sources":["../../../src/impl/core/log-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAIzB;;;;GAIG;AACH,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAiC;gBAExC,MAAM,GAAE,gBAAqB;IAezC,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI;IAe3E,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWrC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAInD,cAAc,IAAI,aAAa,EAAE;IAIjC,YAAY,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO;IAK3C,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO;IAUxC,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIrC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIrD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B,WAAW,IAAI,IAAI;IAInB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI7E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI3D,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAoB/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBhB,oBAAoB;IAyBlC,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,oBAAoB;CAa7B"}