UNPKG

asn-isp

Version:

A module providing ASN data by country with ISP names and ASNs

42 lines (41 loc) 1.39 kB
import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const isBuilt = __dirname.includes('dist'); const jsonPath = isBuilt ? path.join(__dirname, 'data/asn_by_countries.json') : path.join(__dirname, '../src/data/asn_by_countries.json'); const rawData = JSON.parse(fs.readFileSync(jsonPath, 'utf-8')); const asnData = rawData; export function getISPsByCountry(country) { return asnData.filter((data) => data.country === country) || []; } export function getISPsByName(name) { return asnData.filter((data) => data.name.toLowerCase().includes(name.toLowerCase())) || []; } export function getISPsByASN(asn) { return asnData.find((data) => data.asn === asn) || null; } export function getShopifyOptions(name) { const data = asnData.filter((data) => data.name.toLowerCase().includes(name.toLowerCase())) || []; const grouped = {}; data.forEach(({ name, asn, country }) => { if (!grouped[country]) { grouped[country] = { title: country, options: [] }; } grouped[country].options.push({ label: name, value: asn, }); }); return Object.values(grouped); } export default { getShopifyOptions, getISPsByCountry, getISPsByName, getISPsByASN, asnData };