{"_id":"@silentbot1/nat-api","_rev":"10-71492df7ff12c9eba159ea7ca594c16a","name":"@silentbot1/nat-api","dist-tags":{"latest":"0.4.9"},"versions":{"0.4.0":{"name":"@silentbot1/nat-api","version":"0.4.0","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.0","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"47b7ec1acfb8ad2e2386715efa0aa526b921dab4","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.0.tgz","fileCount":20,"integrity":"sha512-mF62qa7/gbYEV9dXJM97lChm+lWLCcFLQFuTCdAN1L6YOxPTlxsrzWd2+ShxKOudXY+7efEbMqt4aOglLy1IMw==","signatures":[{"sig":"MEQCIHQhFVgok9yjads5etk6jVhObNnd2uzNH35nITW8FXJfAiAR7rAOyeFAvnAOALWpcIAcVkd/vtLAqN5/84jmt27MdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49882},"main":"index.js","engines":{"node":">=10.0.0"},"gitHead":"dd103d2d979057dbacd546efeaeab1031a2649da","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"async":"^3.2.4","debug":"^4.3.4","xml2js":"^0.5.0","node-fetch":"^2.6.9","default-gateway":"^6.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.0_1685904115940_0.7720065045937274","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@silentbot1/nat-api","version":"0.4.1","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.1","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"951f353de37703b62696adf74d8f44d3b5271baf","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.1.tgz","fileCount":20,"integrity":"sha512-/aFrS3rMvbU8oZ3fsoAHc6A99iBAYDHUJcin4TddaPCQsMCWcrf/UrtzUXPU9w8VKDSfu/JGJXTeJ08cWevypQ==","signatures":[{"sig":"MEUCIFDMJVag362ZUGeRIlkoN5eHbowilzhKkC4rzqoPkwgmAiEAvZMluCOW9Ltjl800Cd+qOV0qmSetYXoR/VHysidqR64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50695},"main":"index.js","engines":{"node":">=10.0.0"},"gitHead":"6352b5037d79a2ec3e383946a0d0b153bb6d023e","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"async":"^3.2.4","debug":"^4.3.4","xml2js":"^0.6.0","node-fetch":"^2.6.9","default-gateway":"^6.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.1_1685920015344_0.034735663231289404","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@silentbot1/nat-api","version":"0.4.2","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.2","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"053773d89787cc34be86655a5738dbd88c15a443","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.2.tgz","fileCount":19,"integrity":"sha512-mstYMWURuPeBAl2thsiLnme/KGOdLMDdapwgo7JfebBf24/+dRArgMKgHRPQvCvUvAptB8WzpKIO6U2NNU4SZw==","signatures":[{"sig":"MEYCIQC9FM2JEkv3IONR53d+AFY9LCZjbjrjZIOvoYOjzFEYAAIhAMQ6PNr1L4B/JKK9seA1zerHFGUCzDW4jkKLZrjw9EbG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50853},"main":"index.js","engines":{"node":">=10.0.0"},"gitHead":"6903f5b4dd26cc48eba55b61c2a5afd6c76e9e80","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","xml2js":"^0.6.0","node-fetch":"^2.6.9","default-gateway":"^6.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.2_1686177106105_0.8026334470934302","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"@silentbot1/nat-api","version":"0.4.3","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.3","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"1c509d95503c3c067eb4ccbc74ce77739ab482a4","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.3.tgz","fileCount":19,"integrity":"sha512-GoLkIUrWMfdqVbFkklvlzNxxgZ9G3IXzT8svkaAKc5s32Nq7sVAcKwYXzcV/PrVKwsFxZB8h5ZZgtoi6iIT/fw==","signatures":[{"sig":"MEYCIQCCDbEpHQsU35D75G3la7C41CLnBroit8EmbDMEDY16vgIhAPMMOWhPakkJ0WSOGFmjuDw9tTddyufUxuc8DI+0+nTp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51479},"main":"index.js","engines":{"node":">=10.0.0"},"gitHead":"c360975ded5969c12b44877f5dc2006d8903a81f","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","xml2js":"^0.6.0","node-fetch":"^2.6.9","default-gateway":"^6.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.3_1686181077884_0.8047859340370556","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@silentbot1/nat-api","version":"0.4.4","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.4","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"e6b27a481d6d731528437e31bfdb02a1ace85c41","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.4.tgz","fileCount":19,"integrity":"sha512-ryRIGvcVhBCPV/82kZhep4My8N0k7kMVZndEDn+D/E+AWHPJ2pxCHWzi2+hXR6GhLBwTWz9j1uYRHsGBZ5NPyQ==","signatures":[{"sig":"MEUCIB3YJueKzz4WEaGEgnT7is6GswIg4aWfOowDd3Z0WzMOAiEA3BZP1M+UDrqDRKS2qRgtkB3MGX83+T3npTUL9fthysc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51247},"main":"index.js","type":"module","engines":{"node":">=10.0.0"},"gitHead":"78b11746ec267c4e7a8cfef057d3cb9b6afaa0d1","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","xml2js":"^0.6.0","default-gateway":"^6.0.3","cross-fetch-ponyfill":"^1.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.4_1686484690850_0.7918041679833587","host":"s3://npm-registry-packages"}},"0.4.5":{"name":"@silentbot1/nat-api","version":"0.4.5","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.5","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"40c67d21a7611f2c413c68136d68f333d9ef20ef","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.5.tgz","fileCount":19,"integrity":"sha512-0+0lliQAXz+45T6fCPDqTEghAnztch9rhb5zbxU0OSzOnWE3O4Kn9GKN233qGY5WRc+1WjjXd9IzvnkycpkK2Q==","signatures":[{"sig":"MEUCIQCk+T1GoIWWNHnNUOMnaSzodiR7xyFHi+71db4Is09nWgIgBTBfPTAhTMJfbQiN+bKJ6adLnlHFjuCKqoOvnjveYJM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50960},"main":"index.js","type":"module","engines":{"node":">=10.0.0"},"gitHead":"76ab277e3134f2d295c7b5273187e3bb7c353cd6","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"chromeapp":{"default-gateway":false,"./lib/pmp/index.js":false},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","xml2js":"^0.6.0","default-gateway":"^6.0.3","cross-fetch-ponyfill":"^1.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.5_1686594611310_0.6345871712747937","host":"s3://npm-registry-packages"}},"0.4.6":{"name":"@silentbot1/nat-api","version":"0.4.6","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.6","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"d2f861d7b5be317c66ebd8476655b992582a3685","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.6.tgz","fileCount":19,"integrity":"sha512-TGEGkAHLsXPJM4JN3YjZJReahmTSoNofK2wTqBfbsvm1rrfPELOXA3Yi4YV7FYGtSXdXNIuX18a4AUUn9+gd4Q==","signatures":[{"sig":"MEUCIQDkF+j6eN3cpZTKrzPEPChQTrNyjtX6iCIQbucsqRYHRAIgX4C6OaPzqfAIsAvZSvJconQt2VqMB+B1PQCd5IK4UO0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51020},"main":"index.js","type":"module","engines":{"node":">=10.0.0"},"gitHead":"f3b1a269ca9b5b5cd33ce8c22e8c6681e1bf3aa5","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"chromeapp":{"dgram":"chrome-dgram","default-gateway":false,"./lib/pmp/index.js":false},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","xml2js":"^0.6.0","chrome-dgram":"^3.0.6","default-gateway":"^6.0.3","cross-fetch-ponyfill":"^1.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.6_1686676750897_0.46017504557401234","host":"s3://npm-registry-packages"}},"0.4.7":{"name":"@silentbot1/nat-api","version":"0.4.7","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.7","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"85153ba790b6953449ad862e2d7e7110baf1789e","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.7.tgz","fileCount":20,"integrity":"sha512-6aKXUf4AY6ETBdwjswQOekY6HGj3eZTAUhJx1oYicBqpMJcsphIydEQKp/Hooz6Y070MOI6tD/oT1MgS7bP3Vg==","signatures":[{"sig":"MEUCIQCpVnbHX3XZ49Grqv4vpjfNaYeesqR5h8eyx4LfnZW7pwIgXehhZjJBXXjA4tvHYETyR4SVdUe+vntaanU+fYqdKBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":53120},"main":"index.js","type":"module","engines":{"node":">=10.0.0"},"gitHead":"9a0b0cc21b3207d91bcefcfd4964cd89f0085ef2","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"chromeapp":{"dgram":"chrome-dgram","default-gateway":false,"./lib/pmp/index.js":false},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"9.5.1","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"18.16.0","dependencies":{"debug":"^4.3.4","xml2js":"^0.6.0","chrome-dgram":"^3.0.6","default-gateway":"^6.0.3","cross-fetch-ponyfill":"^1.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.7_1689546324487_0.3408892328021167","host":"s3://npm-registry-packages"}},"0.4.8":{"name":"@silentbot1/nat-api","version":"0.4.8","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","_id":"@silentbot1/nat-api@0.4.8","maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"homepage":"https://github.com/silentbot1/nat-api#readme","bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"dist":{"shasum":"0fc9856fe65bbc34bc47a7222909a05a236a1d95","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.8.tgz","fileCount":10,"integrity":"sha512-DBz/1gGzaYIbUdGTBQ7l4NrI7a+DFZgdZShmjmBGgJR4PvQ64wKNMwle2rrW8pdiOesN+DV6/8ZN/PLuksNyTg==","signatures":[{"sig":"MEUCIF3GCuK+2tH0JyXkF3vdUewJ4zmSZqVNo/1FDPpHJeWJAiEAmqJnIjT028nNFd4RIUnCM0XNjqaMsLvG9qgbujs1ZdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49083},"main":"index.js","type":"module","engines":{"node":">=10.0.0"},"gitHead":"66a821758e0aa718b472fa9d6f3839b3f45852ac","scripts":{"test":"standard"},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"chromeapp":{"dgram":"chrome-dgram","default-gateway":false,"./lib/pmp/index.js":false},"repository":{"url":"git+https://github.com/silentbot1/nat-api.git","type":"git"},"_npmVersion":"10.9.2","description":"Port mapping with UPnP and NAT-PMP","directories":{},"_nodeVersion":"22.14.0","dependencies":{"debug":"^4.4.0","xml2js":"^0.6.2","chrome-dgram":"^3.0.6","default-gateway":"^7.2.2","cross-fetch-ponyfill":"^1.0.3","unordered-array-remove":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"standard":"^17.1.2"},"_npmOperationalInternal":{"tmp":"tmp/nat-api_0.4.8_1744986150004_0.41810087028893994","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"version":"0.4.9","name":"@silentbot1/nat-api","description":"Port mapping with UPnP and NAT-PMP","main":"index.js","type":"module","chromeapp":{"default-gateway":false,"dgram":"chrome-dgram","./lib/pmp/index.js":false},"scripts":{"test":"standard"},"engines":{"node":">=10.0.0"},"dependencies":{"chrome-dgram":"^3.0.6","cross-fetch-ponyfill":"^1.0.3","debug":"^4.4.0","default-gateway":"^7.2.2","unordered-array-remove":"^1.0.2","xml2js":"^0.6.2"},"devDependencies":{"standard":"^17.1.2"},"contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/silentbot1/nat-api.git"},"bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"homepage":"https://github.com/silentbot1/nat-api#readme","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"_id":"@silentbot1/nat-api@0.4.9","gitHead":"9f2096e7cef6ed325cedcf4086b096025a431fe6","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Bm2Fr0sJyGr4B/XgKjQxjGe7Rzs/OlK91OIHsghObxhP3Y4j2y8o7Xjlledu/pxzFEIWaTbZIBSl8ABqoP/WhQ==","shasum":"a9e35940c4ef20c928f524d9cad36d5347362f3d","tarball":"https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.9.tgz","fileCount":21,"unpackedSize":50866,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD3Cz02NgcfIg/XUsBCyjDgvaVM3RlN8oJEsKU4cH2tQAIhAMOMgQNAozeilBy1Eefo9nEfQVI5ac7F9LdzmScZYbCA"}]},"_npmUser":{"name":"silentbot1","email":"SilentBot1@gmail.com"},"directories":{},"maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nat-api_0.4.9_1763418476961_0.140451373010555"},"_hasShrinkwrap":false}},"time":{"created":"2023-06-04T18:41:55.873Z","modified":"2025-11-17T22:27:57.381Z","0.4.0":"2023-06-04T18:41:56.127Z","0.4.1":"2023-06-04T23:06:55.521Z","0.4.2":"2023-06-07T22:31:46.260Z","0.4.3":"2023-06-07T23:37:58.039Z","0.4.4":"2023-06-11T11:58:11.005Z","0.4.5":"2023-06-12T18:30:11.504Z","0.4.6":"2023-06-13T17:19:11.116Z","0.4.7":"2023-07-16T22:25:24.735Z","0.4.8":"2025-04-18T14:22:30.204Z","0.4.9":"2025-11-17T22:27:57.168Z"},"bugs":{"url":"https://github.com/silentbot1/nat-api/issues"},"author":{"name":"SilentBot1","email":"silentbot1@gmail.com"},"license":"MIT","homepage":"https://github.com/silentbot1/nat-api#readme","keywords":["nat","api","upnp","pmp","nat-pmp","holepunch","port","forwarding","map","mapping"],"repository":{"type":"git","url":"git+https://github.com/silentbot1/nat-api.git"},"description":"Port mapping with UPnP and NAT-PMP","contributors":[{"name":"Alex","email":"alxmorais8@msn.com"}],"maintainers":[{"name":"silentbot1","email":"SilentBot1@gmail.com"}],"readme":"# nat-api\r\n\r\n[![NPM Version][nat-api-ni]][nat-api-nu]\r\n[![Build Status][nat-api-bi]][nat-api-bu]\r\n[![Dependency Status][nat-api-di]][nat-api-du]\r\n[![Standard - Javascript Style Guide][standard-image]][standard-url]\r\n\r\nFast port mapping with **UPnP** and **NAT-PMP** in NodeJS.\r\n\r\n## Install\r\n\r\n**Required: NodeJS >= 10**\r\n\r\n```sh\r\nnpm install @silentbot1/nat-api\r\n```\r\n\r\n## Usage\r\n\r\n```js\r\nconst NatAPI = require('nat-api')\r\n\r\n// For NAT-PMP + NAT-UPNP, use:\r\nconst client = new NatAPI({ enablePMP: true, enableUPNP: true })\r\n\r\n// Note: upnpPermanentFallback is disabled by default, meaning leases on routers which only support UPnP permanent leases will fail, this includes RouterOS/Mikrotik, Netgear, and other ISP provided routers. \r\n\r\n// Map public port 1000 to private port 1000 with UDP and TCP\r\nclient.map(1000).then(() => {\r\n  console.log('Port mapped!')\r\n}).catch((err) => {\r\n  return console.log('Error', err)\r\n})\r\n\r\n// Map public port 2000 to private port 3000 with UDP and TCP\r\nclient.map(2000, 3000).then(() => {\r\n  console.log('Port mapped!')\r\n}).catch((err) => {\r\n  return console.log('Error', err)\r\n})\r\n\r\n// Map public port 4000 to private port 5000 with only UDP\r\nclient.map({ publicPort: 4000, privatePort: 5000, ttl: 1800, protocol: 'UDP' }).then(() => {\r\n  console.log('Port mapped!')\r\n}).catch((err) =>{\r\n  return console.log('Error', err)\r\n})\r\n\r\n// Unmap port public and private port 1000 with UDP and TCP\r\nclient.unmap(1000).then(() => {\r\n  console.log('Port unmapped!') \r\n}).catch((err) => {\r\n  return console.log('Error', err)\r\n})\r\n\r\n// Get external IP\r\nclient.externalIp().then((ip) => {\r\n  console.log('External IP:', ip)\r\n}).catch((err) => {\r\n  return console.log('Error', err)\r\n})\r\n\r\n// Destroy object\r\nclient.destroy().then(() => {\r\n  console.log('Client has been destroyed!')\r\n}).catch((err) => {\r\n  return console.log('Error', err)\r\n})\r\n```\r\n\r\n## API\r\n\r\n### `client = new NatAPI([opts])`\r\n\r\nCreate a new `nat-api` instance.\r\n\r\nIf `opts` is specified, then the default options (shown below) will be overridden.\r\n\r\n```js\r\n{\r\n  ttl: 1200, // Time to live of each port mapping in seconds (default: 1200)\r\n  autoUpdate: true, // Refresh all the port mapping to keep them from expiring (default: true)\r\n  gateway: '192.168.1.1', // Default gateway (default: null)\r\n  enablePMP: false, // Enable PMP (default: true)\r\n  enableUPNP: false, // Enable UPNP (default: true)\r\n  upnpPermanentFallback: false // Enable UPNP permanent leases fallback (default: false)\r\n}\r\n```\r\n\r\nIf `gateway` is not set, then `nat-api` will get the default gateway based on the current network interface.\r\n\r\n### `client.map(port): Promise<void>`\r\n* `port`: Public and private ports\r\n\r\nThis method will use `port` for mapping the public port to the same private port.\r\n\r\nIt uses the default TTL and creates a map for UDP and TCP.\r\n\r\n### `client.map(publicPort, privatePort): Promise<void>`\r\n* `publicPort`: Public port\r\n* `privatePort`: Private port\r\n\r\nThis is another quick way of mapping `publciPort` to `privatePort` for both UDP and TCP.\r\n\r\n### `client.map(opts): Promise<void>`\r\n* `opts`:\r\n - `publicPort`: Public port\r\n - `privatePort`: Private port\r\n - `protocol`: Port protocol (`UDP`, `TCP` or `null` for both)\r\n - `ttl`: Overwrite the default TTL in seconds.\r\n - `description`: Description of the port mapping\r\n\r\n### `client.unmap(port): Promise<void>`\r\n\r\nUnmap any port that has the public port or private port equal to `port`.\r\n\r\n### `client.unmap(publicPort, privatePort): Promise<void>`\r\n\r\nUnmap any port that has the public port or private port equal to `publicPort` and `privatePort`, respectively.\r\n\r\n### `client.unmap(opts): Promise<void>`\r\n\r\nUnmap any port that contains the parameters provided in `opts`.\r\n\r\n### `client.externalIp(): Promise<string>`\r\n\r\nGet the external IP address.\r\n\r\n### `client.destroy(): Promise<void>`\r\n\r\nDestroy the client. Unmaps all the ports open with `nat-api` and cleans up large data structure resources.\r\n\r\n## Additional Information\r\n\r\n- http://miniupnp.free.fr/nat-pmp.html\r\n- http://wikipedia.org/wiki/NAT_Port_Mapping_Protocol\r\n- http://tools.ietf.org/html/draft-cheshire-nat-pmp-03\r\n\r\n\r\n## License\r\n\r\nMIT. Copyright (c) [Brad Marsden](https://github.com/silentbot1)\r\n\r\n[nat-api-ni]: https://img.shields.io/npm/v/@silentbot1/nat-api.svg\r\n[nat-api-nu]: https://npmjs.org/package/@silentbot1/nat-api\r\n[nat-api-bi]: https://img.shields.io/github/actions/workflow/status/silentbot1/nat-api/ci.yml?branch=master\r\n[nat-api-bu]: https://github.com/silentbot1/nat-api/actions\r\n[nat-api-di]: https://img.shields.io/librariesio/release/npm/@silentbot1/nat-api\r\n[nat-api-du]: https://libraries.io/npm/@silentbot1%2Fnat-api\r\n[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg\r\n[standard-url]: https://standardjs.com\r\n","readmeFilename":"README.md"}