{"version":3,"file":"logger.mjs","sources":["../../../../src/cli/utils/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport ora, { Ora } from 'ora';\nimport * as cliProgress from 'cli-progress';\n\nexport interface LoggerOptions {\n  silent?: boolean;\n  debug?: boolean;\n  timestamp?: boolean;\n}\n\nexport interface Logger {\n  warnings: number;\n  errors: number;\n  debug: (...args: unknown[]) => void;\n  info: (...args: unknown[]) => void;\n  success: (...args: unknown[]) => void;\n  warn: (...args: unknown[]) => void;\n  error: (...args: unknown[]) => void;\n  log: (...args: unknown[]) => void;\n  spinner: (text: string) => Pick<ora.Ora, 'succeed' | 'fail' | 'start' | 'text' | 'isSpinning'>;\n  progressBar: (\n    totalSize: number,\n    text: string\n  ) => Pick<cliProgress.SingleBar, 'start' | 'stop' | 'update'>;\n}\n\nconst silentSpinner = {\n  succeed() {\n    return this;\n  },\n  fail() {\n    return this;\n  },\n  start() {\n    return this;\n  },\n  text: '',\n  isSpinning: false,\n} as Ora;\n\nconst silentProgressBar = {\n  start() {\n    return this;\n  },\n  stop() {\n    return this;\n  },\n  update() {\n    return this;\n  },\n} as unknown as cliProgress.SingleBar;\n\nconst createLogger = (options: LoggerOptions = {}): Logger => {\n  const { silent = false, debug = false, timestamp = true } = options;\n\n  const state = { errors: 0, warning: 0 };\n\n  return {\n    get warnings() {\n      return state.warning;\n    },\n\n    get errors() {\n      return state.errors;\n    },\n\n    debug(...args) {\n      if (silent || !debug) {\n        return;\n      }\n\n      console.log(\n        chalk.cyan(`[DEBUG]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n        ...args\n      );\n    },\n\n    info(...args) {\n      if (silent) {\n        return;\n      }\n\n      console.info(\n        chalk.blue(`[INFO]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n        ...args\n      );\n    },\n\n    log(...args) {\n      if (silent) {\n        return;\n      }\n\n      console.info(chalk.blue(`${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`), ...args);\n    },\n\n    success(...args) {\n      if (silent) {\n        return;\n      }\n\n      console.info(\n        chalk.green(`[SUCCESS]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n        ...args\n      );\n    },\n\n    warn(...args) {\n      state.warning += 1;\n\n      if (silent) {\n        return;\n      }\n\n      console.warn(\n        chalk.yellow(`[WARN]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n        ...args\n      );\n    },\n\n    error(...args) {\n      state.errors += 1;\n\n      if (silent) {\n        return;\n      }\n\n      console.error(\n        chalk.red(`[ERROR]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n        ...args\n      );\n    },\n\n    spinner(text: string) {\n      if (silent) {\n        return silentSpinner;\n      }\n\n      return ora(text);\n    },\n\n    progressBar(totalSize: number, text: string) {\n      if (silent) {\n        return silentProgressBar;\n      }\n\n      const progressBar = new cliProgress.SingleBar({\n        format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,\n        barCompleteChar: '\\u2588',\n        barIncompleteChar: '\\u2591',\n        hideCursor: true,\n        forceRedraw: true,\n      });\n\n      progressBar.start(totalSize, 0);\n\n      return progressBar;\n    },\n  };\n};\n\nexport { createLogger };\n"],"names":["silentSpinner","succeed","fail","start","text","isSpinning","silentProgressBar","stop","update","createLogger","options","silent","debug","timestamp","state","errors","warning","warnings","args","console","log","chalk","cyan","Date","toISOString","info","blue","success","green","warn","yellow","error","red","spinner","ora","progressBar","totalSize","cliProgress","SingleBar","format","barCompleteChar","barIncompleteChar","hideCursor","forceRedraw"],"mappings":"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"}