@warlock.js/logger 4.0.158 → 4.0.162

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 (39) hide show
  1. package/esm/channels/console-log.d.ts +17 -0
  2. package/esm/channels/console-log.d.ts.map +1 -0
  3. package/esm/channels/console-log.js +47 -0
  4. package/esm/channels/console-log.js.map +1 -0
  5. package/esm/channels/file-log.d.ts +171 -0
  6. package/esm/channels/file-log.d.ts.map +1 -0
  7. package/esm/channels/file-log.js +293 -0
  8. package/esm/channels/file-log.js.map +1 -0
  9. package/esm/channels/index.d.ts +4 -0
  10. package/esm/channels/index.d.ts.map +1 -0
  11. package/esm/channels/json-file-log.d.ts +33 -0
  12. package/esm/channels/json-file-log.d.ts.map +1 -0
  13. package/esm/channels/json-file-log.js +164 -0
  14. package/esm/channels/json-file-log.js.map +1 -0
  15. package/esm/index.d.ts +6 -0
  16. package/esm/index.d.ts.map +1 -0
  17. package/esm/index.js +1 -0
  18. package/esm/index.js.map +1 -0
  19. package/esm/log-channel.d.ts +67 -0
  20. package/esm/log-channel.d.ts.map +1 -0
  21. package/esm/log-channel.js +88 -0
  22. package/esm/log-channel.js.map +1 -0
  23. package/esm/logger.d.ts +62 -0
  24. package/esm/logger.d.ts.map +1 -0
  25. package/esm/logger.js +123 -0
  26. package/esm/logger.js.map +1 -0
  27. package/esm/types.d.ts +104 -0
  28. package/esm/types.d.ts.map +1 -0
  29. package/esm/utils/capture-unhandled-errors.d.ts +2 -0
  30. package/esm/utils/capture-unhandled-errors.d.ts.map +1 -0
  31. package/esm/utils/capture-unhandled-errors.js +12 -0
  32. package/esm/utils/capture-unhandled-errors.js.map +1 -0
  33. package/esm/utils/clear-message.d.ts +5 -0
  34. package/esm/utils/clear-message.d.ts.map +1 -0
  35. package/esm/utils/clear-message.js +9 -0
  36. package/esm/utils/clear-message.js.map +1 -0
  37. package/esm/utils/index.d.ts +3 -0
  38. package/esm/utils/index.d.ts.map +1 -0
  39. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ import { LogChannel } from "../log-channel";
