export class ChunkProcessor { private chunkSize: number; constructor(chunkSize: number = 1000) { this.chunkSize = chunkSize; } async processArray(array: T[], callback: (chunk: T[]) => void): Promise { const totalChunks = Math.ceil(array.length / this.chunkSize); for (let i = 0; i < totalChunks; i++) { const chunk = array.slice(i * this.chunkSize, (i + 1) * this.chunkSize); await this.processChunk(chunk, callback); } } private async processChunk(chunk: T[], callback: (chunk: T[]) => void): Promise { return new Promise((resolve) => { setTimeout(() => { callback(chunk); resolve(); }, 0); }); } }