{"version":3,"file":"progress.cjs","names":[],"sources":["../../src/smith/progress.ts"],"sourcesContent":["export class ProgressBar {\n  total: number;\n\n  current: number;\n\n  barLength: number;\n\n  format: string;\n\n  constructor(props: { total: number; format?: string; barLength?: number }) {\n    const { total, format, barLength } = props;\n    this.total = total;\n    this.current = 0;\n    this.barLength = barLength ?? 40;\n    this.format = format || \"{bar} {percentage}% | {value}/{total}\";\n  }\n\n  initialize(): void {\n    this.update({ current: 0 });\n  }\n\n  update({\n    current,\n    formatArgs,\n  }: {\n    current: number;\n    formatArgs?: Record<string, string>;\n  }): void {\n    this.current = current;\n    const ratio = this.current / this.total;\n    const filledBarLength = Math.round(ratio * this.barLength);\n    const emptyBarLength = this.barLength - filledBarLength;\n\n    const filledBar = \"▓\".repeat(filledBarLength);\n    const emptyBar = \"░\".repeat(emptyBarLength);\n    const percentage = (ratio * 100).toFixed(2);\n\n    let formattedString = this.format\n      .replace(\"{bar}\", `${filledBar}${emptyBar}`)\n      .replace(\"{percentage}\", percentage)\n      .replace(\"{value}\", this.current.toString())\n      .replace(\"{total}\", this.total.toString());\n    if (formatArgs) {\n      for (const key in formatArgs) {\n        if (Object.prototype.hasOwnProperty.call(formatArgs, key)) {\n          formattedString = formattedString.replace(\n            `{${key}}`,\n            formatArgs[key].toString()\n          );\n        }\n      }\n    }\n\n    console.log(formattedString);\n  }\n\n  increment({\n    formatArgs,\n  }: { formatArgs?: Record<string, string> } = {}): void {\n    this.update({ current: this.current + 1, formatArgs });\n  }\n\n  complete({ formatArgs }: { formatArgs?: Record<string, string> } = {}): void {\n    this.update({ current: this.total, formatArgs });\n    console.log(\"\\nCompleted\");\n  }\n}\n"],"mappings":";AAAA,IAAa,cAAb,MAAyB;CACvB;CAEA;CAEA;CAEA;CAEA,YAAY,OAA+D;EACzE,MAAM,EAAE,OAAO,QAAQ,cAAc;EACrC,KAAK,QAAQ;EACb,KAAK,UAAU;EACf,KAAK,YAAY,aAAa;EAC9B,KAAK,SAAS,UAAU;CAC1B;CAEA,aAAmB;EACjB,KAAK,OAAO,EAAE,SAAS,EAAE,CAAC;CAC5B;CAEA,OAAO,EACL,SACA,cAIO;EACP,KAAK,UAAU;EACf,MAAM,QAAQ,KAAK,UAAU,KAAK;EAClC,MAAM,kBAAkB,KAAK,MAAM,QAAQ,KAAK,SAAS;EACzD,MAAM,iBAAiB,KAAK,YAAY;EAExC,MAAM,YAAY,IAAI,OAAO,eAAe;EAC5C,MAAM,WAAW,IAAI,OAAO,cAAc;EAC1C,MAAM,cAAc,QAAQ,IAAA,CAAK,QAAQ,CAAC;EAE1C,IAAI,kBAAkB,KAAK,OACxB,QAAQ,SAAS,GAAG,YAAY,UAAU,CAAC,CAC3C,QAAQ,gBAAgB,UAAU,CAAC,CACnC,QAAQ,WAAW,KAAK,QAAQ,SAAS,CAAC,CAAC,CAC3C,QAAQ,WAAW,KAAK,MAAM,SAAS,CAAC;EAC3C,IAAI,YACG;QAAA,MAAM,OAAO,YAChB,IAAI,OAAO,UAAU,eAAe,KAAK,YAAY,GAAG,GACtD,kBAAkB,gBAAgB,QAChC,IAAI,IAAI,IACR,WAAW,IAAI,CAAC,SAAS,CAC3B;EAAA;EAKN,QAAQ,IAAI,eAAe;CAC7B;CAEA,UAAU,EACR,eAC2C,CAAC,GAAS;EACrD,KAAK,OAAO;GAAE,SAAS,KAAK,UAAU;GAAG;EAAW,CAAC;CACvD;CAEA,SAAS,EAAE,eAAwD,CAAC,GAAS;EAC3E,KAAK,OAAO;GAAE,SAAS,KAAK;GAAO;EAAW,CAAC;EAC/C,QAAQ,IAAI,aAAa;CAC3B;AACF"}