function createPlanTodayReadiness({ identity, inspect, concurrency = 3 }) { const workerCount = Math.max(1, Math.floor(Number(concurrency) || 1)); let generation = 0; async function run(items) { const runGeneration = ++generation; const candidates = Array.from(items || []); const results = new Array(candidates.length); let next = 0; async function worker() { while (next < candidates.length) { const index = next; next += 1; const item = candidates[index]; let result; try { result = await inspect(item); } catch (_error) { result = { status:'unverified' }; } results[index] = [identity(item), result]; } } await Promise.all(Array.from( { length:Math.min(workerCount, candidates.length) }, () => worker(), )); if (runGeneration !== generation) return null; return Object.fromEntries(results); } function cancel() { generation += 1; } return { run, cancel }; } if (typeof module !== 'undefined' && module.exports) module.exports = createPlanTodayReadiness;