@warlock.js/logger 4.0.129 → 4.0.130

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 (71) hide show
  1. package/cjs/channels/console-log.js +47 -0
  2. package/cjs/channels/console-log.js.map +1 -0
  3. package/cjs/channels/file-log.js +272 -0
  4. package/cjs/channels/file-log.js.map +1 -0
  5. package/cjs/channels/json-file-log.js +102 -0
  6. package/cjs/channels/json-file-log.js.map +1 -0
  7. package/cjs/index.d.ts +5 -43
  8. package/cjs/index.d.ts.map +1 -1
  9. package/cjs/index.js +1 -1
  10. package/cjs/log-channel.d.ts +2 -2
  11. package/cjs/log-channel.js +88 -0
  12. package/cjs/log-channel.js.map +1 -0
  13. package/cjs/logger.d.ts +1 -1
  14. package/cjs/logger.js +112 -0
  15. package/cjs/logger.js.map +1 -0
  16. package/cjs/types.d.ts +89 -58
  17. package/cjs/types.d.ts.map +1 -1
  18. package/cjs/utils/capture-unhandled-errors.js +12 -0
  19. package/cjs/utils/capture-unhandled-errors.js.map +1 -0
  20. package/cjs/utils/clear-message.js +9 -0
  21. package/cjs/utils/clear-message.js.map +1 -0
  22. package/esm/channels/console-log.js +47 -0
  23. package/esm/channels/console-log.js.map +1 -0
  24. package/esm/channels/file-log.js +272 -0
  25. package/esm/channels/file-log.js.map +1 -0
  26. package/esm/channels/json-file-log.js +102 -0
  27. package/esm/channels/json-file-log.js.map +1 -0
  28. package/esm/index.d.ts +5 -43
  29. package/esm/index.d.ts.map +1 -1
  30. package/esm/index.js +1 -1
  31. package/esm/log-channel.d.ts +2 -2
  32. package/esm/log-channel.js +88 -0
  33. package/esm/log-channel.js.map +1 -0
  34. package/esm/logger.d.ts +1 -1
  35. package/esm/logger.js +112 -0
  36. package/esm/logger.js.map +1 -0
  37. package/esm/types.d.ts +89 -58
  38. package/esm/types.d.ts.map +1 -1
  39. package/esm/utils/capture-unhandled-errors.js +12 -0
  40. package/esm/utils/capture-unhandled-errors.js.map +1 -0
  41. package/esm/utils/clear-message.js +9 -0
  42. package/esm/utils/clear-message.js.map +1 -0
  43. package/package.json +1 -1
  44. package/cjs/cron-parser.d.ts +0 -98
  45. package/cjs/cron-parser.d.ts.map +0 -1
  46. package/cjs/cron-parser.js +0 -193
  47. package/cjs/cron-parser.js.map +0 -1
  48. package/cjs/job.d.ts +0 -332
  49. package/cjs/job.d.ts.map +0 -1
  50. package/cjs/job.js +0 -616
  51. package/cjs/job.js.map +0 -1
  52. package/cjs/scheduler.d.ts +0 -182
  53. package/cjs/scheduler.d.ts.map +0 -1
  54. package/cjs/scheduler.js +0 -316
  55. package/cjs/scheduler.js.map +0 -1
  56. package/cjs/utils.d.ts +0 -3
  57. package/cjs/utils.d.ts.map +0 -1
  58. package/esm/cron-parser.d.ts +0 -98
  59. package/esm/cron-parser.d.ts.map +0 -1
  60. package/esm/cron-parser.js +0 -193
  61. package/esm/cron-parser.js.map +0 -1
  62. package/esm/job.d.ts +0 -332
  63. package/esm/job.d.ts.map +0 -1
  64. package/esm/job.js +0 -616
  65. package/esm/job.js.map +0 -1
  66. package/esm/scheduler.d.ts +0 -182
  67. package/esm/scheduler.d.ts.map +0 -1
  68. package/esm/scheduler.js +0 -316
  69. package/esm/scheduler.js.map +0 -1
  70. package/esm/utils.d.ts +0 -3
  71. package/esm/utils.d.ts.map +0 -1