2
+ import type { BasicLogConfigurations, LoggingData } from "../types";
3
+ export declare class ConsoleLog extends LogChannel<BasicLogConfigurations> {
4
+ /**
5
+ * {@inheritdoc}
6
+ */
7
+ name: string;
8
+ /**
9
+ * Determine if channel is logging in terminal
10
+ */
11
+ terminal: boolean;
12
+ /**
13
+ * {@inheritdoc}
14
+ */
15
+ log(data: LoggingData): void;
16
+ }
17
+ //# sourceMappingURL=console-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-log.d.ts","sourceRoot":"","sources":["../../src/channels/console-log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpE,qBAAa,UAAW,SAAQ,UAAU,CAAC,sBAAsB,CAAC;IAChE;;OAEG;IACI,IAAI,SAAa;IAExB;;OAEG;IACI,QAAQ,UAAQ;IAEvB;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,WAAW;CA0E7B"}
@@ -0,0 +1,47 @@
1
+ import {colors}from'@mongez/copper';import {LogChannel}from'../log-channel.js';class ConsoleLog extends 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(colors.magentaBright("⚙"), colors.yellow(`(${date})`), colors.cyan(`[${module}]`), colors.magenta(`[${action}]`), colors.magentaBright(message));
23
+ break;
24
+ case "info":
25
+ // add an info icon
26
+ console.log(colors.blueBright("ℹ"), colors.yellow(`(${date})`), colors.cyan(`[${module}]`), colors.magenta(`[${action}]`), colors.blueBright(message));
27
+ break;
28
+ case "warn":
29
+ // add a warning icon
30
+ console.log(colors.yellow("⚠"), colors.yellow(`(${date})`), colors.cyan(`[${module}]`), colors.magenta(`[${action}]`), colors.yellowBright(message));
31
+ break;
32
+ case "error":
33
+ // add an error icon
34
+ console.log(colors.red("✗"), colors.yellow(`(${date})`), colors.cyan(`[${module}]`), colors.magenta(`[${action}]`), colors.redBright(message));
35
+ break;
36
+ case "success":
37
+ // add a success icon
38
+ console.log(colors.green("✓"), colors.yellow(`(${date})`), colors.cyan(`[${module}]`), colors.magenta(`[${action}]`), colors.greenBright(message));
39
+ break;
40
+ default:
41
+ console.log("[log]", colors.yellow(`(${date})`), colors.cyan(`[${module}]`), colors.magenta(`[${action}]`), message);
42
+ }
43
+ if (typeof message === "object") {
44
+ console.log(message);
45
+ }
46
+ }
47
+ }export{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":[],"mappings":"+EAIM,MAAO,UAAW,SAAQ,UAAkC,CAAA;AAChE;;AAEG;IACI,IAAI,GAAG,SAAS,CAAC;AAExB;;AAEG;IACI,QAAQ,GAAG,IAAI,CAAC;AAEvB;;AAEG;AACI,IAAA,GAAG,CAAC,IAAiB,EAAA;AAC1B,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;;QAGvC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACtC,QAAA,QAAQ,KAAK;AACX,YAAA,KAAK,OAAO;;gBAEV,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EACzB,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,IAAI,GAAG,CAAC,EAC1B,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC7B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAC9B,CAAC;gBACF,MAAM;AACR,YAAA,KAAK,MAAM;;gBAET,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EACtB,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,IAAI,GAAG,CAAC,EAC1B,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC7B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAC3B,CAAC;gBACF,MAAM;AACR,YAAA,KAAK,MAAM;;gBAET,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAClB,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,IAAI,GAAG,CAAC,EAC1B,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC7B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAC7B,CAAC;gBACF,MAAM;AACR,YAAA,KAAK,OAAO;;gBAEV,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EACf,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,IAAI,GAAG,CAAC,EAC1B,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAC1B,CAAC;gBACF,MAAM;AAER,YAAA,KAAK,SAAS;;gBAEZ,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,IAAI,GAAG,CAAC,EAC1B,MAAM,CAAC,IAAI,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,MAAM,GAAG,CAAC,EAC7B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAC5B,CAAC;gBACF,MAAM;AAER,YAAA;AACE,gBAAA,OAAO,CAAC,GAAG,CACT,OAAO,EACP,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA,CAAA,CAAG,CAAC,EAC1B,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,MAAM,CAAG,CAAA,CAAA,CAAC,EAC7B,OAAO,CACR,CAAC;AACL,SAAA;AAED,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,SAAA;KACF;AACF"}
@@ -0,0 +1,171 @@
1
+ import { LogChannel } from "../log-channel";
2
+ import type { BasicLogConfigurations, LogContract, LoggingData, LogLevel, LogMessage } from "../types";
3
+ export type FileLogConfig = BasicLogConfigurations & {
4
+ storagePath?: string;
5
+ /**
6
+ * File name, without extension
7
+ */
8
+ name?: string;
9
+ /**
10
+ * chunk mode
11
+ * If set to `single`, the logs will be created in a single file, unless the rotate is set to true
12
+ * If set to `daily`, the logs will be created in a daily file, unless the rotate is set to true
13
+ * If set to `hourly`, the logs will be created in an hourly file, unless the rotate is set to true
14
+ * @default single
15
+ */
16
+ chunk?: "single" | "daily" | "hourly";
17
+ /**
18
+ * Whether to rotate the file
19
+ *
20
+ * @default true
21
+ */
22
+ rotate?: boolean;
23
+ /**
24
+ * File Extension
25
+ *
26
+ * @default log
27
+ */
28
+ extension?: string;
29
+ /**
30
+ * If rotate is set, the rotate name will be added to the file name suffixed with `-`
31
+ *
32
+ * @default DD-MM-YYYY
33
+ */
34
+ rotateFileName?: string;
35
+ /**
36
+ * Max file size before rotating the file
37
+ *
38
+ * @default 10MB
39
+ */
40
+ maxFileSize?: number;
41
+ /**
42
+ * Set the max messages that needs to be added before writing to the file
43
+ *
44
+ * @default 100
45
+ */
46
+ maxMessagesToWrite?: number;
47
+ /**
48
+ * Group logs by
49
+ * Please note that the order matters here
50
+ * For example, if you set `groupBy: ['level', 'module']`, the logs will be added in level name first, then by module
51
+ *
52
+ * @default none
53
+ */
54
+ groupBy?: ("level" | "module" | "action")[];
55
+ /**
56
+ * Define what levels should be logged
57
+ *
58
+ * @default all
59
+ */
60
+ levels?: LogLevel[];
61
+ /**
62
+ * Date and time format
63
+ */
64
+ dateFormat?: {
65
+ date?: string;
66
+ time?: string;
67
+ };
68
+ };
69
+ export declare class FileLog extends LogChannel<FileLogConfig> implements LogContract {
70
+ /**
71
+ * {@inheritdoc}
72
+ */
73
+ name: string;
74
+ /**
75
+ * Messages buffer
76
+ */
77
+ protected messages: LogMessage[];
78
+ /**
79
+ * Grouped messages
80
+ */
81
+ protected groupedMessages: Record<string, LogMessage[]>;
82
+ /**
83
+ * Default channel configurations
84
+ */
85
+ protected defaultConfigurations: FileLogConfig;
86
+ /**
87
+ * Last write time
88
+ */
89
+ protected lastWriteTime: number;
90
+ /**
91
+ * A flag to determine if the file is being written
92
+ */
93
+ protected isWriting: boolean;
94
+ /**
95
+ * Check file size for file rotation
96
+ */
97
+ protected checkAndRotateFile(filePath?: string): Promise<void>;
98
+ /**
99
+ * Rotate log file
100
+ */
101
+ protected rotateLogFile(): Promise<void>;
102
+ /**
103
+ * Flush messages
104
+ */
105
+ protected initMessageFlush(): void;
106
+ /**
107
+ * Get file path
108
+ */
109
+ get filePath(): string;
110
+ /**
111
+ * Get max messages
112
+ */
113
+ protected get maxMessagesToWrite(): number;
114
+ /**
115
+ * Get file name
116
+ */
117
+ get fileName(): string;
118
+ /**
119
+ * Get file extension
120
+ */
121
+ get extension(): string;
122
+ /**
123
+ * Get content
124
+ */
125
+ protected get content(): string;
126
+ /**
127
+ * Get storage path
128
+ */
129
+ get storagePath(): string;
130
+ /**
131
+ * {@inheritdoc}
132
+ */
133
+ protected init(): Promise<void>;
134
+ /**
135
+ * Synchronously flush messages
136
+ */
137
+ flushSync(): void;
138
+ /**
139
+ * {@inheritdoc}
140
+ */
141
+ log(data: LoggingData): Promise<void>;
142
+ /**
143
+ * Check if messages should be written
144
+ */
145
+ protected checkIfMessagesShouldBeWritten(): Promise<void>;
146
+ /**
147
+ * Should be called after messages are saved
148
+ */
149
+ protected onSave(): void;
150
+ /**
151
+ * Check if messages should be grouped
152
+ */
153
+ protected get messagedShouldBeGrouped(): boolean;
154
+ /**
155
+ * Write messages to the file
156
+ */
157
+ protected writeMessagesToFile(): Promise<void>;
158
+ /**
159
+ * Write grouped messages to the file
160
+ */
161
+ protected writeGroupedMessagesToFile(): Promise<void>;
162
+ /**
163
+ * Prepare grouped messages
164
+ */
165
+ protected prepareGroupedMessages(): void;
166
+ /**
167
+ * Start writing to the file
168
+ */
169
+ protected write(filePath: string, content: string): Promise<unknown>;
170
+ }
171
+ //# sourceMappingURL=file-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log.d.ts","sourceRoot":"","sources":["../../src/channels/file-log.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,UAAU,EACX,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,aAAa,GAAG,sBAAsB,GAAG;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC5C;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,qBAAa,OAAQ,SAAQ,UAAU,CAAC,aAAa,CAAE,YAAW,WAAW;IAC3E;;OAEG;IACI,IAAI,SAAU;IAErB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAM;IAEtC;;OAEG;IACH,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAM;IAE7D;;OAEG;IACH,SAAS,CAAC,qBAAqB,EAAE,aAAa,CAgB5C;IAEF;;OAEG;IACH,SAAS,CAAC,aAAa,SAAc;IAErC;;OAEG;IACH,SAAS,CAAC,SAAS,UAAS;IAE5B;;OAEG;cACa,kBAAkB,CAAC,QAAQ,SAAgB;IAkB3D;;OAEG;cACa,aAAa;IAY7B;;OAEG;IACH,SAAS,CAAC,gBAAgB;IAW1B;;OAEG;IACH,IAAW,QAAQ,WAMlB;IAED;;OAEG;IACH,SAAS,KAAK,kBAAkB,IAAI,MAAM,CAEzC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAY5B;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;OAEG;IACH,SAAS,KAAK,OAAO,WAEpB;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;OAEG;cACa,IAAI;IAQpB;;OAEG;IACI,SAAS,IAAI,IAAI;IAoBxB;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,WAAW;IAsClC;;OAEG;cACa,8BAA8B;IAM9C;;OAEG;IACH,SAAS,CAAC,MAAM;IAOhB;;OAEG;IACH,SAAS,KAAK,uBAAuB,IAAI,OAAO,CAE/C;IAED;;OAEG;cACa,mBAAmB;IAqBnC;;OAEG;cACa,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3D;;OAEG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAWxC;;OAEG;cACa,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAcxD"}
@@ -0,0 +1,293 @@
1
+ import {ensureDirectoryAsync}from'@mongez/fs';import dayjs from'dayjs';import fs from'fs';import {EOL}from'os';import path from'path';import {LogChannel}from'../log-channel.js';class FileLog extends 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().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.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.join(this.storagePath, `${fileName}.${extension}`);
71
+ await fs.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 || Date.now() - this.lastWriteTime > 5000)) {
82
+ this.writeMessagesToFile();
83
+ }
84
+ }, 5000); // Periodic check
85
+ }
86
+ /**
87
+ * Get file path
88
+ */
89
+ get filePath() {
90
+ const fileName = this.fileName;
91
+ const extension = this.extension;
92
+ return path.join(this.storagePath, `${fileName}.${extension}`);
93
+ }
94
+ /**
95
+ * Get max messages
96
+ */
97
+ get maxMessagesToWrite() {
98
+ return this.config("maxMessagesToWrite");
99
+ }
100
+ /**
101
+ * Get file name
102
+ */
103
+ get fileName() {
104
+ const debugLevel = this.config("chunk");
105
+ switch (debugLevel) {
106
+ case "single":
107
+ default:
108
+ return this.config("name");
109
+ case "daily":
110
+ return dayjs().format("DD-MM-YYYY");
111
+ case "hourly":
112
+ return dayjs().format("DD-MM-YYYY-HH-00-00-a");
113
+ }
114
+ }
115
+ /**
116
+ * Get file extension
117
+ */
118
+ get extension() {
119
+ return this.config("extension");
120
+ }
121
+ /**
122
+ * Get content
123
+ */
124
+ get content() {
125
+ return this.messages.map((message) => message.content).join(EOL) + EOL;
126
+ }
127
+ /**
128
+ * Get storage path
129
+ */
130
+ get storagePath() {
131
+ return this.config("storagePath");
132
+ }
133
+ /**
134
+ * {@inheritdoc}
135
+ */
136
+ async init() {
137
+ const logsDirectory = this.storagePath;
138
+ await ensureDirectoryAsync(logsDirectory);
139
+ this.initMessageFlush();
140
+ }
141
+ /**
142
+ * Synchronously flush messages
143
+ */
144
+ flushSync() {
145
+ if (this.messages.length === 0 && Object.keys(this.groupedMessages).length === 0)
146
+ return;
147
+ if (this.messagedShouldBeGrouped) {
148
+ this.prepareGroupedMessages();
149
+ for (const key in this.groupedMessages) {
150
+ const directoryPath = path.join(this.storagePath, key);
151
+ fs.mkdirSync(directoryPath, { recursive: true });
152
+ const filePath = path.join(directoryPath, `${this.fileName}.${this.extension}`);
153
+ const content = this.groupedMessages[key].map((message) => message.content).join(EOL) + EOL;
154
+ fs.appendFileSync(filePath, content);
155
+ }
156
+ }
157
+ else {
158
+ fs.mkdirSync(this.storagePath, { recursive: true });
159
+ fs.appendFileSync(this.filePath, this.content);
160
+ }
161
+ this.onSave();
162
+ }
163
+ /**
164
+ * {@inheritdoc}
165
+ */
166
+ async log(data) {
167
+ const { module, action, message, type: level, context } = data;
168
+ if (!this.shouldBeLogged(data))
169
+ return;
170
+ const { date: dateFormat, time } = this.getDateAndTimeFormat();
171
+ const date = dayjs().format(dateFormat + " " + time);
172
+ let content = `[${date}] [${level}] [${module}][${action}]: `;
173
+ let stack;
174
+ // check if message is an instance of Error
175
+ if (message instanceof Error) {
176
+ // in that case we need to store the error message and stack trace
177
+ content += message.message + EOL;
178
+ content += `[trace]` + EOL;
179
+ content += message.stack;
180
+ stack = message.stack;
181
+ }
182
+ else {
183
+ content += message;
184
+ }
185
+ this.messages.push({
186
+ content,
187
+ level,
188
+ date,
189
+ module,
190
+ action,
191
+ stack,
192
+ context,
193
+ timestamp: new Date().toISOString(),
194
+ });
195
+ await this.checkIfMessagesShouldBeWritten(); // Immediate check on buffer size
196
+ }
197
+ /**
198
+ * Check if messages should be written
199
+ */
200
+ async checkIfMessagesShouldBeWritten() {
201
+ if (this.messages.length >= this.maxMessagesToWrite || Date.now() - this.lastWriteTime > 5000) {
202
+ await this.writeMessagesToFile();
203
+ }
204
+ }
205
+ /**
206
+ * Should be called after messages are saved
207
+ */
208
+ onSave() {
209
+ this.messages = [];
210
+ this.groupedMessages = {};
211
+ this.isWriting = false;
212
+ this.lastWriteTime = Date.now();
213
+ }
214
+ /**
215
+ * Check if messages should be grouped
216
+ */
217
+ get messagedShouldBeGrouped() {
218
+ return Number(this.config("groupBy")?.length) > 0;
219
+ }
220
+ /**
221
+ * Write messages to the file
222
+ */
223
+ async writeMessagesToFile() {
224
+ if (this.messages.length === 0 || this.isWriting || !this.isInitialized)
225
+ return;
226
+ this.isWriting = true;
227
+ if (this.messagedShouldBeGrouped) {
228
+ return await this.writeGroupedMessagesToFile();
229
+ }
230
+ await this.checkAndRotateFile(); // Ensure we check file size before writing
231
+ try {
232
+ await this.write(this.filePath, this.content);
233
+ this.onSave();
234
+ }
235
+ catch (error) {
236
+ console.error("Failed to write log:", error);
237
+ // Implement fallback logic here
238
+ this.isWriting = false;
239
+ }
240
+ }
241
+ /**
242
+ * Write grouped messages to the file
243
+ */
244
+ async writeGroupedMessagesToFile() {
245
+ // first step, is to group the messages
246
+ this.prepareGroupedMessages();
247
+ // now each key in the grouped messages, represents the directory path that should extend the storage path
248
+ for (const key in this.groupedMessages) {
249
+ const directoryPath = path.join(this.storagePath, key);
250
+ await ensureDirectoryAsync(directoryPath);
251
+ const filePath = path.join(directoryPath, `${this.fileName}.${this.extension}`);
252
+ await this.checkAndRotateFile(filePath); // Ensure we check file size before writing
253
+ const content = this.groupedMessages[key].map((message) => message.content).join(EOL) + EOL;
254
+ try {
255
+ await this.write(filePath, content);
256
+ }
257
+ catch (error) {
258
+ console.error("Failed to write log:", error);
259
+ }
260
+ }
261
+ this.onSave();
262
+ this.isWriting = false;
263
+ }
264
+ /**
265
+ * Prepare grouped messages
266
+ */
267
+ prepareGroupedMessages() {
268
+ this.messages.forEach((message) => {
269
+ const key = this.config("groupBy")
270
+ .map((groupKey) => encodeURIComponent(message[groupKey]))
271
+ .join("/");
272
+ this.groupedMessages[key] = this.groupedMessages[key] || [];
273
+ this.groupedMessages[key].push(message);
274
+ });
275
+ }
276
+ /**
277
+ * Start writing to the file
278
+ */
279
+ async write(filePath, content) {
280
+ return new Promise((resolve, reject) => {
281
+ const writer = fs.createWriteStream(filePath, { flags: "a" });
282
+ writer.write(content, (error) => {
283
+ writer.end();
284
+ if (error) {
285
+ reject(error);
286
+ }
287
+ else {
288
+ resolve(true);
289
+ }
290
+ });
291
+ });
292
+ }
293
+ }export{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":[],"mappings":"iLAmFM,MAAO,OAAQ,SAAQ,UAAyB,CAAA;AACpD;;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;AACvB,QAAA,MAAM,EAAE,MAAM,IAAI;AAClB,QAAA,WAAW,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;AAC7B,QAAA,IAAI,cAAc,GAAA;AAChB,YAAA,OAAO,KAAK,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,SAAS,GAAG,KAAK,CAAC;AAE5B;;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,MAAM,EAAE,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,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAEnF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAEjC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC,CAAC;AAEhF,QAAA,MAAM,EAAE,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,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAC3F;gBACA,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,aAAA;AACH,SAAC,EAAE,IAAI,CAAC,CAAC;KACV;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAEjC,QAAA,OAAO,IAAI,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,OAAO,KAAK,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,KAAK,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAClD,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,CAAC,GAAG,CAAC,GAAG,GAAG,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,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAE1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAED;;AAEG;IACI,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEzF,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBACvD,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC,CAAC;gBAChF,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC5F,gBAAA,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAChD,SAAA;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAED;;AAEG;IACI,MAAM,GAAG,CAAC,IAAiB,EAAA;AAChC,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AAE/D,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,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;QAErD,IAAI,OAAO,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,GAAA,EAAM,MAAM,CAAA,EAAA,EAAK,MAAM,CAAA,GAAA,CAAK,CAAC;AAE9D,QAAA,IAAI,KAAyB,CAAC;;QAG9B,IAAI,OAAO,YAAY,KAAK,EAAE;;AAE5B,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;AACjC,YAAA,OAAO,IAAI,CAAA,OAAA,CAAS,GAAG,GAAG,CAAC;AAC3B,YAAA,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACzB,YAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACvB,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;YACL,OAAO;AACP,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;KAC7C;AAED;;AAEG;AACO,IAAA,MAAM,8BAA8B,GAAA;QAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE;AAC7F,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;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;AAEhF,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,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAEvD,YAAA,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;AAE1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC,CAAC;YAEhF,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAE5F,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,GAAG,EAAE,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,33 @@
1
+ import type { LogContract, LoggingData } from "../types";
2
+ import { FileLog } from "./file-log";
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
+ * Synchronously flush messages
18
+ */
19
+ flushSync(): void;
20
+ /**
21
+ * {@inheritdoc}
22
+ */
23
+ log(data: LoggingData): Promise<void>;
24
+ /**
25
+ * Write messages to the file
26
+ */
27
+ protected writeMessagesToFile(): Promise<void>;
28
+ /**
29
+ * Write grouped messages to the file
30
+ */
31
+ protected writeGroupedMessagesToFile(): Promise<void>;
32
+ }
33
+ //# 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":"AASA,OAAO,KAAK,EAAE,WAAW,EAAc,WAAW,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,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;IACI,SAAS,IAAI,IAAI;IAwCxB;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,WAAW;IA8BlC;;OAEG;cACa,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCpD;;OAEG;cACa,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;CAuC5D"}