@quatrain/log 0.1.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,35 @@
1
+ export declare enum LogLevel {
2
+ TRACE = 0,
3
+ DEBUG = 1,
4
+ INFO = 2,
5
+ WARN = 3,
6
+ ERROR = 4,
7
+ SILENT = 5
8
+ }
9
+ export interface LoggerType {
10
+ log(message: string): void;
11
+ debug(message: string): void;
12
+ warn(message: string): void;
13
+ info(message: string): void;
14
+ error(message: string): void;
15
+ trace(message: string): void;
16
+ }
17
+ export declare class AbstractLoggerAdapter {
18
+ protected _me: string;
19
+ protected _logLevel: LogLevel;
20
+ protected _logger: any;
21
+ constructor(prefix?: string, level?: LogLevel);
22
+ timestamp: () => string;
23
+ formatLogMessage: (message: any) => string;
24
+ /**
25
+ * Log message using defined logger
26
+ * @param message string | object
27
+ * @param level string
28
+ */
29
+ log(message: any, level?: LogLevel): void;
30
+ debug(message: any): void;
31
+ warn(message: any): void;
32
+ info(message: any): void;
33
+ error(message: any): void;
34
+ trace(message: any): void;
35
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractLoggerAdapter = exports.LogLevel = void 0;
4
+ const Log_1 = require("./Log");
5
+ var LogLevel;
6
+ (function (LogLevel) {
7
+ LogLevel[LogLevel["TRACE"] = 0] = "TRACE";
8
+ LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
9
+ LogLevel[LogLevel["INFO"] = 2] = "INFO";
10
+ LogLevel[LogLevel["WARN"] = 3] = "WARN";
11
+ LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
12
+ LogLevel[LogLevel["SILENT"] = 5] = "SILENT";
13
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
14
+ class AbstractLoggerAdapter {
15
+ constructor(prefix = '', level = LogLevel.WARN) {
16
+ this._me = '';
17
+ this._logLevel = LogLevel.WARN;
18
+ this._logger = undefined;
19
+ // How timestamp are formatted
20
+ this.timestamp = () => new Date().toISOString();
21
+ this.formatLogMessage = (message) => `${Log_1.Log.timestamp()} - [${this._me}] ${typeof message === 'string' ? message : JSON.stringify(message)}`;
22
+ this._me = prefix;
23
+ this._logLevel = level;
24
+ }
25
+ /**
26
+ * Log message using defined logger
27
+ * @param message string | object
28
+ * @param level string
29
+ */
30
+ log(message, level = LogLevel.WARN) {
31
+ this._logger.log(this.formatLogMessage(message));
32
+ }
33
+ debug(message) {
34
+ this._logger.debug(this.formatLogMessage(message));
35
+ }
36
+ warn(message) {
37
+ this._logger.warn(this.formatLogMessage(message));
38
+ }
39
+ info(message) {
40
+ this._logger.info(this.formatLogMessage(message));
41
+ }
42
+ error(message) {
43
+ this._logger.error(this.formatLogMessage(message));
44
+ }
45
+ trace(message) {
46
+ this._logger.trace(this.formatLogMessage(message));
47
+ }
48
+ }
49
+ exports.AbstractLoggerAdapter = AbstractLoggerAdapter;
@@ -0,0 +1,4 @@
1
+ import { AbstractLoggerAdapter } from './AbstractLoggerAdapter';
2
+ export declare class DefaultLoggerAdapter extends AbstractLoggerAdapter {
3
+ constructor();
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DefaultLoggerAdapter = void 0;
7
+ const AbstractLoggerAdapter_1 = require("./AbstractLoggerAdapter");
8
+ const loglevel_1 = __importDefault(require("loglevel"));
9
+ class DefaultLoggerAdapter extends AbstractLoggerAdapter_1.AbstractLoggerAdapter {
10
+ constructor() {
11
+ super('Log');
12
+ this._logger = loglevel_1.default;
13
+ }
14
+ }
15
+ exports.DefaultLoggerAdapter = DefaultLoggerAdapter;
package/lib/Log.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { AbstractLoggerAdapter } from "./AbstractLoggerAdapter";
2
+ export type LoggerRegistry<T extends AbstractLoggerAdapter> = {
3
+ [x: string]: T;
4
+ };
5
+ export declare class Log {
6
+ static defaultLogger: string;
7
+ protected static _loggers: LoggerRegistry<any>;
8
+ static timestamp: () => string;
9
+ static addLogger(logger: AbstractLoggerAdapter, alias: string, setDefault?: boolean): void;
10
+ static getLogger<T extends AbstractLoggerAdapter>(alias?: string): T;
11
+ /**
12
+ * Log message using defined logger
13
+ * @param message string | object
14
+ */
15
+ static log(message: any): void;
16
+ static debug(message: any): void;
17
+ static warn(message: any): void;
18
+ static info(message: any): void;
19
+ static error(message: any): void;
20
+ static trace(message: any): void;
21
+ }
package/lib/Log.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Log = void 0;
4
+ const DefaultLoggerAdapter_1 = require("./DefaultLoggerAdapter");
5
+ class Log {
6
+ static addLogger(logger, alias, setDefault = false) {
7
+ this._loggers[alias] = logger;
8
+ if (setDefault) {
9
+ this.defaultLogger = alias;
10
+ }
11
+ }
12
+ static getLogger(alias = this.defaultLogger) {
13
+ if (this._loggers[alias]) {
14
+ return this._loggers[alias];
15
+ }
16
+ else {
17
+ throw new Error(`Unknown logger alias: '${alias}'`);
18
+ }
19
+ }
20
+ /**
21
+ * Log message using defined logger
22
+ * @param message string | object
23
+ */
24
+ static log(message) {
25
+ return Log.getLogger().log(message);
26
+ }
27
+ static debug(message) {
28
+ return Log.getLogger().debug(message);
29
+ }
30
+ static warn(message) {
31
+ return Log.getLogger().warn(message);
32
+ }
33
+ static info(message) {
34
+ return Log.getLogger().info(message);
35
+ }
36
+ static error(message) {
37
+ return Log.getLogger().error(message);
38
+ }
39
+ static trace(message) {
40
+ return Log.getLogger().trace(message);
41
+ }
42
+ }
43
+ exports.Log = Log;
44
+ Log.defaultLogger = '@default';
45
+ Log._loggers = {
46
+ default: new DefaultLoggerAdapter_1.DefaultLoggerAdapter()
47
+ };
48
+ // How timestamp are formatted
49
+ Log.timestamp = () => new Date().toISOString();
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { Log } from './Log';
2
+ import { LogLevel, AbstractLoggerAdapter } from './AbstractLoggerAdapter';
3
+ export { Log, AbstractLoggerAdapter, LogLevel };
package/lib/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogLevel = exports.AbstractLoggerAdapter = exports.Log = void 0;
4
+ const Log_1 = require("./Log");
5
+ Object.defineProperty(exports, "Log", { enumerable: true, get: function () { return Log_1.Log; } });
6
+ const AbstractLoggerAdapter_1 = require("./AbstractLoggerAdapter");
7
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return AbstractLoggerAdapter_1.LogLevel; } });
8
+ Object.defineProperty(exports, "AbstractLoggerAdapter", { enumerable: true, get: function () { return AbstractLoggerAdapter_1.AbstractLoggerAdapter; } });
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@quatrain/log",
3
+ "version": "0.1.2",
4
+ "description": "Logger for business apps",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "files": [
8
+ "lib/",
9
+ "README.md"
10
+ ],
11
+ "author": "Quatrain Développement SAS <developers@quatrain.com>",
12
+ "license": "MIT",
13
+ "devDependencies": {
14
+ "@tsconfig/recommended": "^1.0.1",
15
+ "@types/jest": "^27.0.3",
16
+ "@types/node": "^22.10.1",
17
+ "jest": "^27.4.7",
18
+ "jest-node-exports-resolver": "^1.1.6",
19
+ "trace-unhandled": "^2.0.1",
20
+ "ts-jest": "^27.1.2",
21
+ "ts-node": "^10.4.0",
22
+ "typescript": "^5.1.5"
23
+ },
24
+ "dependencies": {
25
+ "loglevel": "^1.9.2"
26
+ },
27
+ "scripts": {
28
+ "test-ci": "jest --runInBand",
29
+ "build": "tsc",
30
+ "wbuild": "tsc --watch",
31
+ "bump-to": "yarn version",
32
+ "hash": "node ../../bin/hashFolder.js",
33
+ "hash:persist": "yarn hash > .hash_latest.txt",
34
+ "hash:compare": "yarn hash > .hash_newest.txt && cmp -s .hash_latest.txt .hash_newest.txt",
35
+ "publish": "yarn hash:compare || yarn publish:process",
36
+ "publish:process": "yarn version patch && yarn build && yarn npm publish --access public && yarn hash:persist"
37
+ }
38
+ }