{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-CQA62T6M.cjs","../src/cli/commands/ask/actions/file-processing.ts"],"names":["processFiles","options","fileContent","totalFiles","chalk","forceFileType","fileTypeKey","SupportedFileType"],"mappings":"AAAA;AACA,wDAAwC,wDAAyC,4ECD/D,IAILA,CAAAA,CAAe,MAC1BC,CAAAA,EACuD,CACvD,IAAIC,CAAAA,CAAc,EAAA,CACdC,CAAAA,CAAa,CAAA,CAEbF,CAAAA,CAAQ,OAAA,EACV,OAAA,CAAQ,GAAA,CAAIG,eAAAA,CAAM,GAAA,CAAI,+BAAwB,CAAC,CAAA,CAGjD,GAAI,CACF,IAAIC,CAAAA,CACJ,EAAA,CAAIJ,CAAAA,CAAQ,QAAA,CAAU,CACpB,IAAMK,CAAAA,CAAcL,CAAAA,CAAQ,QAAA,CAAS,WAAA,CAAY,CAAA,CAC7CK,EAAAA,GAAeC,mBAAAA,CACjBF,CAAAA,CACEE,mBAAAA,CAAkBD,CAA6C,CAAA,CAAA,CAEjE,OAAA,CAAQ,KAAA,CACNF,eAAAA,CAAM,GAAA,CAAI,CAAA,8BAAA,EAA4BH,CAAAA,CAAQ,QAAQ,CAAA,CAAA;AAiEe;AAMvC;AAuBxB;ADhH0T","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-CQA62T6M.cjs","sourcesContent":[null,"import chalk from 'chalk';\nimport {SupportedFileType} from '../../../../core/file-readers/interfaces/types.js';\nimport {FileReaderManager} from '../../../../core/file-readers/managers/file-reader.manager.js';\n\nexport const processFiles = async (\n  options: any,\n): Promise<{fileContent: string; totalFiles: number}> => {\n  let fileContent = '';\n  let totalFiles = 0;\n\n  if (options.verbose) {\n    console.log(chalk.dim('📄 Processing files...'));\n  }\n\n  try {\n    let forceFileType: SupportedFileType | undefined;\n    if (options.fileType) {\n      const fileTypeKey = options.fileType.toUpperCase();\n      if (fileTypeKey in SupportedFileType) {\n        forceFileType =\n          SupportedFileType[fileTypeKey as keyof typeof SupportedFileType];\n      } else {\n        console.error(\n          chalk.red(`❌ Unsupported file type: ${options.fileType}`),\n        );\n        console.log(\n          chalk.yellow(\n            'Supported types: pdf, docx, pptx, xlsx, odt, odp, ods, txt, js, jsx, ts, tsx, py, java, cpp, c, go, rs, rb, kt, swift, dart, scala, php, json, md, yml, yaml, xml, html, css, sql, sh, bash, env, ini, conf, toml, log, and more',\n          ),\n        );\n        process.exit(1);\n      }\n    }\n\n    const fileReaderManager = new FileReaderManager({\n      verbose: options.verbose,\n      forceFileType,\n    });\n\n    let result: any;\n\n    if (options.file) {\n      result = await fileReaderManager.readFile(options.file);\n      if (result.success && result.content) {\n        fileContent = result.content.text;\n        totalFiles = 1;\n      } else {\n        console.error(chalk.red(`❌ Failed to process file: ${result.error}`));\n        process.exit(1);\n      }\n    } else {\n      const maxConcurrency = Number.parseInt(options.maxConcurrency, 10) || 5;\n      const batchOptions = {\n        parallel: options.parallel,\n        maxConcurrency,\n        continueOnError: options.continueOnError,\n        fileType: options.fileType,\n        onProgress: options.verbose\n          ? (processed: number, total: number, currentFile: string) => {\n              console.log(\n                chalk.dim(\n                  `📝 [${processed}/${total}] Processing: ${currentFile}`,\n                ),\n              );\n            }\n          : undefined,\n      };\n\n      let summary: any;\n      if (options.files) {\n        summary = await fileReaderManager.processMultipleFiles(\n          options.files,\n          batchOptions,\n        );\n      } else if (options.batch) {\n        summary = await fileReaderManager.processGlobPatterns(\n          options.batch,\n          batchOptions,\n        );\n      }\n\n      if (summary) {\n        const contentParts: string[] = [];\n        let successCount = 0;\n\n        for (const fileResult of summary.results) {\n          if (fileResult.result.success && fileResult.result.content) {\n            contentParts.push(\n              `=== ${fileResult.filePath} ===\\n${fileResult.result.content.text}\\n`,\n            );\n            successCount++;\n          }\n        }\n\n        fileContent = contentParts.join('\\n');\n        totalFiles = summary.totalFiles;\n\n        if (options.verbose) {\n          console.log(\n            chalk.dim(\n              `✅ Successfully processed ${successCount}/${summary.totalFiles} files`,\n            ),\n          );\n          console.log(\n            chalk.dim(\n              `⏱️  Total time: ${(summary.totalProcessingTime / 1000).toFixed(2)}s`,\n            ),\n          );\n          console.log(\n            chalk.dim(\n              `📊 Total content length: ${fileContent.length} characters`,\n            ),\n          );\n\n          if (summary.failedFiles > 0) {\n            console.log(\n              chalk.yellow(\n                `⚠️  ${summary.failedFiles} files failed to process:`,\n              ),\n            );\n            for (const error of summary.errors) {\n              console.log(\n                chalk.yellow(`   • ${error.filePath}: ${error.error}`),\n              );\n            }\n          }\n        }\n\n        if (successCount === 0) {\n          console.error(chalk.red('❌ No files were processed successfully'));\n          process.exit(1);\n        }\n      }\n    }\n\n    if (options.verbose && totalFiles === 1) {\n      console.log(chalk.dim('✅ Successfully processed file'));\n      console.log(\n        chalk.dim(`📊 Content length: ${fileContent.length} characters`),\n      );\n    }\n\n    return {fileContent, totalFiles};\n  } catch (error) {\n    const errorMessage =\n      error instanceof Error ? error.message : 'Unknown error occurred';\n    console.error(chalk.red(`❌ Error processing file: ${errorMessage}`));\n    process.exit(1);\n  }\n};\n"]}