@innei/pretty-logger-nestjs 0.3.3 → 0.3.5

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/dist/index.d.mts CHANGED
@@ -1,32 +1,38 @@
1
- import { WrappedConsola, ConsolaInstance } from '@innei/pretty-logger-core';
2
- import * as prettyLoggerCore from '@innei/pretty-logger-core';
3
- export { prettyLoggerCore as Core };
4
- export { LoggerConsolaOptions, WrappedConsola, createLoggerConsola as createLogger } from '@innei/pretty-logger-core';
5
- import { ConsoleLogger, ConsoleLoggerOptions, DynamicModule } from '@nestjs/common';
6
-
7
- declare class Logger extends ConsoleLogger {
8
- private static loggerInstance;
9
- static setLoggerInstance(logger: WrappedConsola): void;
10
- constructor(context: string, options: ConsoleLoggerOptions);
11
- private _getColorByLogLevel;
12
- private lastTimestampAt;
13
- private _updateAndGetTimestampDiff;
14
- protected formatMessage(message: any, logLevel?: string): any;
15
- log(message: any, context?: string, ...argv: any[]): void;
16
- warn(message: any, context?: string, ...argv: any[]): void;
17
- debug(message: any, context?: string, ...argv: any[]): void;
18
- verbose(message: any, context?: string, ...argv: any[]): void;
19
- fatal(message: any, context?: string, ...argv: any[]): void;
20
- error(message: any, context?: string, ...argv: any[]): void;
21
- private print;
22
- private defaultContextPrefix;
23
- }
1
+ import * as Core from "@innei/pretty-logger-core";
2
+ import { ConsolaInstance, LoggerConsolaOptions, WrappedConsola, WrappedConsola as WrappedConsola$1, createLoggerConsola as createLogger } from "@innei/pretty-logger-core";
3
+ import { ConsoleLogger, ConsoleLoggerOptions, DynamicModule } from "@nestjs/common";
24
4
 
5
+ //#region logger.module.d.ts
25
6
  interface LoggerModuleOptions {
26
- consola: ConsolaInstance;
7
+ consola: ConsolaInstance;
27
8
  }
28
9
  declare class LoggerModule {
29
- static forFeature(options?: LoggerModuleOptions): DynamicModule;
10
+ static forFeature(options?: LoggerModuleOptions): DynamicModule;
30
11
  }
31
12
 
32
- export { Logger, LoggerModule };
13
+ //#endregion
14
+ //#region logger.service.d.ts
15
+ declare class Logger extends ConsoleLogger {
16
+ private static loggerInstance;
17
+ static setLoggerInstance(logger: WrappedConsola$1): void;
18
+ constructor(context?: string, options?: ConsoleLoggerOptions);
19
+ private lastTimestampAt;
20
+ private _updateAndGetTimestampDiff;
21
+ private getContextPrefix;
22
+ private get workerPrefix();
23
+ /**
24
+ * Check if the last argument looks like a NestJS context string.
25
+ * NestJS passes context as the last string argument (e.g., 'AppService', 'UserController').
26
+ * Context strings are typically PascalCase class names.
27
+ */
28
+ private isContextString;
29
+ private print;
30
+ log(...args: any[]): void;
31
+ info(...args: any[]): void;
32
+ warn(...args: any[]): void;
33
+ debug(...args: any[]): void;
34
+ verbose(...args: any[]): void;
35
+ fatal(...args: any[]): void;
36
+ error(...args: any[]): void;
37
+ } //#endregion
38
+ export { Core, Logger, LoggerConsolaOptions, LoggerModule, WrappedConsola, createLogger };
package/dist/index.d.ts CHANGED
@@ -1,32 +1,38 @@
1
- import { WrappedConsola, ConsolaInstance } from '@innei/pretty-logger-core';
2
- import * as prettyLoggerCore from '@innei/pretty-logger-core';
3
- export { prettyLoggerCore as Core };
4
- export { LoggerConsolaOptions, WrappedConsola, createLoggerConsola as createLogger } from '@innei/pretty-logger-core';
5
- import { ConsoleLogger, ConsoleLoggerOptions, DynamicModule } from '@nestjs/common';
6
-
7
- declare class Logger extends ConsoleLogger {
8
- private static loggerInstance;
9
- static setLoggerInstance(logger: WrappedConsola): void;
10
- constructor(context: string, options: ConsoleLoggerOptions);
11
- private _getColorByLogLevel;
12
- private lastTimestampAt;
13
- private _updateAndGetTimestampDiff;
14
- protected formatMessage(message: any, logLevel?: string): any;
15
- log(message: any, context?: string, ...argv: any[]): void;
16
- warn(message: any, context?: string, ...argv: any[]): void;
17
- debug(message: any, context?: string, ...argv: any[]): void;
18
- verbose(message: any, context?: string, ...argv: any[]): void;
19
- fatal(message: any, context?: string, ...argv: any[]): void;
20
- error(message: any, context?: string, ...argv: any[]): void;
21
- private print;
22
- private defaultContextPrefix;
23
- }
1
+ import * as Core from "@innei/pretty-logger-core";
2
+ import { ConsolaInstance, LoggerConsolaOptions, WrappedConsola, WrappedConsola as WrappedConsola$1, createLoggerConsola as createLogger } from "@innei/pretty-logger-core";
3
+ import { ConsoleLogger, ConsoleLoggerOptions, DynamicModule } from "@nestjs/common";
24
4
 
