libmaxminddb
Version:
Node.js bindings for libmaxminddb (to read MaxMind DB with the best performance - using memory-mapped file!)
37 lines (31 loc) • 931 B
JavaScript
const {logInstallError} = require('../install/log');
const {modulePath} = require('../install/vars-runtime');
const errors = require('./errors');
function load() {
try {
return require(modulePath);
} catch (err) {
logInstallError(err);
process.exit(1);
}
}
function init(lib) {
if (typeof lib._ImportFromNode === 'function') {
lib._ImportFromNode(errors);
delete lib._ImportFromNode;
promisify(lib.MmdbReader, 'open');
promisify(lib.MmdbReader.prototype, 'close');
promisify(lib.MmdbReader.prototype, 'lookup');
}
return lib;
}
function promisify(obj, key) {
const method = obj[key];
obj[key] = function (...args) {
return new Promise((resolve, reject) => {
args.push((err, res) => (!err ? resolve(res) : reject(err)));
method.apply(this, args);
});
};
}
module.exports = init(load());