UNPKG

@softvisio/core

Version:
26 lines (18 loc) 631 B
import fs from "node:fs"; import CacheLru from "#lib/cache/lru"; import externalResources from "#lib/external-resources"; import MMDB from "#lib/mmdb"; const cache = new CacheLru( { "maxSize": 1000 } ); var mmdb; const resource = await externalResources .add( "softvisio-node/core/resources/geolite2-country" ) .on( "update", () => ( mmdb = null ) ) .check(); class GeoipCountry { // public get ( ipAddress ) { mmdb ??= new MMDB( fs.readFileSync( resource.getResourcePath( "GeoLite2-Country.mmdb" ) ), { cache } ); return mmdb.get( ipAddress ); } } export default new GeoipCountry();