{"_id":"nat-sampler","_rev":"3-1144eab0f2ae06668d2c31afa134f897","name":"nat-sampler","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.0":{"name":"nat-sampler","version":"0.0.0","description":"Sample addresses to figure out if a host + port is consistent","main":"index.js","dependencies":{},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/nat-sampler.git"},"scripts":{"test":"standard && tape test.js"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/nat-sampler/issues"},"homepage":"https://github.com/mafintosh/nat-sampler","gitHead":"76d99c9298e11322e4e4a3663089959289c25c7f","_id":"nat-sampler@0.0.0","_nodeVersion":"16.1.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-UZ0yGqxImZPFaExhXK8bdXhgm/ZfE0iC4lDgC9GdxwwwQP3XDWHW4Kd3EQxERnNBeV/uA22QIXGwl/JMxYm+qA==","shasum":"ad0a47bddb0e40b3d2fc2dc9bf0b24a0ee158e5e","tarball":"https://registry.npmjs.org/nat-sampler/-/nat-sampler-0.0.0.tgz","fileCount":6,"unpackedSize":7322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+JPLCRA9TVsSAnZWagAAPUIP/2ne6eS+c2AkVKWhXVEA\nTOYaxhxwnaPoR7OWW1pLIb5uOnkmkHYZ/B4Y36JtqiqpZ9xDLO0HLjpr8JJ/\nlyJtBJVqxwY5B90cjmUvi9wPz4+vka6M757MAlUL8vU+ynyzQZToJMGcdtsk\nZ7Wl8w/VK+Lz4totxtaMS6FX+3VadsB066KqZOAtS3KmuUCtyFFD3Cbf12ai\nQkp4NYblVbKgWgTdJb3Taa+khcwp6xcxqPzreM4e56kgx1suZLZ+qA+34rZD\nf0mL5O6/B9IdlYm+4QxtziIOCAykqZeH0BQwwWYiQfC1P9GihOLYF1KByYMt\nJVjTbwmUi1o23B75PmPm84SjYRPllJFQdXBlolbMwEy+tYKNl4RYj7vX45vv\n3cgxHKYoMBOXkPHHzg3PSLfmm9TcP8nhsQjRKLS+ytwyNyiJ8YXmOYoR5MFg\n5KGAEY1aCF6bjb8lOtbntd3Mru4dnwxuPJABL1iavqwh6kOksO5cpSLnhcIo\n1J1KNQOiNy1Jsbw30kVfpkA9o5f8vcDeWKxwORkqr2XhA4MXS4zf/DU4ChQM\nrjPuMWZfJVk5wfPw3NMnNU0l3pfSfhtH2m6v3JqaYU58HoF+sS+87wYN7pKR\nAPBaQXNSWxQxBNRYn5Zwk53lvc8kXLWzRTynos2hhyBZUU48RV8sXgsRW9jz\n+UUS\r\n=Mvpk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQuz7Cb2gnMe9Ud99NFm5nyYN5rNsfoqtgeMKXG2hEhAiEAk+wrMKK3fSmyB0fpNRPzKIamxSF2JiVi6NpB1yLeoGY="}]},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nat-sampler_0.0.0_1626903499373_0.9269442992066577"},"_hasShrinkwrap":false},"1.0.0":{"name":"nat-sampler","version":"1.0.0","description":"Sample addresses to figure out if a host + port is consistent","main":"index.js","dependencies":{},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/nat-sampler.git"},"scripts":{"test":"standard && tape test.js"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/nat-sampler/issues"},"homepage":"https://github.com/mafintosh/nat-sampler","gitHead":"18186b534487421758e9cbcda1955081c5ccdf0e","_id":"nat-sampler@1.0.0","_nodeVersion":"16.1.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-VSC01Cua1r69tXeW1LmQSVnZX1MbqLxWhBxMLHOvaSYAiFXE/F+uRmMgjEP2PQ/DSL4HGFsF/7nN6lHgITGNfg==","shasum":"62188b9ab98a62bb75ad144661baacddf1f80263","tarball":"https://registry.npmjs.org/nat-sampler/-/nat-sampler-1.0.0.tgz","fileCount":6,"unpackedSize":7322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+JPYCRA9TVsSAnZWagAAF/0P/i/THmMukoJA6ax7QbvH\nXxsmNevXifLMkGMuVtv3JJ2F13Uerrt4OzPI74UVcdq1QIhBu5oM49KaY5r3\nXmn7iDeP2MbsX9JkA6O5INKaP4xoMCzQ/ZQOfVVwouLylUWvsyz9J+Oq7+6C\nAh05aHgI7DAAFyyM7HSkOFYlXrif1YggQbO4jB/oiZOFlJxzHVAMouTJwgOX\nW3KugTu9ERSx1XSvJGFYcFSgH/QpgCDvXphDoIKoUXyPxl9omUK8iZzDQxrf\n8xKWeYoC1pZhir+9GIF6Xwns1sNnA/IzTTxjRHKkboyi6GSZnP7ldQ9TW6Mk\nbDSqS7MYxkL7b1gx3C5AfUqma765heQas6TNmSoElT+9ydixEgf4L2pxWovG\n04k+9lqJMNK90a0ZuuM/mHGrPnG7cC1xncLbuBvjFZQUWD9F1srQi8xHAK4N\nbxVMOLRRW8hh2mFDqxddwLSI0dzr+lGWLQZh98RTnUw2qOJ5mseJd2a0t3cD\n6ohd73mRJNfQ5Ml3xDPzDvawwCzrG9CBiH985iqv6VcAw9I/Qvbvh7ElFyBc\nVss/w+h6CH1JceCMWt64CIQKuiYB1BXXCEcJ2JfHunyKo0RFirqDna0LSgrK\nKnsa/pnmmAfDSFV3/3Gtqd94uiG0+WDBMqha33TeUEEIRj/riRw2MNTXXnTj\nUgT/\r\n=7v7i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjuemlHVBbdi0PMhh59CjiWu/K4VE0lNm0TRiSh9/TPQIhAPbNgnHBXaBjV5YZ/RMSPELilgwu9WpFWbpp0ID5PWdR"}]},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nat-sampler_1.0.0_1626903512672_0.7039385186505418"},"_hasShrinkwrap":false},"1.0.1":{"name":"nat-sampler","version":"1.0.1","description":"Sample addresses to figure out if a host + port is consistent","main":"index.js","dependencies":{},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"repository":{"type":"git","url":"git+https://github.com/mafintosh/nat-sampler.git"},"scripts":{"test":"standard && tape test.js"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/nat-sampler/issues"},"homepage":"https://github.com/mafintosh/nat-sampler","gitHead":"6ad6c9abdc07a8cb5dfde581df126f869e470560","_id":"nat-sampler@1.0.1","_nodeVersion":"16.1.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-yQvyNN7xbqR8crTKk3U8gRgpcV1Az+vfCEijiHu9oHHsnIl8n3x+yXNHl42M6L3czGynAVoOT9TqBfS87gDdcw==","shasum":"2b68338ea6d4c139450cd971fd00a4ac1b33d923","tarball":"https://registry.npmjs.org/nat-sampler/-/nat-sampler-1.0.1.tgz","fileCount":6,"unpackedSize":7358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+JVmCRA9TVsSAnZWagAADhsP/3JJNXGnJLeh4jPpmSXM\nQ6N2fXttu6uBuE2FyvKjVHJBHvWDz272hto+PhLcFlW8aGGWp7UJZ9s/8kNP\nDV3FUFwSfoYre9/iykwGMM2NKFl/M8OXf2q6sAjznFGmsUKTVQj6sbdCGNJH\nB6PvnqQHQnsoAo37c1oy20gngMl5c2SPvkU8Pf5iAH99OJwCLw5EgJDpTEqC\nCp5HF3QJ12ySsDF+Pq1bb6JaDPw6AGkXXgiSAs4f38Soxa1StthAyjG76Hp/\nLsHcJ423Oq7y3rnvNUUlknte7F7Rfb5l0oSinuhdBQtmTNzCQfNUHOS/KOtB\nxvdmWIxK+jEJ+WZRvl6Eu4tUX/uAoxS+uRkhuIRnU4yh3dX/21XLUsubdEKq\nHwJ6LxBeZbhoEsGg+shBuzzSiZM2i7hTaVLlpbD6vuEZZZNnf2wpTc5RXue9\nPeXkhmo/B3wo7Hyxzh1iKEsXAHwCKMOJqo8hJ7AvuT+r96LM5fNTX9orBKz1\nMI5EEqIGo/V60sbiibCUSohd5g23qtV+iA3HQJnoG1xveQTSXDiHTCxB75Za\nnzvRL8DB/aG88Y4MY/mEavFiWdLk4Qnl9Ggf2WeQgNkkhOyiSviiZKBZIvxu\nGU5F6f0QJrXjj8dVKuuzyyPi8UUV5VZB5I7kQ5/T+FwSgNfzJE7VBfBUCvlj\nW/HY\r\n=J5vc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdcvFqS3fNIHeGbf8/WKeNpGJPFKt0tXp69WTG1hD2yAiEAy63CoQ469xTYC4DTlMLdeRb+rRSfMlmr1K6lpYkdh1o="}]},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nat-sampler_1.0.1_1626903910246_0.34831946115264056"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-21T21:38:19.373Z","0.0.0":"2021-07-21T21:38:19.562Z","modified":"2022-05-10T09:25:52.445Z","1.0.0":"2021-07-21T21:38:32.782Z","1.0.1":"2021-07-21T21:45:10.916Z"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"description":"Sample addresses to figure out if a host + port is consistent","homepage":"https://github.com/mafintosh/nat-sampler","repository":{"type":"git","url":"git+https://github.com/mafintosh/nat-sampler.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"bugs":{"url":"https://github.com/mafintosh/nat-sampler/issues"},"license":"MIT","readme":"# nat-sampler\n\nSample addresses to figure out if a host + port is consistent\n\n```\nnpm install nat-sampler\n```\n\n## Usage\n\n``` js\nconst NatSampler = require('nat-sampler')\n\nconst s = new NatSampler()\n\n// add a sample\nconst hits = s.add('127.0.0.1', 9090)\n\nconsole.log('In there this many times:', hits)\nconsole.log('Estimated host + port', s.host, s.port)\n```\n\n## API\n\n#### `s = new NatSampler()`\n\nMake a new sampler.\n\n#### `hits = s.add(host, port)`\n\nAdd a sample of your host and port.\nReturns how many hits this entry has.\n\n#### `s.host`\n\nWhat the sampler thinks your host is.\n\nIf your host is unknown it will be `null`.\n\n#### `s.port`\n\nWhat the sampler thinks your port is.\n\nIf your port is random or unknown it will be `0`.\n\n#### `s.size`\n\nHow many samples the sampler is basing this on.\n\n## Error correction\n\nThe sampler applies some simple error correction to make sure bad samples do not mess it up.\n\n* If it has `<=` 3 samples, it will disregard none outliers.\n* If it has `<=` 7 samples, it will disregard one outliers.\n* If it has `<=` 11 samples, it will disregard two outliers.\n* If it has `>` 11 samples, it will disregard three outliers.\n\nAt max it keeps 16 samples of `{ host, port }` pairs for the analysis.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}