{"analyzedAt":"2022-06-26T23:52:39.165Z","collected":{"metadata":{"name":"thorin-geoip-ultralight","scope":"unscoped","version":"1.0.0","description":"Super lightweight GeoIP implementation with country data, maintained by Thorin.js","keywords":["geo","geoip","ip","ipv4","ipv6","geolookup","maxmind","country"],"date":"2017-11-22T15:26:32.073Z","author":{"name":"Daniel St. Jules","email":"danielst.jules@gmail.com"},"publisher":{"username":"snupa","email":"bunta.adrian@gmail.com"},"maintainers":[{"username":"snupa","email":"bunta.adrian@gmail.com"}],"contributors":[{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info/"},{"name":"Daniel St. Jules","email":"danielst.jules@gmail.com"}],"repository":{"type":"git","url":"git://github.com/danielstjules/geoip-ultralight.git"},"links":{"npm":"https://www.npmjs.com/package/thorin-geoip-ultralight","homepage":"https://github.com/snupa/geoip-ultralight","repository":"https://github.com/danielstjules/geoip-ultralight","bugs":"https://github.com/danielstjules/geoip-ultralight/issues"},"license":"MIT","dependencies":{"async":"^2.6","colors":"^1.1.2","iconv-lite":"^0.4.13","lazy":"~1.0.11","rimraf":"^2.6.2","unzip":"^0.1.11"},"devDependencies":{"mocha":"*","expect.js":"*"},"releases":[{"from":"2022-05-27T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":0},{"from":"2022-03-28T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":1},{"from":"2021-12-28T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":1},{"from":"2021-06-26T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":1},{"from":"2020-06-26T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":1}],"hasTestScript":true,"hasSelectiveFiles":true,"readme":"# geoip-ultralight\n\nAn even lighter alternative to geoip-lite and libGeoIP wrappers. It provides\ncountry data for IP addresses based on the GeoLite data from MaxMind. It does\nnot provide city, state or region data. Forked from geoip-lite.\n\n[![Build Status](https://travis-ci.org/danielstjules/geoip-ultralight.svg?branch=master)](https://travis-ci.org/danielstjules/geoip-ultralight)\n\n## Why\n\nUnlike other geoip libraries for node, geoip-lite and geoip-ultralight don't\nrequire compiling `libGeoIP`; they're JavaScript implementations. While neither\noffer the full functionality of `geoip`, they're significantly faster.\n\n`geoip-lite` is fairly light already, boasting 6 microsecond lookups for IPv4\naddresses, and 30 microsecond lookups for IPv6 on a Macbook Pro. However, it\nships over 60MB of data for handling city/region names, and thus introduces\nsignificant memory overhead. If all you want is country data, and not\ncity/regions, then that's a lot of RAM for unused functionality.\n\nInstead, `geoip-ultralight` includes under 2MB of data, and has negligible\nmemory consumption. If all you need is to identify countries, this will work\nperfectly with your Digital Ocean or AWS micro instances.\n\n## Installation\n\nIt can be installed via `npm` using:\n\n``` bash\nnpm install --save geoip-ultralight\n```\n\n## Usage\n\n``` javascript\nvar geoip = require('geoip-ultralight');\n\n// Unlike geoip-lite's lookup() call, geoip-ultralight exposes\n// a lookupCountry() function to avoid confusion\nvar ip = \"207.97.227.239\";\ngeoip.lookupCountry(ip); // => \"US\"\n```\n\n## API\n\ngeoip-ultralight is completely synchronous. There are no callbacks involved.\nAll blocking file IO is done at startup time, so runtime calls are executed\nquickly in memory. Startup may take up to 200ms while reading and indexing\nfiles into memory.\n\n### lookupCountry\n\nThe function accepts IP addresses in dotted quad notation, IPv6 colon notation,\nas well as 32bit unsigned integers (treated as IPv4). Note that any square\nbrackets should be removed from IPv6 addresses beforehand.\n\n``` javascript\nvar country = geoip.lookupCountry(ip);\n```\nIf the IP address was found, `lookupCountry` returns a\n[2 letter ISO-3166-1](http://www.maxmind.com/app/iso3166)\ncountry code. Otherwise it returns null.\n\n### pretty\n\nGiven a 32bit unsigned integer, `pretty` will return a human readable string\nequivalent.\n\n``` javascript\ngeoip.pretty(ip);\n```\n\nThe function returns a string if the format was recognized, otherwise it returns\nthe original input.\n\n### startWatchingDataUpdate\n\nWhen invoked, the server will watch the data directory for changes and reload\nthe in-memory geo data as necessary.\n\n```javascript\ngeoip.startWatchingDataUpdate();\n```\n\nThis can be used along with `npm run-script updatedb` to periodically update\ngeo data on a running server.\n\n### stopWatchingDataUpdate\n\nStops the server from watching the data dir for updates.\n\n```javascript\ngeoip.stopWatchingDataUpdate();\n```\n\n## Built-in Updater\n\nThe package contains an update script that can pull geo data from MaxMind and\nhandle the necessary conversions into a compatible format.\n\n```shell\nnpm run-script updatedb\n```"},"npm":{"downloads":[{"from":"2022-06-25T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":3},{"from":"2022-06-19T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":18},{"from":"2022-05-27T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":58},{"from":"2022-03-28T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":176},{"from":"2021-12-28T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":351},{"from":"2021-06-26T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":780}],"starsCount":1},"github":{"forkOf":"geoip-lite/node-geoip","starsCount":25,"forksCount":7,"subscribersCount":4,"issues":{"count":11,"openCount":3,"distribution":{"3600":3,"10800":0,"32400":1,"97200":0,"291600":0,"874800":0,"2624400":1,"7873200":0,"23619600":2,"70858800":1,"212576400":3},"isDisabled":false},"contributors":[{"username":"bluesmoon","commitsCount":1},{"username":"mfinelli","commitsCount":1},{"username":"danielstjules","commitsCount":26}],"commits":[{"from":"2022-06-19T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":0},{"from":"2022-05-27T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":0},{"from":"2022-03-28T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":0},{"from":"2021-12-28T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":0},{"from":"2021-06-26T00:00:00.000Z","to":"2022-06-26T00:00:00.000Z","count":0}]},"source":{"files":{"readmeSize":3135,"testsSize":1997},"badges":[{"urls":{"original":"https://travis-ci.org/danielstjules/geoip-ultralight.svg?branch=master","service":"https://api.travis-ci.org/danielstjules/geoip-ultralight.svg?branch=master","shields":"https://img.shields.io/travis/danielstjules/geoip-ultralight/master.svg","content":"https://img.shields.io/travis/danielstjules/geoip-ultralight/master.json"},"info":{"service":"travis","type":"build","modifiers":{"branch":"master"}}}],"outdatedDependencies":{"rimraf":{"required":"^2.6.2","stable":"3.0.2","latest":"3.0.2"},"iconv-lite":{"required":"^0.4.13","stable":"0.6.3","latest":"0.6.3"},"async":{"required":"^2.6","stable":"3.2.4","latest":"3.2.4"}}}},"evaluation":{"quality":{"carefulness":0.7899999999999999,"tests":0.6,"health":0.5,"branding":0.15},"popularity":{"communityInterest":40,"downloadsCount":58.666666666666664,"downloadsAcceleration":-0.09765981735159823,"dependentsCount":0},"maintenance":{"releasesFrequency":0.9,"commitsFrequency":0.9,"openIssues":0.9,"issuesDistribution":0.9}},"score":{"final":0.6271008782843813,"detail":{"quality":0.8463901095809027,"popularity":0.06635872435693295,"maintenance":0.9998808339576686}}}