5
+ //#region logger.module.d.ts
25
6
  interface LoggerModuleOptions {
26
- consola: ConsolaInstance;
7
+ consola: ConsolaInstance;
27
8
  }
28
9
  declare class LoggerModule {
29
- static forFeature(options?: LoggerModuleOptions): DynamicModule;
10
+ static forFeature(options?: LoggerModuleOptions): DynamicModule;
30
11
  }
31
12
 
32
- export { Logger, LoggerModule };
13
+ //#endregion
14
+ //#region logger.service.d.ts
15
+ declare class Logger extends ConsoleLogger {
16
+ private static loggerInstance;
17
+ static setLoggerInstance(logger: WrappedConsola$1): void;
18
+ constructor(context?: string, options?: ConsoleLoggerOptions);
19
+ private lastTimestampAt;
20
+ private _updateAndGetTimestampDiff;
21
+ private getContextPrefix;
22
+ private get workerPrefix();
23
+ /**
24
+ * Check if the last argument looks like a NestJS context string.
25
+ * NestJS passes context as the last string argument (e.g., 'AppService', 'UserController').
26
+ * Context strings are typically PascalCase class names.
27
+ */
28
+ private isContextString;
29
+ private print;
30
+ log(...args: any[]): void;
31
+ info(...args: any[]): void;
32
+ warn(...args: any[]): void;
33
+ debug(...args: any[]): void;
34
+ verbose(...args: any[]): void;
35
+ fatal(...args: any[]): void;
36
+ error(...args: any[]): void;
37
+ } //#endregion
38
+ export { Core, Logger, LoggerConsolaOptions, LoggerModule, WrappedConsola, createLogger };
package/dist/index.js CHANGED
@@ -1,169 +1,152 @@
1
- "use strict";
1
+ //#region rolldown:runtime
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
8
+ var __commonJS = (cb, mod) => function() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
10
  };
12
11
  var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var __decorateClass = (decorators, target, key, kind) => {
30
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
31
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
32
- if (decorator = decorators[i])
33
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
34
- if (kind && result)
35
- __defProp(target, key, result);
36
- return result;
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;
37
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));
38
25
 
39
- // index.ts
40
- var nest_exports = {};
41
- __export(nest_exports, {
42
- Core: () => Core,
43
- Logger: () => Logger,
44
- LoggerModule: () => LoggerModule,
45
- createLogger: () => import_pretty_logger_core3.createLoggerConsola
46
- });
47
- module.exports = __toCommonJS(nest_exports);
26
+ //#endregion
27
+ const __innei_pretty_logger_core = __toESM(require("@innei/pretty-logger-core"));
28
+ const __nestjs_common = __toESM(require("@nestjs/common"));
29
+ const node_cluster = __toESM(require("node:cluster"));
30
+ const picocolors = __toESM(require("picocolors"));
48
31
 
