{"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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"}