{"version":3,"file":"logBundle.mjs","names":["ANSIColors.BLUE","ANSIColors.RED"],"sources":["../../../src/bundle/logBundle.ts"],"sourcesContent":["import type { IntlayerConfig } from '@intlayer/types/config';\nimport * as ANSIColors from '../colors';\nimport { colorize, getPrefix, spinnerFrames, v, x } from '../logger';\nimport { extractErrorMessage } from '../utils/extractErrorMessage';\n\nexport class BundleLogger {\n  private status: 'pending' | 'installing' | 'bundling' | 'success' | 'error' =\n    'pending';\n  private spinnerTimer: NodeJS.Timeout | null = null;\n  private spinnerIndex = 0;\n  private renderedLines = 0;\n  private isFinished = false;\n  private readonly prefix: string;\n  private lastRenderedState = '';\n  private error: string | undefined;\n\n  constructor(configuration?: IntlayerConfig) {\n    this.prefix = getPrefix(configuration?.log?.prefix) ?? '';\n  }\n\n  setStatus(status: 'installing' | 'bundling' | 'success') {\n    if (this.isFinished) return;\n    this.status = status;\n    if (status === 'success') {\n      this.finish();\n    } else {\n      this.startSpinner();\n      this.render();\n    }\n  }\n\n  setError(error?: unknown) {\n    if (this.isFinished) return;\n    this.status = 'error';\n    this.error = extractErrorMessage(error);\n    this.finish();\n  }\n\n  private startSpinner() {\n    if (this.spinnerTimer || this.isFinished) return;\n    this.spinnerTimer = setInterval(() => {\n      this.spinnerIndex = (this.spinnerIndex + 1) % spinnerFrames.length;\n      this.render();\n    }, 100);\n  }\n\n  private stopSpinner() {\n    if (!this.spinnerTimer) return;\n    clearInterval(this.spinnerTimer);\n    this.spinnerTimer = null;\n  }\n\n  private finish() {\n    this.isFinished = true;\n    this.stopSpinner();\n    this.render();\n  }\n\n  private render() {\n    const frame = spinnerFrames[this.spinnerIndex];\n    const clock = colorize(frame, ANSIColors.BLUE);\n    const lines: string[] = [];\n\n    if (this.status === 'installing') {\n      lines.push(`${this.prefix} ${clock} Fetching and resolving packages...`);\n    } else if (this.status === 'bundling') {\n      lines.push(`${this.prefix} ${v} Fetching and resolving packages...`);\n      lines.push(`${this.prefix} ${clock} Bundling application...`);\n    } else if (this.status === 'success') {\n      lines.push(`${this.prefix} ${v} Fetching and resolving packages...`);\n      lines.push(`${this.prefix} ${v} Bundling application...`);\n    } else if (this.status === 'error') {\n      lines.push(\n        `${this.prefix} ${x} Bundle failed: ${colorize(this.error ?? 'Unknown error', ANSIColors.RED)}`\n      );\n    }\n\n    const currentState = lines.join('\\n');\n    if (currentState === this.lastRenderedState) return;\n    this.lastRenderedState = currentState;\n\n    if (this.renderedLines > 0) {\n      process.stdout.write(`\\x1b[${this.renderedLines}F`);\n    }\n\n    const totalLinesToClear = Math.max(this.renderedLines, lines.length);\n    for (let i = 0; i < totalLinesToClear; i++) {\n      process.stdout.write('\\x1b[2K');\n      if (lines[i] !== undefined) {\n        process.stdout.write(lines[i]);\n      }\n      process.stdout.write('\\n');\n    }\n\n    this.renderedLines = lines.length;\n  }\n}\n"],"mappings":";;;;;AAKA,IAAa,eAAb,MAA0B;CACxB,AAAQ,SACN;CACF,AAAQ,eAAsC;CAC9C,AAAQ,eAAe;CACvB,AAAQ,gBAAgB;CACxB,AAAQ,aAAa;CACrB,AAAiB;CACjB,AAAQ,oBAAoB;CAC5B,AAAQ;CAER,YAAY,eAAgC;AAC1C,OAAK,SAAS,UAAU,eAAe,KAAK,OAAO,IAAI;;CAGzD,UAAU,QAA+C;AACvD,MAAI,KAAK,WAAY;AACrB,OAAK,SAAS;AACd,MAAI,WAAW,UACb,MAAK,QAAQ;OACR;AACL,QAAK,cAAc;AACnB,QAAK,QAAQ;;;CAIjB,SAAS,OAAiB;AACxB,MAAI,KAAK,WAAY;AACrB,OAAK,SAAS;AACd,OAAK,QAAQ,oBAAoB,MAAM;AACvC,OAAK,QAAQ;;CAGf,AAAQ,eAAe;AACrB,MAAI,KAAK,gBAAgB,KAAK,WAAY;AAC1C,OAAK,eAAe,kBAAkB;AACpC,QAAK,gBAAgB,KAAK,eAAe,KAAK,cAAc;AAC5D,QAAK,QAAQ;KACZ,IAAI;;CAGT,AAAQ,cAAc;AACpB,MAAI,CAAC,KAAK,aAAc;AACxB,gBAAc,KAAK,aAAa;AAChC,OAAK,eAAe;;CAGtB,AAAQ,SAAS;AACf,OAAK,aAAa;AAClB,OAAK,aAAa;AAClB,OAAK,QAAQ;;CAGf,AAAQ,SAAS;EACf,MAAM,QAAQ,cAAc,KAAK;EACjC,MAAM,QAAQ,SAAS,OAAOA,KAAgB;EAC9C,MAAM,QAAkB,EAAE;AAE1B,MAAI,KAAK,WAAW,aAClB,OAAM,KAAK,GAAG,KAAK,OAAO,GAAG,MAAM,qCAAqC;WAC/D,KAAK,WAAW,YAAY;AACrC,SAAM,KAAK,GAAG,KAAK,OAAO,GAAG,EAAE,qCAAqC;AACpE,SAAM,KAAK,GAAG,KAAK,OAAO,GAAG,MAAM,0BAA0B;aACpD,KAAK,WAAW,WAAW;AACpC,SAAM,KAAK,GAAG,KAAK,OAAO,GAAG,EAAE,qCAAqC;AACpE,SAAM,KAAK,GAAG,KAAK,OAAO,GAAG,EAAE,0BAA0B;aAChD,KAAK,WAAW,QACzB,OAAM,KACJ,GAAG,KAAK,OAAO,GAAG,EAAE,kBAAkB,SAAS,KAAK,SAAS,iBAAiBC,IAAe,GAC9F;EAGH,MAAM,eAAe,MAAM,KAAK,KAAK;AACrC,MAAI,iBAAiB,KAAK,kBAAmB;AAC7C,OAAK,oBAAoB;AAEzB,MAAI,KAAK,gBAAgB,EACvB,SAAQ,OAAO,MAAM,QAAQ,KAAK,cAAc,GAAG;EAGrD,MAAM,oBAAoB,KAAK,IAAI,KAAK,eAAe,MAAM,OAAO;AACpE,OAAK,IAAI,IAAI,GAAG,IAAI,mBAAmB,KAAK;AAC1C,WAAQ,OAAO,MAAM,UAAU;AAC/B,OAAI,MAAM,OAAO,OACf,SAAQ,OAAO,MAAM,MAAM,GAAG;AAEhC,WAAQ,OAAO,MAAM,KAAK;;AAG5B,OAAK,gBAAgB,MAAM"}