49
- // logger.service.ts
50
- var import_cluster = __toESM(require("cluster"));
51
- var import_picocolors = __toESM(require("picocolors"));
52
- var import_pretty_logger_core = require("@innei/pretty-logger-core");
53
- var import_common = require("@nestjs/common");
54
- var _Logger = class _Logger extends import_common.ConsoleLogger {
55
- constructor(context, options) {
56
- super(context, options);
57
- this.lastTimestampAt = Date.now();
58
- this.defaultContextPrefix = this.context ? `[${import_picocolors.default.yellow(this.context)}] ` : `[${import_picocolors.default.red("System")}] `;
59
- }
60
- static setLoggerInstance(logger) {
61
- this.loggerInstance = logger;
62
- }
63
- _getColorByLogLevel(logLevel) {
64
- switch (logLevel) {
65
- case "debug":
66
- return import_picocolors.default.cyan;
67
- case "warn":
68
- return import_picocolors.default.yellow;
69
- case "error":
70
- return import_picocolors.default.red;
71
- case "verbose":
72
- return import_picocolors.default.gray;
73
- default:
74
- return import_picocolors.default.green;
75
- }
76
- }
77
- _updateAndGetTimestampDiff() {
78
- const includeTimestamp = this.lastTimestampAt && this.options.timestamp;
79
- const now = Date.now();
80
- const result = includeTimestamp ? import_picocolors.default.yellow(` +${now - this.lastTimestampAt}ms`) : "";
81
- this.lastTimestampAt = now;
82
- return result;
83
- }
84
- formatMessage(message, logLevel = "log") {
85
- const formatMessage = typeof message == "string" ? this._getColorByLogLevel(logLevel)(message) : message;
86
- return formatMessage;
87
- }
88
- log(message, context, ...argv) {
89
- this.print("info", message, context, ...argv);
90
- }
91
- warn(message, context, ...argv) {
92
- this.print("warn", message, context, ...argv);
93
- }
94
- debug(message, context, ...argv) {
95
- this.print("debug", message, context, ...argv);
96
- }
97
- verbose(message, context, ...argv) {
98
- this.print("verbose", message, context, ...argv);
99
- }
100
- fatal(message, context, ...argv) {
101
- this.print("fatal", message, context, ...argv);
102
- }
103
- error(message, context, ...argv) {
104
- const trace = context;
105
- const _context = argv[0];
106
- if (!trace && _context) {
107
- this.print("error", message, _context, ...argv.slice(1));
108
- } else {
109
- this.print("error", message, context, ...argv);
110
- }
111
- }
112
- print(level, message, context, ...argv) {
113
- const print = _Logger.loggerInstance[level];
114
- const formatMessage = this.formatMessage(message, level);
115
- const diff = this._updateAndGetTimestampDiff();
116
- const workerPrefix = import_cluster.default.isWorker ? import_picocolors.default.yellow(`*Worker - ${import_cluster.default.worker.id}*`) : "";
117
- if (context && !argv.length) {
118
- print(
119
- `${workerPrefix} [${import_picocolors.default.yellow(context)}] `,
120
- formatMessage,
121
- diff
122
- );
123
- } else if (!argv.length) {
124
- print(`${workerPrefix} ${this.defaultContextPrefix}`, formatMessage, diff);
125
- } else {
126
- print(
127
- `${workerPrefix} ${this.defaultContextPrefix}`,
128
- message,
129
- context,
130
- ...argv,
131
- diff
132
- );
133
- }
134
- }
32
+ //#region logger.service.ts
33
+ var Logger = class Logger extends __nestjs_common.ConsoleLogger {
34
+ static setLoggerInstance(logger) {
35
+ this.loggerInstance = logger;
36
+ }
37
+ constructor(context, options) {
38
+ super(context || "", options || {});
39
+ this.lastTimestampAt = Date.now();
40
+ }
41
+ _updateAndGetTimestampDiff() {
42
+ const includeTimestamp = this.lastTimestampAt && this.options?.timestamp;
43
+ const now = Date.now();
44
+ const result = includeTimestamp ? picocolors.default.yellow(` +${now - this.lastTimestampAt}ms`) : "";
45
+ this.lastTimestampAt = now;
46
+ return result;
47
+ }
48
+ getContextPrefix(context) {
49
+ const ctx = context || this.context;
50
+ return ctx ? `[${picocolors.default.yellow(ctx)}]` : `[${picocolors.default.red("System")}]`;
51
+ }
52
+ get workerPrefix() {
53
+ return node_cluster.default.isWorker ? picocolors.default.yellow(`*Worker - ${node_cluster.default.worker.id}*`) : "";
54
+ }
55
+ /**
56
+ * Check if the last argument looks like a NestJS context string.
57
+ * NestJS passes context as the last string argument (e.g., 'AppService', 'UserController').
58
+ * Context strings are typically PascalCase class names.
59
+ */
60
+ isContextString(value) {
61
+ if (typeof value !== "string") return false;
62
+ return /^[A-Z][a-zA-Z0-9]*$/.test(value);
63
+ }
64
+ print(level, ...args) {
65
+ const print = Logger.loggerInstance[level];
66
+ const diff = this._updateAndGetTimestampDiff();
67
+ let context;
68
+ let messages = args;
69
+ if (args.length > 0 && this.isContextString(args.at(-1))) {
70
+ context = args.at(-1);
71
+ messages = args.slice(0, -1);
72
+ }
73
+ const prefix = this.workerPrefix ? `${this.workerPrefix} ${this.getContextPrefix(context)}` : this.getContextPrefix(context);
74
+ print(prefix, ...messages, diff);
75
+ }
76
+ log(...args) {
77
+ this.print("info", ...args);
78
+ }
79
+ info(...args) {
80
+ this.print("info", ...args);
81
+ }
82
+ warn(...args) {
83
+ this.print("warn", ...args);
84
+ }
85
+ debug(...args) {
86
+ this.print("debug", ...args);
87
+ }
88
+ verbose(...args) {
89
+ this.print("verbose", ...args);
90
+ }
91
+ fatal(...args) {
92
+ this.print("fatal", ...args);
93
+ }
94
+ error(...args) {
95
+ this.print("error", ...args);
96
+ }
135
97
  };
136
- _Logger.loggerInstance = (0, import_pretty_logger_core.createLoggerConsola)();
137
- var Logger = _Logger;
98
+ Logger.loggerInstance = (0, __innei_pretty_logger_core.createLoggerConsola)();
138
99
 
139
- // logger.module.ts
140
- var import_pretty_logger_core2 = require("@innei/pretty-logger-core");
141
- var import_common2 = require("@nestjs/common");
142
- var LoggerModule = class {
143
- static forFeature(options) {
144
- const { consola } = options || {};
145
- return {
146
- module: LoggerModule,
147
- providers: [
148
- {
149
- provide: "L",
150
- useValue: consola || (0, import_pretty_logger_core2.createLoggerConsola)()
151
- }
152
- ]
153
- };
154
- }
100
+ //#endregion
101
+ //#region ../../node_modules/.pnpm/@oxc-project+runtime@0.70.0/node_modules/@oxc-project/runtime/src/helpers/decorate.js
102
+ var require_decorate = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.70.0/node_modules/@oxc-project/runtime/src/helpers/decorate.js"(exports, module) {
103
+ function __decorate(decorators, target, key, desc) {
104
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
105
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
106
+ 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;
107
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
108
+ }
109
+ module.exports = __decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
110
+ } });
111
+
112
+ //#endregion
113
+ //#region logger.module.ts
114
+ var import_decorate = __toESM(require_decorate());
115
+ var _LoggerModule;
116
+ let LoggerModule = _LoggerModule = class LoggerModule$1 {
117
+ static forFeature(options) {
118
+ const { consola } = options || {};
119
+ return {
120
+ module: _LoggerModule,
121
+ providers: [{
122
+ provide: "L",
123
+ useValue: consola || (0, __innei_pretty_logger_core.createLoggerConsola)()
124
+ }]
125
+ };
126
+ }
155
127
  };
