{"version":3,"sources":["jsdelivr-header.js","/npm/geoip-country-only@1.1.8/lib/geoip.js"],"names":[],"mappings":"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","file":"/npm/geoip-country-only@1.1.8/lib/geoip.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/geoip-country-only@1.1.8/lib/geoip.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var fs = require('fs');\nvar net = require('net');\nvar path = require('path');\n\nfs.existsSync = fs.existsSync || path.existsSync;\n\nvar utils = require('./utils');\nvar fsWatcher = require('./fsWatcher');\nvar async = require('async');\n\nvar watcherName = 'dataWatcher';\n\n\nvar geodatadir;\n\nif (typeof global.geodatadir === 'undefined'){\n\tgeodatadir = path.join(__dirname, '/../data/');\n} else {\n\tgeodatadir = global.geodatadir;\n}\n\nvar dataFiles = {\n\tcountry: path.join(geodatadir, 'geoip-country.dat'),\n};\n\nvar privateRange4 = [\n\t\t[utils.aton4('10.0.0.0'), utils.aton4('10.255.255.255')],\n\t\t[utils.aton4('172.16.0.0'), utils.aton4('172.31.255.255')],\n\t\t[utils.aton4('192.168.0.0'), utils.aton4('192.168.255.255')]\n\t]\n\nvar cache4 = {\n\tfirstIP: null,\n\tlastIP: null,\n\tlastLine: 0,\n\tlocationBuffer: null,\n\tlocationRecordSize: 64,\n\tmainBuffer: null,\n\trecordSize: 12\n};\n\nvar RECORD_SIZE = 10;\n\nfunction lookup4(ip) {\n\tvar fline = 0;\n\tvar floor = cache4.lastIP;\n\tvar cline = cache4.lastLine;\n\tvar ceil = cache4.firstIP;\n\tvar line;\n\tvar locId;\n\n\tvar buffer = cache4.mainBuffer;\n\tvar locBuffer = cache4.locationBuffer;\n\tvar privateRange = privateRange4;\n\tvar recordSize = cache4.recordSize;\n\tvar locRecordSize = cache4.locationRecordSize;\n\n\tvar i;\n\n\tvar geodata = {\n\t\trange: '',\n\t\tcountry: '',\n\t\tregion: '',\n\t};\n\n\t// outside IPv4 range\n\tif (ip > cache4.lastIP || ip < cache4.firstIP) {\n\t\treturn null;\n\t}\n\n\t// private IP\n\tfor (i = 0; i < privateRange.length; i++) {\n\t\tif (ip >= privateRange[i][0] && ip <= privateRange[i][1]) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tdo {\n\t\tline = Math.round((cline - fline) / 2) + fline;\n\t\tfloor = buffer.readUInt32BE(line * recordSize);\n\t\tceil  = buffer.readUInt32BE((line * recordSize) + 4);\n\n\t\tif (floor <= ip && ceil >= ip) {\n\t\t\tgeodata.range = [floor, ceil];\n\n\t\t\tif (recordSize === RECORD_SIZE) {\n\t\t\t\tgeodata.country = buffer.toString('utf8', (line * recordSize) + 8, (line * recordSize) + 10);\n\t\t\t} else {\n\t\t\t\tlocId = buffer.readUInt32BE((line * recordSize) + 8) - 1;\n\n\t\t\t\tgeodata.country = locBuffer.toString('utf8', (locId * locRecordSize) + 0, (locId * locRecordSize) + 2).replace(/\\u0000.*/, '');\n\t\t\t\tgeodata.region = locBuffer.toString('utf8', (locId * locRecordSize) + 2, (locId * locRecordSize) + 4).replace(/\\u0000.*/, '');\n\t\t\t}\n\n\t\t\treturn geodata;\n\t\t} else if (fline === cline) {\n\t\t\treturn null;\n\t\t} else if (fline === (cline - 1)) {\n\t\t\tif (line === fline) {\n\t\t\t\tfline = cline;\n\t\t\t} else {\n\t\t\t\tcline = fline;\n\t\t\t}\n\t\t} else if (floor > ip) {\n\t\t\tcline = line;\n\t\t} else if (ceil < ip) {\n\t\t\tfline = line;\n\t\t}\n\t} while(1);\n}\n\n\nfunction get4mapped(ip) {\n    var ipv6 = ip.toUpperCase();\n    var v6prefixes = ['0:0:0:0:0:FFFF:', '::FFFF:'];\n    for (var i = 0; i < v6prefixes.length; i++) {\n        var v6prefix = v6prefixes[i];\n        if (ipv6.indexOf(v6prefix) == 0) {\n            return ipv6.substring(v6prefix.length);\n        }\n    }\n    return null;\n}\n\nfunction preload(callback) {\n\tvar datFile;\n\tvar datSize;\n\tvar asyncCache = {\n\t\tfirstIP: null,\n\t\tlastIP: null,\n\t\tlastLine: 0,\n\t\tlocationBuffer: null,\n\t\tlocationRecordSize: 64,\n\t\tmainBuffer: null,\n\t\trecordSize: 12\n\t};\n\n\t//when the preload function receives a callback, do the task asynchronously\n\tif (typeof arguments[0] === 'function') {\n\t\tasync.series([\n\t\t\tfunction (cb) {\n\t\t\t\t\t\tfs.open(dataFiles.country, 'r', function (err, file) {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcb(err);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdatFile = file;\n\t\t\t\t\t\t\t\tfs.fstat(datFile, function (err, stats) {\n\t\t\t\t\t\t\t\t\tdatSize = stats.size;\n\t\t\t\t\t\t\t\t\tasyncCache.recordSize = RECORD_SIZE;\n\n\t\t\t\t\t\t\t\t\tcb();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t},\n\t\t\tfunction () {\n\t\t\t\tasyncCache.mainBuffer = new Buffer(datSize);\n\n\t\t\t\tasync.series([\n\t\t\t\t\tfunction (cb2) {\n\t\t\t\t\t\tfs.read(datFile, asyncCache.mainBuffer, 0, datSize, 0, cb2);\n\t\t\t\t\t},\n\t\t\t\t\tfunction (cb2) {\n\t\t\t\t\t\tfs.close(datFile, cb2);\n\t\t\t\t\t}\n\t\t\t\t], function (err) {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\t//keep old cache\n\t\t\t\t\t} else {\n\t\t\t\t\t\tasyncCache.lastLine = (datSize / asyncCache.recordSize) - 1;\n\t\t\t\t\t\tasyncCache.lastIP = asyncCache.mainBuffer.readUInt32BE((asyncCache.lastLine * asyncCache.recordSize) + 4);\n\t\t\t\t\t\tcache4 = asyncCache;\n\t\t\t\t\t}\n\t\t\t\t\tcallback(err);\n\t\t\t\t});\n\t\t\t}\n\t\t]);\n\t} else {\n\n\t\tdatFile = fs.openSync(dataFiles.country, 'r');\n\t\tdatSize = fs.fstatSync(datFile).size;\n\t\tcache4.recordSize = RECORD_SIZE;\n\n\t\tcache4.mainBuffer = new Buffer(datSize);\n\t\tfs.readSync(datFile, cache4.mainBuffer, 0, datSize, 0);\n\n\t\tfs.closeSync(datFile);\n\n\t\tcache4.lastLine = (datSize / cache4.recordSize) - 1;\n\t\tcache4.lastIP = cache4.mainBuffer.readUInt32BE((cache4.lastLine * cache4.recordSize) + 4);\n\t\tcache4.firstIP = cache4.mainBuffer.readUInt32BE(0);\n\t}\n}\n\nmodule.exports = {\n\tcmp: utils.cmp,\n\n\tlookup: function(ip) {\n\t\tif (!ip) {\n\t\t\treturn null;\n\t\t} else if (typeof ip === 'number') {\n\t\t\treturn lookup4(ip);\n\t\t} else if (net.isIP(ip) === 4) {\n\t\t\treturn lookup4(utils.aton4(ip));\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tpretty: function(n) {\n\t\tif (typeof n === 'string') {\n\t\t\treturn n;\n\t\t} else if (typeof n === 'number') {\n\t\t\treturn utils.ntoa4(n);\n\t\t}\n\n\t\treturn n;\n\t},\n\n\t// Start watching for data updates. The watcher waits one minute for file transfer to\n\t// completete before triggering the callback.\n\tstartWatchingDataUpdate: function (callback) {\n\t\tfsWatcher.makeFsWatchFilter(watcherName, geodatadir, 60*1000, function () {\n\t\t\t//Reload data\n      preload(callback);\n\t\t});\n\t},\n\n\t// Stop watching for data updates.\n\tstopWatchingDataUpdate: function () {\n\t\tfsWatcher.stopWatching(watcherName);\n\t}\n};\n\npreload();\n\n//lookup4 = gen_lookup('geoip-country.dat', 4);\n"]}