UNPKG

rawi

Version:

Rawi (راوي) is the developer-friendly AI CLI that brings the power of 12 major AI providers directly to your terminal. With seamless shell integration, persistent conversations, and 200+ specialized prompt templates, Rawi transforms your command line into

1 lines 13.6 kB
{"version":3,"sources":["/home/mkabumattar/withrawi/rawi/dist/chunk-AR2KIMCH.cjs","../src/core/file-readers/utils/batch-processor.ts"],"names":["BatchFileProcessor","fileReaderManager","patterns","options","allFiles","pattern","files","glob","error","filePaths","supportedFiles","filePath","fs","_fileType","startTime","performance","result","processingTime","results","i","maxConcurrency","processedCount","chunkPromises","errorResult","chunkResults","successfulFiles","r","failedFiles","totalProcessingTime","sum","averageProcessingTime","errors","cwd","nocase","ignore","absolute","dot","batchOptions","globOptions","expandedFiles"],"mappings":"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","file":"/home/mkabumattar/withrawi/rawi/dist/chunk-AR2KIMCH.cjs","sourcesContent":[null,"import {promises as fs} from 'node:fs';\nimport {performance} from 'node:perf_hooks';\nimport {glob} from 'glob';\nimport type {\n BatchFileResult,\n BatchProcessingOptions,\n BatchProcessingSummary,\n GlobOptions,\n} from '../interfaces/types.js';\nimport type {FileReaderManager} from '../managers/file-reader.manager.js';\n\nexport class BatchFileProcessor {\n private fileReaderManager: FileReaderManager;\n\n constructor(fileReaderManager: FileReaderManager) {\n this.fileReaderManager = fileReaderManager;\n }\n\n async expandGlobPatterns(\n patterns: string[],\n options: GlobOptions = {},\n ): Promise<string[]> {\n const allFiles: string[] = [];\n\n for (const pattern of patterns) {\n try {\n const files = await glob(pattern, {\n cwd: options.cwd || process.cwd(),\n nocase: options.nocase || false,\n ignore: options.ignore || [],\n absolute: true,\n dot: false,\n });\n\n allFiles.push(...files);\n } catch (error) {\n console.warn(`Failed to expand glob pattern \"${pattern}\":`, error);\n }\n }\n\n return [...new Set(allFiles)].sort();\n }\n\n async filterSupportedFiles(filePaths: string[]): Promise<string[]> {\n const supportedFiles: string[] = [];\n\n for (const filePath of filePaths) {\n try {\n await fs.access(filePath);\n if (await this.fileReaderManager.canReadFile(filePath)) {\n supportedFiles.push(filePath);\n }\n } catch {}\n }\n\n return supportedFiles;\n }\n\n private async processSingleFile(\n filePath: string,\n _fileType?: string, // TODO: Add support for file type override\n ): Promise<BatchFileResult> {\n const startTime = performance.now();\n\n try {\n const result = await this.fileReaderManager.readFile(filePath);\n\n const processingTime = performance.now() - startTime;\n\n return {\n filePath,\n result,\n processingTime,\n };\n } catch (error) {\n const processingTime = performance.now() - startTime;\n\n return {\n filePath,\n result: {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n },\n processingTime,\n };\n }\n }\n\n private async processFilesSequentially(\n filePaths: string[],\n options: BatchProcessingOptions,\n ): Promise<BatchFileResult[]> {\n const results: BatchFileResult[] = [];\n\n for (let i = 0; i < filePaths.length; i++) {\n const filePath = filePaths[i];\n\n try {\n const result = await this.processSingleFile(filePath, options.fileType);\n results.push(result);\n\n if (options.onProgress) {\n options.onProgress(i + 1, filePaths.length, filePath, result.result);\n }\n\n if (!result.result.success && !options.continueOnError) {\n break;\n }\n } catch (error) {\n if (!options.continueOnError) {\n throw error;\n }\n\n results.push({\n filePath,\n result: {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n },\n processingTime: 0,\n });\n\n if (options.onProgress) {\n options.onProgress(i + 1, filePaths.length, filePath);\n }\n }\n }\n\n return results;\n }\n\n private async processFilesInParallel(\n filePaths: string[],\n options: BatchProcessingOptions,\n ): Promise<BatchFileResult[]> {\n const maxConcurrency =\n options.maxConcurrency || Math.min(filePaths.length, 5);\n const results: BatchFileResult[] = [];\n let processedCount = 0;\n\n for (let i = 0; i < filePaths.length; i += maxConcurrency) {\n const chunk = filePaths.slice(i, i + maxConcurrency);\n\n const chunkPromises = chunk.map(async (filePath) => {\n try {\n const result = await this.processSingleFile(\n filePath,\n options.fileType,\n );\n\n processedCount++;\n if (options.onProgress) {\n options.onProgress(\n processedCount,\n filePaths.length,\n filePath,\n result.result,\n );\n }\n\n return result;\n } catch (error) {\n processedCount++;\n const errorResult: BatchFileResult = {\n filePath,\n result: {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n },\n processingTime: 0,\n };\n\n if (options.onProgress) {\n options.onProgress(\n processedCount,\n filePaths.length,\n filePath,\n errorResult.result,\n );\n }\n\n if (!options.continueOnError) {\n throw error;\n }\n\n return errorResult;\n }\n });\n\n const chunkResults = await Promise.all(chunkPromises);\n results.push(...chunkResults);\n\n if (!options.continueOnError) {\n const hasFailure = chunkResults.some(\n (result) => !result.result.success,\n );\n if (hasFailure) {\n break;\n }\n }\n }\n\n return results;\n }\n\n private generateSummary(results: BatchFileResult[]): BatchProcessingSummary {\n const successfulFiles = results.filter((r) => r.result.success).length;\n const failedFiles = results.length - successfulFiles;\n const totalProcessingTime = results.reduce(\n (sum, r) => sum + r.processingTime,\n 0,\n );\n const averageProcessingTime =\n results.length > 0 ? totalProcessingTime / results.length : 0;\n\n const errors = results\n .filter((r) => !r.result.success)\n .map((r) => ({\n filePath: r.filePath,\n error: r.result.error || 'Unknown error',\n }));\n\n return {\n totalFiles: results.length,\n successfulFiles,\n failedFiles,\n totalProcessingTime,\n averageProcessingTime,\n results,\n errors,\n };\n }\n\n async processFiles(\n filePaths: string[],\n options: BatchProcessingOptions = {},\n ): Promise<BatchProcessingSummary> {\n if (filePaths.length === 0) {\n return this.generateSummary([]);\n }\n\n const results = options.parallel\n ? await this.processFilesInParallel(filePaths, options)\n : await this.processFilesSequentially(filePaths, options);\n\n return this.generateSummary(results);\n }\n\n async processGlobPatterns(\n patterns: string[],\n options: BatchProcessingOptions & GlobOptions = {},\n ): Promise<BatchProcessingSummary> {\n const {cwd, nocase, ignore, absolute, dot, ...batchOptions} = options;\n const globOptions = {cwd, nocase, ignore, absolute, dot};\n\n const expandedFiles = await this.expandGlobPatterns(patterns, globOptions);\n\n const supportedFiles = await this.filterSupportedFiles(expandedFiles);\n\n return this.processFiles(supportedFiles, batchOptions);\n }\n}\n"]}