seyfert 2.1.1-dev-11317998653.0 → 2.1.1-dev-11318571086.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/index.d.ts +1 -1
- package/lib/common/index.js +4 -1
- package/lib/common/it/logger.d.ts +25 -5
- package/lib/common/it/logger.js +45 -24
- package/package.json +1 -1
package/lib/common/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './it/constants';
|
|
2
2
|
export * from './it/utils';
|
|
3
3
|
export * from './it/colors';
|
|
4
|
-
export
|
|
4
|
+
export { CustomizeLoggerCallback, AssignFilenameCallback, LogLevels, Logger, LoggerOptions } from './it/logger';
|
|
5
5
|
export * from './it/formatter';
|
|
6
6
|
export * from './shorters/channels';
|
|
7
7
|
export * from './shorters/emojis';
|
package/lib/common/index.js
CHANGED
|
@@ -14,10 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.Logger = exports.LogLevels = void 0;
|
|
17
18
|
__exportStar(require("./it/constants"), exports);
|
|
18
19
|
__exportStar(require("./it/utils"), exports);
|
|
19
20
|
__exportStar(require("./it/colors"), exports);
|
|
20
|
-
|
|
21
|
+
var logger_1 = require("./it/logger");
|
|
22
|
+
Object.defineProperty(exports, "LogLevels", { enumerable: true, get: function () { return logger_1.LogLevels; } });
|
|
23
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
21
24
|
__exportStar(require("./it/formatter"), exports);
|
|
22
25
|
//
|
|
23
26
|
__exportStar(require("./shorters/channels"), exports);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type WriteStream } from 'node:fs';
|
|
2
1
|
export declare enum LogLevels {
|
|
3
2
|
Debug = 0,
|
|
4
3
|
Info = 1,
|
|
@@ -12,7 +11,8 @@ export type LoggerOptions = {
|
|
|
12
11
|
active?: boolean;
|
|
13
12
|
saveOnFile?: boolean;
|
|
14
13
|
};
|
|
15
|
-
export type
|
|
14
|
+
export type CustomizeLoggerCallback = (self: Logger, level: LogLevels, args: unknown[]) => unknown[] | undefined;
|
|
15
|
+
export type AssignFilenameCallback = (self: Logger) => string;
|
|
16
16
|
/**
|
|
17
17
|
* Represents a logger utility for logging messages with various log levels.
|
|
18
18
|
*/
|
|
@@ -21,14 +21,16 @@ export declare class Logger {
|
|
|
21
21
|
* The options for configuring the logger.
|
|
22
22
|
*/
|
|
23
23
|
readonly options: Required<LoggerOptions>;
|
|
24
|
-
static streams: Partial<Record<string, WriteStream>>;
|
|
25
24
|
static saveOnFile?: string[] | 'all';
|
|
26
25
|
static dirname: string;
|
|
26
|
+
private static streams;
|
|
27
|
+
private static fileNames;
|
|
27
28
|
private static createdDir?;
|
|
29
|
+
private static __assignFileName;
|
|
28
30
|
/**
|
|
29
31
|
* The custom callback function for logging.
|
|
30
32
|
*/
|
|
31
|
-
private static __callback
|
|
33
|
+
private static __callback;
|
|
32
34
|
/**
|
|
33
35
|
* Allows customization of the logging behavior by providing a custom callback function.
|
|
34
36
|
* @param cb The custom callback function for logging.
|
|
@@ -37,7 +39,19 @@ export declare class Logger {
|
|
|
37
39
|
* // Custom logging implementation
|
|
38
40
|
* });
|
|
39
41
|
*/
|
|
40
|
-
static customize(cb:
|
|
42
|
+
static customize(cb: CustomizeLoggerCallback): void;
|
|
43
|
+
/**
|
|
44
|
+
* Customizes the logging filename by providing a callback function.
|
|
45
|
+
* The callback receives the logger instance and should return the desired filename.
|
|
46
|
+
*
|
|
47
|
+
* @param cb - A function that takes the logger instance and returns a string
|
|
48
|
+
* representing the customized filename for the log.
|
|
49
|
+
* @example
|
|
50
|
+
* Logger.customizeFilename((logger) => {
|
|
51
|
+
* return `${logger.name}-${Date.now()}.log`;
|
|
52
|
+
* });
|
|
53
|
+
*/
|
|
54
|
+
static customizeFilename(cb: AssignFilenameCallback): void;
|
|
41
55
|
static clearLogs(): Promise<void>;
|
|
42
56
|
/**
|
|
43
57
|
* Constructs a new Logger instance with the provided options.
|
|
@@ -122,3 +136,9 @@ export declare class Logger {
|
|
|
122
136
|
*/
|
|
123
137
|
static prefixes: Map<LogLevels, string>;
|
|
124
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Formats memory usage data into a string.
|
|
141
|
+
* @param data The memory usage data.
|
|
142
|
+
* @returns The formatted string representing memory usage.
|
|
143
|
+
*/
|
|
144
|
+
export declare function formatMemoryUsage(bytes: number): string;
|
package/lib/common/it/logger.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Logger = exports.LogLevels = void 0;
|
|
4
|
+
exports.formatMemoryUsage = formatMemoryUsage;
|
|
4
5
|
const node_fs_1 = require("node:fs");
|
|
5
6
|
const node_path_1 = require("node:path");
|
|
6
7
|
const colors_1 = require("./colors");
|
|
@@ -21,14 +22,30 @@ class Logger {
|
|
|
21
22
|
* The options for configuring the logger.
|
|
22
23
|
*/
|
|
23
24
|
options;
|
|
24
|
-
static streams = {};
|
|
25
25
|
static saveOnFile;
|
|
26
26
|
static dirname = 'seyfert-logs';
|
|
27
|
+
static streams = {};
|
|
28
|
+
static fileNames = {};
|
|
27
29
|
static createdDir;
|
|
30
|
+
static __assignFileName = self => {
|
|
31
|
+
const date = new Date();
|
|
32
|
+
return `${self.name}-${date.getMonth() + 1}-${date.getDate()}-${date.getFullYear()}-${date.getTime()}.log`;
|
|
33
|
+
};
|
|
28
34
|
/**
|
|
29
35
|
* The custom callback function for logging.
|
|
30
36
|
*/
|
|
31
|
-
static __callback
|
|
37
|
+
static __callback = (self, level, args) => {
|
|
38
|
+
const color = Logger.colorFunctions.get(level) ?? Logger.noColor;
|
|
39
|
+
const memoryData = process.memoryUsage?.();
|
|
40
|
+
const date = new Date();
|
|
41
|
+
return [
|
|
42
|
+
(0, colors_1.brightBlack)(formatMemoryUsage(memoryData?.rss ?? 0)),
|
|
43
|
+
(0, colors_1.bgBrightWhite)((0, colors_1.black)(`[${date.toLocaleDateString()} ${date.toLocaleTimeString()}]`)),
|
|
44
|
+
color(Logger.prefixes.get(level) ?? 'DEBUG'),
|
|
45
|
+
self.name ? `${self.name} >` : '>',
|
|
46
|
+
...args,
|
|
47
|
+
];
|
|
48
|
+
};
|
|
32
49
|
/**
|
|
33
50
|
* Allows customization of the logging behavior by providing a custom callback function.
|
|
34
51
|
* @param cb The custom callback function for logging.
|
|
@@ -40,10 +57,28 @@ class Logger {
|
|
|
40
57
|
static customize(cb) {
|
|
41
58
|
Logger.__callback = cb;
|
|
42
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Customizes the logging filename by providing a callback function.
|
|
62
|
+
* The callback receives the logger instance and should return the desired filename.
|
|
63
|
+
*
|
|
64
|
+
* @param cb - A function that takes the logger instance and returns a string
|
|
65
|
+
* representing the customized filename for the log.
|
|
66
|
+
* @example
|
|
67
|
+
* Logger.customizeFilename((logger) => {
|
|
68
|
+
* return `${logger.name}-${Date.now()}.log`;
|
|
69
|
+
* });
|
|
70
|
+
*/
|
|
71
|
+
static customizeFilename(cb) {
|
|
72
|
+
Logger.__assignFileName = cb;
|
|
73
|
+
}
|
|
43
74
|
static async clearLogs() {
|
|
44
75
|
for (const i of await node_fs_1.promises.readdir((0, node_path_1.join)(process.cwd(), Logger.dirname), { withFileTypes: true })) {
|
|
45
76
|
if (Logger.streams[i.name])
|
|
46
|
-
await new Promise(res => Logger.streams[i.name].close(
|
|
77
|
+
await new Promise((res, rej) => Logger.streams[i.name].close(err => {
|
|
78
|
+
if (err)
|
|
79
|
+
return rej(err);
|
|
80
|
+
res(err);
|
|
81
|
+
}));
|
|
47
82
|
await node_fs_1.promises.unlink((0, node_path_1.join)(process.cwd(), Logger.dirname, i.name)).catch(() => undefined);
|
|
48
83
|
delete Logger.streams[i.name];
|
|
49
84
|
}
|
|
@@ -108,22 +143,7 @@ class Logger {
|
|
|
108
143
|
return;
|
|
109
144
|
if (level < this.level)
|
|
110
145
|
return;
|
|
111
|
-
|
|
112
|
-
if (Logger.__callback) {
|
|
113
|
-
log = Logger.__callback(this, level, args);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const color = Logger.colorFunctions.get(level) ?? Logger.noColor;
|
|
117
|
-
const memoryData = process.memoryUsage?.();
|
|
118
|
-
const date = new Date();
|
|
119
|
-
log = [
|
|
120
|
-
(0, colors_1.brightBlack)(formatMemoryUsage(memoryData?.rss ?? 0)),
|
|
121
|
-
(0, colors_1.bgBrightWhite)((0, colors_1.black)(`[${date.toLocaleDateString()} ${date.toLocaleTimeString()}]`)),
|
|
122
|
-
color(Logger.prefixes.get(level) ?? 'DEBUG'),
|
|
123
|
-
this.name ? `${this.name} >` : '>',
|
|
124
|
-
...args,
|
|
125
|
-
];
|
|
126
|
-
}
|
|
146
|
+
const log = Logger.__callback(this, level, args);
|
|
127
147
|
if (!log)
|
|
128
148
|
return;
|
|
129
149
|
this.__write(log);
|
|
@@ -170,12 +190,13 @@ class Logger {
|
|
|
170
190
|
Logger.createdDir = true;
|
|
171
191
|
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(process.cwd(), Logger.dirname), { recursive: true });
|
|
172
192
|
}
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
193
|
+
const fileName = (Logger.fileNames[this.name] ??= (() => {
|
|
194
|
+
return (Logger.fileNames[this.name] = Logger.__assignFileName(this));
|
|
195
|
+
})());
|
|
196
|
+
if (!Logger.streams[fileName]) {
|
|
197
|
+
Logger.streams[fileName] = (0, node_fs_1.createWriteStream)((0, node_path_1.join)(process.cwd(), Logger.dirname, fileName));
|
|
177
198
|
}
|
|
178
|
-
Logger.streams[
|
|
199
|
+
Logger.streams[fileName].write(`${(0, colors_1.stripColor)(log.join(' '))}\n`);
|
|
179
200
|
}
|
|
180
201
|
}
|
|
181
202
|
/**
|