{"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;AACrC,OAAK,QAAQ;AACb,OAAK,UAAU;AACf,OAAK,YAAY,aAAa;AAC9B,OAAK,SAAS,UAAU;;CAG1B,aAAmB;AACjB,OAAK,OAAO,EAAE,SAAS,GAAG,CAAC;;CAG7B,OAAO,EACL,SACA,cAIO;AACP,OAAK,UAAU;EACf,MAAM,QAAQ,KAAK,UAAU,KAAK;EAClC,MAAM,kBAAkB,KAAK,MAAM,QAAQ,KAAK,UAAU;EAC1D,MAAM,iBAAiB,KAAK,YAAY;EAExC,MAAM,YAAY,IAAI,OAAO,gBAAgB;EAC7C,MAAM,WAAW,IAAI,OAAO,eAAe;EAC3C,MAAM,cAAc,QAAQ,KAAK,QAAQ,EAAE;EAE3C,IAAI,kBAAkB,KAAK,OACxB,QAAQ,SAAS,GAAG,YAAY,WAAW,CAC3C,QAAQ,gBAAgB,WAAW,CACnC,QAAQ,WAAW,KAAK,QAAQ,UAAU,CAAC,CAC3C,QAAQ,WAAW,KAAK,MAAM,UAAU,CAAC;AAC5C,MAAI;QACG,MAAM,OAAO,WAChB,KAAI,OAAO,UAAU,eAAe,KAAK,YAAY,IAAI,CACvD,mBAAkB,gBAAgB,QAChC,IAAI,IAAI,IACR,WAAW,KAAK,UAAU,CAC3B;;AAKP,UAAQ,IAAI,gBAAgB;;CAG9B,UAAU,EACR,eAC2C,EAAE,EAAQ;AACrD,OAAK,OAAO;GAAE,SAAS,KAAK,UAAU;GAAG;GAAY,CAAC;;CAGxD,SAAS,EAAE,eAAwD,EAAE,EAAQ;AAC3E,OAAK,OAAO;GAAE,SAAS,KAAK;GAAO;GAAY,CAAC;AAChD,UAAQ,IAAI,cAAc"}