@warlock.js/logger 4.0.161 → 4.0.163
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/cjs/channels/console-log.d.ts +17 -0
- package/cjs/channels/console-log.d.ts.map +1 -0
- package/cjs/channels/console-log.js +47 -0
- package/cjs/channels/console-log.js.map +1 -0
- package/cjs/channels/file-log.d.ts +171 -0
- package/cjs/channels/file-log.d.ts.map +1 -0
- package/cjs/channels/file-log.js +293 -0
- package/cjs/channels/file-log.js.map +1 -0
- package/cjs/channels/index.d.ts +4 -0
- package/cjs/channels/index.d.ts.map +1 -0
- package/cjs/channels/json-file-log.d.ts +33 -0
- package/cjs/channels/json-file-log.d.ts.map +1 -0
- package/cjs/channels/json-file-log.js +164 -0
- package/cjs/channels/json-file-log.js.map +1 -0
- package/cjs/index.d.ts +6 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/log-channel.d.ts +67 -0
- package/cjs/log-channel.d.ts.map +1 -0
- package/cjs/log-channel.js +88 -0
- package/cjs/log-channel.js.map +1 -0
- package/cjs/logger.d.ts +62 -0
- package/cjs/logger.d.ts.map +1 -0
- package/cjs/logger.js +123 -0
- package/cjs/logger.js.map +1 -0
- package/cjs/types.d.ts +104 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/capture-unhandled-errors.d.ts +2 -0
- package/cjs/utils/capture-unhandled-errors.d.ts.map +1 -0
- package/cjs/utils/capture-unhandled-errors.js +12 -0
- package/cjs/utils/capture-unhandled-errors.js.map +1 -0
- package/cjs/utils/clear-message.d.ts +5 -0
- package/cjs/utils/clear-message.d.ts.map +1 -0
- package/cjs/utils/clear-message.js +9 -0
- package/cjs/utils/clear-message.js.map +1 -0
- package/cjs/utils/index.d.ts +3 -0
- package/cjs/utils/index.d.ts.map +1 -0
- package/esm/channels/console-log.d.ts +17 -0
- package/esm/channels/console-log.d.ts.map +1 -0
- package/esm/channels/console-log.js +47 -0
- package/esm/channels/console-log.js.map +1 -0
- package/esm/channels/file-log.d.ts +171 -0
- package/esm/channels/file-log.d.ts.map +1 -0
- package/esm/channels/file-log.js +293 -0
- package/esm/channels/file-log.js.map +1 -0
- package/esm/channels/index.d.ts +4 -0
- package/esm/channels/index.d.ts.map +1 -0
- package/esm/channels/json-file-log.d.ts +33 -0
- package/esm/channels/json-file-log.d.ts.map +1 -0
- package/esm/channels/json-file-log.js +164 -0
- package/esm/channels/json-file-log.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/log-channel.d.ts +67 -0
- package/esm/log-channel.d.ts.map +1 -0
- package/esm/log-channel.js +88 -0
- package/esm/log-channel.js.map +1 -0
- package/esm/logger.d.ts +62 -0
- package/esm/logger.d.ts.map +1 -0
- package/esm/logger.js +123 -0
- package/esm/logger.js.map +1 -0
- package/esm/types.d.ts +104 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/capture-unhandled-errors.d.ts +2 -0
- package/esm/utils/capture-unhandled-errors.d.ts.map +1 -0
- package/esm/utils/capture-unhandled-errors.js +12 -0
- package/esm/utils/capture-unhandled-errors.js.map +1 -0
- package/esm/utils/clear-message.d.ts +5 -0
- package/esm/utils/clear-message.d.ts.map +1 -0
- package/esm/utils/clear-message.js +9 -0
- package/esm/utils/clear-message.js.map +1 -0
- package/esm/utils/index.d.ts +3 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
'use strict';var fs$1=require('@mongez/fs'),dayjs=require('dayjs'),fs=require('fs'),path=require('path'),fileLog=require('./file-log.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var dayjs__default=/*#__PURE__*/_interopDefault(dayjs);var fs__default=/*#__PURE__*/_interopDefault(fs);var path__default=/*#__PURE__*/_interopDefault(path);class JSONFileLog extends fileLog.FileLog {
|
|
2
|
+
/**
|
|
3
|
+
* {@inheritdoc}
|
|
4
|
+
*/
|
|
5
|
+
name = "fileJson";
|
|
6
|
+
/**
|
|
7
|
+
* Get file extension
|
|
8
|
+
*/
|
|
9
|
+
get extension() {
|
|
10
|
+
return "json";
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get initial file contents
|
|
14
|
+
*/
|
|
15
|
+
get initialFileContents() {
|
|
16
|
+
return {
|
|
17
|
+
messages: this.messages,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Synchronously flush messages
|
|
22
|
+
*/
|
|
23
|
+
flushSync() {
|
|
24
|
+
if (this.messages.length === 0 && Object.keys(this.groupedMessages).length === 0)
|
|
25
|
+
return;
|
|
26
|
+
if (this.messagedShouldBeGrouped) {
|
|
27
|
+
this.prepareGroupedMessages();
|
|
28
|
+
for (const key in this.groupedMessages) {
|
|
29
|
+
const directoryPath = path__default.default.join(this.storagePath, key);
|
|
30
|
+
fs__default.default.mkdirSync(directoryPath, { recursive: true });
|
|
31
|
+
const filePath = path__default.default.join(directoryPath, `${this.fileName}.${this.extension}`);
|
|
32
|
+
let fileContents = { messages: [] };
|
|
33
|
+
if (fs__default.default.existsSync(filePath)) {
|
|
34
|
+
try {
|
|
35
|
+
fileContents = JSON.parse(fs__default.default.readFileSync(filePath, "utf-8"));
|
|
36
|
+
if (!Array.isArray(fileContents.messages))
|
|
37
|
+
fileContents.messages = [];
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
fileContents = { messages: [] };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
fileContents.messages.push(...this.groupedMessages[key]);
|
|
44
|
+
fs__default.default.writeFileSync(filePath, JSON.stringify(fileContents, null, 2));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
fs__default.default.mkdirSync(this.storagePath, { recursive: true });
|
|
49
|
+
let fileContents = { messages: [] };
|
|
50
|
+
if (fs__default.default.existsSync(this.filePath)) {
|
|
51
|
+
try {
|
|
52
|
+
fileContents = JSON.parse(fs__default.default.readFileSync(this.filePath, "utf-8"));
|
|
53
|
+
if (!Array.isArray(fileContents.messages))
|
|
54
|
+
fileContents.messages = [];
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
fileContents = { messages: [] };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
fileContents.messages.push(...this.messages);
|
|
61
|
+
fs__default.default.writeFileSync(this.filePath, JSON.stringify(fileContents, null, 2));
|
|
62
|
+
}
|
|
63
|
+
this.onSave();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* {@inheritdoc}
|
|
67
|
+
*/
|
|
68
|
+
async log(data) {
|
|
69
|
+
let stack;
|
|
70
|
+
if (data.message instanceof Error) {
|
|
71
|
+
stack = data.message.stack?.split("\n");
|
|
72
|
+
data.message = data.message.message;
|
|
73
|
+
}
|
|
74
|
+
const { module, action, message, type: level, context } = data;
|
|
75
|
+
if (!this.shouldBeLogged(data))
|
|
76
|
+
return;
|
|
77
|
+
const { date: dateFormat, time } = this.getDateAndTimeFormat();
|
|
78
|
+
const date = dayjs__default.default().format(dateFormat + " " + time);
|
|
79
|
+
this.messages.push({
|
|
80
|
+
content: message,
|
|
81
|
+
level,
|
|
82
|
+
date,
|
|
83
|
+
module,
|
|
84
|
+
action,
|
|
85
|
+
stack,
|
|
86
|
+
context,
|
|
87
|
+
timestamp: new Date().toISOString(),
|
|
88
|
+
});
|
|
89
|
+
await this.checkIfMessagesShouldBeWritten(); // Immediate check on buffer size
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Write messages to the file
|
|
93
|
+
*/
|
|
94
|
+
async writeMessagesToFile() {
|
|
95
|
+
if (this.messages.length === 0 || this.isWriting)
|
|
96
|
+
return;
|
|
97
|
+
this.isWriting = true;
|
|
98
|
+
if (this.messagedShouldBeGrouped) {
|
|
99
|
+
return await this.writeGroupedMessagesToFile();
|
|
100
|
+
}
|
|
101
|
+
await this.checkAndRotateFile(); // Ensure file rotation is handled
|
|
102
|
+
let fileContents;
|
|
103
|
+
if (await fs$1.fileExistsAsync(this.filePath)) {
|
|
104
|
+
try {
|
|
105
|
+
fileContents = await fs$1.getJsonFileAsync(this.filePath);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.error("Error reading log file, reinitializing:", error);
|
|
109
|
+
fileContents = { messages: [] }; // Reinitialize the file if corrupted
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
fileContents = { messages: [] }; // Reinitialize the file if corrupted
|
|
114
|
+
}
|
|
115
|
+
fileContents.messages.push(...this.messages);
|
|
116
|
+
try {
|
|
117
|
+
await fs$1.putJsonFileAsync(this.filePath, fileContents, { spaces: 2 });
|
|
118
|
+
this.onSave();
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.error("Failed to write log:", error);
|
|
122
|
+
// Implement fallback logic here
|
|
123
|
+
this.isWriting = false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Write grouped messages to the file
|
|
128
|
+
*/
|
|
129
|
+
async writeGroupedMessagesToFile() {
|
|
130
|
+
// first step, is to group the messages
|
|
131
|
+
this.prepareGroupedMessages();
|
|
132
|
+
// now each key in the grouped messages, represents the directory path that should extend the storage path
|
|
133
|
+
for (const key in this.groupedMessages) {
|
|
134
|
+
const directoryPath = path__default.default.join(this.storagePath, key);
|
|
135
|
+
await fs$1.ensureDirectoryAsync(directoryPath);
|
|
136
|
+
const filePath = path__default.default.join(directoryPath, `${this.fileName}.${this.extension}`);
|
|
137
|
+
await this.checkAndRotateFile(filePath); // Ensure we check file size before writing
|
|
138
|
+
let fileContents;
|
|
139
|
+
if (await fs$1.fileExistsAsync(filePath)) {
|
|
140
|
+
try {
|
|
141
|
+
fileContents = await fs$1.getJsonFileAsync(filePath);
|
|
142
|
+
if (!Array.isArray(fileContents.messages))
|
|
143
|
+
fileContents.messages = [];
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.error("Error reading log file, reinitializing:", error);
|
|
147
|
+
fileContents = { messages: [] };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
fileContents = { messages: [] };
|
|
152
|
+
}
|
|
153
|
+
fileContents.messages.push(...this.groupedMessages[key]);
|
|
154
|
+
try {
|
|
155
|
+
await fs$1.putJsonFileAsync(filePath, fileContents, { spaces: 2 });
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error("Failed to write log:", error);
|
|
159
|
+
this.isWriting = false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
this.onSave();
|
|
163
|
+
}
|
|
164
|
+
}exports.JSONFileLog=JSONFileLog;//# sourceMappingURL=json-file-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-file-log.js","sources":["../../src/channels/json-file-log.ts"],"sourcesContent":[null],"names":["FileLog","path","fs","dayjs","fileExistsAsync","getJsonFileAsync","putJsonFileAsync","ensureDirectoryAsync"],"mappings":"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"}
|
package/cjs/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
package/cjs/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var consoleLog=require('./channels/console-log.js'),fileLog=require('./channels/file-log.js'),jsonFileLog=require('./channels/json-file-log.js'),logChannel=require('./log-channel.js'),logger=require('./logger.js'),captureUnhandledErrors=require('./utils/capture-unhandled-errors.js'),clearMessage=require('./utils/clear-message.js');exports.ConsoleLog=consoleLog.ConsoleLog;exports.FileLog=fileLog.FileLog;exports.JSONFileLog=jsonFileLog.JSONFileLog;exports.LogChannel=logChannel.LogChannel;exports.Logger=logger.Logger;exports.log=logger.log;exports.logger=logger.logger;exports.captureAnyUnhandledRejection=captureUnhandledErrors.captureAnyUnhandledRejection;exports.clearMessage=clearMessage.clearMessage;//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { BasicLogConfigurations, LogContract, LoggingData } from "./types";
|
|
2
|
+
export declare abstract class LogChannel<Options extends BasicLogConfigurations = BasicLogConfigurations> implements LogContract {
|
|
3
|
+
/**
|
|
4
|
+
* Channel name
|
|
5
|
+
*/
|
|
6
|
+
name: string;
|
|
7
|
+
/**
|
|
8
|
+
* Channel description
|
|
9
|
+
*/
|
|
10
|
+
description?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Determine if channel is logging in terminal
|
|
13
|
+
*/
|
|
14
|
+
terminal: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Default Configurations
|
|
17
|
+
*/
|
|
18
|
+
protected defaultConfigurations: Options;
|
|
19
|
+
/**
|
|
20
|
+
* Channel configurations
|
|
21
|
+
*/
|
|
22
|
+
protected channelConfigurations: Options;
|
|
23
|
+
/**
|
|
24
|
+
* Determine whether the channel is fully initialized
|
|
25
|
+
*/
|
|
26
|
+
protected isInitialized: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Constructor
|
|
29
|
+
*/
|
|
30
|
+
constructor(configurations?: Options);
|
|
31
|
+
/**
|
|
32
|
+
* Initialize the channel
|
|
33
|
+
*/
|
|
34
|
+
protected init?(): void | Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Get config value
|
|
37
|
+
*/
|
|
38
|
+
protected config<K extends keyof Options>(key: K): Options[K];
|
|
39
|
+
/**
|
|
40
|
+
* Set configurations
|
|
41
|
+
*/
|
|
42
|
+
protected setConfigurations(configurations: Options): this;
|
|
43
|
+
/**
|
|
44
|
+
* Determine if the message should be logged
|
|
45
|
+
*/
|
|
46
|
+
protected shouldBeLogged(data: LoggingData): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Log the given message
|
|
49
|
+
*/
|
|
50
|
+
abstract log(data: LoggingData): void | Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Synchronously flush messages
|
|
53
|
+
*/
|
|
54
|
+
flushSync?(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Get date and time formats
|
|
57
|
+
*/
|
|
58
|
+
protected getDateAndTimeFormat(): {
|
|
59
|
+
date: string;
|
|
60
|
+
time: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* get basic configurations with the given ones
|
|
64
|
+
*/
|
|
65
|
+
protected withBasicConfigurations(configurations: Partial<Options>): Options;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=log-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-channel.d.ts","sourceRoot":"","sources":["../src/log-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhF,8BAAsB,UAAU,CAC9B,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAC/D,YAAW,WAAW;IAEtB;;OAEG;IACI,IAAI,EAAG,MAAM,CAAC;IAErB;;OAEG;IACI,WAAW,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACI,QAAQ,UAAS;IAExB;;OAEG;IACH,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAiB;IAEzD;;OAEG;IACH,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAiB;IAEzD;;OAEG;IACH,SAAS,CAAC,aAAa,UAAS;IAEhC;;OAEG;gBACgB,cAAc,CAAC,EAAE,OAAO;IAc3C;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvC;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAM7D;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,cAAc,EAAE,OAAO;IASnD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAgBpD;;OAEG;aACa,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5D;;OAEG;IACI,SAAS,CAAC,IAAI,IAAI;IAEzB;;OAEG;IACH,SAAS,CAAC,oBAAoB;;;;IAQ9B;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO;CAM7E"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';class LogChannel {
|
|
2
|
+
/**
|
|
3
|
+
* Channel name
|
|
4
|
+
*/
|
|
5
|
+
name;
|
|
6
|
+
/**
|
|
7
|
+
* Channel description
|
|
8
|
+
*/
|
|
9
|
+
description;
|
|
10
|
+
/**
|
|
11
|
+
* Determine if channel is logging in terminal
|
|
12
|
+
*/
|
|
13
|
+
terminal = false;
|
|
14
|
+
/**
|
|
15
|
+
* Default Configurations
|
|
16
|
+
*/
|
|
17
|
+
defaultConfigurations = {};
|
|
18
|
+
/**
|
|
19
|
+
* Channel configurations
|
|
20
|
+
*/
|
|
21
|
+
channelConfigurations = {}; //
|
|
22
|
+
/**
|
|
23
|
+
* Determine whether the channel is fully initialized
|
|
24
|
+
*/
|
|
25
|
+
isInitialized = false;
|
|
26
|
+
/**
|
|
27
|
+
* Constructor
|
|
28
|
+
*/
|
|
29
|
+
constructor(configurations) {
|
|
30
|
+
if (configurations) {
|
|
31
|
+
this.setConfigurations(configurations);
|
|
32
|
+
}
|
|
33
|
+
setTimeout(async () => {
|
|
34
|
+
if (this.init) {
|
|
35
|
+
await this.init();
|
|
36
|
+
}
|
|
37
|
+
this.isInitialized = true;
|
|
38
|
+
}, 0);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get config value
|
|
42
|
+
*/
|
|
43
|
+
config(key) {
|
|
44
|
+
return (this.channelConfigurations[key] ?? (this.defaultConfigurations ?? {})[key]);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Set configurations
|
|
48
|
+
*/
|
|
49
|
+
setConfigurations(configurations) {
|
|
50
|
+
this.channelConfigurations = {
|
|
51
|
+
...this.channelConfigurations,
|
|
52
|
+
...configurations,
|
|
53
|
+
};
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Determine if the message should be logged
|
|
58
|
+
*/
|
|
59
|
+
shouldBeLogged(data) {
|
|
60
|
+
// check for debug mode
|
|
61
|
+
const allowedLevels = this.config("levels");
|
|
62
|
+
if (allowedLevels?.length && !allowedLevels.includes(data.type))
|
|
63
|
+
return false;
|
|
64
|
+
const filter = this.config("filter");
|
|
65
|
+
if (filter) {
|
|
66
|
+
return filter(data);
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get date and time formats
|
|
72
|
+
*/
|
|
73
|
+
getDateAndTimeFormat() {
|
|
74
|
+
const dateFormat = this.config("dateFormat");
|
|
75
|
+
const date = dateFormat?.date ?? "DD-MM-YYYY";
|
|
76
|
+
const time = dateFormat?.time ?? "HH:mm:ss";
|
|
77
|
+
return { date, time };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* get basic configurations with the given ones
|
|
81
|
+
*/
|
|
82
|
+
withBasicConfigurations(configurations) {
|
|
83
|
+
return {
|
|
84
|
+
filter: () => true,
|
|
85
|
+
...configurations,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}exports.LogChannel=LogChannel;//# sourceMappingURL=log-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-channel.js","sources":["../src/log-channel.ts"],"sourcesContent":[null],"names":[],"mappings":"mBAEsB,UAAU,CAAA;AAI9B;;AAEG;AACI,IAAA,IAAI,CAAU;AAErB;;AAEG;AACI,IAAA,WAAW,CAAU;AAE5B;;AAEG;IACI,QAAQ,GAAG,KAAK,CAAC;AAExB;;AAEG;IACO,qBAAqB,GAAY,EAAa,CAAC;AAEzD;;AAEG;AACO,IAAA,qBAAqB,GAAY,EAAa,CAAC;AAEzD;;AAEG;IACO,aAAa,GAAG,KAAK,CAAC;AAEhC;;AAEG;AACH,IAAA,WAAA,CAAmB,cAAwB,EAAA;AACzC,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AACxC,SAAA;QAED,UAAU,CAAC,YAAW;YACpB,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AACnB,aAAA;AAED,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B,EAAE,CAAC,CAAC,CAAC;KACP;AAOD;;AAEG;AACO,IAAA,MAAM,CAA0B,GAAM,EAAA;AAC9C,QAAA,QACE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,EAAE,GAAG,CAAC,EAC1E;KACH;AAED;;AAEG;AACO,IAAA,iBAAiB,CAAC,cAAuB,EAAA;QACjD,IAAI,CAAC,qBAAqB,GAAG;YAC3B,GAAG,IAAI,CAAC,qBAAqB;AAC7B,YAAA,GAAG,cAAc;SAClB,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;AACO,IAAA,cAAc,CAAC,IAAiB,EAAA;;QAExC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE5C,QAAA,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,YAAA,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAYD;;AAEG;IACO,oBAAoB,GAAA;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7C,QAAA,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC;AAC9C,QAAA,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,UAAU,CAAC;AAE5C,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KACvB;AAED;;AAEG;AACO,IAAA,uBAAuB,CAAC,cAAgC,EAAA;QAChE,OAAO;AACL,YAAA,MAAM,EAAE,MAAM,IAAI;AAClB,YAAA,GAAG,cAAc;SACA,CAAC;KACrB;AACF"}
|
package/cjs/logger.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { LogChannel } from "./log-channel";
|
|
2
|
+
import type { Log, LoggingData, OmittedLoggingData } from "./types";
|
|
3
|
+
export declare class Logger {
|
|
4
|
+
/**
|
|
5
|
+
* Current channel
|
|
6
|
+
*/
|
|
7
|
+
channels: LogChannel[];
|
|
8
|
+
id: string;
|
|
9
|
+
/**
|
|
10
|
+
* Add a new channel
|
|
11
|
+
*/
|
|
12
|
+
addChannel(channel: LogChannel): this;
|
|
13
|
+
/**
|
|
14
|
+
* Set base configurations
|
|
15
|
+
*/
|
|
16
|
+
configure(config: {
|
|
17
|
+
channels: LogChannel[];
|
|
18
|
+
}): this;
|
|
19
|
+
/**
|
|
20
|
+
* Set channels
|
|
21
|
+
*/
|
|
22
|
+
setChannels(channels: LogChannel[]): this;
|
|
23
|
+
/**
|
|
24
|
+
* Normalize log data to a single object
|
|
25
|
+
*/
|
|
26
|
+
private normalizeLogData;
|
|
27
|
+
/**
|
|
28
|
+
* Make log
|
|
29
|
+
*/
|
|
30
|
+
log(data: LoggingData): Promise<this>;
|
|
31
|
+
/**
|
|
32
|
+
* Make debug log
|
|
33
|
+
*/
|
|
34
|
+
debug(dataOrModule: LoggingData | string, action?: string, message?: any): Promise<this>;
|
|
35
|
+
/**
|
|
36
|
+
* Make info log
|
|
37
|
+
*/
|
|
38
|
+
info(dataOrModule: OmittedLoggingData | string, action?: string, message?: any): Promise<this>;
|
|
39
|
+
/**
|
|
40
|
+
* Make warn log
|
|
41
|
+
*/
|
|
42
|
+
warn(dataOrModule: LoggingData | string, action?: string, message?: any): Promise<this>;
|
|
43
|
+
/**
|
|
44
|
+
* Make error log
|
|
45
|
+
*/
|
|
46
|
+
error(dataOrModule: LoggingData | string, action?: string, message?: any): Promise<this>;
|
|
47
|
+
/**
|
|
48
|
+
* Make success log
|
|
49
|
+
*/
|
|
50
|
+
success(dataOrModule: LoggingData | string, action?: string, message?: any): Promise<this>;
|
|
51
|
+
/**
|
|
52
|
+
* Get channel by name
|
|
53
|
+
*/
|
|
54
|
+
channel(name: string): LogChannel<import("./types").BasicLogConfigurations>;
|
|
55
|
+
/**
|
|
56
|
+
* Synchronously flush logs
|
|
57
|
+
*/
|
|
58
|
+
flushSync(): void;
|
|
59
|
+
}
|
|
60
|
+
export declare const logger: Logger;
|
|
61
|
+
export declare const log: Log;
|
|
62
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAY,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG9E,qBAAa,MAAM;IACjB;;OAEG;IACI,QAAQ,EAAE,UAAU,EAAE,CAAM;IAE5B,EAAE,SAAiC;IAE1C;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,UAAU;IAMrC;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;KAAE;IAMnD;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE;IAMzC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,WAAW;IAWlC;;OAEG;IACI,KAAK,CACV,YAAY,EAAE,WAAW,GAAG,MAAM,EAClC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,GAAQ;IAMnB;;OAEG;IACI,IAAI,CACT,YAAY,EAAE,kBAAkB,GAAG,MAAM,EACzC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,GAAQ;IAMnB;;OAEG;IACI,IAAI,CACT,YAAY,EAAE,WAAW,GAAG,MAAM,EAClC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,GAAQ;IAMnB;;OAEG;IACI,KAAK,CACV,YAAY,EAAE,WAAW,GAAG,MAAM,EAClC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,GAAQ;IAMnB;;OAEG;IACI,OAAO,CACZ,YAAY,EAAE,WAAW,GAAG,MAAM,EAClC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,GAAQ;IAYnB;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM;IAI3B;;OAEG;IACI,SAAS;CAOjB;AAED,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC,eAAO,MAAM,GAAG,EAAE,GAEjB,CAAC"}
|
package/cjs/logger.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict';var reinforcements=require('@mongez/reinforcements'),clearMessage=require('./utils/clear-message.js');class Logger {
|
|
2
|
+
/**
|
|
3
|
+
* Current channel
|
|
4
|
+
*/
|
|
5
|
+
channels = [];
|
|
6
|
+
id = "logger-" + reinforcements.Random.string(32);
|
|
7
|
+
/**
|
|
8
|
+
* Add a new channel
|
|
9
|
+
*/
|
|
10
|
+
addChannel(channel) {
|
|
11
|
+
this.channels.push(channel);
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Set base configurations
|
|
16
|
+
*/
|
|
17
|
+
configure(config) {
|
|
18
|
+
this.channels = config.channels;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Set channels
|
|
23
|
+
*/
|
|
24
|
+
setChannels(channels) {
|
|
25
|
+
this.channels = channels;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Normalize log data to a single object
|
|
30
|
+
*/
|
|
31
|
+
normalizeLogData(dataOrModule, action, message = "", level) {
|
|
32
|
+
if (typeof dataOrModule === "object") {
|
|
33
|
+
// If level is provided, override type
|
|
34
|
+
return {
|
|
35
|
+
type: (level || dataOrModule.type || "info"),
|
|
36
|
+
module: dataOrModule.module,
|
|
37
|
+
action: dataOrModule.action,
|
|
38
|
+
message: dataOrModule.message,
|
|
39
|
+
...(dataOrModule.context ? { context: dataOrModule.context } : {}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
type: (level || "info"),
|
|
44
|
+
module: dataOrModule,
|
|
45
|
+
action: action,
|
|
46
|
+
message,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Make log
|
|
51
|
+
*/
|
|
52
|
+
async log(data) {
|
|
53
|
+
for (const channel of this.channels) {
|
|
54
|
+
if (channel.terminal === false) {
|
|
55
|
+
data.message = clearMessage.clearMessage(data.message);
|
|
56
|
+
}
|
|
57
|
+
channel.log(data);
|
|
58
|
+
}
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Make debug log
|
|
63
|
+
*/
|
|
64
|
+
debug(dataOrModule, action, message = "") {
|
|
65
|
+
const data = this.normalizeLogData(dataOrModule, action, message, "debug");
|
|
66
|
+
return this.log(data);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Make info log
|
|
70
|
+
*/
|
|
71
|
+
info(dataOrModule, action, message = "") {
|
|
72
|
+
const data = this.normalizeLogData(dataOrModule, action, message, "info");
|
|
73
|
+
return this.log(data);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Make warn log
|
|
77
|
+
*/
|
|
78
|
+
warn(dataOrModule, action, message = "") {
|
|
79
|
+
const data = this.normalizeLogData(dataOrModule, action, message, "warn");
|
|
80
|
+
return this.log(data);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Make error log
|
|
84
|
+
*/
|
|
85
|
+
error(dataOrModule, action, message = "") {
|
|
86
|
+
const data = this.normalizeLogData(dataOrModule, action, message, "error");
|
|
87
|
+
return this.log(data);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Make success log
|
|
91
|
+
*/
|
|
92
|
+
success(dataOrModule, action, message = "") {
|
|
93
|
+
const data = this.normalizeLogData(dataOrModule, action, message, "success");
|
|
94
|
+
return this.log(data);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get channel by name
|
|
98
|
+
*/
|
|
99
|
+
channel(name) {
|
|
100
|
+
return this.channels.find(channel => channel.name === name);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Synchronously flush logs
|
|
104
|
+
*/
|
|
105
|
+
flushSync() {
|
|
106
|
+
for (const channel of this.channels) {
|
|
107
|
+
if (channel.flushSync) {
|
|
108
|
+
channel.flushSync();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const logger = new Logger();
|
|
114
|
+
const log = (data) => {
|
|
115
|
+
return logger.log(data);
|
|
116
|
+
};
|
|
117
|
+
log.info = logger.info.bind(logger);
|
|
118
|
+
log.debug = logger.debug.bind(logger);
|
|
119
|
+
log.warn = logger.warn.bind(logger);
|
|
120
|
+
log.error = logger.error.bind(logger);
|
|
121
|
+
log.success = logger.success.bind(logger);
|
|
122
|
+
log.channel = logger.channel.bind(logger);
|
|
123
|
+
log.flushSync = logger.flushSync.bind(logger);exports.Logger=Logger;exports.log=log;exports.logger=logger;//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../src/logger.ts"],"sourcesContent":[null],"names":["Random","clearMessage"],"mappings":"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"}
|
package/cjs/types.d.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { LogChannel } from "./log-channel";
|
|
2
|
+
import type { Logger } from "./logger";
|
|
3
|
+
export type LogLevel = "debug" | "info" | "warn" | "error" | "success";
|
|
4
|
+
export type DebugMode = "daily" | "monthly" | "yearly" | "hourly";
|
|
5
|
+
export type BasicLogConfigurations = {
|
|
6
|
+
/**
|
|
7
|
+
* Set what level of logs should be logged
|
|
8
|
+
*
|
|
9
|
+
* @default all
|
|
10
|
+
*/
|
|
11
|
+
levels?: LogLevel[];
|
|
12
|
+
/**
|
|
13
|
+
* Date and time format
|
|
14
|
+
*/
|
|
15
|
+
dateFormat?: {
|
|
16
|
+
date?: string;
|
|
17
|
+
time?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Advanced filter to determine if the message should be logged or not
|
|
21
|
+
*/
|
|
22
|
+
filter?: (data: LoggingData) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Add additional context to the log
|
|
25
|
+
*/
|
|
26
|
+
context?: (data: LoggingData) => Promise<Record<string, any>>;
|
|
27
|
+
};
|
|
28
|
+
export type LogMessage = {
|
|
29
|
+
content: string;
|
|
30
|
+
level: LogLevel;
|
|
31
|
+
date: string;
|
|
32
|
+
module: string;
|
|
33
|
+
action: string;
|
|
34
|
+
stack?: string;
|
|
35
|
+
context?: Record<string, any>;
|
|
36
|
+
timestamp?: string;
|
|
37
|
+
};
|
|
38
|
+
export interface LogContract {
|
|
39
|
+
/**
|
|
40
|
+
* Channel name
|
|
41
|
+
*/
|
|
42
|
+
name: string;
|
|
43
|
+
/**
|
|
44
|
+
* Channel description
|
|
45
|
+
*/
|
|
46
|
+
description?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Determine if channel is logging in terminal
|
|
49
|
+
*/
|
|
50
|
+
terminal?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Log the given message
|
|
53
|
+
*/
|
|
54
|
+
log(data: LoggingData): void | Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Synchronously flush logs
|
|
57
|
+
*/
|
|
58
|
+
flushSync?(): void;
|
|
59
|
+
}
|
|
60
|
+
export type LoggingData = {
|
|
61
|
+
type: "info" | "debug" | "warn" | "error" | "success";
|
|
62
|
+
module: string;
|
|
63
|
+
action: string;
|
|
64
|
+
message: any;
|
|
65
|
+
context?: Record<string, any>;
|
|
66
|
+
};
|
|
67
|
+
export type OmittedLoggingData = Omit<LoggingData, "type">;
|
|
68
|
+
export interface Log {
|
|
69
|
+
(data: LoggingData): Promise<Logger>;
|
|
70
|
+
/**
|
|
71
|
+
* Make info log
|
|
72
|
+
*/
|
|
73
|
+
info(data: OmittedLoggingData): Promise<Logger>;
|
|
74
|
+
info(module: string, action: string, message: any): Promise<Logger>;
|
|
75
|
+
/**
|
|
76
|
+
* Make debug log
|
|
77
|
+
*/
|
|
78
|
+
debug(data: OmittedLoggingData): Promise<Logger>;
|
|
79
|
+
debug(module: string, action: string, message: any): Promise<Logger>;
|
|
80
|
+
/**
|
|
81
|
+
* Make warn log
|
|
82
|
+
*/
|
|
83
|
+
warn(data: OmittedLoggingData): Promise<Logger>;
|
|
84
|
+
warn(module: string, action: string, message: any): Promise<Logger>;
|
|
85
|
+
/**
|
|
86
|
+
* Make error log
|
|
87
|
+
*/
|
|
88
|
+
error(data: OmittedLoggingData): Promise<Logger>;
|
|
89
|
+
error(module: string, action: string, message: any): Promise<Logger>;
|
|
90
|
+
/**
|
|
91
|
+
* Make success log
|
|
92
|
+
*/
|
|
93
|
+
success(data: OmittedLoggingData): Promise<Logger>;
|
|
94
|
+
success(module: string, action: string, message: any): Promise<Logger>;
|
|
95
|
+
/**
|
|
96
|
+
* Get channel by name
|
|
97
|
+
*/
|
|
98
|
+
channel(name: string): LogChannel | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Synchronously flush all logs
|
|
101
|
+
*/
|
|
102
|
+
flushSync(): void;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|