156
- LoggerModule = __decorateClass([
157
- (0, import_common2.Module)({ providers: [Logger], exports: [Logger] })
158
- ], LoggerModule);
128
+ LoggerModule = _LoggerModule = (0, import_decorate.default)([(0, __nestjs_common.Module)({
129
+ providers: [Logger],
130
+ exports: [Logger]
131
+ })], LoggerModule);
159
132
 
160
- // index.ts
161
- var import_pretty_logger_core3 = require("@innei/pretty-logger-core");
162
- var Core = __toESM(require("@innei/pretty-logger-core"));
163
- // Annotate the CommonJS export names for ESM import in node:
164
- 0 && (module.exports = {
165
- Core,
166
- Logger,
167
- LoggerModule,
168
- createLogger
133
+ //#endregion
134
+ Object.defineProperty(exports, 'Core', {
135
+ enumerable: true,
136
+ get: function () {
137
+ return __innei_pretty_logger_core;
138
+ }
169
139
  });
140
+ exports.Logger = Logger;
141
+ Object.defineProperty(exports, 'LoggerModule', {
142
+ enumerable: true,
143
+ get: function () {
144
+ return LoggerModule;
145
+ }
146
+ });
147
+ Object.defineProperty(exports, 'createLogger', {
148
+ enumerable: true,
149
+ get: function () {
150
+ return __innei_pretty_logger_core.createLoggerConsola;
151
+ }
152
+ });
package/dist/index.mjs CHANGED
@@ -1,134 +1,135 @@
1
+ import * as Core from "@innei/pretty-logger-core";
2
+ import { createLoggerConsola, createLoggerConsola as createLogger } from "@innei/pretty-logger-core";
3
+ import { ConsoleLogger, Module } from "@nestjs/common";
4
+ import cluster from "node:cluster";
5
+ import picocolors from "picocolors";
6
+
7
+ //#region rolldown:runtime
8
+ var __create = Object.create;
1
9
  var __defProp = Object.defineProperty;
2
10
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __decorateClass = (decorators, target, key, kind) => {
4
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
- if (decorator = decorators[i])
7
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
- if (kind && result)
9
- __defProp(target, key, result);
10
- return result;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __getProtoOf = Object.getPrototypeOf;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __commonJS = (cb, mod) => function() {
15
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
16
  };
12
-
13
- // logger.service.ts
14
- import cluster from "cluster";
15
- import picocolors from "picocolors";
16
- import { createLoggerConsola } from "@innei/pretty-logger-core";
17
- import { ConsoleLogger } from "@nestjs/common";
18
- var _Logger = class _Logger extends ConsoleLogger {
19
- constructor(context, options) {
20
- super(context, options);
21
- this.lastTimestampAt = Date.now();
22
- this.defaultContextPrefix = this.context ? `[${picocolors.yellow(this.context)}] ` : `[${picocolors.red("System")}] `;
23
- }
24
- static setLoggerInstance(logger) {
25
- this.loggerInstance = logger;
26
- }
27
- _getColorByLogLevel(logLevel) {
28
- switch (logLevel) {
29
- case "debug":
30
- return picocolors.cyan;
31
- case "warn":
32
- return picocolors.yellow;
33
- case "error":
34
- return picocolors.red;
35
- case "verbose":
36
- return picocolors.gray;
37
- default:
38
- return picocolors.green;
39
- }
40
- }
41
- _updateAndGetTimestampDiff() {
42
- const includeTimestamp = this.lastTimestampAt && this.options.timestamp;
43
- const now = Date.now();
44
- const result = includeTimestamp ? picocolors.yellow(` +${now - this.lastTimestampAt}ms`) : "";
45
- this.lastTimestampAt = now;
46
- return result;
47
- }
48
- formatMessage(message, logLevel = "log") {
49
- const formatMessage = typeof message == "string" ? this._getColorByLogLevel(logLevel)(message) : message;
50
- return formatMessage;
51
- }
52
- log(message, context, ...argv) {
53
- this.print("info", message, context, ...argv);
54
- }
55
- warn(message, context, ...argv) {
56
- this.print("warn", message, context, ...argv);
57
- }
58
- debug(message, context, ...argv) {
59
- this.print("debug", message, context, ...argv);
60
- }
61
- verbose(message, context, ...argv) {
62
- this.print("verbose", message, context, ...argv);
63
- }
64
- fatal(message, context, ...argv) {
65
- this.print("fatal", message, context, ...argv);
66
- }
67
- error(message, context, ...argv) {
68
- const trace = context;
69
- const _context = argv[0];
70
- if (!trace && _context) {
71
- this.print("error", message, _context, ...argv.slice(1));
72
- } else {
73
- this.print("error", message, context, ...argv);
74
- }
75
- }
76
- print(level, message, context, ...argv) {
77
- const print = _Logger.loggerInstance[level];
78
- const formatMessage = this.formatMessage(message, level);
79
- const diff = this._updateAndGetTimestampDiff();
80
- const workerPrefix = cluster.isWorker ? picocolors.yellow(`*Worker - ${cluster.worker.id}*`) : "";
81
- if (context && !argv.length) {
82
- print(
83
- `${workerPrefix} [${picocolors.yellow(context)}] `,
84
- formatMessage,
85
- diff
86
- );
87
- } else if (!argv.length) {
88
- print(`${workerPrefix} ${this.defaultContextPrefix}`, formatMessage, diff);
89
- } else {
90
- print(
91
- `${workerPrefix} ${this.defaultContextPrefix}`,
92
- message,
93
- context,
94
- ...argv,
95
- diff
96
- );
97
- }
98
- }
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
19
+ key = keys[i];
20
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
21
+ get: ((k) => from[k]).bind(null, key),
22
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
23
+ });
24
+ }
25
+ return to;
99
26
  };
