diff --git a/core/logging.ts b/core/logging.ts index 4191754..bb786c5 100644 --- a/core/logging.ts +++ b/core/logging.ts @@ -36,7 +36,7 @@ export const colors = { //types export type err = E | string | any; export type LogHandlers = { [handler in "error" | "info" | "debug"]: Function | null; }; -export type LoggerOptions = { log_handlers?: LogHandlers, verbose?: boolean, hard_crash?: boolean, prefix?: string, use_color?: boolean, log_level?:LogLevel}; +export type LoggerOptions = { log_handlers?: LogHandlers, verbose?: boolean, hard_crash?: boolean, prefix?: string, use_color?: boolean, log_level?:LogLevel | string}; // enums, which compile to js dicts export enum LogLevel{ @@ -73,7 +73,24 @@ export class LogHandler { this.verbose = verbose; this.hard_crash = hard_crash; this.prefix = prefix; - if (log_level !== undefined) this.log_level = log_level; + if (log_level !== undefined){ + if(typeof log_level === 'string'){ + if (Object.keys(LogLevel).includes(log_level.toUpperCase())) + this.log_level = LogLevel[log_level.toUpperCase() as keyof typeof LogLevel]; + else + LogHandler.info(`Log level must be a string or number (${Object.keys(LogLevel)}), got ${log_level}`); //this is a dev error, so i dont need to handle it in prod + } + else if (typeof log_level === 'number'){ + if( log_level >= LogLevel.DEBUG && log_level <= LogLevel.ERROR) + this.log_level = log_level as LogLevel; + else + LogHandler.info(`Log level must be a string or number (${Object.keys(LogLevel)}`); + } + else + LogHandler.info(`Log level must be a string or number (${Object.keys(LogLevel)}), got ${typeof log_level}`); + + if(!this.log_level) this.log_level = LogLevel.DEBUG; //default log level + } if (log_handlers !== undefined) this.log_handlers = log_handlers; // set to use colors in terminal logs. Non-chromium browsers dont support these color bytes, so lets not spam garbage in the console. diff --git a/core/package-lock.json b/core/package-lock.json index a8dd253..39f8c6a 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "socio", - "version": "1.13.12", + "version": "1.13.13", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "socio", - "version": "1.13.12", + "version": "1.13.13", "license": "MIT", "dependencies": { "js-yaml": "^4.1.0", diff --git a/core/package.json b/core/package.json index 53ca793..7cc508f 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "socio", - "version": "1.13.12", + "version": "1.13.13", "description": "A WebSocket Real-Time Communication (RTC) API framework.", "main": "./dist/core.js", "type": "module",