function enabledAccountsFor(hosters, hoster, hasCreds) { const list = hosters && hosters[hoster]; if (!Array.isArray(list)) return []; return list.filter(a => a && a.enabled !== false && hasCreds(hoster, a)); } function createAccountPicker({ hosters, hosterSettings, hasCreds }) { const rotIdx = Object.create(null); return function pick(hoster) { const enabled = enabledAccountsFor(hosters, hoster, hasCreds); if (enabled.length === 0) return null; const hs = (hosterSettings && hosterSettings[hoster]) || {}; if (hs.rotateAccounts === true && enabled.length > 1) { const i = (rotIdx[hoster] || 0) % enabled.length; rotIdx[hoster] = (rotIdx[hoster] || 0) + 1; return enabled[i]; } return enabled[0]; }; } module.exports = { createAccountPicker, enabledAccountsFor };