@innei/pretty-logger-nestjs 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,30 @@
1
+ import { WrappedConsola, ConsolaInstance } from '@innei/pretty-logger-core';
2
+ export { LoggerConsolaOptions, createLoggerConsola as createLogger } from '@innei/pretty-logger-core';
3
+ import { ConsoleLogger, ConsoleLoggerOptions, DynamicModule } from '@nestjs/common';
4
+
5
+ declare class Logger extends ConsoleLogger {
6
+ private static loggerInstance;
7
+ static setLoggerInstance(logger: WrappedConsola): void;
8
+ constructor(context: string, options: ConsoleLoggerOptions);
9
+ private _getColorByLogLevel;
10
+ private lastTimestampAt;
11
+ private _updateAndGetTimestampDiff;
12
+ protected formatMessage(message: any, logLevel?: string): any;
13
+ log(message: any, context?: string, ...argv: any[]): void;
14
+ warn(message: any, context?: string, ...argv: any[]): void;
15
+ debug(message: any, context?: string, ...argv: any[]): void;
16
+ verbose(message: any, context?: string, ...argv: any[]): void;
17
+ fatal(message: any, context?: string, ...argv: any[]): void;
18
+ error(message: any, context?: string, ...argv: any[]): void;
19
+ private print;
20
+ private defaultContextPrefix;
21
+ }
22
+
23
+ interface LoggerModuleOptions {
24
+ consola: ConsolaInstance;
25
+ }
26
+ declare class LoggerModule {
27
+ static forFeature(options?: LoggerModuleOptions): DynamicModule;
28
+ }
29
+
30
+ export { Logger, LoggerModule };
@@ -0,0 +1,30 @@
1
+ import { WrappedConsola, ConsolaInstance } from '@innei/pretty-logger-core';
2
+ export { LoggerConsolaOptions, createLoggerConsola as createLogger } from '@innei/pretty-logger-core';
3
+ import { ConsoleLogger, ConsoleLoggerOptions, DynamicModule } from '@nestjs/common';
4
+
5
+ declare class Logger extends ConsoleLogger {
6
+ private static loggerInstance;
7
+ static setLoggerInstance(logger: WrappedConsola): void;
8
+ constructor(context: string, options: ConsoleLoggerOptions);
9
+ private _getColorByLogLevel;
10
+ private lastTimestampAt;
11
+ private _updateAndGetTimestampDiff;
12
+ protected formatMessage(message: any, logLevel?: string): any;
13
+ log(message: any, context?: string, ...argv: any[]): void;
14
+ warn(message: any, context?: string, ...argv: any[]): void;
15
+ debug(message: any, context?: string, ...argv: any[]): void;
16
+ verbose(message: any, context?: string, ...argv: any[]): void;
17
+ fatal(message: any, context?: string, ...argv: any[]): void;
18
+ error(message: any, context?: string, ...argv: any[]): void;
19
+ private print;
20
+ private defaultContextPrefix;
21
+ }
22
+
23
+ interface LoggerModuleOptions {
24
+ consola: ConsolaInstance;
25
+ }
26
+ declare class LoggerModule {
27
+ static forFeature(options?: LoggerModuleOptions): DynamicModule;
28
+ }
29
+
30
+ export { Logger, LoggerModule };
package/dist/index.js ADDED
@@ -0,0 +1,168 @@
1
+ "use strict";
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 __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ 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;
37
+ };
38
+
39
+ // index.ts
40
+ var nest_exports = {};
41
+ __export(nest_exports, {
42
+ Logger: () => Logger,
43
+ LoggerConsolaOptions: () => import_pretty_logger_core3.LoggerConsolaOptions,
44
+ LoggerModule: () => LoggerModule,
45
+ createLogger: () => import_pretty_logger_core3.createLoggerConsola
46
+ });
47
+ module.exports = __toCommonJS(nest_exports);
48
+
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
+ }
135
+ };
136
+ _Logger.loggerInstance = (0, import_pretty_logger_core.createLoggerConsola)();
137
+ var Logger = _Logger;
138
+
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
+ }
155
+ };
156
+ LoggerModule = __decorateClass([
157
+ (0, import_common2.Module)({ providers: [Logger], exports: [Logger] })
158
+ ], LoggerModule);
159
+
160
+ // index.ts
161
+ var import_pretty_logger_core3 = require("@innei/pretty-logger-core");
162
+ // Annotate the CommonJS export names for ESM import in node:
163
+ 0 && (module.exports = {
164
+ Logger,
165
+ LoggerConsolaOptions,
166
+ LoggerModule,
167
+ createLogger
168
+ });
package/dist/index.mjs ADDED
@@ -0,0 +1,134 @@
1
+ var __defProp = Object.defineProperty;
2
+ 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
+ };
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
+ }
99
+ };
100
+ _Logger.loggerInstance = createLoggerConsola();
101
+ var Logger = _Logger;
102
+
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
+ }
119
+ };
120
+ LoggerModule = __decorateClass([
121
+ Module({ providers: [Logger], exports: [Logger] })
122
+ ], LoggerModule);
123
+
124
+ // index.ts
125
+ import {
126
+ LoggerConsolaOptions,
127
+ createLoggerConsola as createLoggerConsola3
128
+ } from "@innei/pretty-logger-core";
129
+ export {
130
+ Logger,
131
+ LoggerConsolaOptions,
132
+ LoggerModule,
133
+ createLoggerConsola3 as createLogger
134
+ };
package/index.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { Logger } from './logger.service.js'
2
+ export { LoggerModule } from './logger.module.js'
3
+ export {
4
+ LoggerConsolaOptions,
5
+ createLoggerConsola as createLogger,
6
+ } from '@innei/pretty-logger-core'
@@ -0,0 +1,26 @@
1
+ import type { ConsolaInstance } from '@innei/pretty-logger-core'
2
+ import type { DynamicModule } from '@nestjs/common'
3
+
4
+ import { createLoggerConsola } from '@innei/pretty-logger-core'
5
+ import { Module } from '@nestjs/common'
6
+
7
+ import { Logger } from './logger.service.js'
8
+
9
+ interface LoggerModuleOptions {
10
+ consola: ConsolaInstance
11
+ }
12
+ @Module({ providers: [Logger], exports: [Logger] })
13
+ export class LoggerModule {
14
+ static forFeature(options?: LoggerModuleOptions): DynamicModule {
15
+ const { consola } = options || {}
16
+ return {
17
+ module: LoggerModule,
18
+ providers: [
19
+ {
20
+ provide: 'L',
21
+ useValue: consola || createLoggerConsola(),
22
+ },
23
+ ],
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,126 @@
1
+ import cluster from 'cluster'
2
+ import picocolors from 'picocolors'
3
+ import type { WrappedConsola } from '@innei/pretty-logger-core'
4
+ import type { ConsoleLoggerOptions } from '@nestjs/common'
5
+
6
+ import { createLoggerConsola } from '@innei/pretty-logger-core'
7
+ import { ConsoleLogger } from '@nestjs/common'
8
+
9
+ type LoggerType =
10
+ | 'info'
11
+ | 'log'
12
+ | 'error'
13
+ | 'warn'
14
+ | 'debug'
15
+ | 'verbose'
16
+ | 'fatal'
17
+
18
+ export class Logger extends ConsoleLogger {
19
+ private static loggerInstance = createLoggerConsola()
20
+
21
+ static setLoggerInstance(logger: WrappedConsola) {
22
+ this.loggerInstance = logger
23
+ }
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
+ }
41
+ }
42
+
43
+ private lastTimestampAt: number = Date.now()
44
+ private _updateAndGetTimestampDiff() {
45
+ const includeTimestamp = this.lastTimestampAt && this.options.timestamp
46
+ const now = Date.now()
47
+ const result = includeTimestamp
48
+ ? picocolors.yellow(` +${now - this.lastTimestampAt}ms`)
49
+ : ''
50
+ this.lastTimestampAt = now
51
+ return result
52
+ }
53
+ protected formatMessage(message: any, logLevel = 'log') {
54
+ const formatMessage =
55
+ typeof message == 'string'
56
+ ? this._getColorByLogLevel(logLevel)(message)
57
+ : message
58
+ return formatMessage
59
+ }
60
+
61
+ log(message: any, context?: string, ...argv: any[]) {
62
+ this.print('info', message, context, ...argv)
63
+ }
64
+
65
+ warn(message: any, context?: string, ...argv: any[]) {
66
+ this.print('warn', message, context, ...argv)
67
+ }
68
+ debug(message: any, context?: string, ...argv: any[]) {
69
+ this.print('debug', message, context, ...argv)
70
+ }
71
+
72
+ verbose(message: any, context?: string, ...argv: any[]) {
73
+ this.print('verbose', message, context, ...argv)
74
+ }
75
+
76
+ fatal(message: any, context?: string, ...argv: any[]) {
77
+ this.print('fatal', message, context, ...argv)
78
+ }
79
+
80
+ error(message: any, context?: string, ...argv: any[]) {
81
+ const trace = context
82
+ const _context = argv[0]
83
+
84
+ if (!trace && _context) {
85
+ this.print('error', message, _context, ...argv.slice(1))
86
+ } else {
87
+ this.print('error', message, context, ...argv)
88
+ }
89
+ }
90
+
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()
100
+
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
+ }
121
+ }
122
+
123
+ private defaultContextPrefix = this.context
124
+ ? `[${picocolors.yellow(this.context)}] `
125
+ : `[${picocolors.red('System')}] `
126
+ }
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@innei/pretty-logger-nestjs",
3
+ "version": "0.3.0",
4
+ "main": "dist/index.js",
5
+ "module": "dist/index.mjs",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "require": "./dist/index.js",
10
+ "import": "./dist/index.mjs"
11
+ }
12
+ },
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.0"
20
+ },
21
+ "peerDependencies": {
22
+ "@nestjs/common": ">=10"
23
+ },
24
+ "scripts": {
25
+ "build": "tsup"
26
+ }
27
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from 'tsup'
2
+
3
+ export default defineConfig({
4
+ clean: true,
5
+ target: 'es2020',
6
+ entry: ['index.ts'],
7
+ dts: true,
8
+ format: ['cjs', 'esm'],
9
+ })