@ricdotnet/logger 0.2.1 → 0.2.2

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.
@@ -0,0 +1,25 @@
1
+ export declare enum Constants {
2
+ RESET = "\u001B[0m",
3
+ BRIGHT = "\u001B[1m",
4
+ DIM = "\u001B[2m",
5
+ UNDERSCORE = "\u001B[4m",
6
+ BLINK = "\u001B[5m",
7
+ REVERSE = "\u001B[7m",
8
+ HIDDEN = "\u001B[8m",
9
+ TEXT_BLACK = "\u001B[30m",
10
+ TEXT_RED = "\u001B[31m",
11
+ TEXT_GREEN = "\u001B[32m",
12
+ TEXT_YELLOW = "\u001B[33m",
13
+ TEXT_BLUE = "\u001B[34m",
14
+ TEXT_MAGENTA = "\u001B[35m",
15
+ TEXT_CYAN = "\u001B[36m",
16
+ TEXT_WHITE = "\u001B[37m",
17
+ BG_BLACK = "\u001B[40m",
18
+ BG_RED = "\u001B[41m",
19
+ BG_GREEN = "\u001B[42m",
20
+ BG_YELLOW = "\u001B[43m",
21
+ BG_BLUE = "\u001B[44m",
22
+ BG_MAGENTA = "\u001B[45m",
23
+ BG_CYAN = "\u001B[46m",
24
+ BG_WHITE = "\u001B[47m"
25
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Constants = void 0;
4
+ var Constants;
5
+ (function (Constants) {
6
+ Constants["RESET"] = "\u001B[0m";
7
+ Constants["BRIGHT"] = "\u001B[1m";
8
+ Constants["DIM"] = "\u001B[2m";
9
+ Constants["UNDERSCORE"] = "\u001B[4m";
10
+ Constants["BLINK"] = "\u001B[5m";
11
+ Constants["REVERSE"] = "\u001B[7m";
12
+ Constants["HIDDEN"] = "\u001B[8m";
13
+ Constants["TEXT_BLACK"] = "\u001B[30m";
14
+ Constants["TEXT_RED"] = "\u001B[31m";
15
+ Constants["TEXT_GREEN"] = "\u001B[32m";
16
+ Constants["TEXT_YELLOW"] = "\u001B[33m";
17
+ Constants["TEXT_BLUE"] = "\u001B[34m";
18
+ Constants["TEXT_MAGENTA"] = "\u001B[35m";
19
+ Constants["TEXT_CYAN"] = "\u001B[36m";
20
+ Constants["TEXT_WHITE"] = "\u001B[37m";
21
+ Constants["BG_BLACK"] = "\u001B[40m";
22
+ Constants["BG_RED"] = "\u001B[41m";
23
+ Constants["BG_GREEN"] = "\u001B[42m";
24
+ Constants["BG_YELLOW"] = "\u001B[43m";
25
+ Constants["BG_BLUE"] = "\u001B[44m";
26
+ Constants["BG_MAGENTA"] = "\u001B[45m";
27
+ Constants["BG_CYAN"] = "\u001B[46m";
28
+ Constants["BG_WHITE"] = "\u001B[47m";
29
+ })(Constants = exports.Constants || (exports.Constants = {}));
30
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"./","sources":["src/Constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,SA0BX;AA1BD,WAAY,SAAS;IACnB,gCAAwB,CAAA;IACxB,iCAAwB,CAAA;IACxB,8BAAwB,CAAA;IACxB,qCAAwB,CAAA;IACxB,gCAAwB,CAAA;IACxB,kCAAwB,CAAA;IACxB,iCAAwB,CAAA;IAExB,sCAAyB,CAAA;IACzB,oCAAyB,CAAA;IACzB,sCAAyB,CAAA;IACzB,uCAAyB,CAAA;IACzB,qCAAyB,CAAA;IACzB,wCAAyB,CAAA;IACzB,qCAAyB,CAAA;IACzB,sCAAyB,CAAA;IAEzB,oCAAyB,CAAA;IACzB,kCAAyB,CAAA;IACzB,oCAAyB,CAAA;IACzB,qCAAyB,CAAA;IACzB,mCAAyB,CAAA;IACzB,sCAAyB,CAAA;IACzB,mCAAyB,CAAA;IACzB,oCAAyB,CAAA;AAC3B,CAAC,EA1BW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QA0BpB"}
@@ -0,0 +1,15 @@
1
+ import { ILogger } from './Types';
2
+ export declare class Logger {
3
+ private readonly logDir;
4
+ private readonly logToConsole;
5
+ private readonly logToFile;
6
+ private readonly level;
7
+ private static logger;
8
+ private readonly logQueue;
9
+ constructor(options?: ILogger);
10
+ static get(): Logger;
11
+ debug(message: string): Promise<void>;
12
+ info(message: string): Promise<void>;
13
+ warn(message: string): Promise<void>;
14
+ error(message: string): Promise<void>;
15
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = void 0;
4
+ const Constants_1 = require("./Constants");
5
+ const Queue_1 = require("./Queue");
6
+ class Logger {
7
+ logDir;
8
+ logToConsole;
9
+ logToFile;
10
+ level;
11
+ static logger = null;
12
+ logQueue;
13
+ constructor(options) {
14
+ console.log('Initiating a logger...');
15
+ if (Logger.logger) {
16
+ console.warn('The logger was already initiated.');
17
+ return;
18
+ }
19
+ this.logToConsole = options?.logToConsole ?? true;
20
+ this.logToFile = options?.logToFile ?? false;
21
+ this.level = options?.level ?? 'info';
22
+ Logger.logger = this;
23
+ if (this.logToFile) {
24
+ this.logQueue = new Queue_1.Queue(options);
25
+ }
26
+ console.log('Logger initiated.');
27
+ }
28
+ static get() {
29
+ return Logger.logger;
30
+ }
31
+ async debug(message) {
32
+ if (this.logToFile) {
33
+ this.logQueue.add(message, 'debug');
34
+ }
35
+ if (this.logToConsole && this.level === 'debug') {
36
+ console.debug(`${Constants_1.Constants.TEXT_CYAN}[DEBUG]:${Constants_1.Constants.RESET} ${message}`);
37
+ }
38
+ }
39
+ async info(message) {
40
+ if (this.logToFile) {
41
+ this.logQueue.add(message, 'info');
42
+ }
43
+ if (this.logToConsole) {
44
+ console.log(`${Constants_1.Constants.TEXT_BLUE}[INFO]:${Constants_1.Constants.RESET} ${message}`);
45
+ }
46
+ }
47
+ async warn(message) {
48
+ if (this.logToFile) {
49
+ this.logQueue.add(message, 'warn');
50
+ }
51
+ if (this.logToConsole) {
52
+ console.warn(`${Constants_1.Constants.TEXT_YELLOW}[WARN]:${Constants_1.Constants.RESET} ${message}`);
53
+ }
54
+ }
55
+ async error(message) {
56
+ if (this.logToFile) {
57
+ this.logQueue.add(message, 'error');
58
+ }
59
+ if (this.logToConsole) {
60
+ console.error(`${Constants_1.Constants.TEXT_RED}[ERROR]:${Constants_1.Constants.RESET} ${message}`);
61
+ }
62
+ }
63
+ }
64
+ exports.Logger = Logger;
65
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"./","sources":["src/Logger.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC,mCAAgC;AAEhC,MAAa,MAAM;IACA,MAAM,CAAS;IACf,YAAY,CAAU;IACtB,SAAS,CAAU;IACnB,KAAK,CAAW;IACzB,MAAM,CAAC,MAAM,GAAW,IAAI,CAAC;IAEpB,QAAQ,CAAQ;IAEjC,YAAY,OAAiB;QAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAClD,OAAO;SACR;QAED,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QAEtC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QAErB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAK,CAAC,OAAO,CAAC,CAAC;SACpC;QAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACrC;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;YAC/C,OAAO,CAAC,KAAK,CACX,GAAG,qBAAS,CAAC,SAAS,WAAW,qBAAS,CAAC,KAAK,IAAI,OAAO,EAAE,CAC9D,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAS,CAAC,SAAS,UAAU,qBAAS,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;SAC3E;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,CAAC,IAAI,CACV,GAAG,qBAAS,CAAC,WAAW,UAAU,qBAAS,CAAC,KAAK,IAAI,OAAO,EAAE,CAC/D,CAAC;SACH;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACrC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,CAAC,KAAK,CACX,GAAG,qBAAS,CAAC,QAAQ,WAAW,qBAAS,CAAC,KAAK,IAAI,OAAO,EAAE,CAC7D,CAAC;SACH;IACH,CAAC;;AAzEH,wBA0EC"}
@@ -0,0 +1,11 @@
1
+ import { ILogger, LogLevel } from './Types';
2
+ export declare class Queue {
3
+ private logQueue;
4
+ private isRunning;
5
+ private readonly logDir;
6
+ constructor(options: ILogger);
7
+ private checkLogDir;
8
+ add(message: string, level: LogLevel): void;
9
+ runQueue(): Promise<void>;
10
+ private writeToFile;
11
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Queue = void 0;
4
+ const fs = require("fs/promises");
5
+ const path = require("path");
6
+ const Logger_1 = require("./Logger");
7
+ class Queue {
8
+ logQueue;
9
+ isRunning;
10
+ logDir;
11
+ constructor(options) {
12
+ this.logQueue = [];
13
+ this.isRunning = false;
14
+ this.logDir = options?.directory ?? 'Logs';
15
+ this.checkLogDir();
16
+ }
17
+ async checkLogDir() {
18
+ try {
19
+ await fs.mkdir(this.logDir);
20
+ await Logger_1.Logger.get().debug(`Logs folder generated. Logging to: ${this.logDir}`);
21
+ }
22
+ catch (error) {
23
+ await Logger_1.Logger.get().debug(`Logs folder already exists. Logging to: ${this.logDir}`);
24
+ }
25
+ }
26
+ add(message, level) {
27
+ this.logQueue.push({ message, level });
28
+ if (!this.isRunning) {
29
+ this.isRunning = true;
30
+ this.runQueue();
31
+ }
32
+ }
33
+ async runQueue() {
34
+ const { message, level } = this.logQueue.shift();
35
+ await this.writeToFile(message, level);
36
+ if (this.logQueue.length) {
37
+ return this.runQueue();
38
+ }
39
+ this.isRunning = false;
40
+ }
41
+ async writeToFile(message, level) {
42
+ const DAY = new Date().getDate();
43
+ const MONTH = new Date().getMonth() + 1;
44
+ const YEAR = new Date().getFullYear();
45
+ const HOURS = new Date().getHours();
46
+ const MINUTES = new Date().getMinutes();
47
+ const FULL_DATE = [DAY, MONTH, YEAR].join('-');
48
+ const FULL_TIME = [HOURS, MINUTES].join(':');
49
+ let logFile;
50
+ try {
51
+ logFile = await fs.readFile(path.join(this.logDir, `${FULL_DATE}-${level}.log`));
52
+ }
53
+ catch (e) {
54
+ const data = 'Log Time: ' + FULL_TIME + '\n' + message + '\n\n';
55
+ await fs.writeFile(path.join(this.logDir, `${FULL_DATE}-${level}.log`), data);
56
+ }
57
+ if (logFile) {
58
+ const data = logFile + 'Log Time: ' + FULL_TIME + '\n' + message + '\n\n';
59
+ await fs.writeFile(path.join(this.logDir, `${FULL_DATE}-${level}.log`), data);
60
+ }
61
+ }
62
+ }
63
+ exports.Queue = Queue;
64
+ //# sourceMappingURL=Queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.js","sourceRoot":"./","sources":["src/Queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type Primitives = string | number | object;
2
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
3
+ export type LogObject = {
4
+ message: string;
5
+ level: LogLevel;
6
+ };
7
+ export interface ILogger {
8
+ directory?: string;
9
+ logToConsole?: boolean;
10
+ logToFile?: boolean;
11
+ level?: LogLevel;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"./","sources":["src/Types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ricdotnet/logger",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "A logger utility for my personal projects.",
5
5
  "main": "index.js",
6
6
  "scripts": {