{"_id":"kademlia-table","_rev":"28-30bda0b152b7c923b41143cc5d90e819","name":"kademlia-table","dist-tags":{"latest":"3.1.1"},"versions":{"1.0.0":{"name":"kademlia-table","version":"1.0.0","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.0","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"31380bfc207681c9b979886d827105f99b2626d4","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.0.tgz","fileCount":7,"integrity":"sha512-aShwf16wmh/v+WNtBGXj4x6dY+E2MF2n4XxTxa2c+R/W9zNSN9lhjC4ObQYILAZEVG+tAp3heoOFTI6nO6UbUQ==","signatures":[{"sig":"MEQCIFwWHW+j0TPtPqnlrkitK6GuGSBMZ6nxa+++GHDX0/SvAiAoGytWSoIMl4055T1wXVH/iXOxxhcI2Nb9aoyZTLNRoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12511},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"75b7d29276cb97bdf31ee056fca7031263d62a6f","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.0_1713052553298_0.2179882615110933","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"kademlia-table","version":"1.0.1","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.1","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"64f570b3e98638bb71e391903b5a1c3df3b5dc42","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.1.tgz","fileCount":7,"integrity":"sha512-hmwTMFY3y4jtVBz9m5grV8MAcaUx4ynsqEga+SnWGy8hJ7BFBJ5mRIaMyzkQPfhv5+JDwe47q3W2dX8vGzD/NA==","signatures":[{"sig":"MEYCIQDK88K9oHJfGeHArbA//aSqmu0rhbUNYsHYrB/FmWzCbwIhAO2iP2U0cE3KVhsPPKcjiceYjp8hwU7b2opS9TejckxR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12511},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"89df42777ffc4f0bed720129966e8b6685e35fc9","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.1_1713052796410_0.07513570421676241","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"kademlia-table","version":"1.0.2","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.2","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"ded578ab6b4f02f1b5fe5f1cf522af6934da75f7","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.2.tgz","fileCount":7,"integrity":"sha512-fi7D4kvSs8OSq8T55LhsszEIpIdQXH/XRJqgXw4HZdf6qLbZ0LjxYh8Qlwtr5m5HEWtFAxS8im57+GB/S/5Zfw==","signatures":[{"sig":"MEUCIQCyUfPx5hVDjIY6MRzUIxo/mq/i3993kPxVygjq4S7xOQIgeWG8kSPbYGP8C+KgjIq1dHLyw26ecMuwbtUHitCBmkc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12709},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"3dfecaaf52badd07c575fa6c40068361bcf1f5b0","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.2_1713106401274_0.03502108694868822","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"kademlia-table","version":"1.0.3","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.3","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"54a431b1dddac33da9ee16c212fe154a77f11997","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.3.tgz","fileCount":7,"integrity":"sha512-aPUoA9V8M/b4SQEXuhLC6L9KQ4FK4fbNkz4fD3eNsjq1JQ8PeklzWa+9mGHZB83HkobwjAHee4dSdG7KD/BSBw==","signatures":[{"sig":"MEUCIQDFBQiUPiVPCV1mQNqQJJ311sDgB4Q3jFz7MAGLoRw4QwIgAZEEX1oLjPmjbmrwkAFy8Scw6+FHCuhbK2tZ/HLs6qk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12842},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","gitHead":"e1690df516094f7795dd1a0a9a63031ede806447","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.3_1713197187887_0.319950053607462","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"kademlia-table","version":"1.0.4","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.4","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"6344cd00a87a9627795513512d1e19f23f5ddf51","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.4.tgz","fileCount":7,"integrity":"sha512-4uy7prZS6gAlGXqN75uv/r/neBfkKjKch3SfEbMrpI5J9Xh8cqUyec4SL2dYPG7Fa7bD1l35xdMf6fkjbUzhSw==","signatures":[{"sig":"MEUCIQDVCeNavzg2FhvRcqQpknx1jGV65wVm5NILOVDJ5/n1JQIgbf+KoIW6GvTiXkGaEhHcAuE97KGE+x8CB+Hks77dBag=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12842},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"6d40108ec239c706dad5a56c8c24e89f5fcde2ac","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.4_1713202511298_0.005893669546732649","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"kademlia-table","version":"1.0.5","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.5","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"1132e7766b6755230d33bd1b361835783d346eff","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.5.tgz","fileCount":7,"integrity":"sha512-KmNHNv2CEi86ezNjIAzmntQo3hx3rpelUCd8sUDfwUiu1GWMZb4SW0IYu16KqSfVhIT5N5Xul3EGJeKlRJuSKA==","signatures":[{"sig":"MEUCICqAXWaRB6I+WFW59s4XdSkx7pzXk5OM9aCBLRHHlfr5AiEAhK63yRA669+PeMyuD1Y7Lb8T0UGMESxdJO29Gd4oaUo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14163},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"bb9f5248d6c261d4e10ea5e2304324762ca4b118","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.5_1713295905338_0.28896718640462393","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"kademlia-table","version":"1.0.6","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.6","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"e713531e5cb7dc916272b66f04473984ef401085","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.6.tgz","fileCount":7,"integrity":"sha512-kQWCs1OGFOR3mRlCsq82XN2fJ3/wzarUw831ZxVOYc/OglKzkgujYdfSvCC+bgqkLP+Dy9UdpVb0Hqtg3Wuf/g==","signatures":[{"sig":"MEQCIH/TesQVo7Inf6PvlPiNk1vUEET5oabDkJ9HsnMKLjmqAiAMd+GvMI8OKFSkIAd1io/FF413g3PdLd202pBQ96ie+w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13185},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"b619c4edbb612d3943a9e3b594981342416db686","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.6_1713820339692_0.33841261453397875","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"kademlia-table","version":"1.0.7","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.7","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"954daa688a8227e98bba2d8f559d65929fd9109d","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.7.tgz","fileCount":7,"integrity":"sha512-G/4G6IrOSjGoRz/lZMTPd+s+T5UyMvmjihGG7AhycCSRrDq+A4j2jFLjogqfE3NJ64TYQkJKUSjkJhWvrzjlBQ==","signatures":[{"sig":"MEUCIH93U9uhs2spU3KPK8MKrIP0IogXq+dPkLAC3zkEff4pAiEAm9p9phw0+d44Gm4slJGE6S1S3u269EmAnWdwcBi2BDA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13213},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"7b4b62d494f91ec367096f3804a42fd7d28742fa","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.7_1714384882640_0.05553387978734747","host":"s3://npm-registry-packages"}},"1.0.8":{"name":"kademlia-table","version":"1.0.8","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.8","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"927fdea71db020cfe31a166adce37d091da3b677","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.8.tgz","fileCount":7,"integrity":"sha512-LwaXYV9tSChB58DkPMH7yb94egIMyJ6NO4yeT56BKv6590lfnYaB0/qUNo7HAtKQJmIOEN7VWQugFzwfWMuXTg==","signatures":[{"sig":"MEQCIHYBf5qsYbuVt3Vd9OqmtcnFszHyxukuxHZQSAyVLYHGAiAeEqB5WzVmFFP1ZtSaiqIFizpG42wyCIp7wnacRd6XUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14310},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"3815558841042f1640c872a5aff80f52e4efc618","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.5.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.8_1715835803718_0.17885664343015395","host":"s3://npm-registry-packages"}},"1.0.9":{"name":"kademlia-table","version":"1.0.9","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.9","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"4b14c9951deb202a9d345691e547f5c1b478e92e","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.9.tgz","fileCount":7,"integrity":"sha512-1VdQs7i4YS5V+1Wq6Xg0vTwikC3qAdjG/Hz10xPr4CO0gY1QrR7hzu4aDYmHNCcDeK1ooFWrF2BViKKG60mmUg==","signatures":[{"sig":"MEQCIBO80I17LS8iWxjMXuDjiPXGnZMVEx8jcds1+RXJlmw3AiBH+aj2K346z4KsXW4Fi4/7UYs9850vrTsrWoUfw8vY0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13515},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"3120f72e98a34f8b5a56b731ca33cdb7a2b1efbc","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.9_1717420260025_0.19119832170822315","host":"s3://npm-registry-packages"}},"1.0.10":{"name":"kademlia-table","version":"1.0.10","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.10","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"6c664d2bfe07fd989e56b0e2c00bbfe804120492","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.10.tgz","fileCount":7,"integrity":"sha512-cGhkl7+5sIpdHNyY7AyQ5WKIZ9GaVb5U0v0PLwuLE1rgj70SPhbS0QZZ5KzbZ8wb9FpT0w6Tqlw4cIWK/cwn2g==","signatures":[{"sig":"MEUCICbwMqViLFbf70E+8eLi6bId5Lx7GnI3/o0KH0wAGGBZAiEA9kiAkcjy/kjqiyaM8DndzZXeHppMt2KFa+eES76w03E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13773},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"e4cfaecd5d53187b68a94a51dcb383e295faeb68","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.10_1717537459322_0.6995400342808056","host":"s3://npm-registry-packages"}},"1.0.11":{"name":"kademlia-table","version":"1.0.11","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.11","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"ea5ba12af09d69d6f97a63183e4c4916793a47cb","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.11.tgz","fileCount":7,"integrity":"sha512-iaoAQYMsMqSarS4+DqG/ENH3sxDf8kXfFBS2LNVU6Z8yjA4ts4g4CirFjoBfVFdrZnwvqg2o4I83j2xAUoyZXQ==","signatures":[{"sig":"MEUCIQCx551oivpbTQCQdIMyCBSVi6PSR2JaLqUfm/eOOgp9lwIgJX1MSAP8q7MdKCweOm7tu7aXYxY7d6Yhn1ETMawruW0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13893},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"8d9d694da502ee492cb8b17b8f0cce2e9a7d84eb","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.11_1718665241300_0.8410778402759993","host":"s3://npm-registry-packages"}},"1.0.12":{"name":"kademlia-table","version":"1.0.12","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@1.0.12","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"aa38a47f88c74c8d8e9ffafe626d884b445a1712","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-1.0.12.tgz","fileCount":7,"integrity":"sha512-C/AYIaKH76h6raHOrC2DQY0ZLvJXkG9r2KJc7Hypt3n9IxWf9OdnqFbiwlDYj4INpUBRj/zT4OqEqKw6NQmrsw==","signatures":[{"sig":"MEUCIQCakhDz0C8lTSJsO919vckkMrbYV4N3zLiTd2TiiVq99QIge/bKJ1xkflgO7V3tni3Px+NTetnYUYEC6atk4KuWFFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14681},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"96927b87691ded1c2c4f4c1539b19207b0d574f5","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.4","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_1.0.12_1723818677412_0.7544498890014573","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"kademlia-table","version":"2.0.0","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.0","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"081e9d488c66ae578d9bc2898c2db58b886de9d0","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.0.tgz","fileCount":7,"integrity":"sha512-K6LOUXi5/3z0YwDEjelCHf5e8DJ85dDgq8mRJHi48d/iDsk9tYCDcbwxmrztFZ19r64vJkZHisdazmQTSXPivA==","signatures":[{"sig":"MEYCIQDL5bsQdbFTM4LJRvOm5wfi1knl18a1+bKg+KcwBKGTowIhAOPisjafwUvEl3zyIAMiszfatNJCApn4QntHoOqD5Fjv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17126},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"3f8487ed99fb02710313b4bbf8d8b85db3b70d4f","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.4","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.0_1728310603268_0.31091382198421225","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"kademlia-table","version":"2.0.1","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.1","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"26428bfd158cf51c4239496564719e6bdc8096bd","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.1.tgz","fileCount":7,"integrity":"sha512-4j5Xf2hs5UQhmgG1mszLSQy/EUK4n0ZXjTqn4myOnwzn7m4dxkRZQkZ7c+5J/p3a72S9X2SykI4LoewutFVsGw==","signatures":[{"sig":"MEQCIH3QN2YFUmOVe7YtCXgfzx8nFqXt+g0l0zKeHjd8+bY4AiAT2JWP+PAbakToZ5pdrtiR3JcqzDXMFy5kpGDXK9EAtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16996},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"064cbc65de45187ce7a79bc06c8a83076a77404b","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.4","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.1_1728326097208_0.5610694817661581","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"kademlia-table","version":"2.0.2","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.2","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"1618327a0051c17564c63bea16fefd732f6490e9","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.2.tgz","fileCount":7,"integrity":"sha512-Q9BZJctCWxNoTG28PwWqviog3Qii1UX/VuaFXB2gQDbX7w6xOv5b08/XbrnepE+dVnuSBJMjFiAVmDPwHGvlaw==","signatures":[{"sig":"MEUCIDWVusC7GbUlIzCD9COZ9MztEEKca4etp82tVLzl1jhNAiEAvABp84E9194OlnkeCmIRMeb0ORt3cEE3Ifi5MFTooEc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16980},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"38a9d4e4a7ca856f639cc2719771f81182617ee8","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.4","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.2_1728549054693_0.38967617208034544","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"kademlia-table","version":"2.0.3","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.3","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"e8d5ebc88212f7e8a837e4ea93d07d9ace475abf","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.3.tgz","fileCount":7,"integrity":"sha512-MXYcXG6gVNJcz/6RmQweiJfb4e5CWW99yf/NOM5nKu62H0+3XyEgM+952qXGSNhsjXud2wlp1Q+vG6ceBnvC6Q==","signatures":[{"sig":"MEUCICk7d6gHkZ7Ofw3Fp2mEKTSJAuKUqiwVT7YnwfzegormAiEAoCi0pE0nlYpsxirCnVUVdWEIc0jJYNCZ2Gg5Hb4Kn74=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16926},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"d84e3232891a43aa895186e310c82aa579f89601","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.7.0","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.4","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.3_1731778943569_0.6688818531301979","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"kademlia-table","version":"2.0.4","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.4","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"f72ad5dfc6dfe8eb7f8f36e750e5347c4a354032","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.4.tgz","fileCount":7,"integrity":"sha512-iZbQLBjaPkF/ncOdMcHrG9DKx4mqLOahRfLwsiZRoND041c6L/ezAnfz2z6bg9yW504KCYcIvdT6jr5DRT3cdA==","signatures":[{"sig":"MEQCH0d8rozyofAip2aHjB1XbJ5istKZm/ebXxskYWs7ezYCIQCEcfbr5IFjVNBf7olqetP6CdBbq/rZ7glE+uhGZ8Ze+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17029},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"8c12c90d5771bc2fa87073d3a69d8626430676ba","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.4_1734919530320_0.20375501192988876","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"kademlia-table","version":"2.0.5","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.5","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"33a76ea1354c3f4db95c89b616cf83e3c533577d","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.5.tgz","fileCount":7,"integrity":"sha512-Kqch6oJ4h1jyuoC0qLvMa3CxEJo3ZJxGWrkniQ33L38Poy3hv94ddnbnx0fHXbEvR7HcbLe9KTQRejyGtPItNw==","signatures":[{"sig":"MEQCICN3TBepr/EU+SH3MuHQIckDSoxV0KvUI1Bd/OLOdFcCAiB+lvhSpTgifoQqOXz9sSfgr5AJouWfghe1fRQiRCo52g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17047},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"5dac874cd0268071979854e67a72541aa8fa4472","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.7","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.5_1741970105478_0.3393672244275856","host":"s3://npm-registry-packages-npm-production"}},"2.0.6":{"name":"kademlia-table","version":"2.0.6","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.6","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"990d93002331db76ba709c7aaf244dc545936cdf","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.6.tgz","fileCount":7,"integrity":"sha512-dI9WAN7nU9Y3Gy5SY0JAN9ihUwKAORg6pOSphh6RMOZZVsVjgdazUp1UFxdSHrlanAYzbe3ohuFFqDY/RGfwxw==","signatures":[{"sig":"MEUCIF/+smzzrHZG0od+EJPOefcm2aHv4miFA4/CacrLDuSTAiEA+MtINKh3ozj3Mus0lT3twNlThqg556JTN0PRpvg7MBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17953},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"12032c6061ef44ab45098a4077732113a3acab85","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.6_1754478820801_0.4525250780804062","host":"s3://npm-registry-packages-npm-production"}},"2.0.8":{"name":"kademlia-table","version":"2.0.8","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.8","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"e4091d642eb1a5985dcbb16aafe6204b8f978cf5","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.8.tgz","fileCount":7,"integrity":"sha512-vtiA82lhKrb0YxR/kKN4i7zsB5d6AdTW0estqWjEJmrve11HevYQJBSffuESglNIlzSskZzpbGaOclTr+5RFOw==","signatures":[{"sig":"MEUCIQCkyS94njlJ1PzkP5BZT/ZdlFQsvlmFRO66CRuyCsC4UAIgDhNRX2ocytv1g55d6YnmTEk703eyAAjbti9GNBrlxNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18333},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"1d863c848ac7685c054dfd391d62e8816952df2d","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.8_1754481439698_0.9741692329391527","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"kademlia-table","version":"2.0.9","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.9","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"33188392cea1934a1d11ba992fdbbc9dc5ce5527","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.9.tgz","fileCount":7,"integrity":"sha512-Bfq0Zw7flZpCTf91iJWH4b09FzK0ysUcojCKPYwXBbPTgRaM6+LOheoXlFy7h1m+V/BBsF/tSRhOxyrn9m2eVg==","signatures":[{"sig":"MEUCIBGu3PbHG6/kgIixKi4COazjsuXeUkpZEyJ8F9MLkujcAiEAtrABGlq9s9jEhrCt0s8kdeKCupDgmX4V5vHL7dMHSRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18175},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"3c5ad4575074b41713a57de15e2e29cdeb29ee72","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.9_1755007759800_0.7554945280599759","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"kademlia-table","version":"2.0.10","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.10","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"6e9cc61fd0f19e34bafe42e0f109f87dd5af9686","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.10.tgz","fileCount":7,"integrity":"sha512-flRnyA/On3UCko9eh0kDgyar93MjPzxwFczdqtNvTG3eD7r5rJyCR4q2ASKk2fFRbZqyXpPx1uRAQngXIhcrLQ==","signatures":[{"sig":"MEYCIQCmd4wEX8eioMsYDlWhcwhV+hnL0t7xeeeKTQiSiO++ywIhAMm3/L1EWInnGJiFuIcycSH7ujsHJi7Wb0YRiEOOaEoW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18134},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"4c6fc6c920c8c2f37f600942caf856696b9cf822","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.10_1755012173307_0.045470996168399225","host":"s3://npm-registry-packages-npm-production"}},"2.0.11":{"name":"kademlia-table","version":"2.0.11","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@2.0.11","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"544344d02bf64b025d394afd00a7e7f44dfe1f0e","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-2.0.11.tgz","fileCount":7,"integrity":"sha512-qAGLl8NafN1EwkaFohknU2LOnN8XOShox/IMbUe+uM7UZ4S86Qp4IKfd5eKGM+4LZY7F73nakqu7X840x4LlaQ==","signatures":[{"sig":"MEYCIQDxNC5fmFYqDOMfCi7//Oan4j3IQXyOsp6Jqi6lriWAJQIhAKMzVddhFjgE4bzS1Z/4SsYpztsm4FX4OmKBhXdQU3zt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18214},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"df630fee0e3012567d72da778b6d2916ba71c379","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR based routing table used for P2P networks such as a Kademlia DHT.","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_2.0.11_1755012889642_0.15031165233063737","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"kademlia-table","version":"3.0.0","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems","LRU","UDP","node","bucket","dht"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@3.0.0","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"77c6f58980830eb57edff65090ca18fd0bb2d1cb","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-3.0.0.tgz","fileCount":7,"integrity":"sha512-UMxFhul4TkZYL1yAPnWAq/wA7gBrswhuDGub80nvyIDm7Jl6bB4jAwgoYUhgl/rf+98w54LJKs0dq29p1QY3IA==","signatures":[{"sig":"MEQCIEQoVIJIYtp1JDsUkvNSnDmKBlXP99Sr8Lk1BnY99spEAiAPMey7ieuXhBsh7i7KnE/ymfikKeBToVrOmSZZ+yZTtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21617},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"df50c2e74ff37bc73417744b6c92e9bb2aed4c4b","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR distance based routing table used for P2P networks, based on the Kademlia DHT paper","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_3.0.0_1755698032409_0.9571328844887503","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"kademlia-table","version":"3.0.1","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems","LRU","UDP","node","bucket","dht"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@3.0.1","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"520362bac7c42425022d29ae1ce5d9cdc912813a","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-3.0.1.tgz","fileCount":7,"integrity":"sha512-X9UGwa7BIOTA6wiHZsGviF6DK99acpbL7Ho+2FKd/CAAqirrxUYawOVy0iTzfLkuxijWLmOwwnB60+ksFs0iGA==","signatures":[{"sig":"MEYCIQDnadjJhaqAIdvsQA2q4kcHX1oIw5u6lT6Oii9v/p6VewIhAJSb8JWNtjOv6qT2w6MCcYyaKnS6uymFdE8QBiw/zJVE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33308},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"456f7e07118f3bf48b5c3312f9cd3aa787517071","scripts":{"test":"jest","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR distance based routing table used for P2P networks, based on the Kademlia DHT paper","directories":{},"_nodeVersion":"18.20.8","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^7.2.0","eslint":"^8.57.0","globals":"^15.0.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","@eslint/js":"^9.0.0","typescript":"^5.4.4","@types/jest":"^29.5.12","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_3.0.1_1760579825756_0.2989113143275379","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"kademlia-table","version":"3.0.2","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems","LRU","UDP","node","bucket","dht"],"author":{"name":"visionsofparadise"},"license":"MIT","_id":"kademlia-table@3.0.2","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"homepage":"https://github.com/visionsofparadise/kademlia-table","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"dist":{"shasum":"b7c80e1ef4964b56fb6339f98eb438d883aadb3a","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-3.0.2.tgz","fileCount":7,"integrity":"sha512-YOhIH8hh2051QpNUTqfT+lZhwa6BCwPmSPb5QfjULLBwX+1hxoVVchDhYqKVScH/8GrgUikw7lrbcDCKCY/fPg==","signatures":[{"sig":"MEYCIQCuPx5OW6ncDvEBmx8zptpwG9cyGAB/b1/qbV2CwYJ/9QIhAMUTQD2G2V3A7/cXfzRxD7qmQiMyjz7Dg52wvFepNCFL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33344},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"2bb15e9629e43a593cd768c1be4eadb2d405a718","scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm,cjs --dts --treeshake","check":"tsc --noEmit","test:ui":"vitest --ui","test:watch":"vitest"},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"repository":{"url":"git+https://github.com/visionsofparadise/kademlia-table.git","type":"git"},"_npmVersion":"10.8.2","description":"XOR distance based routing table used for P2P networks, based on the Kademlia DHT paper","directories":{},"_nodeVersion":"20.19.5","dependencies":{"uint8array-tools":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^8.57.0","vitest":"^2.1.8","globals":"^15.0.0","ts-node":"^10.9.2","@eslint/js":"^9.0.0","@vitest/ui":"^2.1.8","typescript":"^5.4.4","@types/node":"^20.12.5","eslint-plugin-n":"^16.6.2","@eslint/eslintrc":"^3.0.2","typescript-eslint":"^7.5.0","eslint-plugin-import":"^2.29.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.21.0","eslint-config-standard-with-typescript":"^43.0.1"},"_npmOperationalInternal":{"tmp":"tmp/kademlia-table_3.0.2_1761398237838_0.8841701666762016","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"kademlia-table","version":"3.1.1","description":"XOR distance based routing table used for P2P networks, based on the Kademlia DHT paper","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","scripts":{"check":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:ui":"vitest --ui","build":"tsup src/index.ts --format esm,cjs --dts --treeshake"},"dependencies":{"uint8array-tools":"^0.0.9"},"devDependencies":{"@eslint/eslintrc":"^3.0.2","@eslint/js":"^9.0.0","@types/node":"^20.12.5","@typescript-eslint/eslint-plugin":"^6.21.0","@vitest/ui":"^2.1.8","eslint":"^8.57.0","eslint-config-standard-with-typescript":"^43.0.1","eslint-plugin-import":"^2.29.1","eslint-plugin-n":"^16.6.2","eslint-plugin-promise":"^6.1.1","globals":"^15.0.0","ts-node":"^10.9.2","tsup":"^7.2.0","typescript":"^5.4.4","typescript-eslint":"^7.5.0","vitest":"^2.1.8"},"keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems","LRU","UDP","node","bucket","dht"],"repository":{"type":"git","url":"git+https://github.com/visionsofparadise/kademlia-table.git"},"author":{"name":"visionsofparadise"},"license":"MIT","bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"homepage":"https://github.com/visionsofparadise/kademlia-table","_id":"kademlia-table@3.1.1","gitHead":"a75a2e2ccb0c4025c625c27ad6f84091b65d788c","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-B7wC4kXzXFciRLZzeS0B+JNX8iaDkttXU4Lo6GriQleoxDkCVAJivbvYvWUydGMp88zOZoiM+9k74Rk1j7lYxA==","shasum":"cdb39256238450d17a4260c72d547784557e356b","tarball":"https://registry.npmjs.org/kademlia-table/-/kademlia-table-3.1.1.tgz","fileCount":7,"unpackedSize":56776,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDbtj5gIYWV2jnIXZc5CqAp9NCrVyf196xXAiyzyYacvgIhAJBDNVO/cgFd5quoRttSGIgp2ukJo2eLCP1lt4QGveVV"}]},"_npmUser":{"name":"xkore","email":"matt@xkore.co"},"directories":{},"maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kademlia-table_3.1.1_1761605177565_0.6075738562517914"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-13T23:55:53.297Z","modified":"2025-10-27T22:46:17.958Z","1.0.0":"2024-04-13T23:55:53.477Z","1.0.1":"2024-04-13T23:59:56.588Z","1.0.2":"2024-04-14T14:53:21.405Z","1.0.3":"2024-04-15T16:06:28.068Z","1.0.4":"2024-04-15T17:35:11.456Z","1.0.5":"2024-04-16T19:31:45.546Z","1.0.6":"2024-04-22T21:12:19.872Z","1.0.7":"2024-04-29T10:01:22.780Z","1.0.8":"2024-05-16T05:03:23.996Z","1.0.9":"2024-06-03T13:11:00.234Z","1.0.10":"2024-06-04T21:44:19.471Z","1.0.11":"2024-06-17T23:00:41.456Z","1.0.12":"2024-08-16T14:31:17.587Z","2.0.0":"2024-10-07T14:16:43.469Z","2.0.1":"2024-10-07T18:34:57.432Z","2.0.2":"2024-10-10T08:30:54.918Z","2.0.3":"2024-11-16T17:42:23.767Z","2.0.4":"2024-12-23T02:05:30.521Z","2.0.5":"2025-03-14T16:35:05.658Z","2.0.6":"2025-08-06T11:13:40.982Z","2.0.8":"2025-08-06T11:57:19.888Z","2.0.9":"2025-08-12T14:09:19.969Z","2.0.10":"2025-08-12T15:22:53.468Z","2.0.11":"2025-08-12T15:34:49.825Z","3.0.0":"2025-08-20T13:53:52.580Z","3.0.1":"2025-10-16T01:57:05.957Z","3.0.2":"2025-10-25T13:17:18.064Z","3.1.1":"2025-10-27T22:46:17.784Z"},"bugs":{"url":"https://github.com/visionsofparadise/kademlia-table/issues"},"author":{"name":"visionsofparadise"},"license":"MIT","homepage":"https://github.com/visionsofparadise/kademlia-table","keywords":["kademlia","p2p","k-bucket","k-buckets","xor","routing","distributed","systems","LRU","UDP","node","bucket","dht"],"repository":{"type":"git","url":"git+https://github.com/visionsofparadise/kademlia-table.git"},"description":"XOR distance based routing table used for P2P networks, based on the Kademlia DHT paper","maintainers":[{"name":"xkore","email":"matt@xkore.co"}],"readme":"# kademlia-table\n\nA high-performance Kademlia DHT routing table implementation for P2P networks.\n\n[![npm version](https://img.shields.io/npm/v/kademlia-table.svg)](https://www.npmjs.com/package/kademlia-table)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n```bash\nnpm install kademlia-table\n```\n\n## Overview\n\n`kademlia-table` is a TypeScript implementation of the routing table structure described in the [Kademlia DHT paper](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf). It organizes nodes by XOR distance and maintains LRU ordering for efficient peer discovery in distributed hash tables.\n\n### Key Features\n\n- **XOR Distance Indexing** - Nodes organized by bitwise XOR distance for O(log n) lookups\n- **External Liveness Management** - Delegates network I/O to consumer, tracks results via `markSuccess`/`markError`\n- **Replacement Cache** - Maintains backup nodes to prevent bucket collapse during network disruption\n- **LRU Ordering** - Preferentially keeps long-lived nodes with proven reliability\n- **Generic Node Support** - Works with any node type via configurable `getId` accessor\n\n## Installation\n\n```bash\nnpm install kademlia-table\n```\n\n## Quick Start\n\n```typescript\nimport { KademliaTable } from 'kademlia-table';\n\n// Define your node type\ninterface PeerNode {\n  id: Uint8Array;\n  address: string;\n  port: number;\n}\n\n// Create routing table\nconst localId = crypto.getRandomValues(new Uint8Array(20));\n\nconst table = new KademliaTable<PeerNode>(localId, {\n  getId: (node) => node.id,\n  bucketSize: 20,      // Default: 20\n  errorLimit: 3        // Default: 3\n});\n\n// Add nodes\ntable.add({\n  id: peerIdBytes,\n  address: '192.168.1.1',\n  port: 8000\n});\n\n// Find closest nodes for DHT lookup\nconst target = crypto.getRandomValues(new Uint8Array(20));\n\nconst closest = table.listClosestToId(target, 20);\n\n// Track node liveness\ntable.markSuccess(nodeId);  // On successful RPC\ntable.markError(nodeId);    // On RPC timeout/failure\n```\n\n## API Reference\n\n### Constructor\n\n#### `new KademliaTable<T>(id, options)`\n\nCreates a new routing table.\n\n**Parameters:**\n- `id: Uint8Array` - The local node's ID (uniformly distributed, typically 160-bit)\n- `options: KademliaTable.Options<T>` - Configuration object\n\n**Options:**\n```typescript\ninterface Options<Node> {\n  getId: (node: Node) => Uint8Array;  // Required: Extract ID from node\n  bucketSize?: number;                 // Default: 20\n  errorLimit?: number;                 // Default: 3\n}\n```\n\n**Example:**\n```typescript\nconst table = new KademliaTable<Node>(localId, {\n  getId: (node) => node.id,\n  bucketSize: 20,\n  errorLimit: 3\n});\n```\n\n---\n\n### Core Methods\n\n#### `add(node: T, d?: number): boolean`\n\nAdds a node to the routing table.\n\n**Parameters:**\n- `node: T` - Node object to add\n- `d?: number` - Pre-calculated distance (optional, will calculate if not provided)\n\n**Returns:** `true` if node was added, `false` if rejected.\n\n**Behavior:**\n- Validates ID length matches table's ID length\n- Rejects self-ID (distance 0) and duplicates\n- If bucket has space → node added to main bucket\n- If bucket full → node added to replacement cache (also limited to bucketSize)\n- If both full → node rejected\n\n**Example:**\n```typescript\nconst added = table.add(newNode);\nif (added) {\n  console.log('Node added to routing table');\n} else {\n  console.log('Node cached or rejected');\n}\n\n// Performance optimization: pass pre-calculated distance\nconst d = table.getDistance(newNode.id);\ntable.add(newNode, d);\n```\n\n---\n\n#### `listClosestToId(id: Uint8Array, limit?: number): T[]`\n\nReturns the closest nodes to a target ID, ordered by approximate XOR distance.\n\n**Parameters:**\n- `id: Uint8Array` - Target ID to find closest nodes to\n- `limit?: number` - Maximum nodes to return (default: all nodes)\n\n**Returns:** Array of nodes in approximately distance-sorted order, with LRU ordering preserved within buckets.\n\n**⚠️ Performance Note:** Default limit returns ALL nodes in table (buckets.length × bucketSize). For typical DHT queries, pass `limit=20` explicitly to avoid iterating the entire table.\n\n**Example:**\n```typescript\n// Find 20 closest nodes for DHT FIND_NODE operation (recommended)\nconst peers = table.listClosestToId(targetKey, 20);\n\n// Contact each peer to continue lookup\nfor (const peer of peers) {\n  // Send RPC to peer...\n}\n\n// Avoid: Getting all nodes iterates entire table\n// const allNodes = table.listClosestToId(targetKey);  // Slow!\n```\n\n---\n\n#### `markSuccess(id: Uint8Array): boolean`\n\nMarks a node as responsive, resetting its error counter and moving it to the end of the LRU list.\n\n**When to call:** After successful RPC response from this node.\n\n**Returns:** `true` if node found and updated, `false` otherwise.\n\n**Example:**\n```typescript\n// After successful RPC\nconst response = await sendRPC(peer);\ntable.markSuccess(peer.id);\n```\n\n---\n\n#### `markError(id: Uint8Array): boolean`\n\nIncrements a node's error counter. If counter exceeds `errorLimit`, the node is evicted and replaced from the replacement cache.\n\n**When to call:** After RPC timeout or failure.\n\n**Returns:** `true` if node found and updated, `false` otherwise.\n\n**Example:**\n```typescript\ntry {\n  await sendRPC(peer);\n  table.markSuccess(peer.id);\n} catch (error) {\n  table.markError(peer.id);  // May evict after 3 failures\n}\n```\n\n---\n\n#### `get(id: Uint8Array): T | undefined`\n\nRetrieves a node by its ID.\n\n**Returns:** The node if found, `undefined` otherwise.\n\n**Example:**\n```typescript\nconst node = table.get(peerId);\nif (node) {\n  console.log('Found:', node.address);\n}\n```\n\n---\n\n#### `has(id: Uint8Array): boolean`\n\nChecks if a node exists in the routing table.\n\n**Returns:** `true` if node exists, `false` otherwise.\n\n**Example:**\n```typescript\nif (!table.has(peerId)) {\n  table.add(newPeer);\n}\n```\n\n---\n\n#### `update(node: T, d?: number): boolean`\n\nUpdates an existing node's data while preserving its error count and position.\n\n**Parameters:**\n- `node: T` - Updated node object (ID must match existing node)\n- `d?: number` - Pre-calculated distance (optional, will calculate if not provided)\n\n**Returns:** `true` if node found and updated, `false` otherwise.\n\n**Behavior:**\n- Validates ID length matches table's ID length\n- Preserves errorCount when updating\n- Works for both active items and replacement cache nodes\n\n**Example:**\n```typescript\n// Update node metadata without affecting liveness tracking\ntable.update({\n  id: existingId,\n  address: newAddress,\n  port: newPort\n});\n```\n\n---\n\n#### `remove(id: Uint8Array, d?: number, force?: boolean): boolean`\n\nRemoves a node from the routing table.\n\n**Parameters:**\n- `id: Uint8Array` - Node ID to remove\n- `d?: number` - Pre-calculated distance (optimization)\n- `force?: boolean` - Remove even if no replacement available\n\n**Returns:** `true` if node was removed, `false` if not found or couldn't be safely removed.\n\n**Behavior:**\n- If replacement cache has nodes → node removed, replacement promoted\n- If replacement cache empty and `force=false` → node kept (safety mechanism)\n- If replacement cache empty and `force=true` → node removed anyway\n\n**Example:**\n```typescript\n// Safe removal (keeps node if no replacement)\ntable.remove(badNodeId);\n\n// Force removal\ntable.remove(badNodeId, undefined, true);\n```\n\n---\n\n#### `clear(): void`\n\nRemoves all nodes from the routing table.\n\n**Example:**\n```typescript\ntable.clear();\nconsole.log(table.length); // 0\n```\n\n---\n\n### Utility Methods\n\n#### `getDistance(id: Uint8Array): number`\n\nCalculates the XOR distance bucket index for a given ID.\n\n**Returns:** Bucket index (0 to id.length * 8)\n\n**Example:**\n```typescript\nconst distance = table.getDistance(nodeId);\nconsole.log(`Node is in bucket ${distance}`);\n```\n\n---\n\n#### `getBucket(d: number): Bucket<T> | undefined`\n\nRetrieves the bucket at distance index `d`.\n\n**Returns:** Bucket object containing `items` and `replacementItems` arrays.\n\n**Example:**\n```typescript\nconst bucket = table.getBucket(50);\nconsole.log(`Bucket 50 has ${bucket.items.length} nodes`);\n```\n\n---\n\n### Properties\n\n#### `length: number`\n\nTotal number of nodes in the routing table (excludes replacement cache).\n\n**Example:**\n```typescript\nconsole.log(`Routing table contains ${table.length} nodes`);\n```\n\n---\n\n#### `buckets: Array<Bucket<T>>`\n\nDirect access to the bucket array. Each bucket contains:\n- `items: Array<Item<T>>` - Active nodes in LRU order\n- `replacementItems: Array<Item<T>>` - Cached replacement nodes\n\n**Warning:** Modifying buckets directly bypasses internal logic. Use with caution.\n\n**Example:**\n```typescript\n// Inspect bucket contents\nfor (let i = 0; i < table.buckets.length; i++) {\n  const bucket = table.buckets[i];\n  if (bucket.items.length > 0) {\n    console.log(`Bucket ${i}: ${bucket.items.length} nodes`);\n  }\n}\n```\n\n---\n\n#### `bucketSize: number`\n\nMaximum nodes per bucket (configured in constructor).\n\n---\n\n#### `errorLimit: number`\n\nMaximum errors before node eviction (configured in constructor).\n\n---\n\n### Iteration\n\nThe table supports iteration over all nodes:\n\n```typescript\n// Iterate all nodes\nfor (const node of table) {\n  console.log(node.address);\n}\n\n// Use with spread operator\nconst allNodes = [...table];\n\n// Generator-based iteration\nconst iterator = table.iterateClosestToId(targetId);\n\nfor (const node of iterator) {\n  if (someCondition) break;  // Early termination\n}\n```\n\n## Performance Characteristics\n\n| Operation | Time Complexity | Notes |\n|-----------|----------------|-------|\n| `add()` | O(k) | Linear search within bucket (k ≤ 20) |\n| `get()` | O(k) | Distance calculation + bucket search |\n| `listClosestToId()` | O(k × log n) | Spiral search with early termination |\n| `markSuccess()` | O(k) | Find + move to LRU tail |\n| `markError()` | O(k) | Find + increment + possible eviction |\n| `getDistance()` | O(id bytes) | XOR distance calculation |\n\n**Memory Usage:**\n- Empty table: ~16KB (161 buckets × 100 bytes)\n- Full table: ~100KB (161 × 20 nodes × ~30 bytes + replacement cache)\n\n## Design Decisions\n\n### Why Flat Buckets?\n\n**Alternative:** Dynamic binary tree (as described in Kademlia paper)\n\n**Trade-offs:**\n\n| Aspect | Flat Array (this impl) | Binary Tree |\n|--------|----------------------|-------------|\n| Bucket access | O(1) | O(log n) |\n| Memory | O(id_bits) fixed | O(log network_size) |\n| Complexity | Simple | Complex splitting logic |\n| Cache locality | Excellent | Poor |\n\n**Verdict:** For typical DHT routing tables (200-500 nodes), flat arrays are faster and simpler. Industry standard (BitTorrent, Ethereum, IPFS) uses flat or similar approaches.\n\n### Why External Liveness?\n\n**Alternative:** Embed ping/pong logic inside table\n\n**Benefits of external:**\n- Protocol agnostic (UDP, TCP, QUIC, etc.)\n- Testability (mock network behavior)\n- Separation of concerns (routing vs networking)\n- Flexibility (custom liveness checks)\n\n### Why Preserve LRU Order in Results?\n\n**Alternative:** Sort by exact XOR distance\n\n**Trade-off:**\n\n| Approach | Pros | Cons |\n|----------|------|------|\n| LRU-preserving (this impl) | Returns responsive nodes, fast | Approximate distance |\n| Distance-sorted | Exact k-closest | May include stale nodes |\n\n**Verdict:** For peer discovery, \"close enough + responsive\" beats \"exact + possibly dead\". Matches BitTorrent/Ethereum behavior.\n\n## Common Patterns\n\n### Basic DHT Lookup\n\n```typescript\nasync function findNode(targetId: Uint8Array): Promise<Node | null> {\n  const queried = new Set<string>();\n  let closest = table.listClosestToId(targetId, 20);\n\n  while (closest.length > 0) {\n    const candidates = closest.filter(n =>\n      !queried.has(n.id.toString())\n    ).slice(0, 3); // Alpha = 3\n\n    if (candidates.length === 0) break;\n\n    // Query candidates in parallel\n    const results = await Promise.all(\n      candidates.map(node => queryNode(node, targetId))\n    );\n\n    // Mark liveness\n    for (const [node, result] of zip(candidates, results)) {\n      queried.add(node.id.toString());\n      if (result.success) {\n        table.markSuccess(node.id);\n        // Add newly discovered nodes\n        for (const peer of result.peers) {\n          table.add(peer);\n        }\n      } else {\n        table.markError(node.id);\n      }\n    }\n\n    // Get updated closest list\n    closest = table.listClosestToId(targetId, 20);\n  }\n\n  return table.get(targetId);\n}\n```\n\n### Periodic Bucket Refresh\n\n```typescript\n// Refresh stale buckets every hour\nsetInterval(() => {\n  for (let i = 0; i < table.buckets.length; i++) {\n    const bucket = table.buckets[i];\n\n    if (bucket.items.length === 0) {\n      // Generate random ID in this bucket's range\n      const randomId = generateRandomIdAtDistance(table.id, i);\n      // Perform lookup to populate bucket\n      findNode(randomId);\n    }\n  }\n}, 60 * 60 * 1000);\n```\n\n### Sibling List (S/Kademlia)\n\n```typescript\n// Get your s closest neighbors\nfunction getSiblings(s: number = 20): Node[] {\n  return table.listClosestToId(table.id, s);\n}\n\n// For data replication in S/Kademlia\nfunction replicateData(key: Uint8Array, value: any) {\n  const siblings = getSiblings(16);\n  for (const node of siblings) {\n    sendStore(node, key, value);\n  }\n}\n```\n\n## TypeScript Types\n\n```typescript\nnamespace KademliaTable {\n  interface Options<Node> {\n    getId: (node: Node) => Uint8Array;\n    bucketSize?: number;\n    errorLimit?: number;\n  }\n\n  interface Bucket<T> {\n    items: Array<Item<T>>;\n    replacementItems: Array<Item<T>>;\n  }\n\n  interface Item<T> {\n    node: T;\n    errorCount: number;\n  }\n}\n```\n\n## Contributing\n\nIssues and pull requests welcome at [github.com/visionsofparadise/kademlia-table](https://github.com/visionsofparadise/kademlia-table).\n\n## License\n\nMIT\n\n## References\n\n- [Kademlia: A Peer-to-peer Information System Based on the XOR Metric (2002)](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf)\n- [S/Kademlia: A Practicable Approach Towards Secure Key-Based Routing (2007)](https://telematics.tm.kit.edu/publications/Files/267/SKademlia_2007.pdf)\n- [BitTorrent DHT Protocol (BEP 5)](https://www.bittorrent.org/beps/bep_0005.html)\n- [Ethereum Node Discovery Protocol v4](https://github.com/ethereum/devp2p/blob/master/discv4.md)\n","readmeFilename":"README.md"}