{"version":3,"sources":["../../src/getFunctionName.ts","../../src/IdLogger.ts","../../src/Logger.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\n\nexport const getFunctionName = (depth = 2) => {\n  try {\n    throw new Error('Getting function name')\n  } catch (ex) {\n    return handleError(ex, (error) => {\n      let newIndex: number | undefined\n      const stackParts = error.stack?.split('\\n')[depth]?.split(' ')\n      const funcName\n        = stackParts?.find((item, index) => {\n          if (item.length > 0 && item !== 'at') {\n            // check if constructor\n            if (item === 'new') {\n              newIndex = index\n            }\n            return item\n          }\n        }) ?? '<unknown>'\n      return newIndex ? `${funcName} ${stackParts?.[newIndex + 1]}` : funcName\n    })\n  }\n}\n","import type { Logger } from './Logger.ts'\n\nexport class IdLogger implements Logger {\n  private _id?: () => string\n  private _logger: Logger\n\n  constructor(logger: Logger, id?: () => string) {\n    this._logger = logger\n    this._id = id\n  }\n\n  set id(id: string) {\n    this._id = () => id\n  }\n\n  debug(...data: unknown[]) {\n    this._logger?.debug(this.prefix(), ...data)\n  }\n\n  error(...data: unknown[]) {\n    this._logger?.error(this.prefix(), ...data)\n  }\n\n  info(...data: unknown[]) {\n    this._logger?.info(this.prefix(), ...data)\n  }\n\n  log(...data: unknown[]) {\n    this._logger?.log(this.prefix(), ...data)\n  }\n\n  warn(...data: unknown[]) {\n    this._logger?.warn(this.prefix(), ...data)\n  }\n\n  private prefix() {\n    return `[${this._id?.()}]`\n  }\n}\n","import type { EnumValue } from '@xylabs/enum'\nimport { Enum } from '@xylabs/enum'\nexport type LogFunction = (...data: unknown[]) => void\n\n/**\n * Interface to handle overlap between Winston &\n * `console` with as much congruency as possible.\n */\nexport interface Logger {\n  debug: LogFunction\n  error: LogFunction\n  info: LogFunction\n  log: LogFunction\n  warn: LogFunction\n}\n\nexport const LogLevel = Enum({\n  error: 1,\n  warn: 2,\n  info: 3,\n  log: 4,\n  debug: 5,\n})\n\nexport type LogLevel = EnumValue<typeof LogLevel>\n\nexport const NoOpLogFunction = (..._data: unknown[]) => void {}\n\nexport class ConsoleLogger implements Logger {\n  constructor(readonly level: LogLevel = LogLevel.warn) {}\n\n  get debug() {\n    return this.level >= LogLevel.debug ? console.debug : NoOpLogFunction\n  }\n\n  get error() {\n    return this.level >= LogLevel.error ? console.error : NoOpLogFunction\n  }\n\n  get info() {\n    return this.level >= LogLevel.info ? console.info : NoOpLogFunction\n  }\n\n  get log() {\n    return this.level >= LogLevel.log ? console.log : NoOpLogFunction\n  }\n\n  get warn() {\n    return this.level >= LogLevel.warn ? console.warn : NoOpLogFunction\n  }\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;AAErB,IAAM,kBAAkB,CAAC,QAAQ,MAAM;AAC5C,MAAI;AACF,UAAM,IAAI,MAAM,uBAAuB;AAAA,EACzC,SAAS,IAAI;AACX,WAAO,YAAY,IAAI,CAAC,UAAU;AAChC,UAAI;AACJ,YAAM,aAAa,MAAM,OAAO,MAAM,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG;AAC7D,YAAM,WACF,YAAY,KAAK,CAAC,MAAM,UAAU;AAClC,YAAI,KAAK,SAAS,KAAK,SAAS,MAAM;AAEpC,cAAI,SAAS,OAAO;AAClB,uBAAW;AAAA,UACb;AACA,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,KAAK;AACR,aAAO,WAAW,GAAG,QAAQ,IAAI,aAAa,WAAW,CAAC,CAAC,KAAK;AAAA,IAClE,CAAC;AAAA,EACH;AACF;;;ACpBO,IAAM,WAAN,MAAiC;AAAA,EAC9B;AAAA,EACA;AAAA,EAER,YAAY,QAAgB,IAAmB;AAC7C,SAAK,UAAU;AACf,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,IAAI,GAAG,IAAY;AACjB,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA,EAEA,SAAS,MAAiB;AACxB,SAAK,SAAS,MAAM,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,EAC5C;AAAA,EAEA,SAAS,MAAiB;AACxB,SAAK,SAAS,MAAM,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,EAC5C;AAAA,EAEA,QAAQ,MAAiB;AACvB,SAAK,SAAS,KAAK,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEA,OAAO,MAAiB;AACtB,SAAK,SAAS,IAAI,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,EAC1C;AAAA,EAEA,QAAQ,MAAiB;AACvB,SAAK,SAAS,KAAK,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,EAC3C;AAAA,EAEQ,SAAS;AACf,WAAO,IAAI,KAAK,MAAM,CAAC;AAAA,EACzB;AACF;;;ACrCA,SAAS,YAAY;AAed,IAAM,WAAW,KAAK;AAAA,EAC3B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AACT,CAAC;AAIM,IAAM,kBAAkB,IAAI,UAAqB,KAAK,CAAC;AAEvD,IAAM,gBAAN,MAAsC;AAAA,EAC3C,YAAqB,QAAkB,SAAS,MAAM;AAAjC;AAAA,EAAkC;AAAA,EAEvD,IAAI,QAAQ;AACV,WAAO,KAAK,SAAS,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EACxD;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO,KAAK,SAAS,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EACxD;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,KAAK,SAAS,SAAS,OAAO,QAAQ,OAAO;AAAA,EACtD;AAAA,EAEA,IAAI,MAAM;AACR,WAAO,KAAK,SAAS,SAAS,MAAM,QAAQ,MAAM;AAAA,EACpD;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,KAAK,SAAS,SAAS,OAAO,QAAQ,OAAO;AAAA,EACtD;AACF;","names":[]}