@vercube/logger 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,26 @@
1
+ import { LOG_LEVEL_COLORS } from "./Utils-5578ynXS.mjs";
2
+ import { LoggerProvider } from "./LoggerProvider-DMxXOscV.mjs";
3
+
4
+ //#region src/Providers/ConsoleProvider.ts
5
+ /**
6
+ * ConsoleProvider class for logging messages to the console.
7
+ */
8
+ var ConsoleProvider = class extends LoggerProvider {
9
+ /**
10
+ * Initializes the appender with the provided options.
11
+ * This method should be called before using the appender to process messages.
12
+ */
13
+ initialize() {}
14
+ /**
15
+ * Prints a log message according to the specified format and level.
16
+ * @param message - The log message object containing level, tag, and arguments
17
+ * @protected
18
+ */
19
+ processMessage(message) {
20
+ const date = message.timestamp ? new Date(message.timestamp) : /* @__PURE__ */ new Date();
21
+ console[message.level](`%s%s${message?.tag ? "%s" : ""} %s`, LOG_LEVEL_COLORS[message.level](`[${date.toISOString().split("T")[1]?.replace("Z", "")}]`), LOG_LEVEL_COLORS[message.level](`[${message.level.toUpperCase().padEnd(5, " ")}]`), message?.tag ? LOG_LEVEL_COLORS[message.level](`[${message.tag}]`) : "", ...message.args);
22
+ }
23
+ };
24
+
25
+ //#endregion
26
+ export { ConsoleProvider };
@@ -0,0 +1,22 @@
1
+ import { LoggerProvider, LoggerTypes } from "./LoggerProvider-eYcrAQ1D.mjs";
2
+
3
+ //#region src/Providers/ConsoleProvider.d.ts
4
+
5
+ /**
6
+ * ConsoleProvider class for logging messages to the console.
7
+ */
8
+ declare class ConsoleProvider extends LoggerProvider {
9
+ /**
10
+ * Initializes the appender with the provided options.
11
+ * This method should be called before using the appender to process messages.
12
+ */
13
+ initialize(): void;
14
+ /**
15
+ * Prints a log message according to the specified format and level.
16
+ * @param message - The log message object containing level, tag, and arguments
17
+ * @protected
18
+ */
19
+ processMessage(message: LoggerTypes.Message): void;
20
+ }
21
+ //#endregion
22
+ export { ConsoleProvider };
@@ -0,0 +1,23 @@
1
+ import { LoggerProvider, LoggerTypes } from "./LoggerProvider-eYcrAQ1D.mjs";
2
+
3
+ //#region src/Providers/JsonProvider.d.ts
4
+
5
+ /**
6
+ * A logger implementation that formats log messages as JSON.
7
+ */
8
+ declare class JSONProvider extends LoggerProvider {
9
+ /**
10
+ * Initializes the appender with the provided options.
11
+ * This method should be called before using the appender to process messages.
12
+ *
13
+ */
14
+ initialize(): void;
15
+ /**
16
+ * Prints a log message according to the specified format and level.
17
+ * @param message - The log message object containing level, tag, and arguments
18
+ * @protected
19
+ */
20
+ processMessage(message: LoggerTypes.Message): void;
21
+ }
22
+ //#endregion
23
+ export { JSONProvider };
@@ -1,19 +1,28 @@
1
- import { LoggerProvider } from "../Common/LoggerProvider.js";
2
- import { LoggerTypes } from "../Types/LoggerTypes.js";
1
+ import { LoggerProvider } from "./LoggerProvider-DMxXOscV.mjs";
2
+
3
+ //#region src/Providers/JsonProvider.ts
3
4
  /**
4
5
  * A logger implementation that formats log messages as JSON.
5
6
  */
