import { logVerbose, shouldLogVerbose } from "../globals.js"; export async function runWithConcurrency( tasks: Array<() => Promise>, limit: number, ): Promise { if (tasks.length === 0) return []; const resolvedLimit = Math.max(1, Math.min(limit, tasks.length)); const results: T[] = Array.from({ length: tasks.length }); let next = 0; const workers = Array.from({ length: resolvedLimit }, async () => { while (true) { const index = next; next += 1; if (index >= tasks.length) return; try { results[index] = await tasks[index](); } catch (err) { if (shouldLogVerbose()) { logVerbose(`Media understanding task failed: ${String(err)}`); } } } }); await Promise.allSettled(workers); return results; }