diff --git a/jest.config.js b/jest.config.js index 020f357..e9fdd50 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,7 +7,6 @@ module.exports = { testPathIgnorePatterns: ['/lib/', '/node_modules/'], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], setupFilesAfterEnv: ['./jest.setup.js'], - collectCoverage: true, testEnvironment: 'node', globals: { 'ts-jest': { diff --git a/package.json b/package.json index 2c23a12..7570620 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flagger", - "version": "3.0.11", + "version": "3.0.12", "description": "An open source JavaScript SDK for feature flagging (feature gating, feature toggles) for Node.js and Javascript applications", "main": "dist/index.cjs.js", "module": "dist/index.es.js", @@ -15,7 +15,7 @@ "build": "tsc && yarn rollup -c && rimraf temp", "lint": "tslint -p tsconfig.json -c tslint.json", "lint:fix": "tslint -p tsconfig.json -c tslint.json --fix", - "test": "jest" + "test": "jest --collectCoverage" }, "devDependencies": { "@rollup/plugin-commonjs": "^11.0.2", diff --git a/src/Flagger.ts b/src/Flagger.ts index e8a2b29..f3c1316 100644 --- a/src/Flagger.ts +++ b/src/Flagger.ts @@ -11,7 +11,7 @@ import { } from './constants' import {Core} from './Core' import Ingester from './ingester/Ingester' -import {Logger, LogLevel} from './Logger/Logger' +import {Logger, LogLevel, LogLevelStrings} from './Logger/Logger' import SSE from './sse' import { escapeEntity, @@ -92,7 +92,7 @@ export class FlaggerClass { backupSourceURL?: string sseURL?: string ingestionURL?: string - logLevel?: LogLevel + logLevel?: LogLevelStrings | LogLevel sdkInfo?: ISDKInfo }) { if (!apiKey) { @@ -101,7 +101,11 @@ export class FlaggerClass { } if (logLevel) { - Logger.LOG_LEVEL = logLevel + if (typeof logLevel === 'string') { + Logger.LOG_LEVEL = Logger.parseLevel(logLevel) + } else { + Logger.LOG_LEVEL = logLevel + } } await this.shutdown() diff --git a/src/Logger/Logger.test.ts b/src/Logger/Logger.test.ts index d5d6984..eedc257 100644 --- a/src/Logger/Logger.test.ts +++ b/src/Logger/Logger.test.ts @@ -2,21 +2,21 @@ import {Logger, LogLevel} from './Logger' describe('Logger tests', () => { it('parseLevel test', () => { - expect(Logger.parseLevel('test')).toBe(LogLevel.ERROR) + expect(Logger.parseLevel('test')).toBe(LogLevel.error) - expect(Logger.parseLevel('warn')).toBe(LogLevel.WARN) - expect(Logger.parseLevel('WaRn')).toBe(LogLevel.WARN) - expect(Logger.parseLevel('WARNING')).toBe(LogLevel.WARN) - expect(Logger.parseLevel('warning')).toBe(LogLevel.WARN) + expect(Logger.parseLevel('warn')).toBe(LogLevel.warn) + expect(Logger.parseLevel('WaRn')).toBe(LogLevel.warn) + expect(Logger.parseLevel('WARNING')).toBe(LogLevel.warn) + expect(Logger.parseLevel('warning')).toBe(LogLevel.warn) - expect(Logger.parseLevel('debug')).toBe(LogLevel.DEBUG) - expect(Logger.parseLevel('DEBUG')).toBe(LogLevel.DEBUG) - expect(Logger.parseLevel('deb')).toBe(LogLevel.DEBUG) - expect(Logger.parseLevel('DeB')).toBe(LogLevel.DEBUG) + expect(Logger.parseLevel('debug')).toBe(LogLevel.debug) + expect(Logger.parseLevel('DEBUG')).toBe(LogLevel.debug) + expect(Logger.parseLevel('deb')).toBe(LogLevel.debug) + expect(Logger.parseLevel('DeB')).toBe(LogLevel.debug) - expect(Logger.parseLevel('err')).toBe(LogLevel.ERROR) - expect(Logger.parseLevel('ERR')).toBe(LogLevel.ERROR) - expect(Logger.parseLevel('ERRoR')).toBe(LogLevel.ERROR) - expect(Logger.parseLevel('error')).toBe(LogLevel.ERROR) + expect(Logger.parseLevel('err')).toBe(LogLevel.error) + expect(Logger.parseLevel('ERR')).toBe(LogLevel.error) + expect(Logger.parseLevel('ERRoR')).toBe(LogLevel.error) + expect(Logger.parseLevel('error')).toBe(LogLevel.error) }) }) diff --git a/src/Logger/Logger.ts b/src/Logger/Logger.ts index c027eb5..eb75143 100755 --- a/src/Logger/Logger.ts +++ b/src/Logger/Logger.ts @@ -8,10 +8,16 @@ export interface ILogger { error(msg: string): void } +// 'warn' | 'warning' | 'deb' | 'debug' | 'err' | 'error' +export type LogLevelStrings = keyof typeof LogLevel + export enum LogLevel { - ERROR, - WARN, - DEBUG + error, + err, + warning, + warn, + debug, + deb } /** @@ -19,7 +25,7 @@ export enum LogLevel { * @class Logger */ export class Logger implements ILogger { - public static LOG_LEVEL: LogLevel = LogLevel.ERROR + public static LOG_LEVEL: LogLevel = LogLevel.error /** * Parse level and return it. By default returns ERROR level @@ -27,17 +33,17 @@ export class Logger implements ILogger { */ public static parseLevel(level: string): LogLevel { if (level.toLowerCase() === 'warn' || level.toLowerCase() === 'warning') { - return LogLevel.WARN + return LogLevel.warn } if (level.toLowerCase() === 'debug' || level.toLowerCase() === 'deb') { - return LogLevel.DEBUG + return LogLevel.debug } if (level.toLowerCase() === 'err' || level.toLowerCase() === 'error') { - return LogLevel.ERROR + return LogLevel.error } - return LogLevel.ERROR + return LogLevel.error } public name: string @@ -84,14 +90,16 @@ export class Logger implements ILogger { } let log = console.log.bind(console) - if (type === LogLevel.ERROR && console.error) { + if (type === LogLevel.error && console.error) { log = console.error.bind(console) } - if (type === LogLevel.WARN && console.warn) { + if (type === LogLevel.warn && console.warn) { log = console.warn.bind(console) } - const prefix = `[${type}] ${this._ts()} ${this.name}` + const prefix = `[${LogLevel[type].toUpperCase()}] ${this._ts()} ${ + this.name + }` if (msg.length === 1 && typeof msg[0] === 'string') { log(`${prefix} - ${msg[0]}`) @@ -115,7 +123,7 @@ export class Logger implements ILogger { * @param {string|object} msg - Logging message or object */ public warn(...msg: any[]) { - this._log(LogLevel.WARN, ...msg) + this._log(LogLevel.warn, ...msg) } /** @@ -125,7 +133,7 @@ export class Logger implements ILogger { * @param {string|object} msg - Logging message or object */ public error(...msg: any[]) { - this._log(LogLevel.ERROR, ...msg) + this._log(LogLevel.error, ...msg) } /** @@ -135,6 +143,6 @@ export class Logger implements ILogger { * @param {string|object} msg - Logging message or object */ public debug(...msg: any[]) { - this._log(LogLevel.DEBUG, ...msg) + this._log(LogLevel.debug, ...msg) } }