6
- export declare class JSONProvider extends LoggerProvider {
7
+ var JSONProvider = class extends LoggerProvider {
7
8
  /**
8
9
  * Initializes the appender with the provided options.
9
10
  * This method should be called before using the appender to process messages.
10
11
  *
11
12
  */
12
- initialize(): void;
13
+ initialize() {}
13
14
  /**
14
15
  * Prints a log message according to the specified format and level.
15
16
  * @param message - The log message object containing level, tag, and arguments
16
17
  * @protected
17
18
  */
18
- processMessage(message: LoggerTypes.Message): void;
19
- }
19
+ processMessage(message) {
20
+ console.log(JSON.stringify({
21
+ type: message?.type ?? "application_log",
22
+ ...message
23
+ }));
24
+ }
25
+ };
26
+
27
+ //#endregion
28
+ export { JSONProvider };
@@ -0,0 +1,12 @@
1
+ //#region src/Common/LoggerProvider.ts
2
+ /**
3
+ * Abstract base class for implementing log provider.
4
+ * Providers are responsible for processing and outputting log messages to various destinations.
5
+ * Each appender can be initialized with custom options and handles message processing according to its implementation.
6
+ *
7
+ * @template T - The type of options used to initialize the appender
8
+ */
9
+ var LoggerProvider = class {};
10
+
11
+ //#endregion
12
+ export { LoggerProvider };
@@ -0,0 +1,57 @@
1
+ import { IOC } from "@vercube/di";
2
+
3
+ //#region src/Types/LoggerTypes.d.ts
4
+ declare namespace LoggerTypes {
5
+ type Level = 'debug' | 'info' | 'warn' | 'error';
6
+ type Arg = any;
7
+ interface Message {
8
+ level: Level;
9
+ args: Arg[];
10
+ tag?: string;
11
+ pid?: number;
12
+ type?: 'access_log' | 'application_log';
13
+ timestamp?: number;
14
+ }
15
+ type LogProviderOptions<T extends IOC.Newable<LoggerProvider>> = Parameters<InstanceType<T>['initialize']>[0] & {
16
+ logLevel?: Level;
17
+ };
18
+ interface LogAppender<T extends IOC.Newable<LoggerProvider>> {
19
+ name: string;
20
+ provider: T;
21
+ logLevel?: Level;
22
+ options?: LogProviderOptions<T>;
23
+ }
24
+ interface Options {
25
+ logLevel?: Level;
26
+ providers?: LogAppender<any>[];
27
+ }
28
+ }
29
+ //#endregion
30
+ //#region src/Common/LoggerProvider.d.ts
31
+ /**
32
+ * Abstract base class for implementing log provider.
33
+ * Providers are responsible for processing and outputting log messages to various destinations.
34
+ * Each appender can be initialized with custom options and handles message processing according to its implementation.
35
+ *
36
+ * @template T - The type of options used to initialize the appender
37
+ */
38
+ declare abstract class LoggerProvider<T = unknown> {
39
+ /**
40
+ * Initializes the appender with the provided options.
41
+ * This method should be called before using the appender to process messages.
42
+ *
43
+ * @param options - Configuration options for the appender
44
+ * @returns void or Promise<void> if initialization is asynchronous
45
+ */
46
+ abstract initialize(options: T): void | Promise<void>;
47
+ /**
48
+ * Processes a log message according to the appender's implementation.
49
+ * This method handles the actual logging logic specific to each appender type.
50
+ *
51
+ * @param message - The log message to process, containing level, tag, and other metadata
52
+ * @returns void or Promise<void> if processing is asynchronous
53
+ */
54
+ abstract processMessage(message: LoggerTypes.Message): void | Promise<void>;
55
+ }
56
+ //#endregion
57
+ export { LoggerProvider, LoggerTypes };
@@ -0,0 +1,3 @@
1
+ import "../LoggerProvider-eYcrAQ1D.mjs";
2
+ import { ConsoleProvider } from "../ConsoleProvider-DXElZIwj.mjs";
3
+ export { ConsoleProvider };
@@ -0,0 +1,5 @@
1
+ import "../Utils-5578ynXS.mjs";
2
+ import "../LoggerProvider-DMxXOscV.mjs";
3
+ import { ConsoleProvider } from "../ConsoleProvider-CdK1M-7f.mjs";
4
+
5
+ export { ConsoleProvider };
@@ -0,0 +1,3 @@
1
+ import "../LoggerProvider-eYcrAQ1D.mjs";
2
+ import { JSONProvider } from "../JsonProvider-Cu-oM5SL.mjs";
3
+ export { JSONProvider };
@@ -0,0 +1,4 @@
1
+ import "../LoggerProvider-DMxXOscV.mjs";
2
+ import { JSONProvider } from "../JsonProvider-DuUvvoSw.mjs";
3
+
4
+ export { JSONProvider };
@@ -0,0 +1,4 @@
1
+ import "../LoggerProvider-eYcrAQ1D.mjs";
2
+ import { ConsoleProvider } from "../ConsoleProvider-DXElZIwj.mjs";
3
+ import { JSONProvider } from "../JsonProvider-Cu-oM5SL.mjs";
4
+ export { ConsoleProvider, JSONProvider };
@@ -1,83 +1,6 @@
1
- //#region packages/logger/src/Common/LoggerProvider.ts
2
- /**
3
- * Abstract base class for implementing log provider.
4
- * Providers are responsible for processing and outputting log messages to various destinations.
5
- * Each appender can be initialized with custom options and handles message processing according to its implementation.
6
- *
7
- * @template T - The type of options used to initialize the appender
8
- */
9
- var LoggerProvider = class {};
1
+ import "../Utils-5578ynXS.mjs";
2
+ import "../LoggerProvider-DMxXOscV.mjs";
3
+ import { ConsoleProvider } from "../ConsoleProvider-CdK1M-7f.mjs";
4
+ import { JSONProvider } from "../JsonProvider-DuUvvoSw.mjs";
10
5
 