100
- _Logger.loggerInstance = createLoggerConsola();
101
- var Logger = _Logger;
27
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
102
31
 
103
- // logger.module.ts
104
- import { createLoggerConsola as createLoggerConsola2 } from "@innei/pretty-logger-core";
105
- import { Module } from "@nestjs/common";
106
- var LoggerModule = class {
107
- static forFeature(options) {
108
- const { consola } = options || {};
109
- return {
110
- module: LoggerModule,
111
- providers: [
112
- {
113
- provide: "L",
114
- useValue: consola || createLoggerConsola2()
115
- }
116
- ]
117
- };
118
- }
32
+ //#endregion
33
+ //#region logger.service.ts
34
+ var Logger = class Logger extends ConsoleLogger {
35
+ static setLoggerInstance(logger) {
36
+ this.loggerInstance = logger;
37
+ }
38
+ constructor(context, options) {
39
+ super(context || "", options || {});
40
+ this.lastTimestampAt = Date.now();
41
+ }
42
+ _updateAndGetTimestampDiff() {
43
+ const includeTimestamp = this.lastTimestampAt && this.options?.timestamp;
44
+ const now = Date.now();
45
+ const result = includeTimestamp ? picocolors.yellow(` +${now - this.lastTimestampAt}ms`) : "";
46
+ this.lastTimestampAt = now;
47
+ return result;
48
+ }
49
+ getContextPrefix(context) {
50
+ const ctx = context || this.context;
51
+ return ctx ? `[${picocolors.yellow(ctx)}]` : `[${picocolors.red("System")}]`;
52
+ }
53
+ get workerPrefix() {
54
+ return cluster.isWorker ? picocolors.yellow(`*Worker - ${cluster.worker.id}*`) : "";
55
+ }
56
+ /**
57
+ * Check if the last argument looks like a NestJS context string.
58
+ * NestJS passes context as the last string argument (e.g., 'AppService', 'UserController').
59
+ * Context strings are typically PascalCase class names.
60
+ */
61
+ isContextString(value) {
62
+ if (typeof value !== "string") return false;
63
+ return /^[A-Z][a-zA-Z0-9]*$/.test(value);
64
+ }
65
+ print(level, ...args) {
66
+ const print = Logger.loggerInstance[level];
67
+ const diff = this._updateAndGetTimestampDiff();
68
+ let context;
69
+ let messages = args;
70
+ if (args.length > 0 && this.isContextString(args.at(-1))) {
71
+ context = args.at(-1);
72
+ messages = args.slice(0, -1);
73
+ }
74
+ const prefix = this.workerPrefix ? `${this.workerPrefix} ${this.getContextPrefix(context)}` : this.getContextPrefix(context);
75
+ print(prefix, ...messages, diff);
76
+ }
77
+ log(...args) {
78
+ this.print("info", ...args);
79
+ }
80
+ info(...args) {
81
+ this.print("info", ...args);
82
+ }
83
+ warn(...args) {
84
+ this.print("warn", ...args);
85
+ }
86
+ debug(...args) {
87
+ this.print("debug", ...args);
88
+ }
89
+ verbose(...args) {
90
+ this.print("verbose", ...args);
91
+ }
92
+ fatal(...args) {
93
+ this.print("fatal", ...args);
94
+ }
95
+ error(...args) {
96
+ this.print("error", ...args);
97
+ }
119
98
  };
120
- LoggerModule = __decorateClass([
121
- Module({ providers: [Logger], exports: [Logger] })
122
- ], LoggerModule);
99
+ Logger.loggerInstance = createLoggerConsola();
123
100
 
124
- // index.ts
125
- import {
126
- createLoggerConsola as createLoggerConsola3
127
- } from "@innei/pretty-logger-core";
128
- import * as Core from "@innei/pretty-logger-core";
129
- export {
130
- Core,
131
- Logger,
132
- LoggerModule,
133
- createLoggerConsola3 as createLogger
101
+ //#endregion
102
+ //#region ../../node_modules/.pnpm/@oxc-project+runtime@0.70.0/node_modules/@oxc-project/runtime/src/helpers/decorate.js
103
+ var require_decorate = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.70.0/node_modules/@oxc-project/runtime/src/helpers/decorate.js"(exports, module) {
104
+ function __decorate(decorators, target, key, desc) {
105
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
106
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
107
+ 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;
108
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
109
+ }
110
+ module.exports = __decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
111
+ } });
112
+
113
+ //#endregion
114
+ //#region logger.module.ts
115
+ var import_decorate = __toESM(require_decorate());
116
+ var _LoggerModule;
117
+ let LoggerModule = _LoggerModule = class LoggerModule$1 {
118
+ static forFeature(options) {
119
+ const { consola } = options || {};
120
+ return {
121
+ module: _LoggerModule,
122
+ providers: [{
123
+ provide: "L",
124
+ useValue: consola || createLoggerConsola()
125
+ }]
126
+ };
127
+ }
134
128
  };
