@warlock.js/logger 1.0.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.
Files changed (66) hide show
  1. package/README.md +381 -0
  2. package/cjs/LogChannel.d.ts +20 -0
  3. package/cjs/LogChannel.d.ts.map +1 -0
  4. package/cjs/LogChannel.js +14 -0
  5. package/cjs/LogChannel.js.map +1 -0
  6. package/cjs/channels/console-log.d.ts +17 -0
  7. package/cjs/channels/console-log.d.ts.map +1 -0
  8. package/cjs/channels/console-log.js +44 -0
  9. package/cjs/channels/console-log.js.map +1 -0
  10. package/cjs/channels/file-log.d.ts +202 -0
  11. package/cjs/channels/file-log.d.ts.map +1 -0
  12. package/cjs/channels/file-log.js +315 -0
  13. package/cjs/channels/file-log.js.map +1 -0
  14. package/cjs/channels/index.d.ts +4 -0
  15. package/cjs/channels/index.d.ts.map +1 -0
  16. package/cjs/channels/json-file-log.d.ts +25 -0
  17. package/cjs/channels/json-file-log.d.ts.map +1 -0
  18. package/cjs/channels/json-file-log.js +73 -0
  19. package/cjs/channels/json-file-log.js.map +1 -0
  20. package/cjs/index.d.ts +8 -0
  21. package/cjs/index.d.ts.map +1 -0
  22. package/cjs/index.js +1 -0
  23. package/cjs/index.js.map +1 -0
  24. package/cjs/logger.d.ts +74 -0
  25. package/cjs/logger.d.ts.map +1 -0
  26. package/cjs/logger.js +84 -0
  27. package/cjs/logger.js.map +1 -0
  28. package/cjs/types.d.ts +21 -0
  29. package/cjs/types.d.ts.map +1 -0
  30. package/cjs/utils.d.ts +6 -0
  31. package/cjs/utils.d.ts.map +1 -0
  32. package/cjs/utils.js +21 -0
  33. package/cjs/utils.js.map +1 -0
  34. package/esm/LogChannel.d.ts +20 -0
  35. package/esm/LogChannel.d.ts.map +1 -0
  36. package/esm/LogChannel.js +14 -0
  37. package/esm/LogChannel.js.map +1 -0
  38. package/esm/channels/console-log.d.ts +17 -0
  39. package/esm/channels/console-log.d.ts.map +1 -0
  40. package/esm/channels/console-log.js +44 -0
  41. package/esm/channels/console-log.js.map +1 -0
  42. package/esm/channels/file-log.d.ts +202 -0
  43. package/esm/channels/file-log.d.ts.map +1 -0
  44. package/esm/channels/file-log.js +315 -0
  45. package/esm/channels/file-log.js.map +1 -0
  46. package/esm/channels/index.d.ts +4 -0
  47. package/esm/channels/index.d.ts.map +1 -0
  48. package/esm/channels/json-file-log.d.ts +25 -0
  49. package/esm/channels/json-file-log.d.ts.map +1 -0
  50. package/esm/channels/json-file-log.js +73 -0
  51. package/esm/channels/json-file-log.js.map +1 -0
  52. package/esm/index.d.ts +8 -0
  53. package/esm/index.d.ts.map +1 -0
  54. package/esm/index.js +1 -0
  55. package/esm/index.js.map +1 -0
  56. package/esm/logger.d.ts +74 -0
  57. package/esm/logger.d.ts.map +1 -0
  58. package/esm/logger.js +84 -0
  59. package/esm/logger.js.map +1 -0
  60. package/esm/types.d.ts +21 -0
  61. package/esm/types.d.ts.map +1 -0
  62. package/esm/utils.d.ts +6 -0
  63. package/esm/utils.d.ts.map +1 -0
  64. package/esm/utils.js +21 -0
  65. package/esm/utils.js.map +1 -0
  66. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log.d.ts","sourceRoot":"","sources":["../../src/channels/file-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ 'use strict';var fs$1=require('@mongez/fs'),dayjs=require('dayjs'),fs=require('fs'),os=require('os'),LogChannel=require('../LogChannel.js'),path=require('path');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 FileLog extends LogChannel.LogChannel {
2
+ /**
3
+ * {@inheritdoc}
4
+ */
5
+ name = "file";
6
+ /**
7
+ * Messages buffer
8
+ */
9
+ messages = [];
10
+ /**
11
+ * Grouped messages
12
+ */
13
+ groupedMessages = {};
14
+ /**
15
+ * Default channel configurations
16
+ */
17
+ defaultConfigurations = {
18
+ storagePath: process.cwd() + "/storage/logs",
19
+ rotate: true,
20
+ name: "app",
21
+ extension: "log",
22
+ chunk: "single",
23
+ maxMessagesToWrite: 100,
24
+ // maxFileSize: 10 * 1024 * 1024, // 10MB
25
+ maxFileSize: 10,
26
+ get rotateFileName() {
27
+ return dayjs__default.default().format("DD-MM-YYYY");
28
+ },
29
+ dateFormat: {
30
+ date: "DD-MM-YYYY",
31
+ time: "HH:mm:ss",
32
+ },
33
+ };
34
+ /**
35
+ * Last write time
36
+ */
37
+ lastWriteTime = Date.now();
38
+ /**
39
+ * Channel configurations
40
+ */
41
+ channelConfigurations = {};
42
+ /**
43
+ * A flag to determine if the file is being written
44
+ */
45
+ isWriting = false;
46
+ /**
47
+ * Get config value
48
+ */
49
+ config(key) {
50
+ return this.channelConfigurations[key] ?? this.defaultConfigurations[key];
51
+ }
52
+ /**
53
+ * Constructor
54
+ */
55
+ constructor(configurations) {
56
+ super();
57
+ if (configurations) {
58
+ this.configurations(configurations);
59
+ }
60
+ this.init();
61
+ this.initMessageFlush();
62
+ }
63
+ /**
64
+ * Check file size for file rotation
65
+ */
66
+ async checkAndRotateFile(filePath = this.filePath) {
67
+ if (!this.config("rotate"))
68
+ return;
69
+ try {
70
+ const stats = await fs__default.default.promises.stat(filePath);
71
+ if (stats.size >= this.config("maxFileSize")) {
72
+ await this.rotateLogFile();
73
+ }
74
+ }
75
+ catch (error) {
76
+ if (error.code === "ENOENT") {
77
+ // File doesn't exist, this can be normal if it's a new file
78
+ console.log("Log file does not exist, will be created on first write.");
79
+ }
80
+ else {
81
+ console.error("Error checking log file:", error);
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * Rotate log file
87
+ */
88
+ async rotateLogFile() {
89
+ let fileName = `${this.fileName}-${this.config("rotateFileName")}-${Date.now()}`;
90
+ const extension = this.extension;
91
+ const rotatedFilePath = path__default.default.join(this.storagePath, `${fileName}.${extension}`);
92
+ await fs__default.default.promises.rename(this.filePath, rotatedFilePath).catch((error) => {
93
+ console.error("Error rotating file:", error);
94
+ });
95
+ }
96
+ /**
97
+ * Flush messages
98
+ */
99
+ initMessageFlush() {
100
+ setInterval(() => {
101
+ if (this.messages.length > 0 &&
102
+ (this.messages.length >= this.maxMessagesToWrite ||
103
+ Date.now() - this.lastWriteTime > 5000)) {
104
+ this.writeMessagesToFile();
105
+ }
106
+ }, 5000); // Periodic check
107
+ }
108
+ /**
109
+ * Get file path
110
+ */
111
+ get filePath() {
112
+ let fileName = this.fileName;
113
+ const extension = this.extension;
114
+ return path__default.default.join(this.storagePath, `${fileName}.${extension}`);
115
+ }
116
+ /**
117
+ * Get max messages
118
+ */
119
+ get maxMessagesToWrite() {
120
+ return this.config("maxMessagesToWrite");
121
+ }
122
+ /**
123
+ * Get file name
124
+ */
125
+ get fileName() {
126
+ const debugLevel = this.config("chunk");
127
+ switch (debugLevel) {
128
+ case "single":
129
+ default:
130
+ return this.config("name");
131
+ case "daily":
132
+ return dayjs__default.default().format("DD-MM-YYYY");
133
+ case "hourly":
134
+ return dayjs__default.default().format("DD-MM-YYYY-HH");
135
+ }
136
+ }
137
+ /**
138
+ * Get file extension
139
+ */
140
+ get extension() {
141
+ return this.config("extension");
142
+ }
143
+ /**
144
+ * Get content
145
+ */
146
+ get content() {
147
+ return this.messages.map((message) => message.content).join(os.EOL) + os.EOL;
148
+ }
149
+ /**
150
+ * Get storage path
151
+ */
152
+ get storagePath() {
153
+ return this.config("storagePath");
154
+ }
155
+ /**
156
+ * {@inheritdoc}
157
+ */
158
+ async init() {
159
+ const logsDirectory = this.storagePath;
160
+ await fs$1.ensureDirectoryAsync(logsDirectory);
161
+ }
162
+ /**
163
+ * Set configurations
164
+ */
165
+ configurations(configurations) {
166
+ this.channelConfigurations = {
167
+ ...this.channelConfigurations,
168
+ ...configurations,
169
+ dateFormat: {
170
+ ...this.channelConfigurations.dateFormat,
171
+ ...configurations.dateFormat,
172
+ },
173
+ };
174
+ return this;
175
+ }
176
+ /**
177
+ * {@inheritdoc}
178
+ */
179
+ async log(module, action, message, level) {
180
+ // check for debug mode
181
+ const allowedLevels = this.config("levels");
182
+ if (allowedLevels && !allowedLevels.includes(level))
183
+ return;
184
+ const filter = this.config("filter");
185
+ if (filter) {
186
+ const shouldBeLogged = filter({ level, module, action });
187
+ if (!shouldBeLogged)
188
+ return;
189
+ }
190
+ const date = dayjs__default.default().format((this.channelConfigurations.dateFormat.date || "DD-MM-YYY") +
191
+ " " +
192
+ (this.channelConfigurations.dateFormat.time || "HH:mm:ss"));
193
+ let content = `[${date}] [${level}] [${module}][${action}]: `;
194
+ let stack = "";
195
+ // check if message is an instance of Error
196
+ if (message instanceof Error) {
197
+ // in that case we need to store the error message and stack trace
198
+ content += message.message + os.EOL;
199
+ content += `[trace]` + os.EOL;
200
+ content += message.stack;
201
+ stack = message.stack ?? "";
202
+ }
203
+ else {
204
+ content += message;
205
+ }
206
+ this.messages.push({
207
+ content,
208
+ level,
209
+ date,
210
+ module,
211
+ action,
212
+ stack,
213
+ });
214
+ await this.checkIfMessagesShouldBeWritten(); // Immediate check on buffer size
215
+ }
216
+ /**
217
+ * Check if messages should be written
218
+ */
219
+ async checkIfMessagesShouldBeWritten() {
220
+ if (this.messages.length >= this.maxMessagesToWrite ||
221
+ Date.now() - this.lastWriteTime > 5000) {
222
+ await this.writeMessagesToFile();
223
+ }
224
+ }
225
+ /**
226
+ * Should be called after messages are saved
227
+ */
228
+ onSave() {
229
+ this.messages = [];
230
+ this.groupedMessages = {};
231
+ this.isWriting = false;
232
+ this.lastWriteTime = Date.now();
233
+ }
234
+ /**
235
+ * Check if messages should be grouped
236
+ */
237
+ get messagedShouldBeGrouped() {
238
+ return Number(this.config("groupBy")?.length) > 0;
239
+ }
240
+ /**
241
+ * Write messages to the file
242
+ */
243
+ async writeMessagesToFile() {
244
+ if (this.messages.length === 0 || this.isWriting)
245
+ return;
246
+ this.isWriting = true;
247
+ if (this.messagedShouldBeGrouped) {
248
+ return await this.writeGroupedMessagesToFile();
249
+ }
250
+ await this.checkAndRotateFile(); // Ensure we check file size before writing
251
+ try {
252
+ await this.write(this.filePath, this.content);
253
+ this.onSave();
254
+ }
255
+ catch (error) {
256
+ console.error("Failed to write log:", error);
257
+ // Implement fallback logic here
258
+ this.isWriting = false;
259
+ }
260
+ }
261
+ /**
262
+ * Write grouped messages to the file
263
+ */
264
+ async writeGroupedMessagesToFile() {
265
+ // first step, is to group the messages
266
+ this.prepareGroupedMessages();
267
+ // now each key in the grouped messages, represents the directory path that should extend the storage path
268
+ for (const key in this.groupedMessages) {
269
+ const directoryPath = path__default.default.join(this.storagePath, key);
270
+ await fs$1.ensureDirectoryAsync(directoryPath);
271
+ const filePath = path__default.default.join(directoryPath, `${this.fileName}.${this.extension}`);
272
+ await this.checkAndRotateFile(filePath); // Ensure we check file size before writing
273
+ const content = this.groupedMessages[key].map((message) => message.content).join(os.EOL) +
274
+ os.EOL;
275
+ console.log("content", content);
276
+ try {
277
+ await this.write(filePath, content);
278
+ }
279
+ catch (error) {
280
+ console.error("Failed to write log:", error);
281
+ }
282
+ }
283
+ this.onSave();
284
+ this.isWriting = false;
285
+ }
286
+ /**
287
+ * Prepare grouped messages
288
+ */
289
+ prepareGroupedMessages() {
290
+ this.messages.forEach((message) => {
291
+ const key = this.config("groupBy")
292
+ .map((groupKey) => encodeURIComponent(message[groupKey]))
293
+ .join("/");
294
+ this.groupedMessages[key] = this.groupedMessages[key] || [];
295
+ this.groupedMessages[key].push(message);
296
+ });
297
+ }
298
+ /**
299
+ * Start writing to the file
300
+ */
301
+ async write(filePath, content) {
302
+ return new Promise((resolve, reject) => {
303
+ const writer = fs__default.default.createWriteStream(filePath, { flags: "a" });
304
+ writer.write(content, (error) => {
305
+ writer.end();
306
+ if (error) {
307
+ reject(error);
308
+ }
309
+ else {
310
+ resolve(true);
311
+ }
312
+ });
313
+ });
314
+ }
315
+ }exports.FileLog=FileLog;//# sourceMappingURL=file-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log.js","sources":["../../src/channels/file-log.ts"],"sourcesContent":[null],"names":["LogChannel","dayjs","fs","path","EOL","ensureDirectoryAsync"],"mappings":"+XAkGM,MAAO,OAAQ,SAAQA,qBAAU,CAAA;AACrC;;AAEG;IACI,IAAI,GAAG,MAAM,CAAC;AAErB;;AAEG;IACO,QAAQ,GAAiB,EAAE,CAAC;AAEtC;;AAEG;IACO,eAAe,GAAiC,EAAE,CAAC;AAE7D;;AAEG;AACO,IAAA,qBAAqB,GAAkB;AAC/C,QAAA,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,eAAe;AAC5C,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,kBAAkB,EAAE,GAAG;;AAEvB,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,IAAI,cAAc,GAAA;AAChB,YAAA,OAAOC,sBAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACrC;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,UAAU;AACjB,SAAA;KACF,CAAC;AAEF;;AAEG;AACO,IAAA,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAErC;;AAEG;IACO,qBAAqB,GAAkB,EAAE,CAAC;AAEpD;;AAEG;IACO,SAAS,GAAG,KAAK,CAAC;AAE5B;;AAEG;AACO,IAAA,MAAM,CAAgC,GAAM,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;KAC3E;AAED;;AAEG;AACH,IAAA,WAAA,CAAmB,cAA8B,EAAA;AAC/C,QAAA,KAAK,EAAE,CAAC;AAER,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AACrC,SAAA;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED;;AAEG;AACO,IAAA,MAAM,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAO;QAEnC,IAAI;YACF,MAAM,KAAK,GAAG,MAAMC,mBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAE,EAAE;AAC7C,gBAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC5B,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAU,EAAE;AACnB,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;;AAE3B,gBAAA,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;AACzE,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AAClD,aAAA;AACF,SAAA;KACF;AAED;;AAEG;AACO,IAAA,MAAM,aAAa,GAAA;AAC3B,QAAA,IAAI,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAC5C,gBAAgB,CACjB,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAElB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAEjC,QAAA,MAAM,eAAe,GAAGC,qBAAI,CAAC,IAAI,CAC/B,IAAI,CAAC,WAAW,EAChB,GAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAC3B,CAAC;AAEF,QAAA,MAAMD,mBAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACvE,YAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACO,gBAAgB,GAAA;QACxB,WAAW,CAAC,MAAK;AACf,YAAA,IACE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;iBACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB;oBAC9C,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EACzC;gBACA,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,aAAA;AACH,SAAC,EAAE,IAAI,CAAC,CAAC;KACV;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAEjC,QAAA,OAAOC,qBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC,CAAC;KAChE;AAED;;AAEG;AACH,IAAA,IAAc,kBAAkB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAE,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC;AAEzC,QAAA,QAAQ,UAAU;AAChB,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC;AAC9B,YAAA,KAAK,OAAO;AACV,gBAAA,OAAOF,sBAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAOA,sBAAK,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1C,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAE,CAAC;KAClC;AAED;;AAEG;AACH,IAAA,IAAc,OAAO,GAAA;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAACG,MAAG,CAAC,GAAGA,MAAG,CAAC;KACxE;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAE,CAAC;KACpC;AAED;;AAEG;AACO,IAAA,MAAM,IAAI,GAAA;AAClB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;AAEvC,QAAA,MAAMC,yBAAoB,CAAC,aAAa,CAAC,CAAC;KAC3C;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,cAA6B,EAAA;QACjD,IAAI,CAAC,qBAAqB,GAAG;YAC3B,GAAG,IAAI,CAAC,qBAAqB;AAC7B,YAAA,GAAG,cAAc;AACjB,YAAA,UAAU,EAAE;AACV,gBAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU;gBACxC,GAAG,cAAc,CAAC,UAAU;AAC7B,aAAA;SACF,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,MAAM,GAAG,CACd,MAAc,EACd,MAAc,EACd,OAAY,EACZ,KAAe,EAAA;;QAGf,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO;QAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErC,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,cAAc;gBAAE,OAAO;AAC7B,SAAA;AAED,QAAA,MAAM,IAAI,GAAGJ,sBAAK,EAAE,CAAC,MAAM,CACzB,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAW,CAAC,IAAI,IAAI,WAAW;YACzD,GAAG;aACF,IAAI,CAAC,qBAAqB,CAAC,UAAW,CAAC,IAAI,IAAI,UAAU,CAAC,CAC9D,CAAC;QAEF,IAAI,OAAO,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,GAAA,EAAM,MAAM,CAAA,EAAA,EAAK,MAAM,CAAA,GAAA,CAAK,CAAC;QAE9D,IAAI,KAAK,GAAG,EAAE,CAAC;;QAGf,IAAI,OAAO,YAAY,KAAK,EAAE;;AAE5B,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,GAAGG,MAAG,CAAC;AACjC,YAAA,OAAO,IAAI,CAAA,OAAA,CAAS,GAAGA,MAAG,CAAC;AAC3B,YAAA,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACzB,YAAA,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AAC7B,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,OAAO,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,OAAO;YACP,KAAK;YACL,IAAI;YACJ,MAAM;YACN,MAAM;YACN,KAAK;AACN,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;KAC7C;AAED;;AAEG;AACO,IAAA,MAAM,8BAA8B,GAAA;QAC5C,IACE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB;YAC/C,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,EACtC;AACA,YAAA,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAClC,SAAA;KACF;AAED;;AAEG;IACO,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,IAAc,uBAAuB,GAAA;AACnC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;KACnD;AAED;;AAEG;AACO,IAAA,MAAM,mBAAmB,GAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;AAEzD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,OAAO,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAChD,SAAA;AAED,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEhC,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;;AAE7C,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,SAAA;KACF;AAED;;AAEG;AACO,IAAA,MAAM,0BAA0B,GAAA;;QAExC,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAG9B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,MAAM,aAAa,GAAGD,qBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAEvD,YAAA,MAAME,yBAAoB,CAAC,aAAa,CAAC,CAAC;AAE1C,YAAA,MAAM,QAAQ,GAAGF,qBAAI,CAAC,IAAI,CACxB,aAAa,EACb,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAA,CAAE,CACrC,CAAC;YAEF,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAExC,MAAM,OAAO,GACX,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAACC,MAAG,CAAC;AACrE,gBAAAA,MAAG,CAAC;AAEN,YAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEhC,IAAI;gBACF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrC,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED;;AAEG;IACO,sBAAsB,GAAA;QAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAE;AAChC,iBAAA,GAAG,CAAC,CAAC,QAAQ,KAAK,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACxD,IAAI,CAAC,GAAG,CAAC,CAAC;AAEb,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACO,IAAA,MAAM,KAAK,CAAC,QAAgB,EAAE,OAAe,EAAA;QACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,MAAM,GAAGF,mBAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAE9D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;gBAC9B,MAAM,CAAC,GAAG,EAAE,CAAC;AACb,gBAAA,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,CAAC;AACf,iBAAA;AAAM,qBAAA;oBACL,OAAO,CAAC,IAAI,CAAC,CAAC;AACf,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AACF"}
@@ -0,0 +1,4 @@
1
+ export * from "./console-log";
2
+ export * from "./file-log";
3
+ export * from "./json-file-log";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { FileLog } from "./file-log";
2
+ import { LogContract } from "../types";
3
+ export declare class JSONFileLog extends FileLog implements LogContract {
4
+ /**
5
+ * {@inheritdoc}
6
+ */
7
+ name: string;
8
+ /**
9
+ * Get file extension
10
+ */
11
+ get extension(): string;
12
+ /**
13
+ * Get initial file contents
14
+ */
15
+ protected get initialFileContents(): Record<string, any>;
16
+ /**
17
+ * Write messages to the file
18
+ */
19
+ protected writeMessagesToFile(): Promise<void>;
20
+ /**
21
+ * Write grouped messages to the file
22
+ */
23
+ protected writeGroupedMessagesToFile(): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=json-file-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file-log.d.ts","sourceRoot":"","sources":["../../src/channels/json-file-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAOrC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,WAAY,SAAQ,OAAQ,YAAW,WAAW;IAC7D;;OAEG;IACI,IAAI,SAAc;IAEzB;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,SAAS,KAAK,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAIvD;IAED;;OAEG;cACa,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCpD;;OAEG;cACa,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B5D"}
@@ -0,0 +1,73 @@
1
+ 'use strict';var fileLog=require('./file-log.js'),fs=require('@mongez/fs'),path=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}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
+ * Write messages to the file
22
+ */
23
+ async writeMessagesToFile() {
24
+ if (this.messages.length === 0 || this.isWriting)
25
+ return;
26
+ this.isWriting = true;
27
+ if (this.messagedShouldBeGrouped) {
28
+ return await this.writeGroupedMessagesToFile();
29
+ }
30
+ await this.checkAndRotateFile(); // Ensure file rotation is handled
31
+ let fileContents;
32
+ try {
33
+ fileContents = await fs.getJsonFileAsync(this.filePath);
34
+ }
35
+ catch (error) {
36
+ console.error("Error reading log file, reinitializing:", error);
37
+ fileContents = { messages: [] }; // Reinitialize the file if corrupted
38
+ }
39
+ fileContents.messages.push(...this.messages);
40
+ try {
41
+ await fs.putJsonFileAsync(this.filePath, fileContents, { spaces: 2 });
42
+ this.onSave();
43
+ }
44
+ catch (error) {
45
+ console.error("Failed to write log:", error);
46
+ // Implement fallback logic here
47
+ this.isWriting = false;
48
+ }
49
+ }
50
+ /**
51
+ * Write grouped messages to the file
52
+ */
53
+ async writeGroupedMessagesToFile() {
54
+ // first step, is to group the messages
55
+ this.prepareGroupedMessages();
56
+ // now each key in the grouped messages, represents the directory path that should extend the storage path
57
+ for (const key in this.groupedMessages) {
58
+ const directoryPath = path__default.default.join(this.storagePath, key);
59
+ await fs.ensureDirectoryAsync(directoryPath);
60
+ const filePath = path__default.default.join(directoryPath, `${this.fileName}.${this.extension}`);
61
+ await this.checkAndRotateFile(filePath); // Ensure we check file size before writing
62
+ const content = this.groupedMessages[key];
63
+ try {
64
+ await fs.putJsonFileAsync(filePath, content, { spaces: 2 });
65
+ }
66
+ catch (error) {
67
+ console.error("Failed to write log:", error);
68
+ this.isWriting = false;
69
+ }
70
+ }
71
+ this.onSave();
72
+ }
73
+ }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","getJsonFileAsync","putJsonFileAsync","path","ensureDirectoryAsync"],"mappings":"sNASM,MAAO,WAAY,SAAQA,eAAO,CAAA;AACtC;;AAEG;IACI,IAAI,GAAG,UAAU,CAAC;AAEzB;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;AAEG;AACH,IAAA,IAAc,mBAAmB,GAAA;QAC/B,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH;AAED;;AAEG;AACO,IAAA,MAAM,mBAAmB,GAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;AAEzD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,OAAO,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAChD,SAAA;AAED,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAEhC,QAAA,IAAI,YAAY,CAAC;QACjB,IAAI;YACF,YAAY,GAAG,MAAMC,mBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAChE,YAAY,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACjC,SAAA;QAED,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI;AACF,YAAA,MAAMC,mBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;;AAE7C,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,SAAA;KACF;AAED;;AAEG;AACO,IAAA,MAAM,0BAA0B,GAAA;;QAExC,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAG9B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,MAAM,aAAa,GAAGC,qBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAEvD,YAAA,MAAMC,uBAAoB,CAAC,aAAa,CAAC,CAAC;AAE1C,YAAA,MAAM,QAAQ,GAAGD,qBAAI,CAAC,IAAI,CACxB,aAAa,EACb,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAA,CAAE,CACrC,CAAC;YAEF,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI;AACF,gBAAA,MAAMD,mBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,aAAA;AACF,SAAA;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AACF"}
package/cjs/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import logger from "./logger";
2
+ export * from "./channels";
3
+ export * from "./LogChannel";
4
+ export * from "./logger";
5
+ export * from "./types";
6
+ export * from "./utils";
7
+ export default logger;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,eAAe,MAAM,CAAC"}
package/cjs/index.js ADDED
@@ -0,0 +1 @@
1
+ 'use strict';var logger=require('./logger.js'),consoleLog=require('./channels/console-log.js'),fileLog=require('./channels/file-log.js'),jsonFileLog=require('./channels/json-file-log.js'),LogChannel=require('./LogChannel.js'),utils=require('./utils.js');exports.Logger=logger.Logger;exports.default=logger.default;exports.log=logger.log;exports.ConsoleLog=consoleLog.ConsoleLog;exports.FileLog=fileLog.FileLog;exports.JSONFileLog=jsonFileLog.JSONFileLog;exports.LogChannel=LogChannel.LogChannel;exports.captureAnyUnhandledRejection=utils.captureAnyUnhandledRejection;exports.clearMessage=utils.clearMessage;//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
1
+ import { LogChannel } from "./LogChannel";
2
+ import { LogLevel } from "./types";
3
+ export declare class Logger {
4
+ /**
5
+ * Current channel
6
+ */
7
+ protected channels: LogChannel[];
8
+ /**
9
+ * Add a new channel
10
+ */
11
+ addChannel(channel: LogChannel): this;
12
+ /**
13
+ * Set base configurations
14
+ */
15
+ configure(config: {
16
+ channels: LogChannel[];
17
+ }): this;
18
+ /**
19
+ * Set channels
20
+ */
21
+ setChannels(channels: LogChannel[]): this;
22
+ /**
23
+ * Make log
24
+ */
25
+ log(module: string, action: string, message: any, level?: LogLevel): Promise<this>;
26
+ /**
27
+ * Make debug log
28
+ */
29
+ debug(module: string, action: string, message?: any): Promise<this>;
30
+ /**
31
+ * Make info log
32
+ */
33
+ info(module: string, action: string, message?: any): Promise<this>;
34
+ /**
35
+ * Make warn log
36
+ */
37
+ warn(module: string, action: string, message?: any): Promise<this>;
38
+ /**
39
+ * Make error log
40
+ */
41
+ error(module: string, action: string, message?: any): Promise<this>;
42
+ /**
43
+ * Make success log
44
+ */
45
+ success(module: string, action: string, message?: any): Promise<this>;
46
+ /**
47
+ * Get channel by name
48
+ */
49
+ channel(name: string): LogChannel;
50
+ }
51
+ declare const logger: Logger;
52
+ export default logger;
53
+ export interface Log {
54
+ (module: string, action: string, message: any, level: LogLevel): Promise<Logger>;
55
+ /**
56
+ * Make info log
57
+ */
58
+ info(module: string, action: string, message: any): Promise<Logger>;
59
+ /**
60
+ * Make debug log
61
+ */
62
+ debug(module: string, action: string, message: any): Promise<Logger>;
63
+ warn(module: string, action: string, message: any): Promise<Logger>;
64
+ /**
65
+ * Make error log
66
+ */
67
+ error(module: string, action: string, message: any): Promise<Logger>;
68
+ /**
69
+ * Make success log
70
+ */
71
+ success(module: string, action: string, message: any): Promise<Logger>;
72
+ }
73
+ export declare const log: Log;
74
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,qBAAa,MAAM;IACjB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAM;IAEtC;;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;IACU,GAAG,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,KAAK,GAAE,QAAiB;IAa1B;;OAEG;IACI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IAI9D;;OAEG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IAI7D;;OAEG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IAI7D;;OAEG;IACI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IAI9D;;OAEG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IAIhE;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM;CAG5B;AAED,QAAA,MAAM,MAAM,QAAe,CAAC;AAE5B,eAAe,MAAM,CAAC;AAEtB,MAAM,WAAW,GAAG;IAClB,CACE,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAED,eAAO,MAAM,GAAG,EAAE,GAOjB,CAAC"}
package/cjs/logger.js ADDED
@@ -0,0 +1,84 @@
1
+ 'use strict';var utils=require('./utils.js');class Logger {
2
+ /**
3
+ * Current channel
4
+ */
5
+ channels = [];
6
+ /**
7
+ * Add a new channel
8
+ */
9
+ addChannel(channel) {
10
+ this.channels.push(channel);
11
+ return this;
12
+ }
13
+ /**
14
+ * Set base configurations
15
+ */
16
+ configure(config) {
17
+ this.channels = config.channels;
18
+ return this;
19
+ }
20
+ /**
21
+ * Set channels
22
+ */
23
+ setChannels(channels) {
24
+ this.channels = channels;
25
+ return this;
26
+ }
27
+ /**
28
+ * Make log
29
+ */
30
+ async log(module, action, message, level = "info") {
31
+ for (const channel of this.channels) {
32
+ if (channel.terminal === false) {
33
+ message = utils.clearMessage(message);
34
+ }
35
+ channel.log(module, action, message, level);
36
+ }
37
+ return this;
38
+ }
39
+ /**
40
+ * Make debug log
41
+ */
42
+ debug(module, action, message = "") {
43
+ return this.log(module, action, message, "debug");
44
+ }
45
+ /**
46
+ * Make info log
47
+ */
48
+ info(module, action, message = "") {
49
+ return this.log(module, action, message, "info");
50
+ }
51
+ /**
52
+ * Make warn log
53
+ */
54
+ warn(module, action, message = "") {
55
+ return this.log(module, action, message, "warn");
56
+ }
57
+ /**
58
+ * Make error log
59
+ */
60
+ error(module, action, message = "") {
61
+ return this.log(module, action, message, "error");
62
+ }
63
+ /**
64
+ * Make success log
65
+ */
66
+ success(module, action, message = "") {
67
+ return this.log(module, action, message, "success");
68
+ }
69
+ /**
70
+ * Get channel by name
71
+ */
72
+ channel(name) {
73
+ return this.channels.find((channel) => channel.name === name);
74
+ }
75
+ }
76
+ const logger = new Logger();
77
+ const log = (module, action, message, level) => {
78
+ return logger.log(module, action, message, level);
79
+ };
80
+ log.info = logger.info.bind(logger);
81
+ log.debug = logger.debug.bind(logger);
82
+ log.warn = logger.warn.bind(logger);
83
+ log.error = logger.error.bind(logger);
84
+ log.success = logger.success.bind(logger);exports.Logger=Logger;exports.default=logger;exports.log=log;//# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sources":["../src/logger.ts"],"sourcesContent":[null],"names":["clearMessage"],"mappings":"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"}
package/cjs/types.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ export type LogLevel = "debug" | "info" | "warn" | "error" | "success";
2
+ export type DebugMode = "daily" | "monthly" | "yearly" | "hourly";
3
+ export interface LogContract {
4
+ /**
5
+ * Channel name
6
+ */
7
+ name: string;
8
+ /**
9
+ * Channel description
10
+ */
11
+ description?: string;
12
+ /**
13
+ * Determine if channel is logging in terminal
14
+ */
15
+ terminal?: boolean;
16
+ /**
17
+ * Log the given message
18
+ */
19
+ log(module: string, action: string, message: any, level: LogLevel): void | Promise<void>;
20
+ }
21
+ //# sourceMappingURL=types.d.ts.map