import type { LogLevel, ILogger } from '../../types' const LOG_LEVEL_PRIORITY: Record = { none: 0, error: 1, warn: 2, info: 3, debug: 4, } class SdkLogger implements ILogger { private logLevel: LogLevel = 'none' private logger: ILogger = console configure(logLevel: LogLevel, logger: ILogger = console): void { this.logLevel = logLevel this.logger = logger } getLogLevel(): LogLevel { return this.logLevel } private shouldLog(level: Exclude): boolean { return LOG_LEVEL_PRIORITY[level] <= LOG_LEVEL_PRIORITY[this.logLevel] } private log(level: Exclude, args: unknown[]): void { if (!this.shouldLog(level)) return try { this.logger[level](...args) } catch (err) { console.error('[Portal SDK] Logger error, falling back to console', { level, error: err, }) console[level](...args) } } error(...args: unknown[]): void { this.log('error', args) } warn(...args: unknown[]): void { this.log('warn', args) } info(...args: unknown[]): void { this.log('info', args) } debug(...args: unknown[]): void { this.log('debug', args) } } const sdkLogger = new SdkLogger() export { sdkLogger, SdkLogger }