11
- //#endregion
12
- //#region packages/logger/src/Providers/JsonProvider.ts
13
- /**
14
- * A logger implementation that formats log messages as JSON.
15
- */
16
- var JSONProvider = class extends LoggerProvider {
17
- /**
18
- * Initializes the appender with the provided options.
19
- * This method should be called before using the appender to process messages.
20
- *
21
- */
22
- initialize() {}
23
- /**
24
- * Prints a log message according to the specified format and level.
25
- * @param message - The log message object containing level, tag, and arguments
26
- * @protected
27
- */
28
- processMessage(message) {
29
- console.log(JSON.stringify({
30
- type: message?.type ?? "application_log",
31
- ...message
32
- }));
33
- }
34
- };
35
-
36
- //#endregion
37
- //#region packages/logger/src/Utils/Utils.ts
38
- const isColorAllowed = () => !process.env.NO_COLOR;
39
- const colorIfAllowed = (colorFn) => {
40
- const wrappedFn = (text) => {
41
- return isColorAllowed() ? colorFn(text) : text;
42
- };
43
- return wrappedFn;
44
- };
45
- const colors = {
46
- bold: colorIfAllowed((text) => `\x1B[1m${text}\x1B[0m`),
47
- green: colorIfAllowed((text) => `\x1B[32m${text}\x1B[39m`),
48
- yellow: colorIfAllowed((text) => `\x1B[33m${text}\x1B[39m`),
49
- red: colorIfAllowed((text) => `\x1B[31m${text}\x1B[39m`),
50
- magentaBright: colorIfAllowed((text) => `\x1B[95m${text}\x1B[39m`),
51
- cyanBright: colorIfAllowed((text) => `\x1B[96m${text}\x1B[39m`)
52
- };
53
- const LOG_LEVEL_COLORS = {
54
- debug: colors.green,
55
- info: colors.bold,
56
- warn: colors.yellow,
57
- error: colors.red
58
- };
59
-
60
- //#endregion
61
- //#region packages/logger/src/Providers/ConsoleProvider.ts
62
- /**
63
- * ConsoleProvider class for logging messages to the console.
64
- */
65
- var ConsoleProvider = class extends LoggerProvider {
66
- /**
67
- * Initializes the appender with the provided options.
68
- * This method should be called before using the appender to process messages.
69
- */
70
- initialize() {}
71
- /**
72
- * Prints a log message according to the specified format and level.
73
- * @param message - The log message object containing level, tag, and arguments
74
- * @protected
75
- */
76
- processMessage(message) {
77
- const date = message.timestamp ? new Date(message.timestamp) : new Date();
78
- console[message.level](`%s%s${message?.tag ? "%s" : ""} %s`, LOG_LEVEL_COLORS[message.level](`[${date.toISOString().split("T")[1]?.replace("Z", "")}]`), LOG_LEVEL_COLORS[message.level](`[${message.level.toUpperCase().padEnd(5, " ")}]`), message?.tag ? LOG_LEVEL_COLORS[message.level](`[${message.tag}]`) : "", ...message.args);
79
- }
80
- };
81
-
82
- //#endregion
83
6
  export { ConsoleProvider, JSONProvider };