129
+ LoggerModule = _LoggerModule = (0, import_decorate.default)([Module({
130
+ providers: [Logger],
131
+ exports: [Logger]
132
+ })], LoggerModule);
133
+
134
+ //#endregion
135
+ export { Core, Logger, LoggerModule, createLogger };
package/index.ts CHANGED
@@ -1,9 +1,8 @@
1
- export { Logger } from './logger.service.js'
2
1
  export { LoggerModule } from './logger.module.js'
2
+ export { Logger } from './logger.service.js'
3
3
  export {
4
- type LoggerConsolaOptions,
5
4
  createLoggerConsola as createLogger,
5
+ type LoggerConsolaOptions,
6
6
  type WrappedConsola,
7
7
  } from '@innei/pretty-logger-core'
8
-
9
8
  export * as Core from '@innei/pretty-logger-core'
package/logger.module.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import type { ConsolaInstance } from '@innei/pretty-logger-core'
2
- import type { DynamicModule } from '@nestjs/common'
3
-
4
2
  import { createLoggerConsola } from '@innei/pretty-logger-core'
3
+ import type { DynamicModule } from '@nestjs/common'
5
4
  import { Module } from '@nestjs/common'
6
5
 
7
6
  import { Logger } from './logger.service.js'
package/logger.service.ts CHANGED
@@ -1,4 +1,4 @@
1
- import cluster from 'cluster'
1
+ import cluster from 'node:cluster'
2
2
  import picocolors from 'picocolors'
