export const SERVER_RESULT_WINDOW = 60; const searchable = (server) => [ server.label, server.host, server.country, server.city, server.provider, server.protocol, ].filter(Boolean).join(' ').toLocaleLowerCase('ru'); export function filterServers(servers, query) { const needle = String(query || '').trim().toLocaleLowerCase('ru'); return needle ? servers.filter((server) => searchable(server).includes(needle)) : servers; } export function serverGroup(server) { return server.country || server.provider || 'Другие'; } export function groupServers(servers) { return [...servers.reduce((groups, server) => { const name = serverGroup(server); groups.set(name, [...(groups.get(name) || []), server]); return groups; }, new Map())]; } export function autoServer(servers) { return [...servers].sort((left, right) => left.id.localeCompare(right.id))[0] || null; }