@@ -0,0 +1,39 @@
1
+ //#region src/Utils/Utils.ts
2
+ const LOG_LEVEL_VALUES = {
3
+ debug: 1,
4
+ info: 2,
5
+ warn: 3,
6
+ error: 4
7
+ };
8
+ /**
9
+ * Checks if target level is enabled.
10
+ * @param targetLevel target level
11
+ * @param logLevels array of enabled log levels
12
+ */
13
+ function isLogLevelEnabled(targetLevel, currentLevel) {
14
+ return LOG_LEVEL_VALUES[targetLevel] >= LOG_LEVEL_VALUES[currentLevel];
15
+ }
16
+ const isColorAllowed = () => !process.env.NO_COLOR;
17
+ const colorIfAllowed = (colorFn) => {
18
+ const wrappedFn = (text) => {
19
+ return isColorAllowed() ? colorFn(text) : text;
20
+ };
21
+ return wrappedFn;
22
+ };
23
+ const colors = {
24
+ bold: colorIfAllowed((text) => `\x1B[1m${text}\x1B[0m`),
25
+ green: colorIfAllowed((text) => `\x1B[32m${text}\x1B[39m`),
26
+ yellow: colorIfAllowed((text) => `\x1B[33m${text}\x1B[39m`),
27
+ red: colorIfAllowed((text) => `\x1B[31m${text}\x1B[39m`),
28
+ magentaBright: colorIfAllowed((text) => `\x1B[95m${text}\x1B[39m`),
29
+ cyanBright: colorIfAllowed((text) => `\x1B[96m${text}\x1B[39m`)
30
+ };
31
+ const LOG_LEVEL_COLORS = {
32
+ debug: colors.green,
33
+ info: colors.bold,
34
+ warn: colors.yellow,
35
+ error: colors.red
36
+ };
37
+
38
+ //#endregion
39
+ export { LOG_LEVEL_COLORS, colors, isLogLevelEnabled };
@@ -0,0 +1,109 @@
1
+ import { LoggerTypes } from "./LoggerProvider-eYcrAQ1D.mjs";
2
+
3
+ //#region src/Common/Logger.d.ts
4
+
5
+ /**
6
+ * Abstract base class for implementing logging services.
7
+ * Provides a standard interface for logging at different levels.
8
+ * Implementations can customize how logs are processed and stored.
9
+ */
10
+ declare abstract class Logger {
11
+ /**
12
+ * Configures the logger with the provided options.
13
+ * This method should be called before using the logger to process logs.
14
+ * @param options - Configuration options for the logger
15
+ * @returns void or Promise<void> if configuration is asynchronous
16
+ */
17
+ abstract configure(options: LoggerTypes.Options): void;
18
+ /**
19
+ * Logs a message at the specified log level.
20
+ * @param args - Additional parameters to be logged
21
+ * @returns A value determined by the implementing class
22
+ */
23
+ abstract debug(...args: LoggerTypes.Arg[]): void;
24
+ /**
25
+ * Logs an informational message.
26
+ * @param args - Additional parameters to be logged
27
+ * @returns A value determined by the implementing class
28
+ */
29
+ abstract info(...args: LoggerTypes.Arg[]): void;
30
+ /**
31
+ * Logs a warning message.
32
+ * @param args - Additional parameters to be logged
33
+ * @returns A value determined by the implementing class
34
+ */
35
+ abstract warn(...args: LoggerTypes.Arg[]): void;
36
+ /**
37
+ * Logs an error message.
38
+ * @param args - Additional parameters to be logged
39
+ * @returns A value determined by the implementing class
40
+ */
41
+ abstract error(...args: LoggerTypes.Arg[]): void;
42
+ }
43
+ //#endregion
44
+ //#region src/Service/BaseLogger.d.ts
45
+ declare class BaseLogger implements Logger {
46
+ private gContainer;
47
+ /**
48
+ * Hold the active log levels for the logger.
49
+ * Default: debug
50
+ */
51
+ private fLogLevel;
52
+ /**
53
+ * Hold providers
54
+ */
55
+ private fProviders;
56
+ /**
57
+ * Hold providers level
58
+ */
59
+ private fProvidersLevel;
60
+ /**
61
+ * Configure logger
62
+ * @param options
63
+ */
64
+ configure(options: LoggerTypes.Options): void;
65
+ /**
66
+ * Logs an informational message.
67
+ * @param args - Additional parameters to be logged
68
+ * @returns A value determined by the implementing class
69
+ */
70
+ debug(...args: LoggerTypes.Arg[]): void;
71
+ /**
72
+ * Logs an informational message.
73
+ * @param args - Additional parameters to be logged
74
+ * @returns A value determined by the implementing class
75
+ */
76
+ info(...args: LoggerTypes.Arg[]): void;
77
+ /**
78
+ * Logs a warning message.
79
+ * @param args - Additional parameters to be logged
80
+ * @returns A value determined by the implementing class
81
+ */
82
+ warn(...args: LoggerTypes.Arg[]): void;
83
+ /**
84
+ * Logs an error message.
85
+ * @param args - Additional parameters to be logged
86
+ * @returns A value determined by the implementing class
87
+ */
88
+ error(...args: LoggerTypes.Arg[]): void;
89
+ /**
90
+ * Prints a log message according to the specified format and level.
91
+ * This is an abstract method that should be implemented by subclasses.
92
+ * @param message - The log message object containing level, tag, and arguments
93
+ * @throws {Error} When called directly on BaseLogger (must be implemented by subclass)
94
+ * @protected
95
+ */
96
+ protected printMessage(message: LoggerTypes.Message): void;
97
+ }
98
+ //#endregion
99
+ //#region src/Utils/Utils.d.ts
100
+ type ColorTextFn = (text: string) => string;
101
+ /**
102
+ * Checks if target level is enabled.
103
+ * @param targetLevel target level
104
+ * @param logLevels array of enabled log levels
105
+ */
106
+ declare function isLogLevelEnabled(targetLevel: LoggerTypes.Level, currentLevel: LoggerTypes.Level): boolean;
107
+ declare const colors: Record<string, ColorTextFn>;
108
+ //#endregion
109
+ export { BaseLogger, Logger, LoggerTypes, colors, isLogLevelEnabled };
package/dist/index.mjs CHANGED
@@ -1,6 +1,34 @@
1
+ import { colors, isLogLevelEnabled } from "./Utils-5578ynXS.mjs";
2
+ import "node:module";
1
3
  import { Container, Inject } from "@vercube/di";
2
4
 
3
- //#region packages/logger/src/Common/Logger.ts
5
+ //#region rolldown:runtime
6
+ var __create = Object.create;
7
+ var __defProp = Object.defineProperty;
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __getOwnPropNames = Object.getOwnPropertyNames;
10
+ var __getProtoOf = Object.getPrototypeOf;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __commonJS = (cb, mod) => function() {
13
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
17
+ key = keys[i];
18
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
19
+ get: ((k) => from[k]).bind(null, key),
20
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
21
+ });
22
+ }
23
+ return to;
24
+ };
25
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: true
28
+ }) : target, mod));
29
+
30
+ //#endregion
31
+ //#region src/Common/Logger.ts
4
32
  /**
5
33
  * Abstract base class for implementing logging services.
6
34
  * Provides a standard interface for logging at different levels.
@@ -9,54 +37,20 @@ import { Container, Inject } from "@vercube/di";
9
37
  var Logger = class {};
10
38
 
11
39
  //#endregion
12
- //#region packages/logger/src/Utils/Utils.ts
13
- const LOG_LEVEL_VALUES = {
14
- debug: 1,
15
- info: 2,
16
- warn: 3,
17
- error: 4
18
- };
19
- /**
20
- * Checks if target level is enabled.
21
- * @param targetLevel target level
22
- * @param logLevels array of enabled log levels
23
- */
24
- function isLogLevelEnabled(targetLevel, currentLevel) {
25
- return LOG_LEVEL_VALUES[targetLevel] >= LOG_LEVEL_VALUES[currentLevel];
26
- }
27
- const isColorAllowed = () => !process.env.NO_COLOR;
28
- const colorIfAllowed = (colorFn) => {
29
- const wrappedFn = (text) => {
30
- return isColorAllowed() ? colorFn(text) : text;
31
- };
32
- return wrappedFn;
33
- };
34
- const colors = {
35
- bold: colorIfAllowed((text) => `\x1B[1m${text}\x1B[0m`),
36
- green: colorIfAllowed((text) => `\x1B[32m${text}\x1B[39m`),
37
- yellow: colorIfAllowed((text) => `\x1B[33m${text}\x1B[39m`),
38
- red: colorIfAllowed((text) => `\x1B[31m${text}\x1B[39m`),
39
- magentaBright: colorIfAllowed((text) => `\x1B[95m${text}\x1B[39m`),
40
- cyanBright: colorIfAllowed((text) => `\x1B[96m${text}\x1B[39m`)
41
- };
42
- const LOG_LEVEL_COLORS = {
43
- debug: colors.green,
44
- info: colors.bold,
45
- warn: colors.yellow,
46
- error: colors.red
47
- };
48
-
49
- //#endregion
50
- //#region node_modules/.pnpm/@oxc-project+runtime@0.65.0/node_modules/@oxc-project/runtime/src/helpers/esm/decorate.js
51
- function __decorate(decorators, target, key, desc) {
52
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55
- return c > 3 && r && Object.defineProperty(target, key, r), r;
56
- }
40
+ //#region ../../node_modules/.pnpm/@oxc-project+runtime@0.72.1/node_modules/@oxc-project/runtime/src/helpers/decorate.js
41
+ var require_decorate = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.1/node_modules/@oxc-project/runtime/src/helpers/decorate.js"(exports, module) {
42
+ function __decorate(decorators, target, key, desc) {
43
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
46
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
47
+ }
48
+ module.exports = __decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
49
+ } });
57
50
 
