asn-isp
Version:
A module providing ASN data by country with ISP names and ASNs
42 lines (41 loc) • 1.39 kB
JavaScript
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
};