{"_id":"@supercharge/request-ip","_rev":"5-e948a5c50420e96220d56e34ddcf63eb","name":"@supercharge/request-ip","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@supercharge/request-ip","description":"Retrieve a request’s IP address in Node.js","version":"1.0.0","author":{"name":"Marcus Pöhls","email":"marcus@superchargejs.com"},"bugs":{"url":"https://github.com/supercharge/request-ip/issues"},"dependencies":{},"devDependencies":{"@hapi/code":"~8.0.2","@hapi/lab":"~23.0.0","@supercharge/tsconfig":"~1.0.0","@typescript-eslint/eslint-plugin":"~3.8.0","eslint":"~7.6.0","eslint-config-standard-with-typescript":"~18.0.2","eslint-plugin-import":"~2.22.0","eslint-plugin-node":"~11.1.0","eslint-plugin-promise":"~4.2.1","eslint-plugin-standard":"~4.0.1","typescript":"~3.9.7"},"homepage":"https://github.com/supercharge/request-ip","keywords":["nodejs","request","ip","request-ip","supercharge","superchargejs"],"license":"MIT","main":"index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/supercharge/request-ip.git"},"scripts":{"build":"tsc","lint":"eslint src --ext .js,.ts","lint:fix":"eslint . --fix","list:tests":"lab --assert @hapi/code --dry --verbose","test":"npm run build && npm run lint && npm run test:run","test:run":"lab --assert @hapi/code --leaks --coverage --reporter console --output stdout --reporter html --output ./coverage/coverage.html","test:single":"lab --assert @hapi/code --leaks --lint --id"},"types":"dist","gitHead":"aaa5697915bb8e7d4b96b49c04ee73dcb1ff2406","_id":"@supercharge/request-ip@1.0.0","_nodeVersion":"12.17.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-9602+TvLqiUIgt1iomN0eZMlX7NsFu+MuUg6Y4AovgI9tX41kaxat3JnEjKWoFzBIgiTcEaXrd6UESImNVBYRA==","shasum":"11e975772b71e6460b955153333e37ae08432ae8","tarball":"https://registry.npmjs.org/@supercharge/request-ip/-/request-ip-1.0.0.tgz","fileCount":11,"unpackedSize":23766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKWIgCRA9TVsSAnZWagAAdbsP/RD9IbqnYYHHqYNUGR1/\nC01/WHnsJ/GBxmKya+vBAx1gqLOXvnLaxjSWQxchgHTjdUxzx+exPGPQp7XP\nEDheOGorHWBpo/ftDa/rDnAkIRFIhoIQrF5+QxjG4GvuX8Mn3AeqUqhjAGvI\nnb/YgwbULbfuWye/iApQ/AHSWcByZ5QsRwYZvLeEc9SHQ9F0umHpLC8oO6Qv\nWTj6O25U05Tb4v+bJh2H+bF/vc/31nIpFO0XDv8Tbgc9hZt+sC6Vl1jPpVQd\niRG+RkvNi62ygKinrsXMhy1DOvU3FdrT2FD8LOxV/iM25PPwkpeAOgRsU2qQ\nepjGpwktEfvYcQIUD4hF9tlYYLzYrpJY2g5UyvDbJndlPxgqU5Kgu1aBRBJd\n5fZcAJrALql6iATxWoSbLI/ISVeuZf+Yp8dcM4SCTtf/Fjd/J7kV78Wc1oUw\nj4Uheh7+mIotOJ0aNAD8wYhTdIF0HwwXuweGTa8j7h8KCVKZVfKMn3WXhbcY\ngxfCLwy0/K7FLL4kbBAiBVTW2d92BzKQl/AglvHGGjoMMtsxG3ulTgk86KpP\nx5LX06ydcG9act6s+pG+9uVsaPjh7XQCw/aHS6Rvh1j0UU51OmlpxZJVMVJ/\n5v6SD6IsGKmNLnPslZRWICFN+BVN5RUKpcYunQ+zIodaDrTEIcbHgbpl5Uho\nXyJ3\r\n=vUyt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmrnHkQsxU+L619MzzLWF+3xIdLyRozu+ZLPRXqPdnBgIhANHTxkwuXCKSO0o7MsV1ezDs4qPklBYdSzKnfHTHIE1t"}]},"maintainers":[{"name":"celsiusf","email":"christian.fellner@outlook.com"},{"name":"peitek","email":"norman@peitek.com"},{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"}],"_npmUser":{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-ip_1.0.0_1596547615500_0.04531739425752157"},"_hasShrinkwrap":false},"1.1.0":{"name":"@supercharge/request-ip","description":"Retrieve a request’s IP address in Node.js","version":"1.1.0","author":{"name":"Marcus Pöhls","email":"marcus@superchargejs.com"},"bugs":{"url":"https://github.com/supercharge/request-ip/issues"},"dependencies":{},"devDependencies":{"@hapi/code":"~8.0.2","@hapi/lab":"~23.0.0","@supercharge/tsconfig":"~1.0.0","@typescript-eslint/eslint-plugin":"~3.8.0","eslint":"~7.6.0","eslint-config-standard-with-typescript":"~18.0.2","eslint-plugin-import":"~2.22.0","eslint-plugin-node":"~11.1.0","eslint-plugin-promise":"~4.2.1","eslint-plugin-standard":"~4.0.1","typescript":"~3.9.7"},"homepage":"https://github.com/supercharge/request-ip","keywords":["nodejs","request","ip","request-ip","supercharge","superchargejs"],"license":"MIT","main":"index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/supercharge/request-ip.git"},"scripts":{"build":"tsc","lint":"eslint src --ext .js,.ts","lint:fix":"eslint . --fix","list:tests":"lab --assert @hapi/code --dry --verbose","test":"npm run build && npm run lint && npm run test:run","test:run":"lab --assert @hapi/code --leaks --coverage --reporter console --output stdout --reporter html --output ./coverage/coverage.html","test:single":"lab --assert @hapi/code --leaks --lint --id"},"types":"dist","gitHead":"72d26fb2667a71916a5e624d6f28f32b1206a17c","_id":"@supercharge/request-ip@1.1.0","_nodeVersion":"12.17.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-vb6N9ck3pfRlRPHDOfCGeO0ctDwYrF0Hab52oDeMjOl3W/VSQQqpw9TIRXb6jVe4JlMX/vHq1MHYDkuDLPW0fw==","shasum":"3512f51c7fd9380a85ccdab6a491ea0f2f5f6752","tarball":"https://registry.npmjs.org/@supercharge/request-ip/-/request-ip-1.1.0.tgz","fileCount":11,"unpackedSize":23980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMpjaCRA9TVsSAnZWagAAiTQP/jRSZ/dYWMeXYbOIomO0\nOBhT4U9102FFwRJwkV0dk7ZUdNUU0XcarFnN0C7T4x/tcyrcgRBsdz1jjNDq\nfd2oqDQTgi8whEgSOc1lgAmLiVzmp3OIu1w8zxjkItFb1Rjpp4S1IkiMAC8S\nRp4ooaXoRFfZR2tJcW88qn3xO6v4mEF0Ij7BQPmi20OcQInuQ/O9iShqum0n\n2cMQn5imZU3V0ZC8LtA4dxaLjmCbGVRxsNRpb5U/PLvfiYOQtIv3Oj9KYMEA\n8Do+NSZyKC2vFN8rEsh2UwG5m0USYXiQqMw4Cv2kLzH9Oqo/brgi1X5SreoJ\nQbXPwmNXM3w2TS0YXOpIzTXc+tFE4TUqXgKRaEGZCt/Dyf9afsT5Ynsez1pe\nSrA/PVgWGc5eHBb0tjrdhyonvLwn75fP9mSt8GEFfXuasZ9TpVPiz6+tpNbz\n+KcpFTintiCfknVKtYbqbzxBmuEnW0mwUXSeVodR0DHTC/Wz2Lz3UkC0fKov\nhY/7KF454gCJeCOYpbNzY3YN7rsLlNLEkRSjStm/4qt+kjKSiM//FX+RR7he\n5PDbHdMCN57TqjROtW0C2tosdRW4AfI2jecxlA3LNyMoBkW2KA0RfctcocgF\npABNIcEWxp7V7PIgWR1TtheONSk+Rkobg6no7Nsz7lRjRvAJ0g1Rv+tXsZHd\nU20K\r\n=hN5P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC//amNwdqg5iaNhLVuO+2LQQVKvZZrz0oEtVdTe7gviAiEAh7VkqhBDaZJ6JwfQgHYrZas0QiH53+DeMydxvMCDGK4="}]},"maintainers":[{"name":"celsiusf","email":"christian.fellner@outlook.com"},{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},{"name":"peitek","email":"norman@peitek.com"}],"_npmUser":{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-ip_1.1.0_1597151450133_0.3852067600854825"},"_hasShrinkwrap":false},"1.1.1":{"name":"@supercharge/request-ip","description":"Retrieve a request’s IP address in Node.js","version":"1.1.1","author":{"name":"Marcus Pöhls","email":"marcus@superchargejs.com"},"bugs":{"url":"https://github.com/supercharge/request-ip/issues"},"dependencies":{},"devDependencies":{"@hapi/code":"~8.0.2","@hapi/lab":"~23.0.0","@supercharge/tsconfig":"~1.0.0","@typescript-eslint/eslint-plugin":"~3.8.0","eslint":"~7.6.0","eslint-config-standard-with-typescript":"~18.0.2","eslint-plugin-import":"~2.22.0","eslint-plugin-node":"~11.1.0","eslint-plugin-promise":"~4.2.1","eslint-plugin-standard":"~4.0.1","typescript":"~3.9.7"},"homepage":"https://github.com/supercharge/request-ip","keywords":["nodejs","request","ip","request-ip","supercharge","superchargejs"],"license":"MIT","main":"index.js","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/supercharge/request-ip.git"},"scripts":{"build":"tsc","lint":"eslint src --ext .js,.ts","lint:fix":"eslint . --fix","list:tests":"lab --assert @hapi/code --dry --verbose","test":"npm run build && npm run lint && npm run test:run","test:run":"lab --assert @hapi/code --leaks --coverage --reporter console --output stdout --reporter html --output ./coverage/coverage.html","test:single":"lab --assert @hapi/code --leaks --lint --id"},"types":"dist","gitHead":"9e6b8dd1a4b9b8b474a878edc116c61737a6c88f","_id":"@supercharge/request-ip@1.1.1","_nodeVersion":"12.17.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-HmT3Vz5pnVkSWf7ANWRyNXo9UsOcUIGcu2h9N8DNkxof6eI/4GCGRuRumDFn19ldNGg4MV+AfdVitJVoSanFyw==","shasum":"6e3a560d9bf7248d20526a9c0c151d2e92163831","tarball":"https://registry.npmjs.org/@supercharge/request-ip/-/request-ip-1.1.1.tgz","fileCount":11,"unpackedSize":24057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMrN4CRA9TVsSAnZWagAAguwQAJLQgbiVxGn3Cs0/BeBp\nL9Fzi8nsSrZxAiDld3Ca0EultJPK/ll6zd5XuYgQ5t1HBGQ1ZxKuTM4CH8Hz\nBFJJnAk+oQqAiYPveGKveetgCrrHPSNBIP7n0mWuZ20wSFRsXU0MLPzhL40/\n9IoBkE37fH/VOXMY9OYV6SwCIzj1KMNzSGJqRNXU66zDS7iPyJDofzztBL4h\nOaayyKsYf1dH6nt40jbiDaBNSCE56E3WOzOXAFLmFgF9t3pUm+WVp4Sv1ppZ\n1L3ENdGY9xah0TO9SffTGHXq61aCsfIckcz58Pumocp4Gq0OaEZhCD1OT3IF\nP8kp9tOlRKG5+iocGT4T3npSW4ZM27pbkksHJia7AEpIMJKn21IkFWjCVd2i\nie9PwfYLVFs7uA09XjKAx9ZF7qhv8wunHjf2GzfYmmffQPN8JlQ5iZHptNUQ\nsE2FzTlgKKuAOvA4ZdLjQ6rmEICwIY++T4ssyKUm/xat1RH6UnHAQT1p2KiP\naJaFXYxOKscnsfX5bDYOMxJJQ8QTiNh1misSvf3awwqVJKdroJFp0bvO0MdO\na8j2MIfWYufJB9YW3O0WNU28cHeSPHiskZBD3YcpjJXsNWlzjj6c1xqZRFqL\nx1v+MQXiMamOdFWexKTMrbGMIYB/4to6ccaH6gfcInM2Q/CFrCH2gOULk7p4\niejm\r\n=5evO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKH+oUrZSLw7RHAgY/O/TUFn9gxeWFlFjWlOglVUYv4gIhAK4kF8WT/DSzmDcSwVeE33GrV7QCYO7ZnpZ68L2KI7qt"}]},"maintainers":[{"name":"celsiusf","email":"christian.fellner@outlook.com"},{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},{"name":"peitek","email":"norman@peitek.com"}],"_npmUser":{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-ip_1.1.1_1597158263896_0.7906587587482905"},"_hasShrinkwrap":false},"1.1.2":{"name":"@supercharge/request-ip","description":"Retrieve a request’s IP address in Node.js","version":"1.1.2","author":{"name":"Marcus Pöhls","email":"marcus@superchargejs.com"},"bugs":{"url":"https://github.com/supercharge/request-ip/issues"},"dependencies":{},"devDependencies":{"@hapi/code":"~8.0.2","@hapi/lab":"~23.0.0","@supercharge/tsconfig":"~1.0.0","@typescript-eslint/eslint-plugin":"~3.9.1","eslint":"~7.7.0","eslint-config-standard-with-typescript":"~18.0.2","eslint-plugin-import":"~2.22.0","eslint-plugin-node":"~11.1.0","eslint-plugin-promise":"~4.2.1","eslint-plugin-standard":"~4.0.1","typescript":"~4.0.2"},"homepage":"https://github.com/supercharge/request-ip","keywords":["nodejs","request","ip","request-ip","supercharge","superchargejs"],"license":"MIT","main":"dist","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/supercharge/request-ip.git"},"scripts":{"build":"tsc","lint":"eslint src --ext .js,.ts","lint:fix":"eslint . --fix","list:tests":"lab --assert @hapi/code --dry --verbose","test":"npm run build && npm run lint && npm run test:run","test:run":"lab --assert @hapi/code --leaks --coverage --reporter console --output stdout --reporter html --output ./coverage/coverage.html","test:single":"lab --assert @hapi/code --leaks --lint --id"},"types":"dist","gitHead":"7fc42760509ae5fdd1aa0ef8d58db010227cea70","_id":"@supercharge/request-ip@1.1.2","_nodeVersion":"12.17.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mtryG/uiSIVT0ga8A/F9hNEuBSbDxW7/m9PEtxIHqdkE/vr766m17mtLPhrXA4q4T+Qw44+33mg3Rtkl7o+OvQ==","shasum":"be9083aa50d3c6fc200f3ed5919e0b9c13fc8842","tarball":"https://registry.npmjs.org/@supercharge/request-ip/-/request-ip-1.1.2.tgz","fileCount":10,"unpackedSize":24345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP6TYCRA9TVsSAnZWagAAmGgP+wSLL2ptnBIcqab9jvMo\nxrJo0O0NAvL8meIsnuvIMDRrkZmhXEdZV2wt5FqnOI6T4Vg3xWsGADlPbZ1m\npqY8C7S0i2sCv8KNd+t45E4P2Jim8DcQxMCW2UBmjUIrMbHLHfZ6ZXOzfvI8\n/+5dxmPeeDcTi+7cV1Tz+NItFmqUXxwGnV/pLNtL48hn2B+6cx+37GjV+hYE\nfWzCAXz9OEqQZsN02eShEV7cPeX+FzkmHx5pJ+BV6VyYCXJB2jd4KuWRb8Qa\nBqjzLeNDEgpwqH2PNNxsyW/4sxurivf+guwI80047Hy+XSD5f7HYxkKlXWHS\nBj/5Ewp1WQKhqA2X7iRXTOYdCvC7Ng3vNiovFp3b03MuKQaAP/RyP5WDaIP9\nfnvtaP4fAbjbUH6zIh7nPHzZ91Lt/dco1U04ktJ4SQHfKuzXyM7UJzzDHWfg\nd7Q1QgSGIRO48tzQM1k4bhynKA45YDftTI9BpH19N1QvSsaID8Ogy0X0q3Kj\nw4qHEL5EfFfcQujmWlwdi2F9uqb9P1+j+54cqjxqnIj4v5cKnYDepJdjLXl9\nbSt9Z1st51XBpfLIuGlIlx+XXDIxq43/i2T+fjh4i9u7vCz3V1FmCvbZwoj2\nr1PwDDsSHjWHuHkOsJHIwAgDwKk//H+1SQI0sjHqkl1Uxy7qkA879RUIIICQ\nQShX\r\n=L9SC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFemc20mtlEUZzOXwpb9hMi7P1XCJiSNDAZ2e0npMgvtAiBCxa75PAFP/dkH6HDuld96xKy9YDK7dgsqKCpFfuovQQ=="}]},"maintainers":[{"name":"celsiusf","email":"christian.fellner@outlook.com"},{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},{"name":"peitek","email":"norman@peitek.com"}],"_npmUser":{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-ip_1.1.2_1598006487882_0.20397199912017294"},"_hasShrinkwrap":false},"1.2.0":{"name":"@supercharge/request-ip","description":"Retrieve a request’s IP address in Node.js","version":"1.2.0","author":{"name":"Marcus Pöhls","email":"marcus@superchargejs.com"},"bugs":{"url":"https://github.com/supercharge/request-ip/issues"},"devDependencies":{"@supercharge/tsconfig":"~2.0.0","@types/jest":"~27.4.1","@typescript-eslint/eslint-plugin":"~4.29.2","eslint":"~7.32.0","eslint-config-standard-with-typescript":"~21.0.1","eslint-plugin-import":"~2.24.1","eslint-plugin-node":"~11.1.0","eslint-plugin-promise":"~5.1.0","jest":"~27.5.1","typescript":"~4.4.4"},"homepage":"https://github.com/supercharge/request-ip","keywords":["nodejs","request","ip","request-ip","supercharge","superchargejs"],"license":"MIT","main":"dist","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/supercharge/request-ip.git"},"scripts":{"build":"tsc","lint":"eslint src --ext .js,.ts","lint:fix":"npm run lint --fix --fix","test":"npm run build && npm run lint && npm run test:run","test:run":"jest"},"types":"dist","gitHead":"2b93a08825ead96c8d1aa93887e70f4322eda7bd","_id":"@supercharge/request-ip@1.2.0","_nodeVersion":"14.17.1","_npmVersion":"8.5.1","dist":{"integrity":"sha512-wlt6JW69MHqLY2M6Sm/jVyCojNRKq2CBvwH0Hbx24SFhDQQGkgEjeKxVutDxHSyrWixFaOSLXC27euzxijhyMQ==","shasum":"b8a8164322e09de3fa9b6f556885795c4841a7d4","tarball":"https://registry.npmjs.org/@supercharge/request-ip/-/request-ip-1.2.0.tgz","fileCount":9,"unpackedSize":23297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJfCoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdiA/9HwKvzEYL8+Cc56O8yS4MYMa5JQUQZDqeEsuzXeuaZve/7Oib\r\nuOzUI1YWQnJZetG/Y3j+etl3EkDsW3VSIaPjwM/stpAXolO2W0tpzwD57KqH\r\nd7ojczLV6i7/cvYs6jt+8imXhWwHuoMoDkaguU2p665xhjpMzEcQNdZe1Rtx\r\noXtU3Yf+GH/6E4tzhySe61p+ItqK8isEtADchIV/4hzd/hh0FM0FT1h8i2SO\r\nWQ4JyKn4rgYADomWxG7Kwzf00K2a7AdnEk2aZtLTr5uRk7cMz2xXWMk1Mk2l\r\n4Y21Nl49sk2CBf80+IijHIrKA5CxzVvPbGUgiY92tga6l8Td6pq1bsmizzY7\r\n5aB+V7zaajEZFMXECLaymQ4sLtDkbTfqcli6P5AA+Y+ErrXJwWoC7g1has1X\r\nughKxT0rHfZxmLFJmtDg2Un/Peg+IdxKhxzNV37kHGzAXCYskmPcbPOjH/ZO\r\nN6atGt3x6QEb3HlcvSNEutZiHDMsKLNW9YVW7+R1lQPhiTF8muROslAefcaR\r\nqa6QFf17pge6ydH9v2m7Eo+XTe+QhhwwsBAagvdpZoFg3NHJYcUzQGWIC4+D\r\nO08lbb0IFjDQl5rNTCb95cBkvSNfJwcGz79ZY3/jRC0lMkqvxYJ5065+2dJi\r\nMsVdtadiVceQOIWsU6CrYmduOOueh0wiudM=\r\n=duDY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCV+O5OmgYojPKTWO5nePEPNfpG4j4AJ16KxxK98pKawIhAMliDUtFo/yh82EwDIrgfrjZZtaDTF50t4/QkiF1dXAF"}]},"_npmUser":{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},"directories":{},"maintainers":[{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},{"name":"peitek","email":"norman@peitek.com"},{"name":"celsiusf","email":"christian.fellner@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/request-ip_1.2.0_1646653607997_0.12207937218013387"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-04T13:26:55.329Z","1.0.0":"2020-08-04T13:26:55.659Z","modified":"2022-04-07T03:19:57.705Z","1.1.0":"2020-08-11T13:10:50.231Z","1.1.1":"2020-08-11T15:04:24.056Z","1.1.2":"2020-08-21T10:41:28.103Z","1.2.0":"2022-03-07T11:46:48.113Z"},"maintainers":[{"name":"marcuspoehls","email":"marcus.poehls@gmail.com"},{"name":"peitek","email":"norman@peitek.com"},{"name":"celsiusf","email":"christian.fellner@outlook.com"}],"description":"Retrieve a request’s IP address in Node.js","homepage":"https://github.com/supercharge/request-ip","keywords":["nodejs","request","ip","request-ip","supercharge","superchargejs"],"repository":{"type":"git","url":"git+https://github.com/supercharge/request-ip.git"},"author":{"name":"Marcus Pöhls","email":"marcus@superchargejs.com"},"bugs":{"url":"https://github.com/supercharge/request-ip/issues"},"license":"MIT","readme":"<div align=\"center\">\r\n  <a href=\"https://superchargejs.com\">\r\n    <img width=\"471\" style=\"max-width:100%;\" src=\"https://superchargejs.com/images/supercharge-text.svg\" />\r\n  </a>\r\n  <br/>\r\n  <br/>\r\n  <p>\r\n    <h3>Request IP</h3>\r\n  </p>\r\n  <p>\r\n    Retrieve a request’s IP address\r\n  </p>\r\n  <br/>\r\n  <p>\r\n    <a href=\"#installation\"><strong>Installation</strong></a> ·\r\n    <a href=\"#usage\"><strong>Usage</strong></a> ·\r\n    <a href=\"#detecting-the-ip-address\"><strong>Detecting the IP Address</strong></a>\r\n  </p>\r\n  <br/>\r\n  <br/>\r\n  <p>\r\n    <a href=\"https://www.npmjs.com/package/@supercharge/request-ip\"><img src=\"https://img.shields.io/npm/v/@supercharge/request-ip.svg\" alt=\"Latest Version\"></a>\r\n    <a href=\"https://www.npmjs.com/package/@supercharge/request-ip\"><img src=\"https://img.shields.io/npm/dm/@supercharge/request-ip.svg\" alt=\"Monthly downloads\"></a>\r\n  </p>\r\n  <p>\r\n    <em>Follow <a href=\"http://twitter.com/marcuspoehls\">@marcuspoehls</a> and <a href=\"http://twitter.com/superchargejs\">@superchargejs</a> for updates!</em>\r\n  </p>\r\n</div>\r\n\r\n---\r\n\r\n## Introduction\r\nThe `@supercharge/request-ip` package provides a function to retrieve a request’s IP address.\r\n\r\n\r\n## Installation\r\n\r\n```\r\nnpm i @supercharge/request-ip\r\n```\r\n\r\n\r\n## Usage\r\n\r\n```js\r\nconst RequestIp = require('@supercharge/request-ip')\r\n\r\nconst ip = RequestIp.getClientIp(request)\r\n\r\n// for example '213.211.254.97' as an IP v4 address\r\n// or '2001:0db8:85a3:0000:0000:8a2e:0370:7334' as an IP v6 address\r\n// or 'undefined' if no IP address is available on the given request\r\n```\r\n\r\nDepending on your used web framework, you may use it in a middleware or route handler:\r\n\r\n\r\n**simple Express example**\r\n\r\n```js\r\nconst { getClientIp } = require('@supercharge/request-ip')\r\n\r\nconst expressMiddleware = function (req, res, next) {\r\n  req.ip = getClientIp(req)\r\n\r\n  next()\r\n}\r\n```\r\n\r\n**simple hapi route handler example:**\r\n\r\n```js\r\nconst Hapi = require('@hapi/hapi')\r\nconst { getClientIp } = require('@supercharge/request-ip')\r\n\r\nconst server = new Hapi.Server({\r\n  host: 'localhost'\r\n})\r\n\r\nserver.route({\r\n  method: 'GET',\r\n  path: '/login',\r\n  handler: (request, h) => {\r\n    const ip = getClientIp(request)\r\n\r\n    return h.response(ip)\r\n  }\r\n})\r\n```\r\n\r\n\r\n## Detecting the IP Address\r\nThe client’s IP address may be stored in different locations of the request instance varying between services.\r\n\r\nHere’s the order of locations in which the packages searches for the requesting IP address:\r\n\r\n1. Checks HTTP request headers\r\n    1. `x-forwarded-for`: this header may contain multiple IP address for (client/proxies/hops). This package extracts and returns the first IP address.\r\n    2. `x-forwarded`, `forwarded`, `forwarded-for` as variants from `x-forwarded-for` possibly configured by proxies\r\n    3. `x-client-ip` possibly configured by nginx\r\n    4. `x-real-ip` possibly configured in nginx\r\n    5. `cf-connecting-ip` from Cloudflare\r\n    6. `fastly-client-ip` from Fastly and Firebase\r\n    7. `true-client-ip` from Akamai and Cloudflare\r\n    8. `x-cluster-client-ip` from Rackspace\r\n2. Checks the HTTP connection in `request.connection` and `request.connection.socket`\r\n3. Checks the HTTP socket in `request.socket`\r\n4. Checks the HTTP info in `request.info`\r\n5. Checks the raw HTTP request instance in `request.raw`\r\n6. Checks the request context used by AWS API Gateway/Lambda in `request.requestContext`\r\n\r\n\r\n## Credits\r\nA huge thank you to [Petar Bojinov](https://github.com/pbojinov) for his [request-ip](https://github.com/pbojinov/request-ip) package. I was using Petar’s package for two years in my [hapi-rate-limitor](https://github.com/futurestudio/hapi-rate-limitor) plugin. It seems Petar is busy with other work and I felt the need to create my own package providing the functionality to retrieve a request’s IP address.\r\n\r\n\r\n## Contributing\r\nDo you miss a way to find the request’s IP? We very much appreciate your contribution! Please send in a pull request 😊\r\n\r\n1.  Create a fork\r\n2.  Create your feature branch: `git checkout -b my-feature`\r\n3.  Commit your changes: `git commit -am 'Add some feature'`\r\n4.  Push to the branch: `git push origin my-new-feature`\r\n5.  Submit a pull request 🚀\r\n\r\n\r\n## License\r\nMIT © [Supercharge](https://superchargejs.com)\r\n\r\n---\r\n\r\n> [superchargejs.com](https://superchargejs.com) &nbsp;&middot;&nbsp;\r\n> GitHub [@supercharge](https://github.com/supercharge/) &nbsp;&middot;&nbsp;\r\n> Twitter [@superchargejs](https://twitter.com/superchargejs)\r\n","readmeFilename":"README.md"}