58
51
  //#endregion
59
- //#region packages/logger/src/Service/BaseLogger.ts
52
+ //#region src/Service/BaseLogger.ts
53
+ var import_decorate = __toESM(require_decorate());
60
54
  var BaseLogger = class {
61
55
  gContainer;
62
56
  /**
@@ -67,11 +61,11 @@ var BaseLogger = class {
67
61
  /**
68
62
  * Hold providers
69
63
  */
70
- fProviders = new Map();
64
+ fProviders = /* @__PURE__ */ new Map();
71
65
  /**
72
66
  * Hold providers level
73
67
  */
74
- fProvidersLevel = new Map();
68
+ fProvidersLevel = /* @__PURE__ */ new Map();
75
69
  /**
76
70
  * Configure logger
77
71
  * @param options
@@ -147,7 +141,7 @@ var BaseLogger = class {
147
141
  for (const [, provider] of providersToProcess) provider.processMessage(message);
148
142
  }
149
143
  };
150
- __decorate([Inject(Container)], BaseLogger.prototype, "gContainer", void 0);
144
+ (0, import_decorate.default)([Inject(Container)], BaseLogger.prototype, "gContainer", void 0);
151
145
 
152
146
  //#endregion
153
147
  export { BaseLogger, Logger, colors, isLogLevelEnabled };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercube/logger",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Logger module for Vercube framework",
5
5
  "repository": "@vercube/logger",
6
6
  "license": "MIT",
@@ -9,24 +9,20 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
- "import": "./dist/index.mjs",
13
- "require": "./dist/index.cjs"
12
+ "import": "./dist/index.mjs"
14
13
  },
15
14
  "./providers": {
16
15
  "types": "./dist/Providers/index.d.ts",
17
- "import": "./dist/Providers/index.mjs",
18
- "require": "./dist/Providers/index.cjs"
16
+ "import": "./dist/Providers/index.mjs"
19
17
  }
20
18
  },
21
- "main": "./dist/index.cjs",
22
- "module": "./dist/index.mjs",
23
19
  "types": "./dist/index.d.ts",
24
20
  "files": [
25
21
  "dist",
26
22
  "README.md"
27
23
  ],
28
24
  "dependencies": {
29
- "@vercube/di": "0.0.2"
25
+ "@vercube/di": "0.0.4"
30
26
  },
31
27
  "publishConfig": {
32
28
  "access": "public"
@@ -1,39 +0,0 @@
1
- import { LoggerTypes } from "../Types/LoggerTypes.js";
2
- /**
3
- * Abstract base class for implementing logging services.
4
- * Provides a standard interface for logging at different levels.
5
- * Implementations can customize how logs are processed and stored.
6
- */
7
- export declare abstract class Logger {
8
- /**
9
- * Configures the logger with the provided options.
10
- * This method should be called before using the logger to process logs.
11
- * @param options - Configuration options for the logger
12
- * @returns void or Promise<void> if configuration is asynchronous
13
- */
14
- abstract configure(options: LoggerTypes.Options): void;
15
- /**
16
- * Logs a message at the specified log level.
17
- * @param args - Additional parameters to be logged
18
- * @returns A value determined by the implementing class
19
- */
20
- abstract debug(...args: LoggerTypes.Arg[]): void;
21
- /**
22
- * Logs an informational message.
23
- * @param args - Additional parameters to be logged
24
- * @returns A value determined by the implementing class
25
- */
26
- abstract info(...args: LoggerTypes.Arg[]): void;
27
- /**
28
- * Logs a warning message.
29
- * @param args - Additional parameters to be logged
30
- * @returns A value determined by the implementing class
31
- */
32
- abstract warn(...args: LoggerTypes.Arg[]): void;
33
- /**
34
- * Logs an error message.
35
- * @param args - Additional parameters to be logged
36
- * @returns A value determined by the implementing class
37
- */
38
- abstract error(...args: LoggerTypes.Arg[]): void;
39
- }
@@ -1,26 +0,0 @@
1
- import type { LoggerTypes } from "../Types/LoggerTypes.js";
2
- /**
3
- * Abstract base class for implementing log provider.
4
- * Providers are responsible for processing and outputting log messages to various destinations.
5
- * Each appender can be initialized with custom options and handles message processing according to its implementation.
6
- *
7
- * @template T - The type of options used to initialize the appender
8
- */
9
- export declare abstract class LoggerProvider<T = unknown> {
10
- /**
11
- * Initializes the appender with the provided options.
12
- * This method should be called before using the appender to process messages.
13
- *
14
- * @param options - Configuration options for the appender
15
- * @returns void or Promise<void> if initialization is asynchronous
16
- */
17
- abstract initialize(options: T): void | Promise<void>;
18
- /**
19
- * Processes a log message according to the appender's implementation.
20
- * This method handles the actual logging logic specific to each appender type.
21
- *
22
- * @param message - The log message to process, containing level, tag, and other metadata
23
- * @returns void or Promise<void> if processing is asynchronous
24
- */
25
- abstract processMessage(message: LoggerTypes.Message): void | Promise<void>;
26
- }
@@ -1,18 +0,0 @@
1
- import { LoggerProvider } from "../Common/LoggerProvider.js";
2
- import { LoggerTypes } from "../Types/LoggerTypes.js";
3
- /**
4
- * ConsoleProvider class for logging messages to the console.
5
- */
6
- export declare class ConsoleProvider extends LoggerProvider {
7
- /**
8
- * Initializes the appender with the provided options.
9
- * This method should be called before using the appender to process messages.
10
- */
11
- initialize(): void;
12
- /**
13
- * Prints a log message according to the specified format and level.
14
- * @param message - The log message object containing level, tag, and arguments
15
- * @protected
16
- */
17
- processMessage(message: LoggerTypes.Message): void;
18
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
-
3
- //#region packages/logger/src/Common/LoggerProvider.ts
4
- /**
5
- * Abstract base class for implementing log provider.
6
- * Providers are responsible for processing and outputting log messages to various destinations.
7
- * Each appender can be initialized with custom options and handles message processing according to its implementation.
8
- *
9
- * @template T - The type of options used to initialize the appender
10
- */
11
- var LoggerProvider = class {};
12
-
13
- //#endregion
14
- //#region packages/logger/src/Providers/JsonProvider.ts
15
- /**
16
- * A logger implementation that formats log messages as JSON.
17
- */
18
- var JSONProvider = class extends LoggerProvider {
19
- /**
20
- * Initializes the appender with the provided options.
21
- * This method should be called before using the appender to process messages.
22
- *
23
- */
24
- initialize() {}
25
- /**
26
- * Prints a log message according to the specified format and level.
27
- * @param message - The log message object containing level, tag, and arguments
28
- * @protected
29
- */
30
- processMessage(message) {
31
- console.log(JSON.stringify({
32
- type: message?.type ?? "application_log",
33
- ...message
34
- }));
35
- }
36
- };
37
-
38
- //#endregion
39
- //#region packages/logger/src/Utils/Utils.ts
40
- const isColorAllowed = () => !process.env.NO_COLOR;
41
- const colorIfAllowed = (colorFn) => {
42
- const wrappedFn = (text) => {
43
- return isColorAllowed() ? colorFn(text) : text;
44
- };
45
- return wrappedFn;
46
- };
47
- const colors = {
48
- bold: colorIfAllowed((text) => `\x1B[1m${text}\x1B[0m`),
49
- green: colorIfAllowed((text) => `\x1B[32m${text}\x1B[39m`),
50
- yellow: colorIfAllowed((text) => `\x1B[33m${text}\x1B[39m`),
51
- red: colorIfAllowed((text) => `\x1B[31m${text}\x1B[39m`),
52
- magentaBright: colorIfAllowed((text) => `\x1B[95m${text}\x1B[39m`),
53
- cyanBright: colorIfAllowed((text) => `\x1B[96m${text}\x1B[39m`)
54
- };
55
- const LOG_LEVEL_COLORS = {
56
- debug: colors.green,
57
- info: colors.bold,
58
- warn: colors.yellow,
59
- error: colors.red
60
- };
61
-
62
- //#endregion
63
- //#region packages/logger/src/Providers/ConsoleProvider.ts
64
- /**
65
- * ConsoleProvider class for logging messages to the console.
66
- */
67
- var ConsoleProvider = class extends LoggerProvider {
68
- /**
69
- * Initializes the appender with the provided options.
70
- * This method should be called before using the appender to process messages.
71
- */
72
- initialize() {}
73
- /**
74
- * Prints a log message according to the specified format and level.
75
- * @param message - The log message object containing level, tag, and arguments
76
- * @protected
77
- */
78
- processMessage(message) {
79
- const date = message.timestamp ? new Date(message.timestamp) : new Date();
80
- console[message.level](`%s%s${message?.tag ? "%s" : ""} %s`, LOG_LEVEL_COLORS[message.level](`[${date.toISOString().split("T")[1]?.replace("Z", "")}]`), LOG_LEVEL_COLORS[message.level](`[${message.level.toUpperCase().padEnd(5, " ")}]`), message?.tag ? LOG_LEVEL_COLORS[message.level](`[${message.tag}]`) : "", ...message.args);
81
- }
82
- };
83
-
84
- //#endregion
85
- exports.ConsoleProvider = ConsoleProvider
86
- exports.JSONProvider = JSONProvider
@@ -1,2 +0,0 @@
1
- export * from "./JsonProvider.js";
2
- export * from "./ConsoleProvider.js";
@@ -1,55 +0,0 @@
1
- import type { LoggerTypes } from "../Types/LoggerTypes.js";
2
- import type { Logger } from "../Common/Logger.js";
3
- export declare class BaseLogger implements Logger {
4
- private gContainer;
5
- /**
6
- * Hold the active log levels for the logger.
7
- * Default: debug
8
- */
9
- private fLogLevel;
10
- /**
11
- * Hold providers
12
- */
13
- private fProviders;
14
- /**
15
- * Hold providers level
16
- */
17
- private fProvidersLevel;
18
- /**
19
- * Configure logger
20
- * @param options
21
- */
22
- configure(options: LoggerTypes.Options): void;
23
- /**
24
- * Logs an informational message.
25
- * @param args - Additional parameters to be logged
26
- * @returns A value determined by the implementing class
27
- */
28
- debug(...args: LoggerTypes.Arg[]): void;
29
- /**
30
- * Logs an informational message.
31
- * @param args - Additional parameters to be logged
32
- * @returns A value determined by the implementing class
33
- */
34
- info(...args: LoggerTypes.Arg[]): void;
35
- /**
36
- * Logs a warning message.
37
- * @param args - Additional parameters to be logged
38
- * @returns A value determined by the implementing class
39
- */
40
- warn(...args: LoggerTypes.Arg[]): void;
41
- /**
42
- * Logs an error message.
43
- * @param args - Additional parameters to be logged
44
- * @returns A value determined by the implementing class
45
- */
46
- error(...args: LoggerTypes.Arg[]): void;
47
- /**
48
- * Prints a log message according to the specified format and level.
49
- * This is an abstract method that should be implemented by subclasses.
50
- * @param message - The log message object containing level, tag, and arguments
51
- * @throws {Error} When called directly on BaseLogger (must be implemented by subclass)
52
- * @protected
53
- */
54
- protected printMessage(message: LoggerTypes.Message): void;
55
- }
@@ -1,27 +0,0 @@
1
- import type { IOC } from "@vercube/di";
2
- import type { LoggerProvider } from "../Common/LoggerProvider.js";
3
- export declare namespace LoggerTypes {
4
- type Level = "debug" | "info" | "warn" | "error";
5
- type Arg = any;
6
- interface Message {
7
- level: Level;
8
- args: Arg[];
9
- tag?: string;
10
- pid?: number;
11
- type?: "access_log" | "application_log";
12
- timestamp?: number;
13
- }
14
- type LogProviderOptions<T extends IOC.Newable<LoggerProvider>> = Parameters<InstanceType<T>["initialize"]>[0] & {
15
- logLevel?: Level
16
- };
17
- interface LogAppender<T extends IOC.Newable<LoggerProvider>> {
18
- name: string;
19
- provider: T;
20
- logLevel?: Level;
21
- options?: LogProviderOptions<T>;
22
- }
23
- interface Options {
24
- logLevel?: Level;
25
- providers?: LogAppender<any>[];
26
- }
27
- }
@@ -1,11 +0,0 @@
1
- import type { LoggerTypes } from "../Types/LoggerTypes.js";
2
- type ColorTextFn = (text: string) => string;
3
- /**
4
- * Checks if target level is enabled.
5
- * @param targetLevel target level
6
- * @param logLevels array of enabled log levels
7
- */
8
- export declare function isLogLevelEnabled(targetLevel: LoggerTypes.Level, currentLevel: LoggerTypes.Level): boolean;
9
- export declare const colors: Record<string, ColorTextFn>;
10
- export declare const LOG_LEVEL_COLORS: Record<LoggerTypes.Level, ColorTextFn>;
11
- export {};
package/dist/index.cjs DELETED
@@ -1,186 +0,0 @@
1
- //#region rolldown:runtime
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJS = (cb, mod) => function() {
9
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
13
- key = keys[i];
14
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
15
- get: ((k) => from[k]).bind(null, key),
16
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
- });
18
- }
19
- return to;
20
- };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
22
- value: mod,
23
- enumerable: true
24
- }) : target, mod));
25
-
26
- //#endregion
27
- const __vercube_di = __toESM(require("@vercube/di"));
28
-
29
- //#region packages/logger/src/Common/Logger.ts
30
- /**
31
- * Abstract base class for implementing logging services.
32
- * Provides a standard interface for logging at different levels.
33
- * Implementations can customize how logs are processed and stored.
34
- */
35
- var Logger = class {};
36
-
37
- //#endregion
38
- //#region packages/logger/src/Utils/Utils.ts
39
- const LOG_LEVEL_VALUES = {
40
- debug: 1,
41
- info: 2,
42
- warn: 3,
43
- error: 4
44
- };
45
- /**
46
- * Checks if target level is enabled.
47
- * @param targetLevel target level
48
- * @param logLevels array of enabled log levels
49
- */
50
- function isLogLevelEnabled(targetLevel, currentLevel) {
51
- return LOG_LEVEL_VALUES[targetLevel] >= LOG_LEVEL_VALUES[currentLevel];
52
- }
53
- const isColorAllowed = () => !process.env.NO_COLOR;
54
- const colorIfAllowed = (colorFn) => {
55
- const wrappedFn = (text) => {
56
- return isColorAllowed() ? colorFn(text) : text;
57
- };
58
- return wrappedFn;
59
- };
60
- const colors = {
61
- bold: colorIfAllowed((text) => `\x1B[1m${text}\x1B[0m`),
62
- green: colorIfAllowed((text) => `\x1B[32m${text}\x1B[39m`),
63
- yellow: colorIfAllowed((text) => `\x1B[33m${text}\x1B[39m`),
64
- red: colorIfAllowed((text) => `\x1B[31m${text}\x1B[39m`),
65
- magentaBright: colorIfAllowed((text) => `\x1B[95m${text}\x1B[39m`),
66
- cyanBright: colorIfAllowed((text) => `\x1B[96m${text}\x1B[39m`)
67
- };
68
- const LOG_LEVEL_COLORS = {
69
- debug: colors.green,
70
- info: colors.bold,
71
- warn: colors.yellow,
72
- error: colors.red
73
- };
74
-
75
- //#endregion
76
- //#region node_modules/.pnpm/@oxc-project+runtime@0.65.0/node_modules/@oxc-project/runtime/src/helpers/decorate.js
77
- var require_decorate = __commonJS({ "node_modules/.pnpm/@oxc-project+runtime@0.65.0/node_modules/@oxc-project/runtime/src/helpers/decorate.js"(exports, module) {
78
- function __decorate(decorators, target, key, desc) {
79
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
80
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
81
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
82
- return c > 3 && r && Object.defineProperty(target, key, r), r;
83
- }
84
- module.exports = __decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
85
- } });
86
- var import_decorate = __toESM(require_decorate(), 1);
87
-
88
- //#endregion
89
- //#region packages/logger/src/Service/BaseLogger.ts
90
- var BaseLogger = class {
91
- gContainer;
92
- /**
93
- * Hold the active log levels for the logger.
94
- * Default: debug
95
- */
96
- fLogLevel = "debug";
97
- /**
98
- * Hold providers
99
- */
100
- fProviders = new Map();
101
- /**
102
- * Hold providers level
103
- */
104
- fProvidersLevel = new Map();
105
- /**
106
- * Configure logger
107
- * @param options
108
- */
109
- configure(options) {
110
- this.fLogLevel = options?.logLevel ?? "debug";
111
- if (!options?.providers?.length) return;
112
- this.fProviders.clear();
113
- for (const logger of options.providers) try {
114
- const provider = this.gContainer.resolve(logger.provider);
115
- provider.initialize(logger.options);
116
- this.fProviders.set(logger.name, provider);
117
- this.fProvidersLevel.set(logger.name, logger.logLevel ?? this.fLogLevel);
118
- } catch (error) {
119
- console.error(`Failed to initialize logger provider: ${logger.provider.name}`, error);
120
- }
121
- }
122
- /**
123
- * Logs an informational message.
124
- * @param args - Additional parameters to be logged
125
- * @returns A value determined by the implementing class
126
- */
127
- debug(...args) {
128
- this.printMessage({
129
- level: "debug",
130
- args
131
- });
132
- }
133
- /**
134
- * Logs an informational message.
135
- * @param args - Additional parameters to be logged
136
- * @returns A value determined by the implementing class
137
- */
138
- info(...args) {
139
- this.printMessage({
140
- level: "info",
141
- args
142
- });
143
- }
144
- /**
145
- * Logs a warning message.
146
- * @param args - Additional parameters to be logged
147
- * @returns A value determined by the implementing class
148
- */
149
- warn(...args) {
150
- this.printMessage({
151
- level: "warn",
152
- args
153
- });
154
- }
155
- /**
156
- * Logs an error message.
157
- * @param args - Additional parameters to be logged
158
- * @returns A value determined by the implementing class
159
- */
160
- error(...args) {
161
- this.printMessage({
162
- level: "error",
163
- args
164
- });
165
- }
166
- /**
167
- * Prints a log message according to the specified format and level.
168
- * This is an abstract method that should be implemented by subclasses.
169
- * @param message - The log message object containing level, tag, and arguments
170
- * @throws {Error} When called directly on BaseLogger (must be implemented by subclass)
171
- * @protected
172
- */
173
- printMessage(message) {
174
- const providersToProcess = [...this.fProviders.entries()].filter(([name]) => {
175
- return isLogLevelEnabled(message.level, this.fProvidersLevel.get(name) ?? this.fLogLevel);
176
- });
177
- for (const [, provider] of providersToProcess) provider.processMessage(message);
178
- }
179
- };
180
- (0, import_decorate.default)([(0, __vercube_di.Inject)(__vercube_di.Container)], BaseLogger.prototype, "gContainer", void 0);
181
-
182
- //#endregion
183
- exports.BaseLogger = BaseLogger
184
- exports.Logger = Logger
185
- exports.colors = colors
186
- exports.isLogLevelEnabled = isLogLevelEnabled
package/dist/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from "./Common/Logger.js";
2
- export * from "./Service/BaseLogger.js";
3
- export { isLogLevelEnabled, colors } from "./Utils/Utils.js";
4
- export * from "./Types/LoggerTypes.js";