@@ -0,0 +1,47 @@
1
+ 'use strict';var copper=require('@mongez/copper'),logChannel=require('../log-channel.js');class ConsoleLog extends logChannel.LogChannel {
2
+ /**
3
+ * {@inheritdoc}
4
+ */
5
+ name = "console";
6
+ /**
7
+ * Determine if channel is logging in terminal
8
+ */
9
+ terminal = true;
10
+ /**
11
+ * {@inheritdoc}
12
+ */
13
+ log(data) {
14
+ const { module, action, message, type: level } = data;
15
+ if (!this.shouldBeLogged(data))
16
+ return;
17
+ // display date and time with milliseconds
18
+ const date = new Date().toISOString(); // i.e 2021-01-01T00:00:00.000Z
19
+ switch (level) {
20
+ case "debug":
21
+ // add a debug icon
22
+ console.log(copper.colors.magentaBright("⚙"), copper.colors.yellow(`(${date})`), copper.colors.cyan(`[${module}]`), copper.colors.magenta(`[${action}]`), copper.colors.magentaBright(message));
23
+ break;
24
+ case "info":
25
+ // add an info icon
26
+ console.log(copper.colors.blueBright("ℹ"), copper.colors.yellow(`(${date})`), copper.colors.cyan(`[${module}]`), copper.colors.magenta(`[${action}]`), copper.colors.blueBright(message));
27
+ break;
28
+ case "warn":
29
+ // add a warning icon
30
+ console.log(copper.colors.yellow("⚠"), copper.colors.yellow(`(${date})`), copper.colors.cyan(`[${module}]`), copper.colors.magenta(`[${action}]`), copper.colors.yellowBright(message));
31
+ break;
32
+ case "error":
33
+ // add an error icon
34
+ console.log(copper.colors.red("✗"), copper.colors.yellow(`(${date})`), copper.colors.cyan(`[${module}]`), copper.colors.magenta(`[${action}]`), copper.colors.redBright(message));
35
+ break;
36
+ case "success":
37
+ // add a success icon
38
+ console.log(copper.colors.green("✓"), copper.colors.yellow(`(${date})`), copper.colors.cyan(`[${module}]`), copper.colors.magenta(`[${action}]`), copper.colors.greenBright(message));
39
+ break;
40
+ default:
41
+ console.log("[log]", copper.colors.yellow(`(${date})`), copper.colors.cyan(`[${module}]`), copper.colors.magenta(`[${action}]`), message);
42
+ }
43
+ if (typeof message === "object") {
44
+ console.log(message);
45
+ }
46
+ }
47
+ }exports.ConsoleLog=ConsoleLog;//# sourceMappingURL=console-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-log.js","sources":["../../src/channels/console-log.ts"],"sourcesContent":[null],"names":["LogChannel","colors"],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ 'use strict';var fs$1=require('@mongez/fs'),dayjs=require('dayjs'),fs=require('fs'),os=require('os'),path=require('path'),logChannel=require('../log-channel.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 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
+ filter: () => true,
25
+ maxFileSize: 10 * 1024 * 1024,
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
+ * A flag to determine if the file is being written
40
+ */
41
+ isWriting = false;
42
+ /**
43
+ * Check file size for file rotation
44
+ */
45
+ async checkAndRotateFile(filePath = this.filePath) {
46
+ if (!this.config("rotate"))
47
+ return;
48
+ try {
49
+ const stats = await fs__default.default.promises.stat(filePath);
50
+ if (stats.size >= this.config("maxFileSize")) {
51
+ await this.rotateLogFile();
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (error.code === "ENOENT") {
56
+ // File doesn't exist, this can be normal if it's a new file
57
+ console.log("Log file does not exist, will be created on first write.");
58
+ }
59
+ else {
60
+ console.error("Error checking log file:", error);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Rotate log file
66
+ */
67
+ async rotateLogFile() {
68
+ const fileName = `${this.fileName}-${this.config("rotateFileName")}-${Date.now()}`;
69
+ const extension = this.extension;
70
+ const rotatedFilePath = path__default.default.join(this.storagePath, `${fileName}.${extension}`);
71
+ await fs__default.default.promises.rename(this.filePath, rotatedFilePath).catch(error => {
72
+ console.error("Error rotating file:", error);
73
+ });
74
+ }
75
+ /**
76
+ * Flush messages
77
+ */
78
+ initMessageFlush() {
79
+ setInterval(() => {
80
+ if (this.messages.length > 0 &&
81
+ (this.messages.length >= this.maxMessagesToWrite ||
82
+ Date.now() - this.lastWriteTime > 5000)) {
83
+ this.writeMessagesToFile();
84
+ }
85
+ }, 5000); // Periodic check
86
+ }
87
+ /**
88
+ * Get file path
89
+ */
90
+ get filePath() {
91
+ const fileName = this.fileName;
92
+ const extension = this.extension;
93
+ return path__default.default.join(this.storagePath, `${fileName}.${extension}`);
94
+ }
95
+ /**
96
+ * Get max messages
97
+ */
98
+ get maxMessagesToWrite() {
99
+ return this.config("maxMessagesToWrite");
100
+ }
101
+ /**
102
+ * Get file name
103
+ */
104
+ get fileName() {
105
+ const debugLevel = this.config("chunk");
106
+ switch (debugLevel) {
107
+ case "single":
108
+ default:
109
+ return this.config("name");
110
+ case "daily":
111
+ return dayjs__default.default().format("DD-MM-YYYY");
112
+ case "hourly":
113
+ return dayjs__default.default().format("DD-MM-YYYY-HH");
114
+ }
115
+ }
116
+ /**
117
+ * Get file extension
118
+ */
119
+ get extension() {
120
+ return this.config("extension");
121
+ }
122
+ /**
123
+ * Get content
124
+ */
125
+ get content() {
126
+ return this.messages.map(message => message.content).join(os.EOL) + os.EOL;
127
+ }
128
+ /**
129
+ * Get storage path
130
+ */
131
+ get storagePath() {
132
+ return this.config("storagePath");
133
+ }
134
+ /**
135
+ * {@inheritdoc}
136
+ */
137
+ async init() {
138
+ const logsDirectory = this.storagePath;
139
+ await fs$1.ensureDirectoryAsync(logsDirectory);
140
+ this.initMessageFlush();
141
+ }
142
+ /**
143
+ * {@inheritdoc}
144
+ */
145
+ async log(data) {
146
+ const { module, action, message, type: level } = data;
147
+ if (!this.shouldBeLogged(data))
148
+ return;
149
+ const { date: dateFormat, time } = this.getDateAndTimeFormat();
150
+ const date = dayjs__default.default().format(dateFormat + " " + time);
151
+ let content = `[${date}] [${level}] [${module}][${action}]: `;
152
+ let stack;
153
+ // check if message is an instance of Error
154
+ if (message instanceof Error) {
155
+ // in that case we need to store the error message and stack trace
156
+ content += message.message + os.EOL;
157
+ content += `[trace]` + os.EOL;
158
+ content += message.stack;
159
+ stack = message.stack;
160
+ }
161
+ else {
162
+ content += message;
163
+ }
164
+ this.messages.push({
165
+ content,
166
+ level,
167
+ date,
168
+ module,
169
+ action,
170
+ stack,
171
+ });
172
+ await this.checkIfMessagesShouldBeWritten(); // Immediate check on buffer size
173
+ }
174
+ /**
175
+ * Check if messages should be written
176
+ */
177
+ async checkIfMessagesShouldBeWritten() {
178
+ if (this.messages.length >= this.maxMessagesToWrite ||
179
+ Date.now() - this.lastWriteTime > 5000) {
180
+ await this.writeMessagesToFile();
181
+ }
182
+ }
183
+ /**
184
+ * Should be called after messages are saved
185
+ */
186
+ onSave() {
187
+ this.messages = [];
188
+ this.groupedMessages = {};
189
+ this.isWriting = false;
190
+ this.lastWriteTime = Date.now();
191
+ }
192
+ /**
193
+ * Check if messages should be grouped
194
+ */
195
+ get messagedShouldBeGrouped() {
196
+ return Number(this.config("groupBy")?.length) > 0;
197
+ }
198
+ /**
199
+ * Write messages to the file
200
+ */
201
+ async writeMessagesToFile() {
202
+ if (this.messages.length === 0 || this.isWriting || !this.isInitialized)
203
+ return;
204
+ this.isWriting = true;
205
+ if (this.messagedShouldBeGrouped) {
206
+ return await this.writeGroupedMessagesToFile();
207
+ }
208
+ await this.checkAndRotateFile(); // Ensure we check file size before writing
209
+ try {
210
+ await this.write(this.filePath, this.content);
211
+ this.onSave();
212
+ }
213
+ catch (error) {
214
+ console.error("Failed to write log:", error);
215
+ // Implement fallback logic here
216
+ this.isWriting = false;
217
+ }
218
+ }
219
+ /**
220
+ * Write grouped messages to the file
221
+ */
222
+ async writeGroupedMessagesToFile() {
223
+ // first step, is to group the messages
224
+ this.prepareGroupedMessages();
225
+ // now each key in the grouped messages, represents the directory path that should extend the storage path
226
+ for (const key in this.groupedMessages) {
227
+ const directoryPath = path__default.default.join(this.storagePath, key);
228
+ await fs$1.ensureDirectoryAsync(directoryPath);
229
+ const filePath = path__default.default.join(directoryPath, `${this.fileName}.${this.extension}`);
230
+ await this.checkAndRotateFile(filePath); // Ensure we check file size before writing
231
+ const content = this.groupedMessages[key].map(message => message.content).join(os.EOL) +
232
+ os.EOL;
233
+ try {
234
+ await this.write(filePath, content);
235
+ }
236
+ catch (error) {
237
+ console.error("Failed to write log:", error);
238
+ }
239
+ }
240
+ this.onSave();
241
+ this.isWriting = false;
242
+ }
243
+ /**
244
+ * Prepare grouped messages
245
+ */
246
+ prepareGroupedMessages() {
247
+ this.messages.forEach(message => {
248
+ const key = this.config("groupBy")
249
+ .map(groupKey => encodeURIComponent(message[groupKey]))
250
+ .join("/");
251
+ this.groupedMessages[key] = this.groupedMessages[key] || [];
252
+ this.groupedMessages[key].push(message);
253
+ });
254
+ }
255
+ /**
256
+ * Start writing to the file
257
+ */
258
+ async write(filePath, content) {
259
+ return new Promise((resolve, reject) => {
260
+ const writer = fs__default.default.createWriteStream(filePath, { flags: "a" });
261
+ writer.write(content, error => {
262
+ writer.end();
263
+ if (error) {
264
+ reject(error);
265
+ }
266
+ else {
267
+ resolve(true);
268
+ }
269
+ });
270
+ });
271
+ }
272
+ }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":"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"}
@@ -0,0 +1,102 @@
1
+ 'use strict';var fs=require('@mongez/fs'),dayjs=require('dayjs'),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 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
+ * {@inheritdoc}
22
+ */
23
+ async log(data) {
24
+ let stack;
25
+ if (data.message instanceof Error) {
26
+ stack = data.message.stack?.split("\n");
27
+ data.message = data.message.message;
28
+ }
29
+ const { module, action, message, type: level } = data;
30
+ if (!this.shouldBeLogged(data))
31
+ return;
32
+ const { date: dateFormat, time } = this.getDateAndTimeFormat();
33
+ const date = dayjs__default.default().format(dateFormat + " " + time);
34
+ this.messages.push({
35
+ content: message,
36
+ level,
37
+ date,
38
+ module,
39
+ action,
40
+ stack,
41
+ });
42
+ await this.checkIfMessagesShouldBeWritten(); // Immediate check on buffer size
43
+ }
44
+ /**
45
+ * Write messages to the file
46
+ */
47
+ async writeMessagesToFile() {
48
+ if (this.messages.length === 0 || this.isWriting)
49
+ return;
50
+ this.isWriting = true;
51
+ if (this.messagedShouldBeGrouped) {
52
+ return await this.writeGroupedMessagesToFile();
53
+ }
54
+ await this.checkAndRotateFile(); // Ensure file rotation is handled
55
+ let fileContents;
56
+ if (await fs.fileExistsAsync(this.filePath)) {
57
+ try {
58
+ fileContents = await fs.getJsonFileAsync(this.filePath);
59
+ }
60
+ catch (error) {
61
+ console.error("Error reading log file, reinitializing:", error);
62
+ fileContents = { messages: [] }; // Reinitialize the file if corrupted
63
+ }
64
+ }
65
+ else {
66
+ fileContents = { messages: [] }; // Reinitialize the file if corrupted
67
+ }
68
+ fileContents.messages.push(...this.messages);
69
+ try {
70
+ await fs.putJsonFileAsync(this.filePath, fileContents, { spaces: 2 });
71
+ this.onSave();
72
+ }
73
+ catch (error) {
74
+ console.error("Failed to write log:", error);
75
+ // Implement fallback logic here
76
+ this.isWriting = false;
77
+ }
78
+ }
79
+ /**
80
+ * Write grouped messages to the file
81
+ */
82
+ async writeGroupedMessagesToFile() {
83
+ // first step, is to group the messages
84
+ this.prepareGroupedMessages();
85
+ // now each key in the grouped messages, represents the directory path that should extend the storage path
86
+ for (const key in this.groupedMessages) {
87
+ const directoryPath = path__default.default.join(this.storagePath, key);
88
+ await fs.ensureDirectoryAsync(directoryPath);
89
+ const filePath = path__default.default.join(directoryPath, `${this.fileName}.${this.extension}`);
90
+ await this.checkAndRotateFile(filePath); // Ensure we check file size before writing
91
+ const content = this.groupedMessages[key];
92
+ try {
93
+ await fs.putJsonFileAsync(filePath, content, { spaces: 2 });
94
+ }
95
+ catch (error) {
96
+ console.error("Failed to write log:", error);
97
+ this.isWriting = false;
98
+ }
99
+ }
100
+ this.onSave();
101
+ }
102
+ }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","dayjs","fileExistsAsync","getJsonFileAsync","putJsonFileAsync","path","ensureDirectoryAsync"],"mappings":"oSAWM,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;IACI,MAAM,GAAG,CAAC,IAAiB,EAAA;AAChC,QAAA,IAAI,KAA2B,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,OAAO,YAAY,KAAK,EAAE;YACjC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACrC,SAAA;AAED,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO;AAEvC,QAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE/D,QAAA,MAAM,IAAI,GAAGC,sBAAK,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,OAAO,EAAE,OAAO;YAChB,KAAK;YACL,IAAI;YACJ,MAAM;YACN,MAAM;YACN,KAAK;AACQ,SAAA,CAAC,CAAC;AAEjB,QAAA,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;KAC7C;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;AACjB,QAAA,IAAI,MAAMC,kBAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACxC,IAAI;gBACF,YAAY,GAAG,MAAMC,mBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAChE,YAAY,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACjC,aAAA;AACF,SAAA;AAAM,aAAA;YACL,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 CHANGED
@@ -1,44 +1,6 @@
1
- /**
2
- * @warlock.js/scheduler
3
- *
4
- * A production-ready job scheduler with cron-like functionality.
5
- *
6
- * @example
7
- * ```typescript
8
- * import { Scheduler, job } from "@warlock.js/scheduler";
9
- *
10
- * const scheduler = new Scheduler();
11
- *
12
- * // Add observability
13
- * scheduler.on('job:error', (name, error) => console.error(`${name} failed:`, error));
14
- *
15
- * // Schedule jobs with fluent API
16
- * scheduler.addJob(
17
- * job("cleanup", async () => {
18
- * await cleanupExpiredTokens();
19
- * })
20
- * .daily()
21
- * .at("03:00")
22
- * .inTimezone("America/New_York")
23
- * .preventOverlap()
24
- * .retry(3, 1000)
25
- * );
26
- *
27
- * // Or use cron expressions
28
- * scheduler.addJob(
29
- * job("reports", sendReports).cron("0 9 * * 1-5") // 9 AM weekdays
30
- * );
31
- *
32
- * // Start and handle graceful shutdown
33
- * scheduler.start();
34
- * process.on('SIGTERM', () => scheduler.shutdown());
35
- * ```
36
- *
37
- * @packageDocumentation
38
- */
39
- export { CronParser, parseCron } from "./cron-parser";
40
- export { Job, job } from "./job";
41
- export { Scheduler, scheduler } from "./scheduler";
42
- export type { CronFields } from "./cron-parser";
43
- export type { Day, JobIntervals, JobResult, JobStatus, RetryConfig, SchedulerEvents, TimeType, } from "./types";
1
+ export * from "./channels";
2
+ export * from "./log-channel";
3
+ export * from "./logger";
4
+ export * from "./types";
5
+ export * from "./utils";
44
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGnD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EACV,GAAG,EACH,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,eAAe,EACf,QAAQ,GACT,MAAM,SAAS,CAAC"}
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 CHANGED
@@ -1 +1 @@
1
- 'use strict';var cronParser=require('./cron-parser.js'),job=require('./job.js'),scheduler=require('./scheduler.js');exports.CronParser=cronParser.CronParser;exports.parseCron=cronParser.parseCron;exports.Job=job.Job;exports.job=job.job;exports.Scheduler=scheduler.Scheduler;exports.scheduler=scheduler.scheduler;//# sourceMappingURL=index.js.map
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
@@ -52,8 +52,8 @@ export declare abstract class LogChannel<Options extends BasicLogConfigurations
52
52
  * Get date and time formats
53
53
  */
54
54
  protected getDateAndTimeFormat(): {
55
- date: any;
56
- time: any;
55
+ date: string;
56
+ time: string;
57
57
  };
58
58
  /**
59
59
  * get basic configurations with the given ones
@@ -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;AAOD;;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 CHANGED
@@ -51,7 +51,7 @@ export declare class Logger {
51
51
  /**
52
52
  * Get channel by name
53
53
  */
54
- channel(name: string): LogChannel<BasicLogConfigurations>;
54
+ channel(name: string): LogChannel<import("./types").BasicLogConfigurations>;
55
55
  }
56
56
  export declare const logger: Logger;
57
57
  export declare const log: Log;