{"_id":"ip-geolocation-api-javascript-sdk","_rev":"16-68c7da032da560458133046ffaaf21cc","name":"ip-geolocation-api-javascript-sdk","dist-tags":{"latest":"3.0.1"},"versions":{"1.0.0":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.0","author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.0","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"e370ed08c32820eaf985284faf7edb11e8441ae2","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.0.tgz","fileCount":4,"integrity":"sha512-PpS0fJJQzXkkJxi+YaWl0BLgHNSTbzHhgQacWR31RdmxuA7eOI2ZMPfw8vclqxvKtOt21iEC+sfwBpbG973JjQ==","signatures":[{"sig":"MEQCIBb8lF3VSPrWSclVRnA2bKbWa9NTlmHWIukXYnjcdOzvAiArm7XNSyJp5bqhbyTDBk28Ov2LdRhs1rdYciYiL57eJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcY1HCRA9TVsSAnZWagAAWPYP/AnlD4WlDXqJHIVzzCBN\nARFx+FLanoJCrd5yVcNou00sqNUpUVty8o1XNs/zSd5kiWHfwhisGdtgKmNT\ntnKKetIDD6aqiLNkrg+2PZX2pAROXyuJQ5jcdtvszMfwUEXjWy9R3OOEsASZ\njDotqFUv0mg2ik69TP9tj1VP8Qa+F5qHYU61UWFRPzqF/2RSV0ifJTPHQR7P\nujBTynW+KNvQubjsTIKX1VObsVFKFCjYL7VZ6NgIXA44ncYHU9Uw4EspXX7U\n8sitm3QTAlh+aHYH5sR7usWLRVQDOjKOooOyWWH6Ue+bRX+phX1LTvazwfE2\nTEkT8ncSmDbVsmjAfbSKTGeiyHzEQL5BELP9h0qbJKfAtTBze0XOFkiPqwyg\nVQAlUr8g+nwrVjiwW5ak29sGdJnqcaAprSrYfXr4zQVNyRlBfsqFU5au21B2\nDy8QT8QQM2bZpvVuqJF0Pw75GXppeqqwKh9VIEN5JLz5M4/RnNhWttXlTQbB\nmPetzs83CU541iCBQjsvc1XKegDNQsvmGDnOh2DIepDqx2R/Q9olf0rXnaQs\nfNmheepaVQ0g+EX9HepGHWx+++5876sUVJ7NTiB9Ptln8uSMOFylYq62rWqA\n6mJ5QAfalJIPPGfEhFFUKrccxlpRi1DmT3V7jV08pJgI6H9FcR8V41odH2aK\nHI2Z\r\n=GFwO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_npmVersion":"6.3.0","description":"","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.0_1534168391145_0.35231014098278157","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.1","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.1","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"516b84d0ebf3417d40490852cc5e97faa59ad6d9","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.1.tgz","fileCount":4,"integrity":"sha512-/ROOUtz1m0SWe7Rtno/JRTKM+lofjWvTbFJHIGzegjdEvpbB89fOz/rQSdwYJhWvQEZreeNymjlVrrqJy+4a1w==","signatures":[{"sig":"MEYCIQDUpuHW1yHmKUG+pNlBzNTtyAKRhi9lckB9Ur/QH3xNNAIhAO2sboaSCJwAnGQNBVTrSdlT7bb+OLnF8sSX54PvKkXC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdC4rCRA9TVsSAnZWagAAgPMP/RNDctXZWeVet6mBz7EA\nVM8pJasmiojXw1eWuVSpLGQ9mH1xkcGBN7hyHxxgAiyTMeDz6LAoa16lW5tR\nURxT2nwo4Cv3suUxG02dG1J0TaxoRxpfKGfH+FF7druxMTvGpdF9/PDQk7Qk\nokZ9UFaUYkvUaGDvUYHNErnVBj/UpJgbM+djbkrFcZgz1mvRC1dUlDcsphlb\nwUOWT8IrvqVwbaxJfAKwAvdjzUUwsxnr8m3yGVLWDc5Gwvfw2XM+mUTFIzJv\nU8gLFrR14y6Nf03Yae061lcgr2kszgnQCCtBQuq3L/HyhF1fXcrqxhlOnW+o\n6vjU3I0D/jCi7nblyYsQPypgGH7diXFFS6rS8v3gJaHjyXg6zXPrp2f6HmnO\nGbcMS3d1wVeJD1ogIrnPQ5M4CTe8ILe8k9A/opHeEkU/If1Rl/29xgS2Z8Uw\nU7A+L81tkZWOvZClKz73I8HSjIowsQkBBA+hR5s9YW+ytklPvnYT2aM9FgTH\nNUqx3E+mxba5aLn0Cgfv8yMkp+7lAKEZfSFyCrkiI+Wq45QYi9FGIFfuN3EX\nE+F4dyNtQijqJWLEH2l/Abq5Vv3Joq2FEVwRhDh/W/hzuJHsY2flgbJyyDgo\nSSd/I030hlx2YtI0ywdq2lv+Se4iSPIubUuYBkKky9iqqy4r6ISoDbLc5tg/\nMFpR\r\n=u+Li\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_npmVersion":"6.3.0","description":"","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.1_1534340651425_0.5413132274520902","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.2","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.2","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"aa4648d8d52445e1ed12720951779bb51ab9fb28","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.2.tgz","fileCount":5,"integrity":"sha512-uIYkkc7pkOkjTEEy4r9Kk1rW1a+4U933+JJjX6MeuWsvueWEYAxQhPX3lnN6Vhrfg16JnJBvJD/DaH9lL8WNcA==","signatures":[{"sig":"MEYCIQCTDMgtSR+SwYobxJId/nt6UXpTmcGun7EibHT+LJINOgIhAKhXwf/Et9r/wQpW6+0jNwqsPjZ1trnZ6WZY9kZNufDi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdDubCRA9TVsSAnZWagAAYeMP/j2ubkoDhJCaOqM4NuXn\nAQB7Q/5TQksGtyUqHtMNgXSqPRMz1fRzVLvF9Ft2D+mYbqLA5ImLj7cvV8tk\nile45CPUxSBciSiZdUgUCGe9+WEAQ4Qn7KeLklgM8iOp+q2LaEm7kFBJhDYs\nyDhTMNyvhe8sRHwspjQuk2qr+HJygKWGvWX2nMORjkS9xlFreFBEXp7UvoCw\n39RIOPmPWbdz4ZZAMfhgHj4qeIBgZDG7dneBiZpIiC8a8taApn8kE7cgGzN6\ns4oLUhDKLMoci8O7k5aKEW4dnrYZ193lF4YFETCKe8uVvxS5k55eVMrXbf+/\nP9cu8XMuG2sArApXAxzLfO9OEj6NJTXYnRfvk78K9hM2P9xBdet8NhiGyA/s\nIK+aGBCix3a3R4w1hjwQeDBJdWgLkHnVutrtmCDdF/lfCIuPhNS+t3Z+dPr1\nWnmqr0uC79GDsqIIG590ExQ87jTLA8JnXqq4UUBjvmwl7pljSt8NfX5U0a+j\ngIsXQp12ANrCle9GdN2HyXaePwzWfy8KZLCEQa2fbYS5jGLt20dqkIGDL/F7\nB4NtJTiwsMk6MQMxRtDIe3XEyZqk0h8xnS9aFS+NEnGE42+HAjIYb/JnKOAE\nkCFTnePgwk3iYBZytdlTH9Err7hZkM7dlWfBiVqTFQ3vAFHm0Hogd9hlShXE\n660f\r\n=k+ci\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_npmVersion":"6.3.0","description":"## Installation ```cli     npm i ip-geolocation-api-javascript-sdk ```","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.2_1534344091756_0.1981989411408418","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.3","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.3","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"cfdd4c808bef4a42d714bc77b981e121d28e1627","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.3.tgz","fileCount":5,"integrity":"sha512-NgAKkoq1xRbOWuwOQYHrMNyWOl/m6SvfE/CqSF+BE7PBJurxRTY+9D1YAFz9qSgLyf9nNUoCjNbSAstcMcrzGw==","signatures":[{"sig":"MEUCIE2IGD8GsyzyAUfRjtRt2yKbeAR808uUgGOT2Jua6/VwAiEAhoj+alFy0ZH7NJbU9Trx7IfnO/7u4YlUFe2UKIPbIGg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbd+YVCRA9TVsSAnZWagAAmdsP/1E5fTPnE6NvOGTnVKrl\n2CF0W2c9WmLmk5XD+46fvY9jjwQgYisfCqzhtX+lMkDSAQ0bV6fpmxOyPWlI\nbBj3Jz9qsQRaeVCjg1FguVWsScaM6uOEiMamYVQyVD6kB1mlVYb7aWhdHwvL\nzeoOTskqTCGASFvWDhtNzG3LTmUo72wwQcAdl6H50E2STCLP7s1UjtnQD9BX\nQWvIFMQZJ4kwtqEOuJnHmCTgxjIrrCgTuj0S5KtFvOxMiLSJm/DiAAb2AXKM\nycHPMUIMaJI2eBfnu6B1I/NBaJrOzrOSlv+pdT2tP6zoMHf0VJNO+bmxOrJY\nIG6Rb+aJFZO5lqOCvxxUmO48rQYzG/F5K89RhqpkEpwdgkegp/h7vtpGJeQ0\nxPgYR6RD7p/w5EsETFlsoZ3th0wGbZT8y4ckTXWIT5Y7axVmye+IQMqplq82\noTAn0TUayncqSSsCKS+/WvNRFCIMWpNBsdPe+a0ey1EUyqaax7N7kg5FOyfj\nzMkql88gvRJ0pvl+5oV86FUS8d2X2Ws+UFdPWm6lgZVNot3b1/N3JbO9VIZM\nJpbAq+H7as5pMBTEYN+pDJmKG7SFTW+AdJWOQ5quxURUCJ6Z42ktrWCAzqPf\n4chpRzL8FhwOKrj6dpVhUA/yUuFsG2Sc+iNWf4Dhf8yhqsbuDPL7VwVDUX8+\n2jJF\r\n=8pQG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_npmVersion":"6.3.0","description":"## Installation ```cli     npm i ip-geolocation-api-javascript-sdk ```","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.3_1534584340644_0.8264939733696175","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.4","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.4","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"0273f7c043749ce91a586388edf35319d2c52818","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.4.tgz","fileCount":5,"integrity":"sha512-hzaB5USO7B3XltJTckXK9FtC+OpSiGx4h8/nV3eskFhmmTBC1YVTd9WnlJTUQm3sb9e+V3pzu8coNbXC3ZrRPg==","signatures":[{"sig":"MEYCIQDcmrIs7SwuQuita3hfp94AqMPJqZp319ApoLZzDsopdwIhANnFWnDdhiXawRyVVJyQbAkCVG+Pnmv51l72x5MyZYm8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzZYGCRA9TVsSAnZWagAA+2UP/0wngwBQ2C6+76X3sBp6\n6xRreniGHnZ2dHAh6tj8zWYf8PHIGrP3TnFWZuuybSek6EWtrWUFjnauvPft\nfxrdcHm6Q2HARtmt6JL3v9NW9nNfgsSINCMGlm5nRq4d7IwqLDYZ90xcLkg7\n6cZuu95f3pCsdxO/Ka628znXP7RF1gm4AQb6hWj40GY5cZMxAYjudGA/Eexg\nYEtfGHW85PnGww1qbplw2ZNh3ZmFM9AAKtgvwSq26YMxIxXXqZ37HhXL6JRb\nlpyAu7ApOf8cJptPyZdOGu213PpKJ0xbjhdqkgkD+5kJljejG6KOxNRYdN/S\n6yDfP6frvcQ8nPDJq9Hp3oYoLZ7V5GtuwjmkB86Q0HYwbPP2kqcqqWvLU3AB\nC/YwhMtdaYc3IB+0OUwn3dV5nvnngwVh5vCyszNXhY0Tvihu/WFbGlDTrk2X\n+ZdwyeKhUXYj//Oh5FWf0+P6pn3EnCUI8AxCX9Q8IeXs4dW3jFURGhugaanJ\n+7yJxaZyJFssnf4YQ0ZDpJG20Zg+uLEZNSi0BcwP77Nk9kOa6/FDpFIq8C0j\nzdZExO3wCaGC04GD2nl8G/jln6pqr7Y8phRDUr39ipn/2I5bMcyE5FpT2P3H\nPG37MkSpVex8mIUwXcKBHKX754wZEjk8JgGqy6zX8Qyv9FU/+sL25MYXk7x6\n9VsZ\r\n=ATpS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","_from":"ip-geolocation-api-javascript-sdk","_spec":"ip-geolocation-api-javascript-sdk","_where":"/home/developer/jvs/npm","_shasum":"cfdd4c808bef4a42d714bc77b981e121d28e1627","gitHead":"ec08a455eae2ff53ac9315c61aa97036e3e31b38","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_inBundle":false,"_location":"/ip-geolocation-api-javascript-sdk","_resolved":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.4.tgz","_integrity":"sha512-NgAKkoq1xRbOWuwOQYHrMNyWOl/m6SvfE/CqSF+BE7PBJurxRTY+9D1YAFz9qSgLyf9nNUoCjNbSAstcMcrzGw==","_requested":{"raw":"ip-geolocation-api-javascript-sdk","name":"ip-geolocation-api-javascript-sdk","type":"tag","rawSpec":"","registry":true,"saveSpec":null,"fetchSpec":"latest","escapedName":"ip-geolocation-api-javascript-sdk"},"deprecated":false,"_npmVersion":"6.3.0","_requiredBy":["#USER","/"],"description":"## Installation ```cli     npm i ip-geolocation-api-javascript-sdk ```","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_phantomChildren":{},"bundleDependencies":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.4_1540199940874_0.454947330700862","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.5","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.5","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"0cefa0796eddabd54a4af6057b16d425035eae64","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.5.tgz","fileCount":5,"integrity":"sha512-fTZqaX7jqOPwEr73qHf2kpI6j8/OWe8f2s7ZAXYS9/kemcPVWN+EOSjv7zj+ysdFBnHHu3i98upftcQtYoJ8Vg==","signatures":[{"sig":"MEQCIEctKh8sQGynM9L5AkZUo8qJtZs0Vi/zg/nANIOB6Y9nAiB+I4HR8KEq4dgak+U4lHFtNBkoVTqsGWIO67j4V82MMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8338,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzZ8ZCRA9TVsSAnZWagAAEigP/0L9o4p/zo71IR1Ui75r\nkvPfxgDOpiFizc1N0NIoFITWyDDYNN8T9eNQSu2+XeO2tRPuG3XDMKrz+h9E\nem4Ie2s2vxcUO1MIhR+A7aVU7vNjq70O67rmpV8EowuHPL/m+iwWvAMRCKqn\nqVdrxxMFiITIu44fa3n4cPEUTbM42SBges3x5V+PT933zKQzDSV5pEhkCPJE\nuS/fNCQN/zA+2Qd5BGns/ayIP/f5JYquxDLmMD57fsginEVKrLHrr/bBg5/f\n1nn7lldtqMRZt8WXBvAdxGAqXR/PQzMZSOZTNv339++F1CgxfWJg0lOSgcAZ\n/NVjKnLOmmqBCpgqEd4VCfTmiDpeapqwh8x7mLDhJ0ySXZXUZRUHNBUxrzsR\nmeQ+8gBuRS6ms5em3tJIie7YZfsUt5SjTikvtlYFM+uN2epe31XS2YYFiaqF\nt/fWvIzSywCJ4KMRi8uNyJQkBDA5NNqvokyinLTNWA74SLZ/xso0LPCJmKsV\nTHQWQPZNVH2jGG7tNiWdVBNwuoOxfAZ8Ooytl4kJgeH0CjoIfA12+hAvLbhT\nDKhkKp5mwS4FrPjROH43jTtUHZX8m0QftAIp+nYwKMqWVvK1SAcvlLLvfHgT\nfqIbTk6kcBtKRH5ANZ2DZBg1hSi8Iiz2yWhcTI1uQz1MnFDRYIKVIvTLmhpj\n4Hdc\r\n=Wmgk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","_from":"ip-geolocation-api-javascript-sdk","_spec":"ip-geolocation-api-javascript-sdk","_where":"/home/developer/jvs/new-npm","_shasum":"0273f7c043749ce91a586388edf35319d2c52818","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_inBundle":false,"_location":"/ip-geolocation-api-javascript-sdk","_resolved":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.5.tgz","_integrity":"sha512-hzaB5USO7B3XltJTckXK9FtC+OpSiGx4h8/nV3eskFhmmTBC1YVTd9WnlJTUQm3sb9e+V3pzu8coNbXC3ZrRPg==","_requested":{"raw":"ip-geolocation-api-javascript-sdk","name":"ip-geolocation-api-javascript-sdk","type":"tag","rawSpec":"","registry":true,"saveSpec":null,"fetchSpec":"latest","escapedName":"ip-geolocation-api-javascript-sdk"},"deprecated":false,"_npmVersion":"6.3.0","_requiredBy":["#USER","/"],"description":"## Installation ```cli     npm i ip-geolocation-api-javascript-sdk ```","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_phantomChildren":{},"bundleDependencies":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.5_1540202264435_0.5783069892819808","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.6","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.6","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"dist":{"shasum":"73c59852bf765bf57cd1b27878ec117298d1bbde","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.6.tgz","fileCount":5,"integrity":"sha512-4b3VUuB4fDpCMDsIFwxwoPa+JbZ9Cx8nr/FWMVB5JDvGlXbAGm+Kml23wG5sXnSySHi8Hgho6epVkzOVbvU6XQ==","signatures":[{"sig":"MEQCIAFKFBNu+jdKgcDdizurYf/ONfQFXL37fbXEEybysqVaAiBB9NovjP3Q8SmaufoHCRrw/UAygcq/gOgdOkzXT0b2kA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzar+CRA9TVsSAnZWagAAffEP/RzbS0t4kGUgMIhrtGUN\n7N6mzwOHch7nCxepfcoN4Hc7TgVrVRqwbmi6pt0m4dM6cqetBPmtiY63U7vW\n7rb85ecPgYJNtHLkBQ4LUKZJJ9/6T0AuffQ2Pups+Uck2SpJ+HwIaPWH5vCD\nGzIIwGhNm6OWMrCttKRjA/kgUdG/Y9FVqF6/w8lfvJPCr/AJyM294YCQ67Fd\nizkObfEDxwx+ADbJXUXlDQaa/f4QK7VPkneWqQlZoxrgMwPTXhEyCXLQM+wN\n/50UGTvW43OTvNgFcw/NDv5IpDen+rpJSq1nKeDRWvS6cpYqeJLqlPD4Ls5T\nf9aXmzs4quNaKszclqQpXgv4ym+D1pzCF6m51goUdORw/k/Xqnh0imKUJyOA\nunwWXCLZ0E1FB3kA5CbZTfseNdf+YlqZY80HPdECVhP4J+Evs5ULY4cqy+RI\ndFUrxkLnYeDnYJNHwc31kA1YFI2dIA/ioY3LN+4Ll1Cd4Vr6BswUdt7fLw2k\no7C2ov+NjGzK0INlNZzBmELEYpAwJFwMwMDYh0k2fBr9pKb5+jUNKH1Itd0b\nCZmHKUPUyBuQsPGrMEJnnYgsC8IW51XwDBEtRcWK8J8rt+9UrwV8x5le7W6n\nsxqkCfH2rzU30+0xm2X0p1FT/yXz+zbiUlauqQmZSM9MYu1TKQwcvRrBD9TK\nutfG\r\n=/EjD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","_from":"ip-geolocation-api-javascript-sdk","_spec":"ip-geolocation-api-javascript-sdk","_where":"/home/developer/jvs/latest-npm","_shasum":"0273f7c043749ce91a586388edf35319d2c52818","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_inBundle":false,"_location":"/ip-geolocation-api-javascript-sdk","_resolved":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.6.tgz","_integrity":"sha512-hzaB5USO7B3XltJTckXK9FtC+OpSiGx4h8/nV3eskFhmmTBC1YVTd9WnlJTUQm3sb9e+V3pzu8coNbXC3ZrRPg==","_requested":{"raw":"ip-geolocation-api-javascript-sdk","name":"ip-geolocation-api-javascript-sdk","type":"tag","rawSpec":"","registry":true,"saveSpec":null,"fetchSpec":"latest","escapedName":"ip-geolocation-api-javascript-sdk"},"deprecated":false,"_npmVersion":"6.3.0","_requiredBy":["#USER","/"],"description":"## Installation ```cli     npm i ip-geolocation-api-javascript-sdk ```","directories":{},"_nodeVersion":"10.0.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"_phantomChildren":{},"bundleDependencies":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.6_1540205310119_0.7790101356089307","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.7","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.7","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"dist":{"shasum":"ea1a89b35a784ce9bf34f88d6a0b5ed25ef8ebd2","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.7.tgz","fileCount":5,"integrity":"sha512-yzJd2Fz5Wja/0dN1rj4E1ZUK2VO9MInVxV9NHUUXLsQhUla3FiwjHBlLHfVLYkRhf3rxvpNiGF0YLslpvIXMlw==","signatures":[{"sig":"MEUCIC1ZTaC3Qg94qLz7fKfT8OOtVllyCRenOaNquJZBjENmAiEA892EoZdIHfBSzfKQBw2z5iJW9waW5AYe+P3qTeMhlaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCiIDCRA9TVsSAnZWagAA5i8P+gKgZfHFnB+jnLfOSYer\nIqh6LNHG36d6cSwl8zKgjfxhfIQS6WMECEJ3LhrSQ4hhsWccUbNw9jgzJRGy\n129U4Col3T6sEqdQ4ZgEFG44gJptMy5+4O0Q8/86O/lEQ6Ct+1JQUawvCCvj\nxU0K7Gp7CsqQQbISO85EoQBjuIXob/+QpXX3xAb2ALmt6KLIB9uUMF7cqbbs\nF9CpOLEJxKkYT8EMCZKtf8vkaagYjt/d/QKWW4Xv+7bPu+bO5wSI4EvNlhHf\nXfb4V/qEqESgLKXLfUaBskfm5Hpf74o/HJ1uIwIX0f2drnZfFRS5no0YuxMs\nYDOQrPFb3gLzjW+3za1vISQo03zHMQ7ljp5tHgMuUu7Gf2TMNsJRp3RHDwA+\n/UiBhErQ0Pfg+UOt01U4rBuVZJCqaGDu4YC3JdtctUQUpG4w72pm//GHBz6l\nmOjUJOF+jAnhKyjmNYgc16b8XNvd/td23TRxiR1lwPD2ZGxjdvgs6H3qHh9O\njm46XKy/cYLG68O/UU2cjoSZ/R0y7XxxStEo24ApMo74xbB/66Qe+i9j3W0U\nZPL7xxfACYW98N0v0mJxqOBaE9938M4Rkbd348Aob5d8Hsa/TGeIl+57rbkf\nt9fvfWPoi5G5C5sVvFwx8LI02AKxiGBSnH8bvME1UeY88l6MQ43Y2YF+OyT6\n+xPj\r\n=0K5X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","_from":"ip-geolocation-api-javascript-sdk","_spec":"ip-geolocation-api-javascript-sdk","_where":"/home/developer/jvs/new-npm","_shasum":"0273f7c043749ce91a586388edf35319d2c52818","gitHead":"90660010e832efc373e429338bac6e4f59454923","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"_inBundle":false,"_location":"/ip-geolocation-api-javascript-sdk","_resolved":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.6.tgz","_integrity":"sha512-hzaB5USO7B3XltJTckXK9FtC+OpSiGx4h8/nV3eskFhmmTBC1YVTd9WnlJTUQm3sb9e+V3pzu8coNbXC3ZrRPg==","_requested":{"raw":"ip-geolocation-api-javascript-sdk","name":"ip-geolocation-api-javascript-sdk","type":"tag","rawSpec":"","registry":true,"saveSpec":null,"fetchSpec":"latest","escapedName":"ip-geolocation-api-javascript-sdk"},"deprecated":false,"repository":{"url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git","type":"git"},"_npmVersion":"6.4.1","_requiredBy":["#USER","/"],"description":"[Javascript SDK for IP Geolocation API](https://ipgeolocation.io/documentation/ip-geolocation-api-javascript-sdk-201809051421). You can use this SDK to Geolocate an IP address and get time zone information based on geolocation coordinates, or an IP addres","directories":{},"_nodeVersion":"8.12.0","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{},"_phantomChildren":{},"bundleDependencies":false,"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.7_1544167937748_0.005209696248477114","host":"s3://npm-registry-packages"}},"1.0.8":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.8","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.8","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"dist":{"shasum":"995dfa80dcf9a68ef49161cb3a57ef53c94160e0","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.8.tgz","fileCount":5,"integrity":"sha512-weKrOhvgkZ4cZzOrxc747fyepue9VPNcHJITEOINEPa2GC8BolATfq8faf8vKAnOUBkLdZ3hShPJ+8cDPKazyw==","signatures":[{"sig":"MEUCIQDoSINgiRSpi2/+AFMikdqYj56YdARysuIRf3d/wmyLhwIgTlgaao5Xqvet4Op4rizvTYxmh/oq/1+2IhVihdjHoMA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRYnUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoU0Q//fZNjluXzheYW6DldZIAFHY0lk31Br8ODdvmGkgNkq22Q678J\r\nGF879i4rtFr/Ns0IUKLAOpk5IdyFzt7zgIJLTLpX9OHjDjTeUA38XqMB8AFU\r\nZYderVuYT3TM4wOawlQ8Kw7hEf/AYsvTu4UN+UnDM+nAuDI/Goy95zlyo70A\r\noJGXQK2t2N045bRESRzOalSRAkJs9YizhqHdgZcOvN//GCQGgIyBglOKXjd4\r\ne1hup1NYaKrCMDSnylJoZasdiQBELh5f7hTx2BwQzYDgNri1xkcDm7BKMjrJ\r\nhKjdyoIjEv6YIWyUgbR3ynru+518kr7kjOalgz131iYgYbHSH/Zx7I2GGSU6\r\nv1OC8BaTb76XTTeECFpLP7S8lAUAKskLRneMXTPueX02Nu7zHA3Xt44kQbv7\r\nEEgC1mru+8m0vNe1txbkLyh0bfbvvOJp9839Xp3RYIy9Y50JYIaYxObiCJ7d\r\nKtqGRfCcdOEc93lb+9V4hedH4Ai5F/vvWDnTsfkhXDPEir5WASpMZCDOkNhq\r\nA9wuMTc9WVdrTEHN7i425aVPpFDN4wCqenOryJ3YEBD+4z1Dx2acQM5uWZf/\r\n0Ca7ta8udt8TPp1uRUs8YBfbPlGPlOAmdU5QUH5w40DSiSWlBTforizzcpYx\r\nTvmMr3dO4MbMuAF2X5GCIjJE7UWtrzITbV4=\r\n=jfra\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","gitHead":"dd2c94d34dec6150c85398968f521e9c032077b7","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"deprecated":false,"repository":{"url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git","type":"git"},"_npmVersion":"8.5.0","description":"[Javascript SDK for IP Geolocation API](https://ipgeolocation.io/documentation/ip-geolocation-api-javascript-sdk-201809051421). You can use this SDK to Geolocate an IP address and get time zone information based on geolocation coordinates, or an IP addres","directories":{},"_nodeVersion":"16.14.2","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.8_1648724436817_0.05034105320035853","host":"s3://npm-registry-packages"}},"1.0.9":{"name":"ip-geolocation-api-javascript-sdk","version":"1.0.9","keywords":["ip","ipgeo","ip geolocation","ip geolocation api","time zone","ip geolocation sdk","geolocation javascript","geoip lookup","geoip api","ip location api"],"author":{"name":"ipgeolocation.io"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@1.0.9","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"dist":{"shasum":"e7a063ed926a00373ff5dda74d7b5fbf778db0f0","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-1.0.9.tgz","fileCount":5,"integrity":"sha512-ZpqHD8Tt3uz2+olm9g2n+0MZbwqVsPoU6bq+vFiNrTWFeSlM2w8regzViA52f1FYCUKKIMYJUiwZIJBC0STrNw==","signatures":[{"sig":"MEUCIBB/A+z3Wb0d3KZw+BTedRsJfd68S6Fa/uw8eSHY83JbAiEA5A1YD/uzPx6xNomBhRFHimXIXvSzxQvJsogcRKNYtgk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRa6NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSTw/+J7MhkhRbALGSMfmtqEADCJMq4NaxsAXoEILiZVGnadl0ydAq\r\nLM/im86G14bFkNR93xdC9FFIcLDfX1Q2mCC7AX0Lk+e3336c/jMq3Aap1jJq\r\nUm1jIZV7oRDnqpvhaMx5ufaYQvmE8v9cXPo4Ha2RU4JA6Ntg2WA1rULbwO+1\r\n+8g9WOMSG9RY0S+qRkjH8HfDm9A5z/wE2oz+bi4y9JMPrCEAUhu+JvrY6Ir3\r\nL9Y0LVypuY8V+tZTe03aW/OmP5xbXaIV9A1/Cq2od6rtaOQCefqz1gWbO78U\r\nklvM6TvOA/xc9h7Y0grnepNaqmtaPCfWmUJHdbKryMjV4QkuN1lLeQB+pGm0\r\nYL/smjHheWw8p5tpnPzD+1eqUTvgk5nSmSOnzhVcMZky5e4/SnmKsN9V8L8X\r\nq2MbWGdNRXhpmAnRiPOHoLVXX3E19LRs3GA0ZP80vDq2wF1VairTRd6HJnrm\r\nddyBZD3bd2Mrkgh2M35ItVJ8mnXcIaY1VojEzWT6vRF+XtCgKgzXCN+jCnd5\r\nC5/Gjv6ipDBf7XNb1bPgOewpVWtFw+V1sksoRgdoUqHYlz//AVk5G06X6PMz\r\nVBBsXamNc58sHDQkxf3MyX6yqXA8OiM+6UE0tG6ViiJr/NChmwJ6HmVyTvhA\r\nKWOHJVrbWEXgXeVm999zhnOD8sqFPO+8LQM=\r\n=N8Dp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"IPGeolocationAPI.js","gitHead":"1bddd97c1208a2c6ad654e580f34d376fed7b09e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"deprecated":false,"repository":{"url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git","type":"git"},"_npmVersion":"8.5.0","description":"[Javascript SDK for IP Geolocation API](https://ipgeolocation.io/documentation/ip-geolocation-api-javascript-sdk-201809051421). You can use this SDK to Geolocate an IP address and get time zone information based on geolocation coordinates, or an IP addres","directories":{},"_nodeVersion":"16.14.2","dependencies":{"xmlhttprequest":"^1.8.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_1.0.9_1648733837731_0.08663293901007729","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"ip-geolocation-api-javascript-sdk","version":"3.0.0","author":{"name":"IPGeolocation.io"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@3.0.0","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"dist":{"shasum":"f7bf9220d53f777adb0bf9cb9968828e9fdf9442","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-3.0.0.tgz","fileCount":86,"integrity":"sha512-OMkeCpiJWutrs1WO3HCkbaBidUH/sAcU/8t4Q+/ajYKGfY+wVdjLjI532QPfn7F/uh1Unb4KTsEBFywSRlEhww==","signatures":[{"sig":"MEYCIQC1DMFh/gHuT8C726BsnyZe8z0RK7Q/WQtbITUbZ2gLSgIhAOm9z9tOqQLgOK1ewv9Dz0ETTEFDvCJgBhWZvIgi49wE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679765},"main":"dist/index.js","browser":{"fs":false},"gitHead":"f62497651f7488fffa257080758626396141611c","scripts":{"test":"mocha --require @babel/register --recursive","build":"babel src -d dist","prepare":"npm run build"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"deprecated":"❌ Published by mistake. Please use version 2.0.0 instead.","repository":{"url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git","type":"git"},"_npmVersion":"10.8.3","description":"Official JavaScript SDK for IPGeolocation.io. Effortlessly integrate IP Geolocation, IP Security, Timezone, ASN, Astronomy, User Agent, Abuse Contact, and Timezone Conversion APIs into your Node.js applications.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"@babel/cli":"^7.0.0","superagent":"^5.3.0","ip-geolocation-api-javascript-sdk":"^1.0.9"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.1","sinon":"^7.2.0","expect.js":"^0.3.1","@babel/core":"^7.0.0","@babel/register":"^7.0.0","@babel/preset-env":"^7.0.0","@babel/plugin-syntax-import-meta":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-json-strings":"^7.0.0","@babel/plugin-syntax-dynamic-import":"^7.0.0","@babel/plugin-proposal-function-bind":"^7.0.0","@babel/plugin-proposal-function-sent":"^7.0.0","@babel/plugin-proposal-do-expressions":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-proposal-numeric-separator":"^7.0.0","@babel/plugin-proposal-optional-chaining":"^7.0.0","@babel/plugin-proposal-pipeline-operator":"^7.0.0","@babel/plugin-proposal-throw-expressions":"^7.0.0","@babel/plugin-proposal-export-default-from":"^7.0.0","@babel/plugin-proposal-export-namespace-from":"^7.0.0","@babel/plugin-proposal-nullish-coalescing-operator":"^7.0.0","@babel/plugin-proposal-logical-assignment-operators":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_3.0.0_1753103453809_0.7057343713015107","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"ip-geolocation-api-javascript-sdk","version":"2.0.0","author":{"name":"IPGeolocation.io"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@2.0.0","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"dist":{"shasum":"977a0be2ce2ef7450fb8533d07a6823d5f480012","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-2.0.0.tgz","fileCount":86,"integrity":"sha512-QizEVL8ByVlwCEffuAtrRKVw0CjgbZQ11AVLYkvxNVi8fhrn7Od4tZuc7O7bSgMCYC9IIODgCPILlAo9Ud9e7g==","signatures":[{"sig":"MEUCIGtsoxq22DWzDVdFkuSSYlBSEYafABfrLvBtLoqiCsHJAiEA/cf5GjP/fiG+bnIaHsu2/01gEvreOivc8XcdSjEnAx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679765},"main":"dist/index.js","browser":{"fs":false},"gitHead":"c7474af4ea46db01307e1ed39a389b77e7a464d7","scripts":{"test":"mocha --require @babel/register --recursive","build":"babel src -d dist","prepare":"npm run build"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"repository":{"url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git","type":"git"},"_npmVersion":"10.8.3","description":"Official JavaScript SDK for IPGeolocation.io. Effortlessly integrate IP Geolocation, IP Security, Timezone, ASN, Astronomy, User Agent, Abuse Contact, and Timezone Conversion APIs into your Node.js applications.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"@babel/cli":"^7.0.0","superagent":"^5.3.0","ip-geolocation-api-javascript-sdk":"^1.0.9"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.1","sinon":"^7.2.0","expect.js":"^0.3.1","@babel/core":"^7.0.0","@babel/register":"^7.0.0","@babel/preset-env":"^7.0.0","@babel/plugin-syntax-import-meta":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-json-strings":"^7.0.0","@babel/plugin-syntax-dynamic-import":"^7.0.0","@babel/plugin-proposal-function-bind":"^7.0.0","@babel/plugin-proposal-function-sent":"^7.0.0","@babel/plugin-proposal-do-expressions":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-proposal-numeric-separator":"^7.0.0","@babel/plugin-proposal-optional-chaining":"^7.0.0","@babel/plugin-proposal-pipeline-operator":"^7.0.0","@babel/plugin-proposal-throw-expressions":"^7.0.0","@babel/plugin-proposal-export-default-from":"^7.0.0","@babel/plugin-proposal-export-namespace-from":"^7.0.0","@babel/plugin-proposal-nullish-coalescing-operator":"^7.0.0","@babel/plugin-proposal-logical-assignment-operators":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_2.0.0_1753104037260_0.34500429923504794","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"ip-geolocation-api-javascript-sdk","version":"2.0.1","author":{"name":"IPGeolocation.io"},"license":"ISC","_id":"ip-geolocation-api-javascript-sdk@2.0.1","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"dist":{"shasum":"86c4072dac458d9927257aa72ce63f07ce01476c","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-2.0.1.tgz","fileCount":89,"integrity":"sha512-xKcBhMIAzO7uUEkU0709d2PEdNllEcC2vhG5UtNfTgeL7SytRUWcDmXSo2KExhH1a1EjVhA3iTK2q4a16I0UGw==","signatures":[{"sig":"MEUCIFMYdgocP3Xap+WgEwpBFLA3BElvETc7adUgMVyB0dmfAiEArHYyUB7len58Auw2Pcm4zreOjhAp2sMh8ZoT8cKAvAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":718708},"main":"dist/index.js","browser":{"fs":false},"gitHead":"6cffae2107377a9dd4b6d0dcb7c8a562652c206e","scripts":{"test":"mocha --require @babel/register --recursive","build":"babel src -d dist","prepare":"npm run build"},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"repository":{"url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git","type":"git"},"_npmVersion":"10.8.3","description":"Official JavaScript SDK for IPGeolocation.io. Effortlessly integrate IP Geolocation, IP Security, Timezone, ASN, Astronomy, User Agent, Abuse Contact, and Timezone Conversion APIs into your Node.js applications.","directories":{},"_nodeVersion":"20.12.2","dependencies":{"@babel/cli":"^7.0.0","superagent":"^5.3.0","ip-geolocation-api-javascript-sdk":"^1.0.9"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.1","sinon":"^7.2.0","expect.js":"^0.3.1","@babel/core":"^7.0.0","@babel/register":"^7.0.0","@babel/preset-env":"^7.0.0","@babel/plugin-syntax-import-meta":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-json-strings":"^7.0.0","@babel/plugin-syntax-dynamic-import":"^7.0.0","@babel/plugin-proposal-function-bind":"^7.0.0","@babel/plugin-proposal-function-sent":"^7.0.0","@babel/plugin-proposal-do-expressions":"^7.0.0","@babel/plugin-proposal-class-properties":"^7.0.0","@babel/plugin-proposal-numeric-separator":"^7.0.0","@babel/plugin-proposal-optional-chaining":"^7.0.0","@babel/plugin-proposal-pipeline-operator":"^7.0.0","@babel/plugin-proposal-throw-expressions":"^7.0.0","@babel/plugin-proposal-export-default-from":"^7.0.0","@babel/plugin-proposal-export-namespace-from":"^7.0.0","@babel/plugin-proposal-nullish-coalescing-operator":"^7.0.0","@babel/plugin-proposal-logical-assignment-operators":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ip-geolocation-api-javascript-sdk_2.0.1_1753201883756_0.8173515199588293","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"author":{"name":"IPGeolocation.io"},"name":"ip-geolocation-api-javascript-sdk","version":"3.0.1","description":"Official JavaScript SDK for the IPGeolocation IP Location API with single and bulk lookup, typed JSON, and raw JSON/XML support.","license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git"},"bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","keywords":["ipgeolocation","geolocation","ip","ip-location","ip-geolocation","ip-lookup","api","sdk","javascript","nodejs","fetch","timezone","hostname","user-agent","asn","security","vpn-detection","proxy-detection","bulk-lookup"],"sideEffects":false,"engines":{"node":">=18"},"scripts":{"build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test":"vitest run tests/unit","test:watch":"vitest tests/unit","test:coverage":"vitest run tests/unit --coverage","test:live":"vitest run tests/live/live-integration.test.ts","test:parity":"vitest run tests/live/live-field-parity.test.ts"},"devDependencies":{"@types/node":"^24.5.2","@vitest/coverage-v8":"^3.2.4","tsup":"^8.5.0","typescript":"^5.9.2","vitest":"^3.2.4"},"_id":"ip-geolocation-api-javascript-sdk@3.0.1","gitHead":"a5de59bba665cada74688a89476a1836df4d620d","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-uAJ/M5wgE6MlEM/BrJ2pyf2sm8Jy16EzPAn3gsarP2sbIkFP4f1F/xXB19HqzdCJo3iSH5Csng2Z0owfr344eg==","shasum":"59e6a655d847a3a5f9a5c8322ed14fd516d844be","tarball":"https://registry.npmjs.org/ip-geolocation-api-javascript-sdk/-/ip-geolocation-api-javascript-sdk-3.0.1.tgz","fileCount":8,"unpackedSize":159005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDRlwubCIiqHEltVzPLeijESrgFSivfVA3w9HK55XwpAQIgFvAsvGGh8LWZjucBtJ2ZFMMnh6ohH27tgO6dfBuO37g="}]},"_npmUser":{"name":"ejazahmed","email":"support@ipgeolocation.io"},"directories":{},"maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ip-geolocation-api-javascript-sdk_3.0.1_1775481513061_0.851538047162294"},"_hasShrinkwrap":false}},"time":{"created":"2018-08-13T13:53:11.145Z","modified":"2026-04-06T13:18:33.322Z","1.0.0":"2018-08-13T13:53:11.197Z","1.0.1":"2018-08-15T13:44:11.491Z","1.0.2":"2018-08-15T14:41:31.823Z","1.0.3":"2018-08-18T09:25:40.740Z","1.0.4":"2018-10-22T09:19:01.063Z","1.0.5":"2018-10-22T09:57:44.590Z","1.0.6":"2018-10-22T10:48:30.242Z","1.0.7":"2018-12-07T07:32:17.859Z","1.0.8":"2022-03-31T11:00:36.959Z","1.0.9":"2022-03-31T13:37:17.869Z","3.0.0":"2025-07-21T13:10:54.013Z","2.0.0":"2025-07-21T13:20:37.447Z","2.0.1":"2025-07-22T16:31:24.017Z","3.0.1":"2026-04-06T13:18:33.208Z"},"bugs":{"url":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk/issues"},"author":{"name":"IPGeolocation.io"},"license":"MIT","homepage":"https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk#readme","repository":{"type":"git","url":"git+https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk.git"},"description":"Official JavaScript SDK for the IPGeolocation IP Location API with single and bulk lookup, typed JSON, and raw JSON/XML support.","maintainers":[{"name":"ejazahmed","email":"support@ipgeolocation.io"}],"readme":"# IPGeolocation JavaScript SDK\n\nOfficial JavaScript SDK for the IPGeolocation IP Location API.\n\nLook up IPv4, IPv6, and domains with `/v3/ipgeo` and `/v3/ipgeo-bulk`. Get geolocation, company, ASN, timezone, network, hostname, abuse, user-agent, and security data from one API. Includes ESM, CommonJS, and TypeScript declarations.\n\nWorks in Node.js 18+ and in other runtimes that already provide `fetch`.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [At a Glance](#at-a-glance)\n- [Get Your API Key](#get-your-api-key)\n- [What You Can Get From One API Call](#what-you-can-get-from-one-api-call)\n- [Security and Risk Signals](#security-and-risk-signals)\n- [Supported Endpoints](#supported-endpoints)\n- [Authentication Modes](#authentication-modes)\n- [Plan Features and Limits](#plan-features-and-limits)\n- [Client Configuration](#client-configuration)\n- [Available Methods](#available-methods)\n- [Request Options](#request-options)\n- [Single Lookup Examples](#single-lookup-examples)\n- [Raw JSON and XML](#raw-json-and-xml)\n- [Bulk Lookup Examples](#bulk-lookup-examples)\n- [Response Metadata](#response-metadata)\n- [JSON Helpers](#json-helpers)\n- [Error Handling](#error-handling)\n- [Troubleshooting](#troubleshooting)\n- [FAQ](#frequently-asked-questions)\n- [Related Packages](#related-packages)\n- [Links](#links)\n\n## Installation\n\n```bash\nnpm install ip-geolocation-api-javascript-sdk\n```\n\n### ES Modules\n\n```js\nimport { IpGeolocationClient } from \"ip-geolocation-api-javascript-sdk\";\n```\n\n### CommonJS\n\n```js\nconst { IpGeolocationClient } = require(\"ip-geolocation-api-javascript-sdk\");\n```\n\n## Quick Start\n\n```js\nimport { IpGeolocationClient } from \"ip-geolocation-api-javascript-sdk\";\n\nasync function main() {\n  const client = new IpGeolocationClient({\n    apiKey: process.env.IPGEO_API_KEY,\n  });\n\n  try {\n    const response = await client.lookupIpGeolocation({\n      ip: \"8.8.8.8\",\n    });\n\n    console.log(\"IP:\", response.data.ip); // \"8.8.8.8\"\n    console.log(\"Country:\", response.data.location?.countryName); // \"United States\"\n    console.log(\"City:\", response.data.location?.city);\n    console.log(\"Timezone:\", response.data.timeZone?.name);\n    console.log(\"Credits charged:\", response.metadata.creditsCharged);\n  } finally {\n    await client.close();\n  }\n}\n\nmain().catch((error) => {\n  console.error(error);\n});\n```\n\nYou can pass plain objects to request methods. If you want validation before the request is sent, use `LookupIpGeolocationRequest` and `BulkLookupIpGeolocationRequest`.\n\n## At a Glance\n\n| Item | Value |\n|------|-------|\n| Package | `ip-geolocation-api-javascript-sdk` |\n| API Type | IPGeolocation IP Location API |\n| Supported Endpoints | `/v3/ipgeo`, `/v3/ipgeo-bulk` |\n| Supported Inputs | IPv4, IPv6, domain |\n| Main Data Returned | Geolocation, company, ASN, timezone, network, security, abuse, hostname, user-agent, currency |\n| Authentication | API key, request-origin auth for `/v3/ipgeo` only |\n| Response Formats | Structured JSON, raw JSON, raw XML |\n| Bulk Limit | Up to 50,000 IPs or domains per request |\n| Runtime | Node.js 18+ or any runtime with `fetch` |\n\n## Get Your API Key\n\nTo use most SDK features, create or access your IPGeolocation account and copy an API key from your dashboard.\n\n1. Sign up: [https://app.ipgeolocation.io/signup](https://app.ipgeolocation.io/signup)\n2. Verify your email if prompted\n3. Sign in: [https://app.ipgeolocation.io/login](https://app.ipgeolocation.io/login)\n4. Open your dashboard: [https://app.ipgeolocation.io/dashboard](https://app.ipgeolocation.io/dashboard)\n5. Copy an API key from the `API Keys` section\n6. Pass it to `new IpGeolocationClient({ apiKey: \"YOUR_API_KEY\" })`\n\nFor server-side code, keep the API key in an environment variable or secret manager. For browser-based single lookups on paid plans, use request-origin auth instead of exposing an API key in frontend code.\n\n## What You Can Get From One API Call\n\n| Data Set | How To Request It | Common Use Cases |\n|----------|-------------------|------------------|\n| IP geolocation | Default response | IP lookup, localization, geo targeting |\n| Company and ASN | Default response | ISP lookup, ownership enrichment, network analysis |\n| Timezone | Default response | Local time lookup, scheduling, regional reporting |\n| Network and currency | Default response | Routing context, analytics, pricing flows |\n| Security and risk signals | `include: [\"security\"]` | VPN detection, proxy detection, fraud prevention, threat analysis |\n| Abuse contact data | `include: [\"abuse\"]` | Incident response, abuse handling, reporting |\n| Hostname data | `include: [\"hostname\"]`, `[\"liveHostname\"]`, `[\"hostnameFallbackLive\"]` | Reverse DNS lookup, infrastructure enrichment, hosting checks |\n| User-agent data | `include: [\"user_agent\"]` with `userAgent` or a `User-Agent` header | Browser detection, device detection, traffic analysis |\n| Geo accuracy and DMA data | `include: [\"geo_accuracy\"]`, `[\"dma_code\"]` | Local targeting, media market mapping, proximity analysis |\n\n## Security and Risk Signals\n\nRequest `include: [\"security\"]` when you need the `security` object in the response.\n\n| Use Case | SDK Fields |\n|-----------------|-----------|\n| VPN detection | `security.isVpn`, `security.vpnProviderNames`, `security.vpnConfidenceScore`, `security.vpnLastSeen` |\n| Proxy detection | `security.isProxy`, `security.proxyProviderNames`, `security.proxyConfidenceScore`, `security.proxyLastSeen` |\n| Residential proxy detection | `security.isResidentialProxy` |\n| Tor detection | `security.isTor` |\n| Anonymous IP detection | `security.isAnonymous` |\n| Threat score and risk scoring | `security.threatScore` |\n| Bot, spam, and attacker signals | `security.isBot`, `security.isSpam`, `security.isKnownAttacker` |\n| Relay detection | `security.isRelay`, `security.relayProviderName` |\n| Cloud, hosting, or data center IP detection | `security.isCloudProvider`, `security.cloudProviderName` |\n\nProvider names, confidence scores, and last-seen dates appear when the API has that data.\n\n## Supported Endpoints\n\n| Endpoint | HTTP Method | SDK Methods | Primary Use Case |\n|----------|-------------|-------------|------------------|\n| `/v3/ipgeo` | `GET` | `lookupIpGeolocation(...)`, `lookupIpGeolocationRaw(...)` | Single IPv4, IPv6, or domain lookup |\n| `/v3/ipgeo-bulk` | `POST` | `bulkLookupIpGeolocation(...)`, `bulkLookupIpGeolocationRaw(...)` | Bulk lookup for up to 50,000 IPs or domains |\n\nThese two endpoints can return geolocation, company, ASN, timezone, network, currency, hostname, abuse, user-agent, and security data depending on your request and plan.\n\n## Authentication Modes\n\n| Mode | SDK Setup | Typical Use |\n|------|-----------|-------------|\n| API key query param | `new IpGeolocationClient({ apiKey: \"YOUR_API_KEY\" })` | Server-side API calls, jobs, bulk lookups |\n| Request-origin auth | `new IpGeolocationClient({ requestOrigin: \"https://app.example.com\" })` | Browser-based single lookups on paid plans |\n\n> [!IMPORTANT]\n> Request-origin auth does not work with `/v3/ipgeo-bulk`. Bulk lookup always requires `apiKey`.\n\n> [!NOTE]\n> If you set both `apiKey` and `requestOrigin`, single lookup still uses the API key. The API key is sent as the `apiKey` query parameter, so avoid logging full request URLs.\n\n## Plan Features and Limits\n\nFeature availability depends on your plan and request parameters.\n\n| Capability | Free Plan | Paid Plan |\n|------------|-----------|-----------|\n| IPv4 and IPv6 single lookup | Supported | Supported |\n| Domain lookup | Not supported | Supported |\n| Bulk endpoint `/v3/ipgeo-bulk` | Not supported | Supported, but always requires an API key |\n| `include: [\"*\"]` | Accepted, returns the default response only | Accepted, returns all available modules |\n| `include: [\"security\"]`, `[\"abuse\"]`, `[\"hostname\"]`, `[\"liveHostname\"]`, `[\"hostnameFallbackLive\"]`, `[\"geo_accuracy\"]`, `[\"dma_code\"]`, `[\"user_agent\"]` | Not supported | Supported |\n| Non-English `lang` | Not supported | Supported |\n| `fields` and `excludes` | Supported | Supported |\n| Request-origin auth | Not supported | Supported for `/v3/ipgeo` only |\n\nPaid plans still need `include` for optional modules. `fields` and `excludes` only trim the response. They do not turn modules on or unlock paid data.\n\n## Client Configuration\n\n| Option | Type | Default | Notes |\n|--------|------|---------|-------|\n| `apiKey` | `string` | unset | Required for bulk lookup. Optional for single lookup if `requestOrigin` is set. |\n| `requestOrigin` | `string` | unset | Must be an absolute `http` or `https` origin. No path, query string, fragment, or userinfo. |\n| `baseUrl` | `string` | `https://api.ipgeolocation.io` | Override the API base URL. Must be an absolute `http` or `https` URL. |\n| `connectTimeoutMs` | `number` | `10000` | Time to wait for response headers. Must be a positive integer. |\n| `readTimeoutMs` | `number` | `30000` | Time to wait while reading the response body. Must be a positive integer. |\n\nYou can also pass a custom `HttpTransport` as the second constructor argument.\n\n## Available Methods\n\n| Method | Returns | Notes |\n|--------|---------|-------|\n| `lookupIpGeolocation(request)` | `Promise<ApiResponse<IpGeolocationResponse>>` | Single lookup. Typed JSON response. |\n| `lookupIpGeolocationRaw(request)` | `Promise<ApiResponse<string>>` | Single lookup. Raw JSON or XML string. |\n| `bulkLookupIpGeolocation(request)` | `Promise<ApiResponse<readonly BulkLookupResult[]>>` | Bulk lookup. Typed JSON response. |\n| `bulkLookupIpGeolocationRaw(request)` | `Promise<ApiResponse<string>>` | Bulk lookup. Raw JSON or XML string. |\n| `close()` | `Promise<void>` | Closes the client. Do not reuse the client after this. |\n\n> [!NOTE]\n> Typed methods support JSON only. Use the raw methods when you need XML output.\n\n## Request Options\n\n| Option | Applies To | Notes |\n|--------|------------|-------|\n| `ip` | Single lookup | IPv4, IPv6, or domain. Omit it for caller IP lookup. Domain lookup requires a paid plan. |\n| `ips` | Bulk lookup | Iterable of 1 to 50,000 IPs or domains. |\n| `lang` | Single and bulk | One of `en`, `de`, `ru`, `ja`, `fr`, `cn`, `es`, `cs`, `it`, `ko`, `fa`, `pt`. |\n| `include` | Single and bulk | Iterable of module names such as `security`, `abuse`, `user_agent`, `hostname`, `liveHostname`, `hostnameFallbackLive`, `geo_accuracy`, `dma_code`, or `*`. |\n| `fields` | Single and bulk | Iterable of field paths to keep, for example `[\"location.country_name\", \"security.threat_score\"]`. |\n| `excludes` | Single and bulk | Iterable of field paths to remove from the response. |\n| `userAgent` | Single and bulk | Overrides the outbound `User-Agent` header. If you also pass a `User-Agent` header in `headers`, `userAgent` wins. |\n| `headers` | Single and bulk | Extra request headers. Use a plain object, `Headers`, `Map`, or iterable of `[name, value]` pairs. |\n| `output` | Single and bulk | `\"json\"` or `\"xml\"`. Typed methods require JSON. |\n\n## Single Lookup Examples\n\nThe examples below assume you already have a configured client and are running inside an async function or an ESM module with top-level `await`:\n\n```js\nimport { IpGeolocationClient } from \"ip-geolocation-api-javascript-sdk\";\n\nconst client = new IpGeolocationClient({\n  apiKey: process.env.IPGEO_API_KEY,\n});\n```\n\n### Caller IP\n\nOmit `ip` to look up the public IP of the machine making the request.\n\n```js\nconst response = await client.lookupIpGeolocation({});\nconsole.log(response.data.ip);\n```\n\n### Domain Lookup\n\nDomain lookup is a paid-plan feature.\n\n```js\nconst response = await client.lookupIpGeolocation({\n  ip: \"ipgeolocation.io\",\n});\n\nconsole.log(response.data.ip);\nconsole.log(response.data.domain); // \"ipgeolocation.io\"\nconsole.log(response.data.location?.countryName);\n```\n\n### Security and Abuse\n\n```js\nconst response = await client.lookupIpGeolocation({\n  ip: \"9.9.9.9\",\n  include: [\"security\", \"abuse\"],\n});\n\nconsole.log(response.data.security?.threatScore);\nconsole.log(response.data.security?.isVpn);\nconsole.log(response.data.abuse?.emails?.[0]);\n```\n\n### Hostname Variants\n\n```js\nconst response = await client.lookupIpGeolocation({\n  ip: \"ipgeolocation.io\",\n  include: [\"hostname\", \"liveHostname\", \"hostnameFallbackLive\"],\n});\n\nconsole.log(response.data.hostname);\n```\n\n### User-Agent Parsing\n\nTo parse a visitor user-agent string, request `user_agent` and pass the visitor string in `userAgent`.\n\n```js\nconst response = await client.lookupIpGeolocation({\n  ip: \"8.8.8.8\",\n  include: [\"user_agent\"],\n  userAgent:\n    \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) \" +\n    \"AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9\",\n});\n\nconsole.log(response.data.userAgent?.name);\nconsole.log(response.data.userAgent?.operatingSystem?.name);\nconsole.log(response.data.userAgent?.device?.type);\n```\n\n### Filtered Response\n\nUse `fields` to keep only the data you need, or `excludes` to remove fields from the response.\n\n```js\nconst response = await client.lookupIpGeolocation({\n  ip: \"8.8.8.8\",\n  include: [\"security\"],\n  fields: [\"location.country_name\", \"security.threat_score\", \"security.is_vpn\"],\n  excludes: [\"currency\"],\n});\n\nconsole.log(response.data.location?.countryName);\nconsole.log(response.data.security?.threatScore);\nconsole.log(response.data.security?.isVpn);\n```\n\n### Request Classes\n\nIf you want request validation before sending the call, create the request explicitly.\n\n```js\nimport {\n  IpGeolocationClient,\n  LookupIpGeolocationRequest,\n} from \"ip-geolocation-api-javascript-sdk\";\n\nconst client = new IpGeolocationClient({\n  apiKey: process.env.IPGEO_API_KEY,\n});\n\nconst request = new LookupIpGeolocationRequest({\n  ip: \"8.8.8.8\",\n  include: [\"security\"],\n});\n\nconst response = await client.lookupIpGeolocation(request);\nconsole.log(response.data.security?.isProxy);\n```\n\n### Request-Origin Auth\n\nUse this only for paid-plan single lookups from an allowlisted origin.\n\n```js\nconst browserClient = new IpGeolocationClient({\n  requestOrigin: \"https://app.example.com\",\n});\n\nconst response = await browserClient.lookupIpGeolocation({\n  ip: \"8.8.8.8\",\n});\n\nconsole.log(response.data.ip);\n\nawait browserClient.close();\n```\n\n## Raw JSON and XML\n\nUse raw methods when you want the original response body as a string.\n\n```js\nimport {\n  IpGeolocationClient,\n  ResponseFormat,\n} from \"ip-geolocation-api-javascript-sdk\";\n\nconst client = new IpGeolocationClient({\n  apiKey: process.env.IPGEO_API_KEY,\n});\n\nconst rawJson = await client.lookupIpGeolocationRaw({\n  ip: \"8.8.8.8\",\n});\n\nconsole.log(rawJson.data);\n\nconst rawXml = await client.lookupIpGeolocationRaw({\n  ip: \"8.8.8.8\",\n  output: ResponseFormat.XML,\n});\n\nconsole.log(rawXml.data);\n```\n\n## Bulk Lookup Examples\n\nBulk lookup is a paid-plan feature and always requires `apiKey`.\n\n### Basic Bulk Lookup\n\n```js\nconst response = await client.bulkLookupIpGeolocation({\n  ips: [\"8.8.8.8\", \"1.1.1.1\"],\n});\n\nfor (const result of response.data) {\n  if (result.success) {\n    console.log(result.data.ip, result.data.location?.countryName); // \"8.8.8.8\", \"United States\"\n  }\n}\n```\n\n### Mixed Success and Error Results\n\nEach bulk result is either a success with `data` or an error with `error.message`.\n\n```js\nconst response = await client.bulkLookupIpGeolocation({\n  ips: [\"8.8.8.8\", \"invalid-ip\", \"1.1.1.1\"],\n  include: [\"security\"],\n});\n\nfor (const result of response.data) {\n  if (result.success) {\n    console.log(result.data.ip, result.data.security?.threatScore);\n    continue;\n  }\n\n  console.error(result.error.message);\n}\n```\n\n## Response Metadata\n\nEvery SDK call returns an object with `data` and `metadata`.\n\n`metadata` is an `ApiResponseMetadata` instance with:\n\n| Field | Meaning |\n|-------|---------|\n| `statusCode` | HTTP status code returned by the API |\n| `durationMs` | End-to-end request time measured by the SDK |\n| `creditsCharged` | Credits charged for the request, when returned by the API |\n| `successfulRecords` | Number of successful records for bulk lookups, when returned by the API |\n| `rawHeaders` | Raw response headers as a multi-map |\n\nIt also provides:\n\n- `metadata.headerValues(name)`\n- `metadata.firstHeaderValue(name)`\n\nExample:\n\n```js\nconst response = await client.lookupIpGeolocation({\n  ip: \"8.8.8.8\",\n});\n\nconsole.log(response.metadata.statusCode);\nconsole.log(response.metadata.durationMs);\nconsole.log(response.metadata.firstHeaderValue(\"x-ratelimit-remaining\"));\n```\n\n## JSON Helpers\n\nUse `toJson()` or `toPrettyJson()` when you want a stable JSON view of SDK objects.\n\n```js\nimport { toPrettyJson } from \"ip-geolocation-api-javascript-sdk\";\n\nconst response = await client.lookupIpGeolocation({\n  ip: \"8.8.8.8\",\n});\n\nconsole.log(toPrettyJson(response.data));\n```\n\n## Error Handling\n\nAll SDK errors extend `IpGeolocationError`.\n\nRuntime and validation errors:\n\n- `ValidationError`\n- `SerializationError`\n- `TransportError`\n- `RequestTimeoutError`\n\nAPI errors:\n\n- `ApiError`\n- `BadRequestError`\n- `UnauthorizedError`\n- `NotFoundError`\n- `MethodNotAllowedError`\n- `PayloadTooLargeError`\n- `UnsupportedMediaTypeError`\n- `LockedError`\n- `RateLimitError`\n- `ClientClosedRequestError`\n- `ServerError`\n\n`ApiError` and its subclasses expose:\n\n- `statusCode`\n- `apiMessage`\n\nExample:\n\n```js\nimport {\n  IpGeolocationClient,\n  RateLimitError,\n  UnauthorizedError,\n} from \"ip-geolocation-api-javascript-sdk\";\n\nconst client = new IpGeolocationClient({\n  apiKey: process.env.IPGEO_API_KEY,\n});\n\ntry {\n  const response = await client.lookupIpGeolocation({\n    ip: \"8.8.8.8\",\n  });\n  console.log(response.data.location?.countryName);\n} catch (error) {\n  if (error instanceof UnauthorizedError) {\n    console.error(error.apiMessage);\n  } else if (error instanceof RateLimitError) {\n    console.error(\"Rate limit reached\");\n  } else {\n    throw error;\n  }\n} finally {\n  await client.close();\n}\n```\n\n## Troubleshooting\n\n### `ValidationError: single lookup requires apiKey or requestOrigin in client config`\n\nSet either `apiKey` or `requestOrigin` when creating the client.\n\n### `ValidationError: bulk lookup requires apiKey in client config`\n\nBulk lookup always requires `apiKey`, even if `requestOrigin` is set.\n\n### `UnauthorizedError` on domain lookup, optional modules, or non-English `lang`\n\nThose features require a paid plan. Free plans only support the base single-lookup response.\n\n### XML output does not work with typed methods\n\nUse `lookupIpGeolocationRaw(...)` or `bulkLookupIpGeolocationRaw(...)` with `output: \"xml\"`.\n\n### `ValidationError: client is closed`\n\nCreate a new client after calling `close()`. Closed clients cannot be reused.\n\n### `RequestTimeoutError`\n\nIncrease `connectTimeoutMs` or `readTimeoutMs` if your environment needs longer network time.\n\n## Frequently Asked Questions\n\n<details>\n<summary><strong>Can I use this SDK in the browser?</strong></summary>\nYes, if your runtime provides `fetch`. Do not expose `apiKey` in frontend code. For browser single lookups on paid plans, use `requestOrigin`.\n</details>\n\n<details>\n<summary><strong>Does the SDK retry failed requests?</strong></summary>\nNo. Timeouts, rate limits, and server errors are raised directly. Add your own retry policy outside the SDK if you need one.\n</details>\n\n<details>\n<summary><strong>Can I pass custom headers?</strong></summary>\nYes. Use `headers` with a plain object, `Headers`, `Map`, or an iterable of `[name, value]` pairs.\n</details>\n\n<details>\n<summary><strong>Does `userAgent` do the same thing as `headers[\"User-Agent\"]`?</strong></summary>\nAlmost. Both affect the outbound `User-Agent` header, but `userAgent` takes precedence when both are set.\n</details>\n\n<details>\n<summary><strong>Can I use request-origin auth with bulk lookup?</strong></summary>\nNo. Bulk lookup always requires `apiKey`.\n</details>\n\n<details>\n<summary><strong>Do typed methods support XML?</strong></summary>\nNo. Typed methods require JSON. Use raw methods if you need XML.\n</details>\n\n## Related Packages\n\n- TypeScript runtime SDK: `ip-geolocation-api-sdk-typescript`\n- TypeScript types-only package: `ip-geolocation-api-typescript-types`\n\n## Links\n\n- [npm package](https://www.npmjs.com/package/ip-geolocation-api-javascript-sdk)\n- [GitHub repository](https://github.com/IPGeolocation/ip-geolocation-api-javascript-sdk)\n- [API documentation](https://ipgeolocation.io/documentation/ip-location-api.html)\n- [Pricing](https://ipgeolocation.io/pricing.html)\n- [Authentication](https://ipgeolocation.io/documentation/api-authentication.html)\n- [Response formats](https://ipgeolocation.io/documentation/api-response-formats.html)\n","readmeFilename":"README.md","keywords":["ipgeolocation","geolocation","ip","ip-location","ip-geolocation","ip-lookup","api","sdk","javascript","nodejs","fetch","timezone","hostname","user-agent","asn","security","vpn-detection","proxy-detection","bulk-lookup"]}