const { fetchRipeStatCached } = require("./services/ripe-stat"); // Batch resolve AS names via RIPE Stat AS overview API async function resolveASNames(providers) { const batchSize = 10; for (let i = 0; i < providers.length; i += batchSize) { const batch = providers.slice(i, i + batchSize); const results = await Promise.all( batch.map(p => fetchRipeStatCached("https://stat.ripe.net/data/as-overview/data.json?resource=AS" + p.asn) .then(r => ({ asn: p.asn, name: r?.data?.holder || "" })) .catch(() => ({ asn: p.asn, name: "" })) ) ); results.forEach(r => { const provider = providers.find(p => p.asn === r.asn); if (provider && r.name) provider.name = r.name; }); } return providers; } module.exports = { resolveASNames };