{"_id":"@av-pi-studio/relay","_rev":"100-efa3b09aa329e4f5d1b5ebc701c8d765","name":"@av-pi-studio/relay","dist-tags":{"latest":"0.0.107"},"versions":{"0.0.8":{"name":"@av-pi-studio/relay","version":"0.0.8","_id":"@av-pi-studio/relay@0.0.8","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"dist":{"shasum":"8ec71c17e46c925006d890ada69b6da4965f8f75","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.8.tgz","fileCount":22,"integrity":"sha512-xehw6TeuumKH0OlpRqUEXpGp2ojzwzjbBSKi6hHwM9SYQitS9rhc/yo/a5lXZ/TDCg3XC8pUa6j50sJLwfaNxQ==","signatures":[{"sig":"MEQCIG19+VzMaYmCBQwTAbvbmM8vP2RLE2MvrKK54c0di7gwAiAj+iNGIXEkExXZdS2Toj8XBb7JSdxQg1orXsopsjz/Ig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72917},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"6bccfbc6d9644caf1201ac8fa7f4f5c7df8158f8","scripts":{"build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","directories":{},"_nodeVersion":"24.13.0","dependencies":{"tweetnacl":"^1.0.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.8_1784393803725_0.618324947173515","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@av-pi-studio/relay","version":"0.0.9","_id":"@av-pi-studio/relay@0.0.9","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7f9deff45d4991f7a1c61d890e4820c491e32586","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.9.tgz","fileCount":31,"integrity":"sha512-p/0GRx61ZOGrZvwWsZ3GVlL/y/+wcYoALC3Mq6ka7cx40T8mEgogee5ZqbZ16/mR3ZsAxeKCaxHzdV7QaOGV0g==","signatures":[{"sig":"MEQCIC3Bp+P3uIYf1W4sucMb8TmTAlCGJZ/RAiLnRShOqNNaAiBkaC/SCX+LyElmsISDRzzrZwXfcEW53iKI0SXM7fMvpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91955},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"438788ffd2846441722c140ea22fa3464e8f9d2a","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","tweetnacl":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.9_1784396753996_0.6216716305643257","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@av-pi-studio/relay","version":"0.0.10","_id":"@av-pi-studio/relay@0.0.10","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"263bfd6e4f7a4f82861dca16d8fc0c8b95598f67","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.10.tgz","fileCount":31,"integrity":"sha512-WmIEr1kO4F+mYOTYiS8XMOv8TgSiSos2Pag3NGcb7GvSewQuPzht/oFFdo606HmfltQxZh+2XnkVyIedJ4Migw==","signatures":[{"sig":"MEUCIAdlbs2VW9pPAQD3oE+IxDVLtktFWpl83y9AkaCSPCV2AiEA80anqBPm3ylg/IhyzyVReACXGlmSr1Rr/xwcYZf94YA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91956},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"da47d586cc0ecffd8ea5e5e9d154de1f9431c715","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","tweetnacl":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.10_1784415373577_0.8239909221672712","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@av-pi-studio/relay","version":"0.0.11","_id":"@av-pi-studio/relay@0.0.11","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"eb9fc7d1e7c4db17d4a8e5ce0e97366b951c959e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.11.tgz","fileCount":35,"integrity":"sha512-rGA8HK5vCcicJ7DHs2M/h3IF7K2s3/hNirnDy+TaFVr6403YIl/3ukJO/BL0CzcV7EhJJ1yUTs5K6ljenINhuw==","signatures":[{"sig":"MEQCIDvnMIQQusbJTP9ovEGjDiAxVrBvthG7bhZzW1qej7lOAiBqDk8IqM9EBFwHytkwpf7MU1a0/54uzN5WNV1mvOdWlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110903},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"4be884067a465cff28a911ee89eb49a4e9047bf3","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.11_1784578313419_0.8147989670897386","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@av-pi-studio/relay","version":"0.0.12","_id":"@av-pi-studio/relay@0.0.12","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"9fed6a002e32ec664afaa56933e24eba6d4eb37f","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.12.tgz","fileCount":39,"integrity":"sha512-295cjF5x7qXtaFflM4QlKNvFHogD9gZLadZ8M2DBpnR0i0tABELu6gVR1QY1yTRaLlak0RFDYFf9e72NJeAslQ==","signatures":[{"sig":"MEUCIQC2HcWvAzF5djAy5BgsNUxr7m8WFj4W2I3uE9yVF+zHqgIgXgnuf2ywgDh9mxVPceYp64exw7fYUEvS7tWxH5zLgQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122139},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"edcb4efbb53003b7526d5d1cc967b93115973931","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.12_1784720043547_0.7589880372653846","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@av-pi-studio/relay","version":"0.0.13","_id":"@av-pi-studio/relay@0.0.13","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"875145b8df82a1b5c12c42c23e76b311e29b0c4e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.13.tgz","fileCount":39,"integrity":"sha512-NBtO22CSU5oSn1Y02ZoxjAix4X+4MxuHE3nIvNgkyDWbT1ikWOE006SQquIWrIJg4Z1MzqlUTf112DAdUNDxEw==","signatures":[{"sig":"MEUCIQDyWSNns5mZWJpbWu8USeUFcTPDT2Xe45uM7c3K3V0lUwIgZ9VTsK1JQrItO4e/tuZ8G7G89I88xtVohAPVgJm7VOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"c752bb088b602a3716f02c02026981322e58b2ea","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.13_1784722387260_0.3558000725582069","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@av-pi-studio/relay","version":"0.0.14","_id":"@av-pi-studio/relay@0.0.14","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7c1c8613f584be5764ed0f4640f002d644bf75e6","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.14.tgz","fileCount":39,"integrity":"sha512-h99zISOjwtfh2ZZaTW0UHZFaFOjnDFIawGMt1v0oM8OpXyn2Ff+YRDirb1c+Vc+F696RbnckuQ7zfVUR9kNclQ==","signatures":[{"sig":"MEUCIBLbu7ZJypMRMa+zPLMbwEONxg7Xju5/41taRtmhz3ugAiEA1x4I5BTtY8mBm4W/0kiS8gG3S9uD630h+mQMqmuDgK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"9419edf5dcb922bae1b2e3489aba3aabf6eccd0a","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.14_1784725382352_0.6119097260792368","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@av-pi-studio/relay","version":"0.0.15","_id":"@av-pi-studio/relay@0.0.15","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"837432bd30aa1272cfd9ce73656a757e565153f1","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.15.tgz","fileCount":39,"integrity":"sha512-dTrce1hpMpkTiYNuXFBEzBHEqN+XKFoSfKQNUy2isGwJlQo3hAxadP1NGyYcZyHOKt6cqqePLSRb9f/FiNOxgQ==","signatures":[{"sig":"MEUCIQDU2FdWnVlGcKyuQubWlNKI/Jqckv2cEAejVAcDA8XVLgIgF6OImroGQF4Z4LvzC5UVKDcBKhcoK0HCK2tIXj/kL8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"cd3ada7b5197e62dcd44b5f430b2ffadf434a04b","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.15_1784726478216_0.8590949091283053","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@av-pi-studio/relay","version":"0.0.16","_id":"@av-pi-studio/relay@0.0.16","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"93c225a53d7bf0e10e49d67e276215e0a6ccc12e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.16.tgz","fileCount":39,"integrity":"sha512-tnGrvERaYm+PHjUnAE5HsPbKnAPGrPbAispEVJiuWdRefU5JmjFc8zRs/oCG5EYVPg/a+epeMvnOLFQBH/uoUQ==","signatures":[{"sig":"MEQCICuQA51XinS4y2+8gK698FGgwZ6BCvEdP2bXTiRwkQebAiBYQgYiPmHmF1gM/IXPAPEo3vW7o1Pymi71ZWdD0ZP6hg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"c81a7472f90f8dbdd83d1d5cc42203a11a4f057c","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.16_1784729312253_0.7626303366947988","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@av-pi-studio/relay","version":"0.0.17","_id":"@av-pi-studio/relay@0.0.17","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"300115fc80018a0122e81ad3cbf0726b72537953","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.17.tgz","fileCount":39,"integrity":"sha512-LkKUQruD36gOLtUeqFUA+GKP54LbQTv5fK28x+lijGZOcDrHmp5Y4nftc+et5fwtK/7KYh0efAtNVFujpBzgzw==","signatures":[{"sig":"MEUCIB/Pak4qc8jnuIxhAjaCY+s7pBiaVp3hhrN/Rrn9xwJtAiEAm2EL5+e/GqxojyloCDG/MvT3RGAvnecSOVO8n0xCuDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"3da88a38cbda3a8b2c16fb52c3d5153e9e43edd5","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.17_1784730605626_0.964127207327109","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@av-pi-studio/relay","version":"0.0.18","_id":"@av-pi-studio/relay@0.0.18","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"8e97d5662e7f0b39648dec12a65c47b872d81997","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.18.tgz","fileCount":39,"integrity":"sha512-ztta0BgLtv3iETsfxvqIeyoHcG9f+Pa8k/I6VralxNJcb2SCPjmZM8oF3YYf1lUXj87RNH0UrmUu4N6GL/4mlg==","signatures":[{"sig":"MEUCIDgg9Wtqm4AV3ifIj0A+iT194DudTzfze5GrQDXqXcWvAiEA4+v1AcXV0qpCF+DuD+LNdoZ6FDo1MJ9mlo6pgfhtU/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"6a8173f011e1640af019ab3ad0a1150bb5f5c55c","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.18_1784734810648_0.7447987177728213","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@av-pi-studio/relay","version":"0.0.19","_id":"@av-pi-studio/relay@0.0.19","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"61508cf5335ea28c04baf304dec6739958da2cac","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.19.tgz","fileCount":39,"integrity":"sha512-UISol0QxcZyhH79udjVT11QlLZ5RjmsGgmCD+CtqdbYU6UZioRD9aD6VcnwXNRutQUUzu2Sm3Ipn3lwd8D7w/w==","signatures":[{"sig":"MEQCIAzH15Ksl0yrqOOdJJYKXW8mjt3j9KOYcQazoLusRNErAiA/qj8lQTt2912LveQHziHtRBYIL3wWtt1nmUbxnVM3vA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"41bd248ef73be102831c8f816da66bee091bb551","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.19_1784739512872_0.057214562974815975","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@av-pi-studio/relay","version":"0.0.20","_id":"@av-pi-studio/relay@0.0.20","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"18272cb06bd6cfc9b1d6df749712f2d57c68d8aa","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.20.tgz","fileCount":39,"integrity":"sha512-gdxPvzYWwgSGCm2SR64mtTs9MgreVa+Nz86DRrq/xiMu5M+PqwDwaB3WfeCiOBIhZ7ic06e0IxfsX3Jfy6wzrQ==","signatures":[{"sig":"MEUCIQD61GibRQTetntKOe6tOdNScLPaUOsXg1W8nFdMRiYprwIgZHLUKHfoThTfgoiWOa2ZO2M9wrDIIH0F7YRUcdhm3D4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"7b80f6775ea88783590d2d1a0a50ed24e11dd3f8","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.20_1784741836675_0.9389492275801814","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@av-pi-studio/relay","version":"0.0.21","_id":"@av-pi-studio/relay@0.0.21","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"3fc1e1792b0f51aa66aa593e9bc91b5b92cb499a","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.21.tgz","fileCount":39,"integrity":"sha512-/I//oJubz2/mZymb5jvPb+AkqyVYLLb61AtZVXmHQVdplWRLfqytsamr7zNGKAZXWQ5jA5/0oMozfEUDnzMEpg==","signatures":[{"sig":"MEUCIG0xw/OdybW64QNbpZkZv1lEqW45NtksWQIk6z5Swt/MAiEA0lv6BGaq5avR1jaSqSKLe3fD3qw6VaNn4RxkV5ttb1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d58a0c35891c042a3e2954832d1b0ec4410c7c20","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.21_1784742764585_0.7092976020526613","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@av-pi-studio/relay","version":"0.0.22","_id":"@av-pi-studio/relay@0.0.22","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"14eb6128e260ad67349466d005e95efba517594a","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.22.tgz","fileCount":39,"integrity":"sha512-Dn6+gCsBOy7nPDd5HxIeePmhx1v/ilecIjq6+epBrln7i59jDIhhYPr4+JRSISIiOIQ543dlL/QXuX3sxXqBQw==","signatures":[{"sig":"MEYCIQCP7jRmLdwQmzSat1Ryt53YVusGzTPwp8YXuhU6d1p5GgIhANdz9n8OWoXEjrMjV3j6VdoYT/CSvAg1RQMMJOV4hrgF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"fbc6b359ee711ac55238cae7a2e4eba030242c32","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.22_1784809473335_0.3860909545031075","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@av-pi-studio/relay","version":"0.0.23","_id":"@av-pi-studio/relay@0.0.23","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"b25430279776e25d9c71f716247b7f67a03bcec3","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.23.tgz","fileCount":39,"integrity":"sha512-rMVXVAynGCLLLqTFn1p4/4he+UIqdA8MkE9r/fouRRbPEuEMD7ZQ7ulzjQU+KQru9JRtdevl7q5scb6ok0mPBw==","signatures":[{"sig":"MEUCIQDfg2ywZqPsayRQbZFWcPy+b+cZgjrP80I9R97Kf8GNewIgbJBCTCrs577XaFdN3YJJ1QO/NymoW75+fWKNZ+isARs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"b7527b889382e8b317c18d1e9dd4caf700096815","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.23_1784820883145_0.009836493137576063","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@av-pi-studio/relay","version":"0.0.24","_id":"@av-pi-studio/relay@0.0.24","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"fd56eea3fc7b020c340e322a63d19703236f622f","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.24.tgz","fileCount":39,"integrity":"sha512-IEm7R0Iq6kjBbnI4z8tB6N5AHSBss2VBThE0ZgIK9G5+ir9qUXFcsBDVe5w5NCq1V1GVRr/9BgMRHqeEm0Anaw==","signatures":[{"sig":"MEYCIQCVGCo/wecdyf3hsKrI52gCCCMEj2sHlAU3L0zShh65YwIhANo0W5ipJmEc+IVyDw403ma9LnQRbasDBkT5DxwEiyFH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d4bfd4fea1d045987e8fc5b8abcb01110da19cb7","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.24_1784821558883_0.5869131277760493","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@av-pi-studio/relay","version":"0.0.25","_id":"@av-pi-studio/relay@0.0.25","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"6454b8bb491a2e4a35f081de44fa1d3010aab2e6","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.25.tgz","fileCount":39,"integrity":"sha512-ctJkonsV2sJ/wXN8BroXWyqxzYR+IMd4f9ZT5arL7Xyaf8WlBhTHq+GqlWQGpzbVgggmheUJNplBscEcCj+c/A==","signatures":[{"sig":"MEYCIQDiHyIdqVeNLjxybElIi27AN5Io12mrRvD/ygeW9ULl4QIhAOqdzniZStFOiE2xDJNy/0eGwgx98PJ/h8K+TjiR19PX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"0c6a0cf559e4759c0faa14ee231a6e525b89d4fc","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.25_1784824972556_0.5657762145063898","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@av-pi-studio/relay","version":"0.0.26","_id":"@av-pi-studio/relay@0.0.26","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"4912fc555d31030b97d61d0ca861153be889a66d","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.26.tgz","fileCount":39,"integrity":"sha512-tgEl8yH7p+sowPlVYqzv5rr9npkE7hAYaHMmRYZrmIYPwxuq6LC+xYfXGtRYzYUcQjEBCbDhzMM0PRncgFfQUg==","signatures":[{"sig":"MEYCIQCkY1gNZiHgl2mP7iko3JqQf6SXC45ey86S/94IP/T14gIhAOhZU3iiW8zr0EVwLoS7MqIXyuhWEz+u3X6zvgVmo8hG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"3b66e14584ffb199ab4488305e7521b722dd9ecd","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.26_1784825037137_0.13115263101906294","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@av-pi-studio/relay","version":"0.0.27","_id":"@av-pi-studio/relay@0.0.27","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"87fdf1614b34795d586deaa12d074c19c3c3aa30","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.27.tgz","fileCount":39,"integrity":"sha512-FOwRgFEYVS1kw/jY06ELyIB3lQlJY6aYEC61B3qiFiXS4J1O3E9VGDTiRYEd6Twb49jrG6M3/YMVDFmKbLYgbQ==","signatures":[{"sig":"MEYCIQDhuCIqxl5QtXXjGhCtCWwXgs1SnucPmgFchtMWiSnXDQIhAIWn1fUvtoRAfAI9YbDxf5SYWEtjxFcrtxInBy4WO3rN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"59ebb3b59cc5da9ea898e51e783039465a467111","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.27_1784826878196_0.2605214242516438","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@av-pi-studio/relay","version":"0.0.28","_id":"@av-pi-studio/relay@0.0.28","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"eba8783d249bacdbc36ba5586848c8de3a3fff91","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.28.tgz","fileCount":39,"integrity":"sha512-cfu0Bx28sBMfjTK2JCEiG/binLqm/dAWWhuyDq4Oz7VL1lmfAKXKLI+gCKXYM6btpiv9rON89JDKN6Yy23EVeQ==","signatures":[{"sig":"MEQCIHyMr+mn9b1ZuO/n4XQaYqOnuziFQtL/kd8pcHWqsoo4AiAPZ1KTHa3veG5SP9LSJ0MLHGOxXH8pZtzjjlAXMSSFYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"4d134a5e8905dfec6f9981d46634a823a2c4248d","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.28_1784827874437_0.4916419853172187","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@av-pi-studio/relay","version":"0.0.29","_id":"@av-pi-studio/relay@0.0.29","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"3b8ba489fa24fdd415dc7794c8022a5299f4c160","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.29.tgz","fileCount":39,"integrity":"sha512-4dX6GupVwcT8F8TIf69Iw2NoncG3P937xCjy3ofrxrKXbhIfRWeXrsg0sFAZBoFZBXQEgp+DG6/G733J77Qh6g==","signatures":[{"sig":"MEYCIQDVT8Ko2gC2NCJ6JtFuXq+CXd6MZ20ZJJBytvTZiU4I+AIhAJWWo1hdykkUycP/CdA47szXBlhacY+E9PUe9NKNXAnE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"0014fd31670d9ac2fcde6f2153302bcea0636984","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.29_1784831822639_0.3690180084764769","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"@av-pi-studio/relay","version":"0.0.30","_id":"@av-pi-studio/relay@0.0.30","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"ddd433682c40f133ec09e22d776b8178d6528368","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.30.tgz","fileCount":39,"integrity":"sha512-zMoscGn/kID3u4yC918YM5BBhrm1pFhNEduCCEt35ST8J4guDcW0SX0HHvsjnEDoyxnFE8tXAXhzm/hI4li2DQ==","signatures":[{"sig":"MEQCIBRwnojIn6TGsjqaHmhF3ndzMENkZCWonV3zsP6A7/aOAiBDpAJxycCE7lrrGT8Pf1pSs+4vV/U2scA9Ti22lRyIoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"6ad9f8439d83d316c8ccd4fd3ff515305286c2be","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.30_1784834657606_0.41181571354060686","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"name":"@av-pi-studio/relay","version":"0.0.31","_id":"@av-pi-studio/relay@0.0.31","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"192d2fa0c945d7606dbc055c204757892995064a","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.31.tgz","fileCount":39,"integrity":"sha512-EiPliLJLyPJ/RVMrRyh6lkodzO1YasH0qE192UMXCh6b+NL3A3a6RvSpTM2pj2qkF3lK3sm8oy4Yt5IoKICCrQ==","signatures":[{"sig":"MEUCIQCujAktkuVltuE3XQs0IfHNGfZJf0zV0QoQKMOyRCVb5wIgGsKCGmgjqAYK6Vh+fHDO1PDBe35NR5LtJkeyM33sIUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"ea12c29d54a10ab4c4e8d44ef204428e145a0cef","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.31_1784838865096_0.7462746737248107","host":"s3://npm-registry-packages-npm-production"}},"0.0.32":{"name":"@av-pi-studio/relay","version":"0.0.32","_id":"@av-pi-studio/relay@0.0.32","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"58eb1faf2baec66b87985b4389523df7ecc00e63","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.32.tgz","fileCount":39,"integrity":"sha512-8U0gyWKC3muASCYoW9KlLq30cNwXlCSFh6YBMi05iTcejglBhFTF8PalxmvFcpzxP2isWZ0G4f9Kv5DCRrBUbg==","signatures":[{"sig":"MEQCIEcUrH/RAAsFfLqX5rpAxHLzQCfac0Eqbl+6S/RUkik8AiBURt0T0sUDhoqPJN6jYNkdtgw397ta+QeqKAWVuxcRGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"38d445765614755c37ab18eb43bda17b9d145279","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.32_1784893160122_0.44115607367335263","host":"s3://npm-registry-packages-npm-production"}},"0.0.33":{"name":"@av-pi-studio/relay","version":"0.0.33","_id":"@av-pi-studio/relay@0.0.33","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"2210118ac62a8426e654f49dd73327113c694aa1","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.33.tgz","fileCount":39,"integrity":"sha512-b05+NDiauwlfVV6w0okW0kvwDjvoYu/VwWoziTLWEwC6+hiXyjFgpOwKH1zlT9U4fQZoN58JMe+EE5QsVCB2Ww==","signatures":[{"sig":"MEYCIQDHBaU7IH3MDW2TR3h34uY5lGNiv2rQhrU2YFM/mmsOKAIhAN+DTH3L2O1II8RGdspdcDV7OPKQjnCN64QZhVjTfhn+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"5298d9362c275bdfd5b1008f25c00d8fc8523e94","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.33_1784897812415_0.3538216197478463","host":"s3://npm-registry-packages-npm-production"}},"0.0.34":{"name":"@av-pi-studio/relay","version":"0.0.34","_id":"@av-pi-studio/relay@0.0.34","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"11b1e3de1886f67480ee31ba2b8b265442ea2c91","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.34.tgz","fileCount":39,"integrity":"sha512-4YVu4Ps5ZIy/MZChE5NiBaTPweXAtVsd0fTtEW58qPFioIs5fyAKe0EaPQSZhl3IoLVltPtXwK9v70ni5sZ3Xw==","signatures":[{"sig":"MEQCIGOMDAy9STbGwzzNIGtKjhU9MUK2pDZBmF4d3mdrfkAoAiAxdJp0mQShXmK8CjS8iUsNzS9P+ldTx8nCzisS8+lKBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"7ff575f3b33eac6e24f6af0cb3a3a8523ac2d4d0","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.34_1784915257909_0.8672365385239516","host":"s3://npm-registry-packages-npm-production"}},"0.0.35":{"name":"@av-pi-studio/relay","version":"0.0.35","_id":"@av-pi-studio/relay@0.0.35","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"6291850cae5158befdfced6cf61784fa0503f9e5","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.35.tgz","fileCount":39,"integrity":"sha512-M3rLz+Dr5wjfs6Y7BODSEhmfnase4BGRo2s2BZ6c5BkOg9uIhyIYJv8UWgTt9Kbt/aczgu6rqqaDil36xfPeKg==","signatures":[{"sig":"MEUCIQCskqCxLMqFgr/wMF7QiHvbXPVS+s/vCoHhm/Ii/l/rpAIgDQUX4tx+951wkI3z7hXmhbcPsSOPwlcpkqQYS5uU+Kk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"236632a9078d0c59484ae4534a1230035d8b4cff","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.35_1784922933349_0.24401806311375585","host":"s3://npm-registry-packages-npm-production"}},"0.0.36":{"name":"@av-pi-studio/relay","version":"0.0.36","_id":"@av-pi-studio/relay@0.0.36","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"614a8a8ba789278dcfd7908e8d6f0a279ab1fe64","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.36.tgz","fileCount":39,"integrity":"sha512-/L/H33n6vicu3VdaYsx7OeA2uSI2B6Iui6JB/iTnOenqVLJEmuEYK6KXK8d5ixK4WzHChSVrs4Y1WF28ROR6pA==","signatures":[{"sig":"MEUCIQD/5ER5qIdmMVXW/7dt4eiHOFIk3v/LpKbM9Uoh/tTWwgIgHMK09pRvxg/+k6JLQbJR0AGEtS/IPOj/YW10fwSaZmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"73bf98942eb0b8ff503439e6c69bcf776176bfdd","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.36_1784931109824_0.6824118931062633","host":"s3://npm-registry-packages-npm-production"}},"0.0.37":{"name":"@av-pi-studio/relay","version":"0.0.37","_id":"@av-pi-studio/relay@0.0.37","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"eb38d5708df077b9a611fb11a0689059dfc8b269","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.37.tgz","fileCount":39,"integrity":"sha512-OiWplHI82IOspwgm1h1FUKFxK5o7j4Shsxbj6MRYCEWT2rOJPjf3rKl2XR3d2in9iscKh7FPdur+qquAd2gGUw==","signatures":[{"sig":"MEYCIQCRSCu1zvV5MT8E3hc1/sauyTFOowWin36ECzHN0+U/XQIhAKOFdMhtEkU0Gjjv9UL1aZWwnRj7OCksXFpWxCkJwU4U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"a39c75a43ed8b9e210e6bff7ac59f38e1574bee2","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.37_1784981714037_0.2450600892641941","host":"s3://npm-registry-packages-npm-production"}},"0.0.38":{"name":"@av-pi-studio/relay","version":"0.0.38","_id":"@av-pi-studio/relay@0.0.38","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"f9448a8e5ec0c0aa6381bb9fe6cfec96832bf25f","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.38.tgz","fileCount":39,"integrity":"sha512-CuhcHUoGBwelGAzcKVruWh585speWPd17k0LGpx4vyZqLfTREG04JxNP9FHQYNVfJY1q2msBiAN2tdYNw7gfgw==","signatures":[{"sig":"MEYCIQDU7IqaJRP7BqnRCEjv7EiB+V8O2je3hWlD+R9vFEC43AIhANdEk4pw9FBOmGu6PTbPR9Sz6Vh1aaWk1IW42LGY2sGR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"56629c9755b575780049903cfdac779c55b6ffd3","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.38_1784989681884_0.6982806226392724","host":"s3://npm-registry-packages-npm-production"}},"0.0.39":{"name":"@av-pi-studio/relay","version":"0.0.39","_id":"@av-pi-studio/relay@0.0.39","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"4bba3a6be130a9d1dcdc4d29085f04dde504f6bf","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.39.tgz","fileCount":39,"integrity":"sha512-88UsgYIcNvTZSJvtXk1ZKkDwKZjhkmFhqZMfmHWx57+XZR9a9o4eqO/uuLDozlkfaPReLq/3ZIj8EAhL12ss3w==","signatures":[{"sig":"MEYCIQCHPs/peGZsng2ZkAxmSGVxHNmar70MAqxipdPpBjsoEQIhANui2qilwRGyuMGwI6L1442nbk6zQFd5llaTe+fgqrzA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"787c1669a7fdc25fc6d1d969d98e97f152a1ef47","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.39_1784998065445_0.22774920806491594","host":"s3://npm-registry-packages-npm-production"}},"0.0.40":{"name":"@av-pi-studio/relay","version":"0.0.40","_id":"@av-pi-studio/relay@0.0.40","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"10622cb48e3d4d67cbc328a7ea3cfbf5e5c8b248","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.40.tgz","fileCount":39,"integrity":"sha512-qZcnx64LF2G7fpdVseb3Rx/yx9sztb5ecTs7m2NkLX2r5m9XwOIDFMjqnBr7C7cgx0+vK0MFxEyESWXz+cTQ3w==","signatures":[{"sig":"MEQCIBDx0pCBJZbkXeIS4YR5l14sEFOJKLRRQ6451KCfWIGEAiA/vqVwlCZ663l4CSeHL6rqYBzcwnPAR7cQ+RoWU/9JTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"e1380e99ba68d33fc59cdb36d7a86bc4abf29071","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.40_1785005988076_0.1818250704359976","host":"s3://npm-registry-packages-npm-production"}},"0.0.41":{"name":"@av-pi-studio/relay","version":"0.0.41","_id":"@av-pi-studio/relay@0.0.41","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"0200a6c6f2feda48e2ed7e71b6f4f8fc402d5856","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.41.tgz","fileCount":39,"integrity":"sha512-j5TRRY9wgn4TdXzXQdwaDyyWgZBEIKzZgkZ0QrRsljtarCH0Mg/WpruveoT0n9o1IQhUI1Ro10R8YnxyJFyNjA==","signatures":[{"sig":"MEUCIQDqOizbRudPh0a4eP4DOk8iH4DIYEdeKGEvjyPLfQqGHAIgTixLlonIys/pb6X+JOqhT6oaylLmPXIrpKaaIFD0uU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"dcaf07f494492c84349c52d2e2b26b12785f9e77","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.41_1785086423559_0.05546026492241274","host":"s3://npm-registry-packages-npm-production"}},"0.0.42":{"name":"@av-pi-studio/relay","version":"0.0.42","_id":"@av-pi-studio/relay@0.0.42","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"0c73313b057a797867bd0129de35e2751d9534cd","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.42.tgz","fileCount":39,"integrity":"sha512-weeynie9klet64/7gmWhA2gu+uuVAKt/Ka3rlRcC9677I6V7wf9Y1gftPmydKSThLQDwaoWBXKKqOlVMv0cMLA==","signatures":[{"sig":"MEQCIGpl/U4ma4QRQxLWi0JsO/+pE6aZbFGLdEWGR8I+5AqPAiAfyau+qVQYvyshC/cfyuG+ebbYlJuwdypJA6XW3TvB7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"4a262868a07adf1792e0dc0eee019e48b93fd5f2","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.42_1785102246027_0.20928204781372095","host":"s3://npm-registry-packages-npm-production"}},"0.0.43":{"name":"@av-pi-studio/relay","version":"0.0.43","_id":"@av-pi-studio/relay@0.0.43","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"37686f987aa706e7954751e261992bdc22857b1c","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.43.tgz","fileCount":39,"integrity":"sha512-kcF31Jo/3MNplf5fvybEvwreoXUe9NIiUfk4GgyLvjhEV72XURrIiBdpnhFaR7DK3oh4VkbACQy6c/lZnGrqQw==","signatures":[{"sig":"MEYCIQDnAHFQ3TppC/+pC3pAhGk7ZbDmiqGhfuwI0wboYCW7/AIhALNcS/Jvv6jm4GblBIN4ORDCvz4rnTsQLkv0wyRuSUA8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"fbfa86528fcfcfb4dc51da8345743e4e77213024","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.43_1785187101949_0.4981590935102951","host":"s3://npm-registry-packages-npm-production"}},"0.0.44":{"name":"@av-pi-studio/relay","version":"0.0.44","_id":"@av-pi-studio/relay@0.0.44","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"a80e49777da92572f6dc275bf0eaa9d8c259b58e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.44.tgz","fileCount":39,"integrity":"sha512-2OL/9fuv/HNGO6uW5anyuJ5aHEupl5u5fM2z9JdxGMSl5gMlwZ8UKGk5bXTyeQpRv8nWhaLeCpeiwmay8taEqA==","signatures":[{"sig":"MEQCIBb8dk2HiY2am58CBQ2VxRZIH1fVJ9NIZBaOFDf+P2l8AiAIamHV9nmDWfrydxyRi8Ct2Wj+4A0eNQ0VD1CmBplzvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"a5e4f806258edf4bcccfc992dece78ceadd272c5","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.44_1785245350542_0.9373413300512132","host":"s3://npm-registry-packages-npm-production"}},"0.0.45":{"name":"@av-pi-studio/relay","version":"0.0.45","_id":"@av-pi-studio/relay@0.0.45","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"94ee7af74f0b47e4a40f0e6581ffdd709405905c","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.45.tgz","fileCount":39,"integrity":"sha512-luYNn7FkEX9ZLLrLgow3CbafyiW+ZUerwgNfmt8NAIkqS1BM83GI2GAimgFZqQs7ni6EnTn3+rUkH9yr3+eNzw==","signatures":[{"sig":"MEQCIDwidsfZ8qeEC/2f2v+nWgGsATKIph1vH7dXILBKbg3oAiAq071ffnEdNB/rFboBbkq/LOLOWOnFFWAvwQbjrHC6rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"b1f50e9c12aec5f71261863ca8196a72327184a4","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.45_1785249373812_0.9735723966776642","host":"s3://npm-registry-packages-npm-production"}},"0.0.46":{"name":"@av-pi-studio/relay","version":"0.0.46","_id":"@av-pi-studio/relay@0.0.46","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"477029fc27f9e6dad627ea12b11adf33070fdd37","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.46.tgz","fileCount":39,"integrity":"sha512-qcLCze03nq0ucpFpftYLr8kdQVgfkFqTHkAPwHu4JdDQT+xKbznSKSmkqDhjLHdLoWVUBltXozSZOhx7JF8K/g==","signatures":[{"sig":"MEUCIQCUIaXDtHCtLLFWshktoyHH9dOwYd1DDtDu6EjnEKs3gwIgcxQLj7B/+bezUNIBDJkK9i2CdIJ4oAhezH7BkY+vGWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"844fade844063f863f157647b35d5dd2caf11b2d","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.6.2","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.46_1785337332571_0.09900390307150997","host":"s3://npm-registry-packages-npm-production"}},"0.0.47":{"name":"@av-pi-studio/relay","version":"0.0.47","_id":"@av-pi-studio/relay@0.0.47","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"aeffd2fe0e94b74516fe7b213183710083d16852","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.47.tgz","fileCount":39,"integrity":"sha512-77WpSX6VAW/dZrSpMmkWDrSfnbGUSOSUA/l0COxRu9+my8wFENvyo+lyqUYZLhaXLuA6dK1htGNQAlphssOVyA==","signatures":[{"sig":"MEYCIQCTUg6H6iHswMl6qlf5smIQYs8KyrVNNrRXcfdRxKetGwIhAPldG9pJb4849udP8JJVU0WcNUUnlfBowsUb7i9YFtPr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"a6e9db6e2065768eb97ff0f3ee1829b1a6f007e8","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.47_1785339832138_0.4477484909733198","host":"s3://npm-registry-packages-npm-production"}},"0.0.48":{"name":"@av-pi-studio/relay","version":"0.0.48","_id":"@av-pi-studio/relay@0.0.48","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"6aee108b753eb88a79d253a1fadbd259cd05605a","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.48.tgz","fileCount":39,"integrity":"sha512-qEr6WyGj6Nr88BqrTCxzC3NpJfSRNkYHe9Xlw6CIoOhNWSyM6DspCxr1iCI9BdEVhNGcsTtuvLaig4MmvI8n3A==","signatures":[{"sig":"MEQCICoycPytKBABonnsJAwO5L4Qc5fF02gCcuAGnUKvuUrmAiApXnVrGyIZw8uxeEJlUDVaydaNBpCgsixBLfCjXiCsnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"3dd4bc713e38783e075785ed6f09e2630992689a","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.48_1785340300903_0.5869763796944918","host":"s3://npm-registry-packages-npm-production"}},"0.0.49":{"name":"@av-pi-studio/relay","version":"0.0.49","_id":"@av-pi-studio/relay@0.0.49","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"b7c9d40469269e949bdf330a7099de942fdd5257","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.49.tgz","fileCount":39,"integrity":"sha512-Dv+ELYgJuSxew32lQrmrrETjIKrf+nCFvjUfU05Mr54sa7KURgH2jE8QnL7zRi6ZWCdZhVPo7VGuM+yearO/uQ==","signatures":[{"sig":"MEQCIEgRV6gLvWZLTe7WDHHYhJzOiyq0j4q8QqXnqf8vxTSlAiAfMG+VQnP6wC6ovgzBoLmSV31B70/CTJg6SEbMSI8THg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"3933064e52394cac77ed22039d923016161a14da","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.49_1785350483595_0.08303807801601693","host":"s3://npm-registry-packages-npm-production"}},"0.0.50":{"name":"@av-pi-studio/relay","version":"0.0.50","_id":"@av-pi-studio/relay@0.0.50","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"01474451104777c169557098ad6b1cf48ccf3280","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.50.tgz","fileCount":39,"integrity":"sha512-MDlSFpKNmEHWXhSVHQknUgz0b/lK6xFX/hI/XgdGTyBEhYOpcVyYZSrTGGstYJoJFJ+mqFDuYHRzI+Ex6s5KqQ==","signatures":[{"sig":"MEUCIGDGTLR5YwUAFKMCNIbjGEaXYUuaNi3713LStw7FH3zAAiEAyfOAnl0vcAjiaBZON3eTS9EWU9IkmJGij4nnBQlWq9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"eeb73dca0bbe430bfcf85a091cc03c61f45ddf8f","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.50_1785419770304_0.2343748250201132","host":"s3://npm-registry-packages-npm-production"}},"0.0.51":{"name":"@av-pi-studio/relay","version":"0.0.51","_id":"@av-pi-studio/relay@0.0.51","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"1d26e7413d9ad35354e33842a66d503b4bd24758","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.51.tgz","fileCount":39,"integrity":"sha512-kp9je4gFNNuPf4XsqGT+m1D64LSY9qbE3hS+Trn/3Lir4SD1TWZhLXu+LOAPDBD241cwlRPZNibU75f8vB9bYw==","signatures":[{"sig":"MEUCIHmhA5HNbK95u9QdxYENaM6kJlT8/9rDenxGsW7oJJlJAiEA/x4HxFym0EWWovNH8X9r7algeripSLbB5afJHSKrFZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"0fa728b63c4d7975528f012a12a7f4283cd32540","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.51_1785426670374_0.26961889533923","host":"s3://npm-registry-packages-npm-production"}},"0.0.52":{"name":"@av-pi-studio/relay","version":"0.0.52","_id":"@av-pi-studio/relay@0.0.52","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7105dfe0e0f872057dbdc69f3b3f89a304b3a579","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.52.tgz","fileCount":39,"integrity":"sha512-zcfUdlwavshnvzK16FZFIvmZe8SNiUc+hhFcZW2cFVlxtAOuOerCTptAooeeBoNKcfxRjOJTSSZ5jThhNfJaKQ==","signatures":[{"sig":"MEUCIE7wus7X9mgJr5n/+MWIkq1az3ssDqIqEkK4Qx4lIqqMAiEAyKX3q28ms361T6ru7EfCzb1P1/pAmehLJIPvN4uoj98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"c8f15c19b507598fea55027dfdd6e00ccbb57de4","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.52_1785443381798_0.050645511924050535","host":"s3://npm-registry-packages-npm-production"}},"0.0.53":{"name":"@av-pi-studio/relay","version":"0.0.53","_id":"@av-pi-studio/relay@0.0.53","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"01c48b188611fbe1432153d29ea5ec391ce75739","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.53.tgz","fileCount":39,"integrity":"sha512-QQKHKKc28lEOOqICl/NsR3Ew9Y3+60OE6Uj74F5oSHL1ljsao1zBLSzklsxCaIzBQOhX9JQnMwOqaJuAbRccPw==","signatures":[{"sig":"MEQCIHvWYu5ez4hee+mR4tm1l46eCbzTOFinRPTpAk/7j1wvAiBntnQ4/k9yzhTpx//cZPqd6jRmM8kzwkKs34mmlJ8QqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"ca4683ef4865d6fd283d971f11f4cbbd8f7e44b1","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.53_1785443998308_0.4041785451192812","host":"s3://npm-registry-packages-npm-production"}},"0.0.54":{"name":"@av-pi-studio/relay","version":"0.0.54","_id":"@av-pi-studio/relay@0.0.54","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"bc42e64ba32f5b3fb68709f494dfff57e7ae575b","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.54.tgz","fileCount":39,"integrity":"sha512-sES0I2iT3lTSEUhyvDta/X7s6hWVi6dW+lUop+3Hq9U1EOeh+UoU9ZjANnd8/w6dy47VRIU6pJi+nQDFHZy9Zg==","signatures":[{"sig":"MEUCIQDqKX6s/BdE0YMIvpYvPqLkX6ly8YKWxNwm/30zJ+MjZAIgT/YuD9DRyUbwJGM0N+2HB5o8YzaeEgpLuoPW7D43lZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"328575ccf794e80b81bf9d8a2a498e75421e634b","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.54_1785445885478_0.9991109846510924","host":"s3://npm-registry-packages-npm-production"}},"0.0.55":{"name":"@av-pi-studio/relay","version":"0.0.55","_id":"@av-pi-studio/relay@0.0.55","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c110f74c0ae61e1cd529fef6bf9463d63e3c647e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.55.tgz","fileCount":39,"integrity":"sha512-qOPkxRAC+fewyCct7s8jbORNK2AtRRb4WLr9ksI0120+BYpvZq9q0YQBE4Q99JF4B5FMJ4ctgQ+YT+AFC4sTGQ==","signatures":[{"sig":"MEQCIHSHGlkPXAb6XVdTgSP7jx1/ZzVnFoH+F2sKOmIPKy8yAiBzfAJaCkxq+ty+n3CTXQg/Ap8emhcMeRzOzApulVqmPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d4d4b085589fc5bf41537317278771ccf2506cf1","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.55_1785448057054_0.48665108528905","host":"s3://npm-registry-packages-npm-production"}},"0.0.56":{"name":"@av-pi-studio/relay","version":"0.0.56","_id":"@av-pi-studio/relay@0.0.56","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"fe7d9d1f8506cae33f44dd408aa572aa58c3041c","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.56.tgz","fileCount":39,"integrity":"sha512-Vlmh+Mf5hVjfp7hZ1XKJajCUS8nk88HSnSw6CsB4AAnnyLr1PZntLuwgsbCKq/yKOxBzjgLYK5ya+7jE8N+log==","signatures":[{"sig":"MEUCIQDI+a9vhV4KuooGNgsb4UH4mowJqkOJZbU15BIpOpW45gIgdv1LTQPEgEVwusb7DND77V7T3uj7XVNAbd2qPvBBUkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"454151951c364784b3cd608660c41609f8e498ef","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.56_1785449257702_0.5655854900096824","host":"s3://npm-registry-packages-npm-production"}},"0.0.57":{"name":"@av-pi-studio/relay","version":"0.0.57","_id":"@av-pi-studio/relay@0.0.57","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"36d32f75a600ee49acc59ec3d657e5314222b8b8","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.57.tgz","fileCount":39,"integrity":"sha512-Fv2hsS35Fd2kYfuuYo25Mtg/63BGpdQAm0jRUFDXrn5dL6ujg1oTjFhXxVdPuVfcfFJfBOczpnVFASWDqH9izw==","signatures":[{"sig":"MEYCIQDi+0C8ng/N1JmmqNRoXvj0K6yqRfKMEngWeBpYoYxd1QIhAJmlUJdOVfRMh1ilUUrNYOKZ1sysTuSLAFsLcwoIa1Zy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"2bf9f9e1285a8b027e990b672086a8d79426c217","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.57_1785451436370_0.16031277277352518","host":"s3://npm-registry-packages-npm-production"}},"0.0.58":{"name":"@av-pi-studio/relay","version":"0.0.58","_id":"@av-pi-studio/relay@0.0.58","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"d598781ba2414891267c5c75984070dedacc435e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.58.tgz","fileCount":39,"integrity":"sha512-IcSVNT6P6abRtHQlsaexG8OCXlL1n+bgoJzDP6JigNBKVa4sXMpiqB5Ochx1C/dyTu8qjaiouCZu8ph3bPMcSA==","signatures":[{"sig":"MEQCIEEBtQ5qX8SGXczUCH/8IGcBvA8VeBrcnzny3qb12eXrAiBvsNl+FSWGBBytxer3LhPsyrEDYmUmVTHIVOvA0jjm/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"eb31ae94bdcfc29d5d11563f9f076431f11b4027","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.58_1785452246554_0.648879181220287","host":"s3://npm-registry-packages-npm-production"}},"0.0.59":{"name":"@av-pi-studio/relay","version":"0.0.59","_id":"@av-pi-studio/relay@0.0.59","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c8051045cad0a40e2007c3065cdd8820c389b900","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.59.tgz","fileCount":39,"integrity":"sha512-17MHaDEbWDquRKTDIfpX5QHrH5unhlpc35lKDTq48P5XKFIq0bcKQ1wP7cBjojJObREHt5vp1JhQxQCaeAHwIw==","signatures":[{"sig":"MEUCIQC1f83eFM25vEvHDk9vkOVls7tCvHjQd8uVvoJPP5MRxwIgGBvPdA/vmTOHdS6egeMdE0lqhBW+kvFydCRAU6WMmvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"814b60a34e0334c4d6b1d63bdc762a1ba7d7db1c","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.59_1785688702133_0.012940099678840689","host":"s3://npm-registry-packages-npm-production"}},"0.0.60":{"name":"@av-pi-studio/relay","version":"0.0.60","_id":"@av-pi-studio/relay@0.0.60","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"6a708b1b40015baff706c08074935451a40582ab","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.60.tgz","fileCount":39,"integrity":"sha512-nIZJA+Q5R+VL22AJH6Ru1/04YK3a7yeF6X6TPMcaVisb58uZt6YQw+yEIBMc9INgJPznWhw+EBg7OOG6p72ssw==","signatures":[{"sig":"MEYCIQD58OU3RW7BBlb9/EsUOx1t5yaOb1ut//H8c0HwkkZRCAIhAJ6giwx6lgTohP4vxiNI1CZLpVndhoaYV9dALncyvi9k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"26149105b5aa8566cd33a394da6a2007392778e6","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.60_1785693299137_0.944416479426466","host":"s3://npm-registry-packages-npm-production"}},"0.0.61":{"name":"@av-pi-studio/relay","version":"0.0.61","_id":"@av-pi-studio/relay@0.0.61","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"caa0268a9d03b770a466ba0ecd1726b49c7c2499","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.61.tgz","fileCount":39,"integrity":"sha512-uwVg9JA4ut6ioJBhgyPLogRca57bufuAGANFxAh7v3i5/lGg+ES2JjdhoaNIEm78GymvU7I0loVkPTiRGI13Xw==","signatures":[{"sig":"MEUCIQCL9NQOU9QQKH/XnnsoRjWl2qA/ldBffG7yMTqR9pLd+wIgJFQ6GIOdrPRMKVJp/4IM+rtizKNtmb2HXfE0tqhuBCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"2585e6682efef71307396e52f23f4d493ad2d399","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.61_1785770384484_0.4966178976954507","host":"s3://npm-registry-packages-npm-production"}},"0.0.62":{"name":"@av-pi-studio/relay","version":"0.0.62","_id":"@av-pi-studio/relay@0.0.62","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"328177df77a1c15c7b989c5588f9b6ebc8dde5a3","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.62.tgz","fileCount":39,"integrity":"sha512-nmmXDupOcTnc9Ga4KmqpMZLK7DemX7rfNZBhTGazOxb9kke/XVNl025pJ56/CZ4MI12ODbC8zEOqpBA6vjkwZA==","signatures":[{"sig":"MEQCIBVhv8LgP4CZsK26Cv+34clyKB/dDg4sZZ1hw2ta6PW6AiBT/A2gjrUEvDqVfTdE/ZisNmuohVcSiDkeO+HdCe9zmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"79aaf0c4dce116a898c1b2ddead8111d797f45e8","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.62_1785789612802_0.34161640092323453","host":"s3://npm-registry-packages-npm-production"}},"0.0.63":{"name":"@av-pi-studio/relay","version":"0.0.63","_id":"@av-pi-studio/relay@0.0.63","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"1378800aa5d2590fe54c8a7c47ce4aefd5a0b7ad","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.63.tgz","fileCount":39,"integrity":"sha512-E9F2cBtU/QNq6YZHPbu1dDQAVe6Cr+KO18k45Twy1v7ubCs1paUhOmuktHhFk5HEnNeCs5G6sCnS7sabj8FhWw==","signatures":[{"sig":"MEUCICipVhbd11mTKhHVB8vHTj+/i5xNNeT+co/dZjWmU8IaAiEAqrW2yHZCsVOapkCGmb06RioTU+S6h+M8GHtIMH4CFPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"30173c6ce787bd8134131fa8eb559ad8b8d8a9db","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.63_1785841122854_0.11122529667578407","host":"s3://npm-registry-packages-npm-production"}},"0.0.64":{"name":"@av-pi-studio/relay","version":"0.0.64","_id":"@av-pi-studio/relay@0.0.64","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"8018d50691a5e01d37f3929ef1b2f5ee473431a0","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.64.tgz","fileCount":39,"integrity":"sha512-tMNAkhAxWkALpRvnY/SykBapcFSSainkwFHoede1i3kL8ydILNAbp31Oj6HLdfsYfMkrZ8m/spE5+Iig/kfJ/w==","signatures":[{"sig":"MEYCIQCkcbJ4jZ1TiNsJv+hStkCDHR88LPylDgtqjBKEgtbZhwIhANL3UrICSki4SXkl6jyEo4E4eSXZM7hNgMt1GwzMdmzR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"ae62b201746d427eb5aef61926455d1767631884","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.64_1785854167602_0.19568112518038006","host":"s3://npm-registry-packages-npm-production"}},"0.0.65":{"name":"@av-pi-studio/relay","version":"0.0.65","_id":"@av-pi-studio/relay@0.0.65","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"a78a27204f5a1aaeb8346c26c18daca0534fa6ed","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.65.tgz","fileCount":39,"integrity":"sha512-wfDj1tcJIzg7a9DoV+6wB+LlBhpZDXs4K+ExomxegX91H3c3AB86ideJm5k+mLK0mWUa09CqUjE/Qm+D3DnEEQ==","signatures":[{"sig":"MEUCIDM0vJGJUaMiszk7f1Ol5v0fMfNHsL0OG3kHBQkslm3SAiEAwcZCFjoNwKDV3EYQyrXCoQAjYhsncL+bd+M7WRHGDfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"bc99881cc76ba091a8ff8976345c70d3960eeaaa","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.65_1785858323486_0.506733904896016","host":"s3://npm-registry-packages-npm-production"}},"0.0.66":{"name":"@av-pi-studio/relay","version":"0.0.66","_id":"@av-pi-studio/relay@0.0.66","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"8567a7a655374b72b93414d30af7db27466da26b","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.66.tgz","fileCount":39,"integrity":"sha512-gOBFlGU/olgnyvzyt5DyXAaHYmE8k+rqBrbK+yXkcuGFeTjZvwi7K67exqzPnKCwR0ScuVP7m1lL6/g3+WEcTQ==","signatures":[{"sig":"MEUCIDkyH3qDgLkMrOSOzeNOMzzPlURGCJSl6iOL+/nFfgtRAiEApFrIBdbj8EqSw5jnxG+OliuOirvnOhB6qedxYsJDw3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"4f05dcb5173488591274b42e097f0e4106461e03","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.66_1785927314277_0.9557368166974882","host":"s3://npm-registry-packages-npm-production"}},"0.0.67":{"name":"@av-pi-studio/relay","version":"0.0.67","_id":"@av-pi-studio/relay@0.0.67","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"ec99f1dadd7a956c6a94ecb8405d33373923f6f2","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.67.tgz","fileCount":39,"integrity":"sha512-+YQsXc8vsTBOo2lCkSnO0Yyhbdzv+/ids5x1ptv8+xceBn3JEfUYt2hIIoUAMb9Z66HUItvpo3/Cb1KtDYoSRQ==","signatures":[{"sig":"MEYCIQCcCczW78S3Q7TWg05gUmumjO1Stlsswdt7OPIC4HvkegIhAORvbhl8fFWIelNslUsHEh9FSvMsr4+z2AGO7mlFyvTN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"b4ef8c08fc1965fdeffde7642b9dfc70d2bdd717","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.67_1785934458029_0.35919774796723924","host":"s3://npm-registry-packages-npm-production"}},"0.0.68":{"name":"@av-pi-studio/relay","version":"0.0.68","_id":"@av-pi-studio/relay@0.0.68","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"a8defb8432dba61d6460855c3f40374780b64815","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.68.tgz","fileCount":39,"integrity":"sha512-WwH+E/QyxV3At1tA5/dLn0AgCrNWCKKZcxK3uj8V2kexBKKjZAeGyjPTSTEG+PMCIUBApYT4m3tAQjDgGFcqtg==","signatures":[{"sig":"MEYCIQCgg6gjGcHt9W/hrzW+z5q1Zf5WytL332hrKJbYjxf4uQIhALL9K7gcNrnjJQ/NgKyuJtiFVuad6W3cJNh1feZBuYF6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"bb927f04986b589b7741740a9aee24b52bce537d","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.68_1786030367273_0.720876104924846","host":"s3://npm-registry-packages-npm-production"}},"0.0.69":{"name":"@av-pi-studio/relay","version":"0.0.69","_id":"@av-pi-studio/relay@0.0.69","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"23e3e9145ed57dd2969ee46e1cf65c0abbb32197","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.69.tgz","fileCount":39,"integrity":"sha512-D+nktyMZlXIHdjD1CXpbQWLQJayB8tp+5D9OmpLhUF4R38I6x47UInuAMXyM/fUaES5WVgSFM+B6gBv0UaPh2Q==","signatures":[{"sig":"MEQCIGxA7Irs3EwjCKaku8ibZ3Gwkb6xSP8Lp4jh7MbXyYEoAiACA+iFvM+LdsQ2x6jehI/buNNO7NOh37UhypOICUlqPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d18187ce83f25cd1e60090a98cd1893dd9c52f51","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.69_1786096419360_0.3269869892425046","host":"s3://npm-registry-packages-npm-production"}},"0.0.70":{"name":"@av-pi-studio/relay","version":"0.0.70","_id":"@av-pi-studio/relay@0.0.70","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"3e3da5ef1b7ba1ff5bb012f3e32e3f7521eedc10","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.70.tgz","fileCount":39,"integrity":"sha512-EIIhzLTrPfzRSq+R72/qppQfQm+T4jCt4ViQI6uB2foeXjC3h9rj2jzGMUCmoIRItcsVwlUEOkfpX6sg/wu5ow==","signatures":[{"sig":"MEUCIFAJU+GxqlJyV7wsTPe/ct3yxjJcBZBmFHUBaUJIg/QcAiEA1sWrk97X/vwZps6HALw3XBrcd4QPMcojM9c19mUWeRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"767a05f7b8e5d60dd455c3d02657984d3f7e555b","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.70_1786106551422_0.762019012202221","host":"s3://npm-registry-packages-npm-production"}},"0.0.71":{"name":"@av-pi-studio/relay","version":"0.0.71","_id":"@av-pi-studio/relay@0.0.71","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c418c4cbe86fa8b9571d6461dfff61591ced3c73","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.71.tgz","fileCount":39,"integrity":"sha512-AtrEBi7jzh2xTcl0kpwpvjBq5ewRvqIK6QxCIDgpQ3lRJkDySce2p/szZdWMBVOTVQFYyA/r7HHn3PSpvnuItA==","signatures":[{"sig":"MEYCIQCJA/79J5fj3+Vq9c6GU3I6o6dgI71lzM8wWM7DEWBdkwIhAOxbYMwTrhj1j39kOHof7ToWx1IcwO8NuKnIb/2WSsYk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"25931101839a8b88bce3fb808177211379232df5","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.71_1786108359425_0.7402555352610796","host":"s3://npm-registry-packages-npm-production"}},"0.0.72":{"name":"@av-pi-studio/relay","version":"0.0.72","_id":"@av-pi-studio/relay@0.0.72","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"67890848b79780f59d5b74351069956977d06619","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.72.tgz","fileCount":39,"integrity":"sha512-UF5vc9fNg/aq7p79ESJz/FI4x3jFilqRW7CUQkRTC1K2kqyeG2IWgzI0rOdmfq1gBlNnmkYizOiyTMZOQgcoPQ==","signatures":[{"sig":"MEQCIBD56cnPC733ZJCQH8tUq60SrwsmC/S74M937hDRRsOWAiBbYmtcymvGgrQNAiuPUmru+umjq8YFHksXcAMrl+D3Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"f2009241f97507b4ea07cb4f1fbec88b40ef7612","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.72_1786294489201_0.5816491257024334","host":"s3://npm-registry-packages-npm-production"}},"0.0.73":{"name":"@av-pi-studio/relay","version":"0.0.73","_id":"@av-pi-studio/relay@0.0.73","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"b0b23e1202716ddb3c6cfe62e8a4c3f9c6b79253","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.73.tgz","fileCount":39,"integrity":"sha512-88iNZ22AO+vZH9qwXUNxp59xsuv8qpjExpIKJawUZp/jcK4LY1vqfOeKVCnbPdBSxZKgpHKkJxG1B0PgbsTU3g==","signatures":[{"sig":"MEQCIAPhn3L9NbIvXyCmffRRtm/0goYHEquQUAS5yPP1rEuuAiA/ur8nP/9a8ZYNDrT8YJjYEXcD953mMRYDdTrmTRmJPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"0cec572669f4e453a56e9955e67a6429e72024bf","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.73_1786300501864_0.22729268362812438","host":"s3://npm-registry-packages-npm-production"}},"0.0.74":{"name":"@av-pi-studio/relay","version":"0.0.74","_id":"@av-pi-studio/relay@0.0.74","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c1eee84e5e5ca963688e30f7c80efeeb648d9de1","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.74.tgz","fileCount":39,"integrity":"sha512-NvPjEf4hgwHOLs9EK2GeKwodVmigbuew4UXvdfSP5YCSombmmHkvfQTCsW00sUkZyTuGuQ89En4QhUdHT3nIaA==","signatures":[{"sig":"MEYCIQDRAwhNL2OVEFSPDYeKnKfmMbO3kmUa2aOakSEDX02grwIhAKuueIORs43E8PLHDUlOalhKHMXRJhVP3PMcxK1RmeW+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d106e99b3df9648a9a52442fe3534c2b8ab57d31","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.16.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.74_1786647298876_0.33545345672459725","host":"s3://npm-registry-packages-npm-production"}},"0.0.75":{"name":"@av-pi-studio/relay","version":"0.0.75","_id":"@av-pi-studio/relay@0.0.75","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7580e7e003dc637405f781848f87ebba9935ab6a","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.75.tgz","fileCount":39,"integrity":"sha512-1uwh1hRxUMcYfEGy1xlCO4EeOcOdhxKFtpM5g1los2vER4Cf+VG5LE79v/7KHmnkWI5BfHcV5TzJkPhTPj6Yxg==","signatures":[{"sig":"MEYCIQC2h5Nh64KJF2aBny1tIkj81VynQSr/T4MGyvjoytGtmAIhAInT3n8GadGN8T1o6UhBQZVd2s1MysaNnYFFwPC2YFES","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"04688d486cadc0bb946c42bfa6d7f6b932ab90c2","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.75_1786902432273_0.05856433479122036","host":"s3://npm-registry-packages-npm-production"}},"0.0.76":{"name":"@av-pi-studio/relay","version":"0.0.76","_id":"@av-pi-studio/relay@0.0.76","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"565c8cba81a06eb7b44fbe7e7c376689f4bb03d3","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.76.tgz","fileCount":39,"integrity":"sha512-Qez2DhKDfWpomuhSzHkYmmH8IYau4ULxPWM8CjyoKVrMd/HPOe5c0B++IjAyuJzFVpy6P3OCDSc4Hf56W7JcMw==","signatures":[{"sig":"MEUCIG3vaFqrMn+lGEYzdsvZzmvzChY0Ce2kEvrgJiCR7OSLAiEAptHystVFbM/J4E6ixbhx26pfjIz/c3PjIiaCdCU17TQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"ad85a711b34d0eaa7faa094ee06c1effa872ec1d","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.76_1786983575178_0.29245123388137606","host":"s3://npm-registry-packages-npm-production"}},"0.0.77":{"name":"@av-pi-studio/relay","version":"0.0.77","_id":"@av-pi-studio/relay@0.0.77","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"5727c61924d757ea050d2e71c45e7d0c427cb9be","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.77.tgz","fileCount":39,"integrity":"sha512-rKvVHVnvViL59r6I5LzxhubIyUgrwTeRR9jmQVtrTirq56w2+u9AJ+2EdIu01OdPwb1ESFg0ERqqXslUFqJn7g==","signatures":[{"sig":"MEUCIQDIH03UWZpc7Uy5YNqFctI4g5JpTU+erqRa/r0teD/yHgIgHKy1E+oF+LKTQj6m5VBW2+L9S16RWAeGrBE/BnIY378=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"9f1d1edee242e9d233bf0bd610e3bd9252816049","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.77_1786994591768_0.9622196866803221","host":"s3://npm-registry-packages-npm-production"}},"0.0.78":{"name":"@av-pi-studio/relay","version":"0.0.78","_id":"@av-pi-studio/relay@0.0.78","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7a6e85a1d71a1e916311fe2636a93a701254b9e9","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.78.tgz","fileCount":39,"integrity":"sha512-HnxQmM4W2ILOHnUpOttcqwRMOH3oJgmDyXq1tpUwusFuzRLef5WgJKIcUtVsJvEeN57HP4nvuBc3FpqQpC7RSQ==","signatures":[{"sig":"MEQCIH0pf0XV0wEnEribSZntNapE/4FqVexy7HLoDo2GtA7OAiAhDdETVDpchwqYK2GqXyk0/qo0eqf2BXmqy7FAlGLp6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"9db7ef13e812b2fd2676670297199e03416942b9","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.78_1786995314120_0.5388778213740977","host":"s3://npm-registry-packages-npm-production"}},"0.0.79":{"name":"@av-pi-studio/relay","version":"0.0.79","_id":"@av-pi-studio/relay@0.0.79","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"f82f6190c192236808cc5e2656f91ec1710acd6e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.79.tgz","fileCount":39,"integrity":"sha512-KlnnVMTfJA1etaWTfPp4jA9uaWrzTBsnbctGR+Kj1uYezbTAr3WFHEtEo2mSa9Ld9vEfe4+gFZDoUfgontMN0A==","signatures":[{"sig":"MEQCIBci2UaDHx8Mp5I0FGiRtMxM5LWNZ7/BfB6P760z+6P4AiAKckDBU62u/x7s0YRHphJHI7FBc93rrhNmQdBlDuZiZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"45e46c6891c98134ae08be081637394c6e995779","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.79_1786996468613_0.2644760076417729","host":"s3://npm-registry-packages-npm-production"}},"0.0.80":{"name":"@av-pi-studio/relay","version":"0.0.80","_id":"@av-pi-studio/relay@0.0.80","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"992ab0c9ac8a614ebcce089d764e886b42087df0","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.80.tgz","fileCount":39,"integrity":"sha512-3EfFRBosJyUEzKRTH0F4eO0muWjPxzvdEyl4MHBlw9kFrhYuC4/p7xiXJ1v0LNDIDLFzHeyi0S0VFpem7c6n0Q==","signatures":[{"sig":"MEYCIQD4KEj5t9J9eKb5gLtqKzYQ1PGAmIHIYe1PrumVOfcwLgIhALAgeXzjPwd1FLgdknUHQxyFno0qN2HxwVluDjWrqhha","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"3d92ee9b5b588a7947b1ab0ee5bf471596beb874","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.80_1786998517857_0.6510698698659976","host":"s3://npm-registry-packages-npm-production"}},"0.0.81":{"name":"@av-pi-studio/relay","version":"0.0.81","_id":"@av-pi-studio/relay@0.0.81","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"abc689c73f4302b1589075196030a36237c9ed0b","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.81.tgz","fileCount":20,"integrity":"sha512-6vBTTrb8C7Al7QY3/YAT5EkaylqH/6eIYwIKnG/I2JE+NZ5pBtRSkPqskhn7QdDt/ELOcAnBp5mzTjLvn44Haw==","signatures":[{"sig":"MEYCIQCUM6jIOG3URt/HXGhVrMyBJ6H6vNesGZcDTFv/OOfoFwIhAIHh+XahDsLiepFGtDyTN+jrHu5TWLl4TOVn/pLink8T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"94b2e9d118061a08d531c8fbaf4d9f1d747c801c","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.81_1787054715805_0.424139073573798","host":"s3://npm-registry-packages-npm-production"}},"0.0.82":{"name":"@av-pi-studio/relay","version":"0.0.82","_id":"@av-pi-studio/relay@0.0.82","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c306800c799bb648f525fb99595908b794b9de48","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.82.tgz","fileCount":20,"integrity":"sha512-2WIrV3o81iYxdpztbYX88wA3CnR4/t0lewkQ/brUxv02ygJA0ZjQDsauh8onN8dDTaH/5ixL6tb1LAJlRCmlFA==","signatures":[{"sig":"MEQCIBmptPE6vDPeLhJ57GA3K2plLbmwb2Gme23tgIXhk99MAiAUbdML8vhydFqTXVsb5T5ElwxqoqK2j4lCuVA/roqXFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"b86dd1bbca14389167244348b31602e6af8af8e4","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.82_1787082611601_0.573644224215099","host":"s3://npm-registry-packages-npm-production"}},"0.0.83":{"name":"@av-pi-studio/relay","version":"0.0.83","_id":"@av-pi-studio/relay@0.0.83","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"5b8f618e0a881346c55ba71740ff22d7fc2c18ab","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.83.tgz","fileCount":20,"integrity":"sha512-NBSDWEFJ09TWPdAdKEysZj3Dxds4ZDBBZAhhz0Zuk8KNjEt2rLn2w5sBxPtcbS2eteRpYuaqwCdG35P1v0bbKQ==","signatures":[{"sig":"MEQCIEtmbCFXf+3I+DTVw57edeDSHGOUUEU6Ayr/kmfQ4ZSHAiAlVDR/lbZZ4fQC6A0jp09I4lhrQxFg0DKwt759yWfFAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"c430a76f28addaf108a060b632792cf8ddf719cd","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.83_1787084792929_0.28057081156266284","host":"s3://npm-registry-packages-npm-production"}},"0.0.84":{"name":"@av-pi-studio/relay","version":"0.0.84","_id":"@av-pi-studio/relay@0.0.84","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"1bf525bcc3946d2b4bc5afd9935a93a8d0d23c7d","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.84.tgz","fileCount":20,"integrity":"sha512-BjsXYgon1CWEuC5EG68u36e9D1RSHF1s5t1KPid1+aDbdYIxnJpFJYtZZmEQ0TrtZkCpIg5IuiDBdbGU3Rm+7g==","signatures":[{"sig":"MEUCIQCfNLzdd8bXCsSGsMKwCCryxlv3DD4fq81KPSgyevHW0gIgNlV5Dd14bhXw/EPuAY3WpWa8VQEL5IC1QKvk2Ct6Pgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d56696ed6f84150ebbac12a306398c5b8bb1e32d","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.84_1787138417038_0.4888096596228584","host":"s3://npm-registry-packages-npm-production"}},"0.0.85":{"name":"@av-pi-studio/relay","version":"0.0.85","_id":"@av-pi-studio/relay@0.0.85","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"416a967eddd74db2e0ab7ed63356465bd4e7f8af","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.85.tgz","fileCount":20,"integrity":"sha512-NqWd0bALvDkJVYoYbJmWJe1xrCjl4pWzA8l2Igfd5AbZSsMMU7gWRNIdE8VwQ1tsVbplglTQNFcVh+tLCXAW/Q==","signatures":[{"sig":"MEQCIBPDDg6KCM2wKWykEe+QXeBvkfNj1blEFpbTrihOYHErAiB6c4vZoCcSlU2S2BWMNE67fw+2gn1jTsqx1eosyLfDSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"3b15f8369c1498737220c469c91c7df643899e74","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.85_1787139321877_0.05862505775174931","host":"s3://npm-registry-packages-npm-production"}},"0.0.86":{"name":"@av-pi-studio/relay","version":"0.0.86","_id":"@av-pi-studio/relay@0.0.86","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"9c97774bde2613a787324d5d3ed61bc101e4ffd7","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.86.tgz","fileCount":20,"integrity":"sha512-+pKN1sKqgZKUAI7dfIZi3jT92Lsf3Sjmre1dECjv3dHVcJmLw+a+TTkH+vQJnToh0vMXmzIOJSq8dximm6jI4w==","signatures":[{"sig":"MEUCIDHX+FVfUpPyg3xGbsAxGgLFXP0gNC0UNL7m5dsWsPVBAiEAt3JN7qWs3yoyw3QcRpXjig3X9MH8OP51O1qi/qOtQrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"86bd2bf0efc9c22f0d6c267deb0741bb13e38972","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.86_1787141729673_0.5620611114225629","host":"s3://npm-registry-packages-npm-production"}},"0.0.87":{"name":"@av-pi-studio/relay","version":"0.0.87","_id":"@av-pi-studio/relay@0.0.87","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c6b8791b647135054218f1574cf155b2a58c785a","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.87.tgz","fileCount":20,"integrity":"sha512-Y3V3N4dXF7lQ7UoJCjJMwxoa+Q7iO66X6f3RC41lzDT7cehEGPvErFclJmyN/NhO/6La0Ho8fuXalcRtUbc8xA==","signatures":[{"sig":"MEUCIQCreYn+Hcl8VzZSOd5oljaii2op6Xx1jGljVENXj8RkFgIgDMWxMrhkHVz+AVJs5dS3N1DKaTWLenmKj0MnLeC2piY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"65d1e697676a81cb03cf82ebb583dd6a8a22ce5b","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.87_1787142723200_0.6394134347167948","host":"s3://npm-registry-packages-npm-production"}},"0.0.88":{"name":"@av-pi-studio/relay","version":"0.0.88","_id":"@av-pi-studio/relay@0.0.88","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"19c2854fdca9652f188651821c1c74acdec03369","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.88.tgz","fileCount":20,"integrity":"sha512-ZuzHcnx3tbolE20U0n/D2tTCQjSMhBCy3A8NdBa2168z6h/Bb1NM8Abuv1oazq/intqPh9ArY9aO0vMhu6EYXA==","signatures":[{"sig":"MEQCIG38MtCuYSLk1Rh0gmHFiwUBzxHjZMYp4AyPzrDd5RNpAiAknT1KOldcU/B76PRinOZ5LoBqi/Q27tDmdGmS/WZaQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"e46d661d29ec6945424fe77f7c27ecd7bcd3b8a3","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.88_1787144882287_0.8696850456887859","host":"s3://npm-registry-packages-npm-production"}},"0.0.89":{"name":"@av-pi-studio/relay","version":"0.0.89","_id":"@av-pi-studio/relay@0.0.89","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"c1415886e567692c6115275c69f957da361e37f6","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.89.tgz","fileCount":20,"integrity":"sha512-y+FLBlwCFY6kxuq7P9l77s8xOd/cQ1/0z02Vdgf73j5vIQOMdGWzIr+j4hYy96sBTHTbP8/UuUAyYfY7UuNDWA==","signatures":[{"sig":"MEQCIHZRZTJqep9MNz+FN/mdQUc/JXFUR+airm7pOmObfojtAiBrUeBvLZTrOLj4Ph0BJNmRHpXwGIThnf1rPJxQA+QWgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"16d850ce780d2c77fea5f4bd9e93ad124c2cfa83","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.89_1787145811720_0.7841096819427578","host":"s3://npm-registry-packages-npm-production"}},"0.0.90":{"name":"@av-pi-studio/relay","version":"0.0.90","_id":"@av-pi-studio/relay@0.0.90","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"ecf004b572253c537600f8df1ca64bf7d3e1e5fa","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.90.tgz","fileCount":20,"integrity":"sha512-5TKkU82P6F4apkPugfr1W0kVA58oh1XW2Px5EgGV6wIns7bEPLY240xZ+ysC1BU8rrxRwUXU7iIDLqjNp17LEQ==","signatures":[{"sig":"MEYCIQDvzKdBXwBqVhjWYad/Zj1400U9x18BitWyaGW3MxO/iwIhANdnw72BsmaWlXIm0hzn2Z3O0xdcxtJ0Ep8nE1JwxExO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"68fee7fe668d9c417bcc8577c828ab0e3ed5a180","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.90_1787148635197_0.33264261671897355","host":"s3://npm-registry-packages-npm-production"}},"0.0.91":{"name":"@av-pi-studio/relay","version":"0.0.91","_id":"@av-pi-studio/relay@0.0.91","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"326d3a516e7b1834b6a3825ad80b18e103d6b01f","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.91.tgz","fileCount":20,"integrity":"sha512-eDb4PPfvHJuGWOxUk1JKkaPWQSF6xbRVovbdKgTanDp05eM3F6I6w1ERsWsGCZFgD2WXY7aFRJAMepGSyz+tOQ==","signatures":[{"sig":"MEUCIAZvBjRgvS/GSnxduOXU9F4JF+eR0V6tFFUVb/gDUXyWAiEAw+1lwMrg/xcYfGM3BMSnsfPmjIcw1tAclVqQQI7hoOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"5a27f3ff40fe341782a0dce2a99f33591ba55d18","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.91_1787218754696_0.10737912666394567","host":"s3://npm-registry-packages-npm-production"}},"0.0.92":{"name":"@av-pi-studio/relay","version":"0.0.92","_id":"@av-pi-studio/relay@0.0.92","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7a35f573b031d14f73ba25eab401d0ca6cc43ce0","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.92.tgz","fileCount":20,"integrity":"sha512-m7dxzx4+NFhpAwRMrvtIbQ5Fj3/J9JURZVX6OaQD2sr1mzF/fV4jSinHlAQHp3C6/u2CyLYQm+pEfH6i/LNx1A==","signatures":[{"sig":"MEQCICiy/+xx1zveCnFGJ8D1hULADRiDqUvmZm/ANpJZwUqjAiBk35BqmxAOKRzrar81T9gmQgDVIyo+FoUAHxuuRREJ8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"9aeef6d1d98a8c16451e66507630cd87653b2071","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.92_1787219245826_0.03481189975874255","host":"s3://npm-registry-packages-npm-production"}},"0.0.93":{"name":"@av-pi-studio/relay","version":"0.0.93","_id":"@av-pi-studio/relay@0.0.93","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"de96e8fc184bfe9d65aab0332c849b5ca9f12f43","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.93.tgz","fileCount":20,"integrity":"sha512-SO8P9n0XCoy/7MF6PHabZwp/z78v2vt0nKNgrCFX+4LjSvXbvpIFmWWNCaG1+k35R5+kLq/Pw567t144EXeF/A==","signatures":[{"sig":"MEQCIHIQL4xOOiQl6DPrt4AtG6jkymGCuFTakESerw5EcKusAiBx83KSYTEDwN4bqunhZnE2/Al63mnUL6KZW0CmplL4sQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"14c02c490926bf7ff962b475a77d3a6020929511","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.93_1787234836220_0.43328082775872834","host":"s3://npm-registry-packages-npm-production"}},"0.0.94":{"name":"@av-pi-studio/relay","version":"0.0.94","_id":"@av-pi-studio/relay@0.0.94","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"d38335fa8cf9b466a8d7010bf1e6b22a39c3c820","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.94.tgz","fileCount":20,"integrity":"sha512-iE7G5aZegMRL9y3kZWArUPs7iIbtQStpk9FEfYln65Y7cBP/Sowr/1K+a3QEPv5AYKKpyCg8E8dGIBLWNLCzAQ==","signatures":[{"sig":"MEUCIQC4v0PoZS8oPsduYvVnLW6g5yXODuPOldbUzDLlSC/goAIgKFEOH6qc4+kdellD7N00WosY9+Pb2B6hvKlBvO+07XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"c8f349cee2736e0674ddadd45701916355cf7ffc","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.94_1787324153806_0.4051727018823956","host":"s3://npm-registry-packages-npm-production"}},"0.0.95":{"name":"@av-pi-studio/relay","version":"0.0.95","_id":"@av-pi-studio/relay@0.0.95","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"973ac630bc42c9aee4d4900870cae30935c420ed","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.95.tgz","fileCount":20,"integrity":"sha512-86T9mit63at4nfR8OLseNR1Y0BYTWDMH9NtccBlv6Zu7j4PBQiYrlWDEr7aQeBC+A6WvYxrazg+HmKcDTRHfhw==","signatures":[{"sig":"MEQCIAMjhQ8H7KgssYDr506/WJE6gjL86MNKDA9QNw74sbscAiAZiuxgG0XJS/iUceKAk0DQZV9ypfBDOr/V7S9CMdOx2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"aa1cf1435741fa6e167af5d5de6bd18efac7abf4","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.95_1787333632518_0.7649879911933695","host":"s3://npm-registry-packages-npm-production"}},"0.0.96":{"name":"@av-pi-studio/relay","version":"0.0.96","_id":"@av-pi-studio/relay@0.0.96","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"0514133541166fdc59eb122f59c2539c18d29873","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.96.tgz","fileCount":20,"integrity":"sha512-+OlX7BJ4raee8va50K2OzaT+h5KSh5tx1ZrLMuh8GwpoLwys4Q/MtecFSikMNAKeS1uw9lOnt98yjYRNOi/mtg==","signatures":[{"sig":"MEUCIQCVqoDxD1ki8IBaq/mzrGWxEltKqnaxzsqev45rp6QBhQIgFGYu8bMcPrQi0fxgTmQks7+0RVWeOQHX2BPPE+rTfeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"8a82583f6a65842a175d46dd2154372940f59eca","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.96_1787354881640_0.8998495475148223","host":"s3://npm-registry-packages-npm-production"}},"0.0.97":{"name":"@av-pi-studio/relay","version":"0.0.97","_id":"@av-pi-studio/relay@0.0.97","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"6dbbd7d008e377f3ede8d718e6c5f72a67008f12","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.97.tgz","fileCount":20,"integrity":"sha512-jf9L2/1w6aOM7gDf3V+3x5K2XKmnUvfD2BQOMOAlsm5S0fMxmJ5VbwMZivCqoWhJezs4LcrCMODyhIqfZCJz8Q==","signatures":[{"sig":"MEYCIQCWkQp8nW5h7b2YFTfeCcCKdq1UR/Dqc3+DhLKPVaTMkwIhAIGKtIf4vFc2IvjF3zBFa/scmO7gPrGLZZoen7ved4mB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"1a6a9bf240fdb77a2e106802bb229aae7a37a9d6","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.97_1787356261308_0.4925404160196736","host":"s3://npm-registry-packages-npm-production"}},"0.0.98":{"name":"@av-pi-studio/relay","version":"0.0.98","_id":"@av-pi-studio/relay@0.0.98","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"6eb1adb4dacf29a83fb8e7fda2ef98811cfef962","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.98.tgz","fileCount":20,"integrity":"sha512-aOwO00hOtqIoJi0xkTaN7O/DgmFgz6t8CLKlJw0g7klh8wizmkppd5PC/DvgNbq0n3PgBV7zAx2ei2UusjAxSw==","signatures":[{"sig":"MEQCIAVPUup+jRbJszwQjQJcTvq3Cc97DhCMv58HiCZ1n56/AiBOtP8oefaQcrEd3rzJtWlxYo8hjEUBCxfDh9r1KMUfEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"70d0397cadce6a390c4b5c1ac9d254ba470bebb4","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.98_1787566695588_0.23723243303385644","host":"s3://npm-registry-packages-npm-production"}},"0.0.99":{"name":"@av-pi-studio/relay","version":"0.0.99","_id":"@av-pi-studio/relay@0.0.99","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"dc4130e175dad5b3e47dd5ade3aeace8d6244a73","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.99.tgz","fileCount":20,"integrity":"sha512-n2JYqYr/IrGjm2Mr+6Xe35Ez5+Sba+rG/Nc893N/3idDKjyUQ1IooJ6GZ8wUnx+V48sHN7jl1YVYwZSWC+uA5Q==","signatures":[{"sig":"MEUCIA65ayVdK4l46wR40kiklebhwEqFSxbvtcVLw0xNwFJ2AiEA64mUFojmONvfwd0rUbQfLzL1X9loOStyEhXYRdM//Sg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d8436b5195c70730e61a047c2a73dadfffa99708","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.99_1787570026352_0.025919374439406173","host":"s3://npm-registry-packages-npm-production"}},"0.0.100":{"name":"@av-pi-studio/relay","version":"0.0.100","_id":"@av-pi-studio/relay@0.0.100","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"a8013dce4482a3c7471854a7445d3b9f9b1d8860","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.100.tgz","fileCount":20,"integrity":"sha512-fcKF+M2/YpJyIEvkt2TnLqqiBmfeJjlxX5Z/9Y9CaD4AWYdnmwzPyfaVXaMgzTtzUc2L7lsok55AbrBC5NQ7PQ==","signatures":[{"sig":"MEYCIQCbN+75QhUkubCrKbq+5TVo4ytZ9h3Xvs5DfinzWrAMXwIhAO8+Py4IQxWuF7TjcqKef1DUIvqn+q/DOdZ5li0JbQGQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"07b946f799dab0a0731f62f4171eab55b660d52f","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.100_1787581394308_0.16869178940383867","host":"s3://npm-registry-packages-npm-production"}},"0.0.101":{"name":"@av-pi-studio/relay","version":"0.0.101","_id":"@av-pi-studio/relay@0.0.101","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"699a05b9ccf64275176fc91d81843e254f4b2d71","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.101.tgz","fileCount":20,"integrity":"sha512-ms+E5Xj2UXbtSMc5pbJ6o7DXrXBcqDPhqzxEjIDfz6JOvEGfDViNu6ZFSE6i2MtLMKhB6nuqziM8/Z5jxjmhuA==","signatures":[{"sig":"MEQCIC+HOgU+fuJkkUlTFaCEsNAuduqGt98Zypylz6WykuGIAiAEFfw4WNa7aIL5HaDUJa81vqly2mhgC/Ryu2nK0jcRxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"46982843066ab83ec2348f6749ce81fd3fd8020c","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.101_1787660870019_0.6895274355251026","host":"s3://npm-registry-packages-npm-production"}},"0.0.102":{"name":"@av-pi-studio/relay","version":"0.0.102","_id":"@av-pi-studio/relay@0.0.102","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"99b7ad9617db53cd4c837681ba789a2b2396f484","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.102.tgz","fileCount":20,"integrity":"sha512-Gg64j21IAWz4l7lf6QvunYgDBWKQwUtvknoWDgXnm0TIVtBuiry8FV632ZikZc7CpuUB4uG4a2wV/thlZdqyig==","signatures":[{"sig":"MEQCICJgD9sTzINTzzIIPz3EOjLtIrRvzvwqSfU6JgNg46y7AiAylaXWCBZYjIZciLgqRAoQz4CRcrtRGD1zZlT5LvkK3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"d0208354d306d80ecbe851e733796356c11c218c","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.102_1787768889417_0.5921408765967777","host":"s3://npm-registry-packages-npm-production"}},"0.0.103":{"name":"@av-pi-studio/relay","version":"0.0.103","_id":"@av-pi-studio/relay@0.0.103","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"3093aa41603ebb8d33391e0acdf3e57d1ce1b64e","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.103.tgz","fileCount":20,"integrity":"sha512-7OXIpwlZxB6jN6dTbAeGCHPZLfSBO+RmEMgQAbYg9Bh/wldvd+HZw5iWGQLVy5BFH8b2ReZzZjWB29p8zz8j4w==","signatures":[{"sig":"MEQCIFJUKYAayVrwXXnlHXzlLQBNs14cFxA2WbuS9wXbjrqiAiACGp7D7bEwrLvcB1IY0wq7GrBaMmQuJ3EREpebaLqEWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"a590211a82fa170760ed9df9c6da1fd734b7a800","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.103_1788187055100_0.7174428823436523","host":"s3://npm-registry-packages-npm-production"}},"0.0.104":{"name":"@av-pi-studio/relay","version":"0.0.104","_id":"@av-pi-studio/relay@0.0.104","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"7d828054ac4b93b03ae7d045624795beffad62c0","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.104.tgz","fileCount":20,"integrity":"sha512-UtruA4/HdB10e2suA9L4xMESGYzTdMeZYa3kKWFAhHsttDvcR0yvlvRZmUqXFZV/mbYOCA9YWg1h4w0GL7O8KA==","signatures":[{"sig":"MEYCIQCFpZbHN4gH+QJE8jvgQc3eLyCKfC+CRpBnJ5mFnn5UKgIhAOzyTLMFVzf6JG1dg140B3DWxpjybqdJoDkWW/ZKMvXJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"b14fb3f204176aef5d69c88fcc4ca9b590475b77","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.104_1788190266520_0.5200769855706151","host":"s3://npm-registry-packages-npm-production"}},"0.0.105":{"name":"@av-pi-studio/relay","version":"0.0.105","_id":"@av-pi-studio/relay@0.0.105","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"bef69ad8456761bc3c05eba4e5f89d909b4c4d25","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.105.tgz","fileCount":20,"integrity":"sha512-AWHcG+Npqp6OIfJtP+aKqTKQu1mm3+YwhdTMHycsNGojbUDh2ONyrsGVRxtsvMVL+ueAxgQ3Tfte5Uh28hiYXg==","signatures":[{"sig":"MEQCIDTAoATneOkvHA04z/+oyCWMUjTnkIgeu/sZB654zQIdAiB4uGFA6LOn9ja/wnPJmDJBD/tixKTSbfTXycY79i/30A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"2100e1f708d916a0ecea7855767590a6a88bb22d","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.17.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.105_1788195093975_0.8135177785167726","host":"s3://npm-registry-packages-npm-production"}},"0.0.106":{"name":"@av-pi-studio/relay","version":"0.0.106","_id":"@av-pi-studio/relay@0.0.106","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"bin":{"pi-studio-relay":"dist/relay-main.js"},"dist":{"shasum":"77bd879eaa0e8ddbc980a589033ece678743bcf6","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.106.tgz","fileCount":20,"integrity":"sha512-mgRbRXfT+idwVerDDY3niHrsBsytB5R6viASvN6GHuVYf91wUBR3aT3xA7OoW6bFoCl73ROp7A6VAb6mGD84lw==","signatures":[{"sig":"MEQCIAdrw8KWcWcW7kJN8T9PBQcuGEcGEuknnQuI4WrDMO06AiA709wJ0Ypy05/M6Tv5UIb4jFrE0ARYi2fMQuf/6TieQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"gitHead":"650c695ce20be8598e35b1b171d47cf95860deaa","scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"_npmVersion":"11.19.0","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","pino":"^10.2.0","tweetnacl":"^1.0.3","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1"},"_npmOperationalInternal":{"tmp":"tmp/relay_0.0.106_1789051322316_0.3829936216267493","host":"s3://npm-registry-packages-npm-production"}},"0.0.107":{"name":"@av-pi-studio/relay","version":"0.0.107","bin":{"pi-studio-relay":"dist/relay-main.js"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/relay-server.d.ts","default":"./dist/relay-server.js"}},"scripts":{"build":"tsc -b && chmod +x dist/relay-main.js","clean":"rm -rf dist *.tsbuildinfo"},"dependencies":{"pino":"^10.2.0","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","tweetnacl":"^1.0.3","ws":"^8.21.0"},"devDependencies":{"@types/ws":"^8.18.1"},"gitHead":"fc667b2ada25555166a044eb93cd3f3127fef5d5","_id":"@av-pi-studio/relay@0.0.107","description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-wOCPpZ/3GkrrMbMx0e75+inPlRilu8mIAl1ki2soVk8JljRjGpm4Np/bR04KoGzqXEOJdVKcpNBpzZ9wNSuFCw==","shasum":"840ec4ece16fb81faed69a9701accc34174701aa","tarball":"https://registry.npmjs.org/@av-pi-studio/relay/-/relay-0.0.107.tgz","fileCount":20,"unpackedSize":59948,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC6sBgkbnYL+7t3bCTlCqUTk7Q9AUzd1q26ufg/P29qYwIgRJHKUbVB4N8NNAgn8/gksYKis7PPIMzQJQlNvdOHRoU="}]},"_npmUser":{"name":"avatsaev","email":"a.vatsaev@gmail.com"},"directories":{},"maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/relay_0.0.107_1789117019350_0.8409451240707455"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-18T16:56:43.605Z","modified":"2026-09-11T08:56:59.728Z","0.0.8":"2026-07-18T16:56:43.895Z","0.0.9":"2026-07-18T17:45:54.142Z","0.0.10":"2026-07-18T22:56:13.716Z","0.0.11":"2026-07-20T20:11:53.548Z","0.0.12":"2026-07-22T11:34:03.677Z","0.0.13":"2026-07-22T12:13:07.398Z","0.0.14":"2026-07-22T13:03:02.485Z","0.0.15":"2026-07-22T13:21:18.347Z","0.0.16":"2026-07-22T14:08:32.398Z","0.0.17":"2026-07-22T14:30:05.763Z","0.0.18":"2026-07-22T15:40:10.809Z","0.0.19":"2026-07-22T16:58:33.010Z","0.0.20":"2026-07-22T17:37:16.828Z","0.0.21":"2026-07-22T17:52:44.728Z","0.0.22":"2026-07-23T12:24:33.472Z","0.0.23":"2026-07-23T15:34:43.322Z","0.0.24":"2026-07-23T15:45:59.018Z","0.0.25":"2026-07-23T16:42:52.719Z","0.0.26":"2026-07-23T16:43:57.272Z","0.0.27":"2026-07-23T17:14:38.317Z","0.0.28":"2026-07-23T17:31:14.571Z","0.0.29":"2026-07-23T18:37:02.769Z","0.0.30":"2026-07-23T19:24:17.751Z","0.0.31":"2026-07-23T20:34:25.253Z","0.0.32":"2026-07-24T11:39:20.277Z","0.0.33":"2026-07-24T12:56:52.567Z","0.0.34":"2026-07-24T17:47:38.048Z","0.0.35":"2026-07-24T19:55:33.483Z","0.0.36":"2026-07-24T22:11:49.952Z","0.0.37":"2026-07-25T12:15:14.174Z","0.0.38":"2026-07-25T14:28:02.041Z","0.0.39":"2026-07-25T16:47:45.612Z","0.0.40":"2026-07-25T18:59:48.221Z","0.0.41":"2026-07-26T17:20:23.718Z","0.0.42":"2026-07-26T21:44:06.163Z","0.0.43":"2026-07-27T21:18:22.072Z","0.0.44":"2026-07-28T13:29:10.680Z","0.0.45":"2026-07-28T14:36:13.957Z","0.0.46":"2026-07-29T15:02:12.772Z","0.0.47":"2026-07-29T15:43:52.289Z","0.0.48":"2026-07-29T15:51:41.052Z","0.0.49":"2026-07-29T18:41:23.738Z","0.0.50":"2026-07-30T13:56:10.493Z","0.0.51":"2026-07-30T15:51:10.505Z","0.0.52":"2026-07-30T20:29:41.939Z","0.0.53":"2026-07-30T20:39:58.447Z","0.0.54":"2026-07-30T21:11:25.622Z","0.0.55":"2026-07-30T21:47:37.201Z","0.0.56":"2026-07-30T22:07:37.901Z","0.0.57":"2026-07-30T22:43:56.530Z","0.0.58":"2026-07-30T22:57:26.706Z","0.0.59":"2026-08-02T16:38:22.274Z","0.0.60":"2026-08-02T17:54:59.275Z","0.0.61":"2026-08-03T15:19:44.617Z","0.0.62":"2026-08-03T20:40:12.964Z","0.0.63":"2026-08-04T10:58:42.993Z","0.0.64":"2026-08-04T14:36:07.780Z","0.0.65":"2026-08-04T15:45:23.619Z","0.0.66":"2026-08-05T10:55:14.412Z","0.0.67":"2026-08-05T12:54:18.135Z","0.0.68":"2026-08-06T15:32:47.419Z","0.0.69":"2026-08-07T09:53:39.518Z","0.0.70":"2026-08-07T12:42:31.562Z","0.0.71":"2026-08-07T13:12:39.569Z","0.0.72":"2026-08-09T16:54:49.351Z","0.0.73":"2026-08-09T18:35:02.012Z","0.0.74":"2026-08-13T18:54:59.045Z","0.0.75":"2026-08-16T17:47:12.402Z","0.0.76":"2026-08-17T16:19:35.326Z","0.0.77":"2026-08-17T19:23:11.934Z","0.0.78":"2026-08-17T19:35:14.277Z","0.0.79":"2026-08-17T19:54:28.753Z","0.0.80":"2026-08-17T20:28:38.010Z","0.0.81":"2026-08-18T12:05:15.951Z","0.0.82":"2026-08-18T19:50:11.816Z","0.0.83":"2026-08-18T20:26:33.074Z","0.0.84":"2026-08-19T11:20:17.201Z","0.0.85":"2026-08-19T11:35:22.022Z","0.0.86":"2026-08-19T12:15:29.824Z","0.0.87":"2026-08-19T12:32:03.359Z","0.0.88":"2026-08-19T13:08:02.419Z","0.0.89":"2026-08-19T13:23:31.847Z","0.0.90":"2026-08-19T14:10:35.346Z","0.0.91":"2026-08-20T09:39:14.842Z","0.0.92":"2026-08-20T09:47:25.982Z","0.0.93":"2026-08-20T14:07:16.347Z","0.0.94":"2026-08-21T14:55:53.962Z","0.0.95":"2026-08-21T17:33:52.658Z","0.0.96":"2026-08-21T23:28:01.763Z","0.0.97":"2026-08-21T23:51:01.453Z","0.0.98":"2026-08-24T10:18:15.741Z","0.0.99":"2026-08-24T11:13:46.488Z","0.0.100":"2026-08-24T14:23:14.460Z","0.0.101":"2026-08-25T12:27:50.204Z","0.0.102":"2026-08-26T18:28:09.554Z","0.0.103":"2026-08-31T14:37:35.241Z","0.0.104":"2026-08-31T15:31:06.674Z","0.0.105":"2026-08-31T16:51:34.095Z","0.0.106":"2026-09-10T14:42:02.454Z","0.0.107":"2026-09-11T08:56:59.482Z"},"description":"End-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a firewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same relay, and all application traffic between them is E2EE (Curve25519 ECDH","maintainers":[{"name":"avatsaev","email":"a.vatsaev@gmail.com"}],"readme":"# `@av-pi-studio/relay`\n\nEnd-to-end encrypted relay for Pi-Studio. Lets a client reach a daemon that's behind a\nfirewall/NAT — the daemon dials **outbound** to a relay server, the client connects to the same\nrelay, and all application traffic between them is E2EE (Curve25519 ECDH + XSalsa20-Poly1305 NaCl\n`box`) so the relay itself is **untrusted and zero-knowledge**: it can see connection metadata (IPs,\ntiming, sizes, session ids, and the plaintext public keys exchanged during the handshake) but never\nmessage contents, and it cannot forge or inject commands.\n\n---\n\n## Install\n\n```bash\nnpm install @av-pi-studio/relay\n```\n\n## Run a relay server\n\nThe package ships a standalone, runnable relay — no daemon/client code needed to stand one up.\n\n```bash\n# via npx, no install\nnpx @av-pi-studio/relay --listen 0.0.0.0:7000\n\n# or after a global/local install\npi-studio-relay --listen 0.0.0.0:7000\n\n# or via env var instead of --listen\nPI_STUDIO_RELAY_LISTEN=0.0.0.0:7000 pi-studio-relay\n```\n\nDefaults to `0.0.0.0:7000` if neither `--listen` nor `PI_STUDIO_RELAY_LISTEN` is set. Exposes:\n- A WebSocket endpoint (root path) — where daemons and clients connect.\n- `GET /health` → `200 ok` — liveness probe.\n\n### Logging\n\nThe relay logs its full operational lifecycle with pino: every connection open (id + remote\naddress), session registration (session id, peer count), peer detach, and connection close (close\ncode, duration, bytes in/out) — plus warns on pre-registration garbage and errors on socket\nfailures. Frame forwarding is logged at `trace` with **sizes only**: the relay is zero-knowledge\nby construction and never sees (so never logs) message contents.\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `PI_STUDIO_RELAY_LOG_LEVEL` | `info` | pino level (`trace`\\|`debug`\\|`info`\\|`warn`\\|`error`\\|`fatal`\\|`silent`) |\n| `PI_STUDIO_RELAY_LOG_DIR` | _(unset)_ | Also write rotating NDJSON files here (stdout always gets logs too) |\n\nstdout always receives logs — NDJSON in non-TTY (so `docker logs` / journald work out of the box),\npretty-printed on a TTY. The first line logged is always the package version\n(`pi-studio relay v<version> starting`), so `docker logs`/journald output immediately identifies\nwhich build is running. `pi-studio relay start` (CLI) runs the relay detached with `stdio`\nignored, so it configures a rotating file under `$PI_STUDIO_HOME/logs/` instead.\n\nShuts down cleanly on `SIGINT`/`SIGTERM`.\n\n### From the Pi-Studio CLI\n\n`@av-pi-studio/cli` manages a local relay as its own long-lived process, the same way it manages a\nlocal daemon:\n\n```bash\npi-studio relay start --listen 0.0.0.0:7000   # spawn, wait for health\npi-studio relay status --listen 0.0.0.0:7000  # up/down\npi-studio relay stop                          # SIGTERM the recorded pid\n```\n\n### Pointing a daemon at a relay\n\nOn the daemon side (`@av-pi-studio/server`), set `daemon.relay` in `config.json` (or the matching\nenv vars) to dial out to the relay you started above:\n\n```jsonc\n{\n  \"daemon\": {\n    \"relay\": {\n      \"enabled\": true,\n      \"endpoint\": \"relay-host:7000\",\n      \"useTls\": false\n    }\n  }\n}\n```\n\nEnv equivalents: `PI_STUDIO_RELAY_ENABLED`, `PI_STUDIO_RELAY_ENDPOINT`, `PI_STUDIO_RELAY_USE_TLS`,\n`PI_STUDIO_RELAY_PUBLIC_ENDPOINT`, `PI_STUDIO_RELAY_PUBLIC_USE_TLS`. With `relay.enabled` unset\n(the default, `false`), the daemon behaves exactly as if this package didn't exist — the relay is\nfully opt-in and never affects direct WebSocket connections.\n\n### Pairing a browser client through the relay\n\nOnce the daemon dials the relay (above), `pi-studio daemon pair` prints a pairing link that\ncarries the relay's client-facing endpoint (`daemon.relay.publicEndpoint`/`publicUseTls`, falling\nback to `endpoint`/`useTls`) instead of a direct host — see `@av-pi-studio/cli`'s\n`buildPairingUrl`. A browser (`@av-pi-studio/web-client`) or any `@av-pi-studio/client` consumer\nopening that link connects via `createRelayTransport`, deriving the SAME rendezvous session id\n(`deriveRelaySessionId(daemonPublicKey)`) the daemon registered under — no session id needs to be\ntransmitted separately, and the link keeps working across relay reconnects (the daemon always\nre-registers under this deterministic id, never a fresh random one per connection).\n\nThe same pairing link can be opened by more than one client over the daemon's lifetime (a browser\nreload, a second tab, or handing the link to a different machine) — each one gets its own fresh\nE2EE handshake against the daemon's single long-lived relay channel; the daemon does not require\nre-pairing or lock onto whichever client connected first.\n\n## Library API\n\nFor embedding directly (custom relay deployments, tests, or building the daemon/client transports\nthis package's own consumers use). The main entry is deliberately **browser/RN-safe** (only pure\ncrypto + logic, no platform-specific runtime imports); `startRelayServer` is Node-only (`node:http`,\n`ws`) and lives behind a separate subpath so it's never pulled into a browser bundle:\n\n```ts\n// Browser/RN/Node — pure crypto + logic, no platform-specific imports.\nimport {\n  createDaemonChannel,\n  createClientChannel,\n  RelaySessionBridge,\n  createCloudflareRelayHandler,\n} from \"@av-pi-studio/relay\";\n\n// Node-only — pulls in `node:http` + `ws`. Never import this from browser/RN code.\nimport { startRelayServer } from \"@av-pi-studio/relay/server\";\n```\n\n| Export | Subpath | Role | Purpose |\n|---|---|---|---|\n| `createDaemonChannel(opts)` | `.` | daemon | E2EE channel over an abstract `Transport`; waits for the client's `e2ee_hello`, replies `e2ee_ready`; `send()`/`sendBinary()` for text/binary app traffic |\n| `createClientChannel(opts)` | `.` | client | E2EE channel; generates a fresh ephemeral keypair, sends `e2ee_hello`; `send()`/`sendBinary()` for text/binary app traffic |\n| `RelaySessionBridge` | `.` | relay server | Platform-agnostic verbatim frame bridge, keyed by session id — the zero-knowledge core |\n| `createCloudflareRelayHandler(opts)` | `.` | relay server | Thin Cloudflare Workers `WebSocketPair` wrapper around `RelaySessionBridge` |\n| `deriveRelaySessionId(publicKey)` | `.` | both | Deterministic rendezvous session id from a daemon's public key — lets a pairing link survive relay reconnects (see § Pairing note below) |\n| `encodeBase64` / `decodeBase64` | `.` | both | Pure-JS base64 codec (no Node `Buffer`) — runs identically in Node and browser/RN |\n| `startRelayServer(opts)` | `./server` | relay server | Self-hosted `ws`-based relay (what `pi-studio-relay`/`pi-studio relay start` run); accepts an optional `logger` |\n| `createRelayLogger(opts)` | `./server` | relay server | pino operational logger: stdout always (pretty TTY / NDJSON otherwise), optional rotating file via `logDir` |\n\n`RelaySessionBridge`'s constructor takes an optional `RelayBridgeEvents` (`onRegister`,\n`onRegisterRejected`, `onForward`, `onUnregister`) — metadata-only lifecycle hooks (session ids,\npeer counts, frame **sizes**, never contents) that `startRelayServer` wires to its logger; use\nthem for your own metrics/logging when embedding the bridge.\n\nBoth channel constructors expose an **identical** API — the daemon and client use symmetric code\npaths. Neither channel accepts app messages before its handshake completes; a daemon's channel\nmust be given its **persistent** identity keypair (not a fresh one), since the client derives its\nshared key from that same known public key before the handshake even starts.\n\n```ts\n// Minimal self-hosted relay, embedded rather than run as a separate process:\nimport { startRelayServer, createRelayLogger } from \"@av-pi-studio/relay/server\";\n\nconst handle = await startRelayServer({\n  host: \"0.0.0.0\",\n  port: 7000,\n  logger: createRelayLogger({ level: \"info\" }), // optional; omit for silent\n});\n// handle.bridge is the underlying RelaySessionBridge, if you need to inspect peerCount(sessionId)\nawait handle.close();\n```\n\n## Wire protocol\n\n- Registration (relay-server specific, plaintext, visible to the relay):\n  `{\"type\":\"relay_register\",\"sessionId\":\"<uuid>\"}` — sent as the first frame by both the daemon\n  and the client; pairs sockets sharing the same session id.\n- Handshake (plaintext, visible to the relay): `{\"type\":\"e2ee_hello\",\"ephemeralPublicKey\":\"<base64>\"}`\n  (client→daemon), `{\"type\":\"e2ee_ready\"}` (daemon→client). A daemon channel accepts a fresh\n  `e2ee_hello` at any point — including after it's already completed one — re-deriving the shared\n  key and replying `e2ee_ready` again; the relay imposes no cap on how many client sockets attach\n  to one session id over the daemon's (long-lived, single-dial) connection.\n- App traffic (text — RPC/control messages): `{\"type\":\"e2ee_app\",\"frame\":\"<base64(24-byte nonce ++ ciphertext)>\"}`\n  (XSalsa20-Poly1305, `nacl.box`/`nacl.box.open`). Auth failure → frame silently dropped, never\n  thrown into the transport's message loop.\n- App traffic (binary — terminal I/O, file-transfer chunks): `{\"type\":\"e2ee_bin\",\"frame\":\"<base64(24-byte nonce ++ ciphertext)>\"}`.\n  Identical crypto/framing to `e2ee_app`, just fed raw bytes instead of UTF-8 text and dispatched\n  to a separate `onBinaryMessage` handler on receipt. Still travels as a JSON text WS frame — no\n  raw binary WebSocket frames cross the relay, so `RelaySessionBridge`/the self-hosted relay/the\n  Cloudflare adapter needed zero changes to support this.\n\n## Security notes\n\n- The daemon's persistent secret key never leaves the daemon process.\n- The client's keypair is fresh per connection — no persistent client-side secret to steal.\n- A new relay session derives fresh ECDH keys, so ciphertext from one session can never be\n  replayed against another.\n- Replay protection **within** a single live session is **not** implemented (random nonces, no\n  sequence counter) — don't rely on it.\n- The relay itself (`RelaySessionBridge`) never parses a frame past the initial registration\n  check — this is enforced structurally, not by convention: nothing in its forwarding path ever\n  calls `JSON.parse` on post-registration traffic.\n\n## Performance notes (binary-over-relay)\n\n- The relay process itself pays **zero** extra cost for binary traffic — `RelaySessionBridge`\n  forwards `e2ee_bin` frames exactly like `e2ee_app`: verbatim, unparsed, byte-for-byte. All the\n  cost below is paid by the two ENDPOINTS (daemon + client), never the relay.\n- Wrapping binary as base64-in-JSON (rather than a raw binary WS frame) costs ~33% more wire bytes\n  plus a small JSON envelope per frame. Deliberate tradeoff (see \"Wire protocol\" above) to avoid\n  touching the relay's zero-knowledge bridging core for this.\n- Terminal I/O: negligible in practice. Output is already coalesced into ~4ms batches server-side\n  (`packages/server`'s `TerminalManager`) before it ever reaches the wire, and input is small,\n  human-paced keystrokes — a few KB encrypted with pure-JS `nacl.box` is sub-millisecond.\n- Large file transfers over relay pay proportionally more: every base64+encrypt/decrypt pass adds\n  up across many large chunks. Still bounded (pure-JS `nacl.box` throughput is tens of MB/s), but\n  a direct (non-relay) connection remains the faster path for bulk transfer.\n\n## Development\n\n```bash\nnpm run build       # tsc -b (also chmod +x's the pi-studio-relay binary)\nnpx vitest run packages/relay\n```\n\nRuntime dependencies: `tweetnacl` (crypto) and `ws` (WebSocket framing) for the channel/bridge\ncore, plus `pino` + `pino-pretty` + `rotating-file-stream` used only by the Node-only `./server`\nsubpath (operational logging). The main barrel stays free of platform-specific imports — no\nframework, no HTTP client library beyond Node's own `node:http`.\n","readmeFilename":"README.md"}