3
3
  import type { WrappedConsola } from '@innei/pretty-logger-core'
4
4
  import type { ConsoleLoggerOptions } from '@nestjs/common'
@@ -6,7 +6,7 @@ import type { ConsoleLoggerOptions } from '@nestjs/common'
6
6
  import { createLoggerConsola } from '@innei/pretty-logger-core'
7
7
  import { ConsoleLogger } from '@nestjs/common'
8
8
 
9
- type LoggerType =
9
+ type LogLevel =
10
10
  | 'info'
11
11
  | 'log'
12
12
  | 'error'
@@ -22,27 +22,13 @@ export class Logger extends ConsoleLogger {
22
22
  this.loggerInstance = logger
23
23
  }
24
24
 
25
- constructor(context: string, options: ConsoleLoggerOptions) {
26
- super(context, options)
27
- }
28
- private _getColorByLogLevel(logLevel: string) {
29
- switch (logLevel) {
30
- case 'debug':
31
- return picocolors.cyan
32
- case 'warn':
33
- return picocolors.yellow
34
- case 'error':
35
- return picocolors.red
36
- case 'verbose':
37
- return picocolors.gray
38
- default:
39
- return picocolors.green
40
- }
25
+ constructor(context?: string, options?: ConsoleLoggerOptions) {
26
+ super(context || '', options || {})
41
27
  }
42
28
 
43
29
  private lastTimestampAt: number = Date.now()
44
30
  private _updateAndGetTimestampDiff() {
45
- const includeTimestamp = this.lastTimestampAt && this.options.timestamp
31
+ const includeTimestamp = this.lastTimestampAt && this.options?.timestamp
46
32
  const now = Date.now()
47
33
  const result = includeTimestamp
48
34
  ? picocolors.yellow(` +${now - this.lastTimestampAt}ms`)
@@ -50,77 +36,75 @@ export class Logger extends ConsoleLogger {
50
36
  this.lastTimestampAt = now
51
37
  return result
52
38
  }
53
- protected formatMessage(message: any, logLevel = 'log') {
54
- const formatMessage =
55
- typeof message == 'string'
56
- ? this._getColorByLogLevel(logLevel)(message)
57
- : message
58
- return formatMessage
39
+
40
+ private getContextPrefix(context?: string) {
41
+ const ctx = context || this.context
42
+ return ctx ? `[${picocolors.yellow(ctx)}]` : `[${picocolors.red('System')}]`
59
43
  }
60
44
 
61
- log(message: any, context?: string, ...argv: any[]) {
62
- this.print('info', message, context, ...argv)
45
+ private get workerPrefix() {
46
+ return cluster.isWorker
47
+ ? picocolors.yellow(`*Worker - ${cluster.worker!.id}*`)
48
+ : ''
63
49
  }
64
50
 
65
- warn(message: any, context?: string, ...argv: any[]) {
66
- this.print('warn', message, context, ...argv)
51
+ /**
52
+ * Check if the last argument looks like a NestJS context string.
53
+ * NestJS passes context as the last string argument (e.g., 'AppService', 'UserController').
54
+ * Context strings are typically PascalCase class names.
55
+ */
56
+ private isContextString(value: unknown): value is string {
57
+ if (typeof value !== 'string') return false
58
+ // Context is usually a short PascalCase identifier (class name)
59
+ // Not a sentence, not a path, not containing spaces or special chars
60
+ return /^[A-Z][a-zA-Z0-9]*$/.test(value)
67
61
  }
68
- debug(message: any, context?: string, ...argv: any[]) {
69
- this.print('debug', message, context, ...argv)
62
+
63
+ private print(level: LogLevel, ...args: any[]) {
64
+ const print = Logger.loggerInstance[level]
65
+ const diff = this._updateAndGetTimestampDiff()
66
+
67
+ let context: string | undefined
68
+ let messages = args
69
+
70
+ // Check if the last argument is a context string (NestJS convention)
71
+ if (args.length > 0 && this.isContextString(args.at(-1))) {
72
+ context = args.at(-1)
73
+ messages = args.slice(0, -1)
74
+ }
75
+
76
+ const prefix = this.workerPrefix
77
+ ? `${this.workerPrefix} ${this.getContextPrefix(context)}`
78
+ : this.getContextPrefix(context)
79
+
80
+ print(prefix, ...messages, diff)
70
81
  }
71
82
 
72
- verbose(message: any, context?: string, ...argv: any[]) {
73
- this.print('verbose', message, context, ...argv)
83
+ log(...args: any[]) {
84
+ this.print('info', ...args)
74
85
  }
75
86
 
76
- fatal(message: any, context?: string, ...argv: any[]) {
77
- this.print('fatal', message, context, ...argv)
87
+ info(...args: any[]) {
88
+ this.print('info', ...args)
78
89
  }
79
90
 
80
- error(message: any, context?: string, ...argv: any[]) {
81
- const trace = context
82
- const _context = argv[0]
91
+ warn(...args: any[]) {
92
+ this.print('warn', ...args)
93
+ }
83
94
 
84
- if (!trace && _context) {
85
- this.print('error', message, _context, ...argv.slice(1))
86
- } else {
87
- this.print('error', message, context, ...argv)
88
- }
95
+ debug(...args: any[]) {
96
+ this.print('debug', ...args)
89
97
  }
90
98
 
91
- private print(
92
- level: LoggerType,
93
- message: any,
94
- context?: string,
95
- ...argv: any[]
96
- ) {
97
- const print = Logger.loggerInstance[level]
98
- const formatMessage = this.formatMessage(message, level)
99
- const diff = this._updateAndGetTimestampDiff()
99
+ verbose(...args: any[]) {
100
+ this.print('verbose', ...args)
101
+ }
100
102
 
101
- const workerPrefix = cluster.isWorker
102
- ? picocolors.yellow(`*Worker - ${cluster!.worker!.id}*`)
103
- : ''
104
- if (context && !argv.length) {
105
- print(
106
- `${workerPrefix} [${picocolors.yellow(context)}] `,
107
- formatMessage,
108
- diff,
109
- )
110
- } else if (!argv.length) {
111
- print(`${workerPrefix} ${this.defaultContextPrefix}`, formatMessage, diff)
112
- } else {
113
- print(
114
- `${workerPrefix} ${this.defaultContextPrefix}`,
115
- message,
116
- context,
117
- ...argv,
118
- diff,
119
- )
120
- }
103
+ fatal(...args: any[]) {
104
+ this.print('fatal', ...args)
121
105
  }
122
106
 
123
- private defaultContextPrefix = this.context
124
- ? `[${picocolors.yellow(this.context)}] `
125
- : `[${picocolors.red('System')}] `
107
+ error(...args: any[]) {
108
+ this.print('error', ...args)
109
+ }
126
110
  }
package/package.json CHANGED
@@ -1,27 +1,29 @@
1
1
  {
2
2
  "name": "@innei/pretty-logger-nestjs",
3
- "version": "0.3.3",
4
- "main": "dist/index.js",
5
- "module": "dist/index.mjs",
6
- "types": "dist/index.d.ts",
3
+ "version": "0.3.5",
7
4
  "exports": {
8
5
  ".": {
9
6
  "require": "./dist/index.js",
10
7
  "import": "./dist/index.mjs"
11
8
  }
12
9
  },
13
- "dependencies": {
14
- "cron": "3.1.6",
15
- "defu": "^6.1.3",
16
- "picocolors": "^1.0.0",
17
- "std-env": "^3.5.0",
18
- "string-width": "npm:@innei/string-width@7.1.1-fork.0",
19
- "@innei/pretty-logger-core": "0.3.3"
10
+ "main": "dist/index.js",
11
+ "module": "dist/index.mjs",
12
+ "types": "dist/index.d.ts",
13
+ "scripts": {
14
+ "build": "tsdown"
20
15
  },
21
16
  "peerDependencies": {
22
17
  "@nestjs/common": ">=10"
23
18
  },
24
- "scripts": {
25
- "build": "tsup"
19
+ "dependencies": {
20
+ "@innei/pretty-logger-core": "workspace:*",
21
+ "cron": "4.3.0",
22
+ "defu": "^6.1.3",
23
+ "picocolors": "^1.0.0",
24
+ "std-env": "^3.5.0"
25
+ },
26
+ "devDependencies": {
27
+ "@oxc-project/runtime": "^0.70.0"
26
28
  }
27
- }
29
+ }
@@ -1,4 +1,4 @@
1
- import { defineConfig } from 'tsup'
1
+ import { defineConfig } from 'tsdown'
2
2
 
3
3
  export default defineConfig({
4
4
  clean: true,
@@ -6,4 +6,5 @@ export default defineConfig({
6
6
  entry: ['index.ts'],
7
7
  dts: true,
8
8
  format: ['cjs', 'esm'],
9
+ noExternal: ['@oxc-project/runtime']
9
10
  })