{"_id":"@ws-kit/bun","_rev":"16-bf606422db7d92bbf0ddd09340df0dc4","name":"@ws-kit/bun","dist-tags":{"latest":"0.10.1"},"versions":{"0.0.1":{"name":"@ws-kit/bun","version":"0.0.1","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.0.1","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"2495fb53b2627227f7b31eb6f046bf55d258bb41","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.0.1.tgz","fileCount":31,"integrity":"sha512-CEPDx8wkc//U3uyI0ETD6fu4XEyvGGcJY5j9yqcXNM4CeOLOcKV6B6Yt4Vp9HSonXOSOvb0+PHg3dtmPRZHblQ==","signatures":[{"sig":"MEQCIEinuQk/uO0JD1rvscA8p6LNXXRKEFx0qYH3FQqx2CucAiAcGTLE3vH+kLsUUoBcPC5DT94f6CeOuX/cUFE+LOkaMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118987},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"b9c8c072c034be1fd4ee20cc455325a269b3339d","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"workspace:*"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.0.1_1761906591167_0.6457496269791703","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@ws-kit/bun","version":"0.1.0","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.1.0","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"ab2b87e9340617daab90736b4a166b1093e2b293","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.1.0.tgz","fileCount":31,"integrity":"sha512-48VUMC7fc/oZuxubZTD91V+Q04zuYf4h31YoofzZqnMAYr0v9iv4e4UkwB4U1kceixTXbzxxfRQjD2kuf0wSfA==","signatures":[{"sig":"MEUCICJ4n8KsGpXrtWyzoY7vH51IeSTRtTjAf6ChlR9+ZhFYAiEA5gCrn2w8gIT/K+LW8jAbmqfLw4NOeQaQ9YgyYnmcEwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118987},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"c672dd7f80c4d00adfebcb00047026dad644d772","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"workspace:*"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.1.0_1761922525723_0.7880757565827985","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ws-kit/bun","version":"0.2.0","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.2.0","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"2e745caf04c6555bce5a386c7d99d755468bb4e5","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.2.0.tgz","fileCount":31,"integrity":"sha512-qJo0aetVcaYAXh/+7wS4RPwI3NAH7430gSdk4hylX32XSGLDV9a0xteSQCBUbqDPcej7S/meaja3HGUMaa1C3g==","signatures":[{"sig":"MEUCIBcEqZhxa4RGd9F8w9b1NhSJQLurhNt6tY6f88amp+oFAiEAmqAEl58LgXi/ej67TGNROpum4G8KU83ArGwK+Rk1lJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119077},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"74203ef33af9090627efc815ca51f0a9a4c7ddff","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"workspace:*"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.2.0_1762007503386_0.4900274857153144","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ws-kit/bun","version":"0.2.1","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.2.1","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"925cc8f103360c84613396767909362760d1c3b6","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.2.1.tgz","fileCount":31,"integrity":"sha512-iH3HvszuFt11wkxvo508Po+LDYrfPm13SlDV/FmtmeP2bsT2XTzK+n6i5TlvtH+0Z7qjg8tAesqaHEvhBcD20Q==","signatures":[{"sig":"MEQCIBtPFdk/BYeEq3qMmYLSMX9+C4yKCV14OpaD89DYg2N1AiBs8FA6s/VmV3heM5XVihaeSiUpYZKQVvHldYTf2Td0yA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119077},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"a508fe35340aa4427f7d0db313189088a115a25e","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"workspace:*"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.2.1_1762038337967_0.4464685754549702","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ws-kit/bun","version":"0.2.2","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.2.2","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"7369eee14e43c56dbf5df1e93496c66ae8a698e0","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.2.2.tgz","fileCount":31,"integrity":"sha512-Bp9WIo8zzDg0dUL4FM4zmaAbASPpJ0N+SBppgF/pkkow/BCux5sWlIhRmo7oSAZjw1/IRCMutE/Goduvlpt9+g==","signatures":[{"sig":"MEYCIQDJK4gM1iZBezETOG75MamV2OZg+puOSOn89kAHe86PZwIhALfAvy2CON9jAiIWGuE4kNGMmEUyRT1J9xdoEk3S8uXB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":119077},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"bc8097c79ce8448fc61d06574c40a6d76bfb4547","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"workspace:^"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.2.2_1762080624149_0.5757340756511287","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ws-kit/bun","version":"0.3.0","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.3.0","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"c3ae404776af7a1e067142915145bb3ec424cf00","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.3.0.tgz","fileCount":30,"integrity":"sha512-SoB7/qCP9DmhuO4BQ3rqMDhxb1Ybah3nqLOxrb02fZOeDhpJbKDhbsTs5HmhMXrPcdwkJLHfeAX62QTwjEDMPQ==","signatures":[{"sig":"MEUCIGJwWJIowi6vKgiz9c5OmDjmFTaK09PDCDGCorFqSLA0AiEA1gyVQOiWAAEqiRNn+GFGIy9c1lf9YPQCf6rppHqduEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":106270},"main":"./index.js","type":"module","types":"./index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"f883719f2aa148907f6d11a70d54f0ffa3dcbba2","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"^0.4.0"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.3.0_1762098005728_0.6228216963978417","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@ws-kit/bun","version":"0.3.1","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.3.1","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"49c41fa28c8aa348a4ae49a2ec5943ee78c84b3e","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.3.1.tgz","fileCount":32,"integrity":"sha512-Q/pnT8A5FRohLW3cZJtYCHbwSMXcP4lmmOF0ptwFkZD7L2gePh6PPMM2PfBCUac4ZXvxV3SKiSpgzeerJc5h5Q==","signatures":[{"sig":"MEYCIQCFu0GPhyuL9mREqFAFAuw2ax4TGxcwtu04x+CjH558nwIhAPTe1pQnHfXYEsLZkG3111Eyd/rHc9RFA2LUKXXUB3GT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120040},"main":"./index.js","type":"module","types":"./index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"5b2f4fded8a1649c1f9c614b9939ea1626653e36","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"^0.4.1"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.3.1_1762099024079_0.3203237775616652","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@ws-kit/bun","version":"0.3.2","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.3.2","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"f4586608accef75a89264f9a411d6c4bd6b76aee","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.3.2.tgz","fileCount":32,"integrity":"sha512-QhGWDnjh/LCHwNljkpMVyncukrUAnxxzqz9l1rq/FqrgQdsOqfDSY57/9q5pPP41i4TlJ0jzJtfDwvHJf9paLA==","signatures":[{"sig":"MEUCICWl7Hu+WPhCdvFOIeJYVDfo59eHrCHyIYrbJeuO6SZ4AiEA1CJTdoNSUYVknPWg4hP8kCkh835uI7iwaFoTp1MwoFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120394},"main":"./index.js","type":"module","types":"./index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"b5da3ed1cb864d56a84152385ef6155ab940ce3c","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"^0.4.2"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.3.2_1762107811368_0.07662233381702044","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@ws-kit/bun","version":"0.3.3","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.3.3","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"015addd275ad2ea56cae55d4421bbdead9ffebf2","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.3.3.tgz","fileCount":32,"integrity":"sha512-VgoMYV08brMessO2M75RfgdrVYXMnEY1DiP/G5Ioa0WVf+rTIaVzc/eYQknnpk+p+1XkL4ciccWJc1ngkX2ToA==","signatures":[{"sig":"MEUCIQC2sxwY/QhwOasL9idxIeZLaeWvUAVZYVbh1kLIvUeXbwIgexgIYxJc9EFxKz0YYCOy8HbEwS+hlDMZpes5DGa5v0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120394},"main":"./index.js","type":"module","types":"./index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"b0cd18d7e3cc047c96ed89f30cf6e36a644471d0","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"^0.5.0"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.3.3_1762458967916_0.22698991453419115","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@ws-kit/bun","version":"0.3.4","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.3.4","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"fd46d265ec814e0993efd72ad8f9cbec1cad9a68","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.3.4.tgz","fileCount":32,"integrity":"sha512-FRa2wefR2HYScDPwzbP3Oln5p4eXzFwzfskqLa5NU+5h85w9pNISNOD+qBT1rbOt+huvwILr27vaad4F4QfHFw==","signatures":[{"sig":"MEUCIQDUfgpk+fMUCww8v46OZMbvPjO/2OGEvA8rhSZaFCS4DAIgLF3yIiRhoIKa4DFBwnLxjY0lrcw+AnxM6E1JKhZMOwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120328},"main":"./index.js","type":"module","types":"./index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"cc09904f7c67deaa4c45f93c5181916f92ea7112","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"^0.6.0"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.3.4_1762522382813_0.11640733601194886","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@ws-kit/bun","version":"0.3.5","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.3.5","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"7fb136660f902ed1f3aa4efb471b7f5041b5bc8b","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.3.5.tgz","fileCount":32,"integrity":"sha512-CBxbyaUDkn7+VQFYONGpRe9xRqcmQYOj0KZw6eMg1Q+vVfKkYFZO3126L3aH+5HIExucAFj5RBA/hnbAH78wwQ==","signatures":[{"sig":"MEQCIChWPnpU7odV/E25h4gfQh0hwPTX+b5VIr0LUqDfpXsyAiA/OqUNeL3L3meX7yB1o0dwpW3U9oOwzpazMueAGD5Hiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120728},"main":"./index.js","type":"module","types":"./index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"570635e7dd40e411559a36f340d0e44a17f71388","_npmUser":{"name":"kriasoft-bot","email":"kriasoft@gmail.com"},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"uuid":"^13.0.0","@ws-kit/core":"^0.7.0"},"_hasShrinkwrap":false,"peerDependencies":{"@types/bun":">=1.3.2"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.3.5_1762643092104_0.8260212065139814","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@ws-kit/bun","version":"0.8.0","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.8.0","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"d09f1dfd8017c7a37887beb74534185dc63acc5d","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.8.0.tgz","fileCount":32,"integrity":"sha512-sK44hHXkSzdKN/RNlE7Spyp3/qLuqH7UAEpGAfT60qlktrjATGo4oausFljuC3Tpniw3cRyOIntXQ6YR9l4X6A==","signatures":[{"sig":"MEYCIQDafDGSuLwQ+M9B4KgvmE+9dhfgqJ/HQPzmExgTDHjO5wIhAKvh+O0kk5MPQACyT112LZsXtjuNXqksSY5rDD4+75bH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135103},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"b1d18ca9b170c34c784ff4b4d5b03d44e13148b3","scripts":{"typecheck":"tsc --build tsconfig.check.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4620e5b6-ae44-4bd1-92dc-1c71885880d1"}},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.2","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.3","@ws-kit/zod":"^0.8.0","@ws-kit/core":"^0.8.0","@ws-kit/memory":"^0.8.0","@ws-kit/pubsub":"^0.8.0"},"peerDependencies":{"@types/bun":">=1.3.3","@ws-kit/core":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.8.0_1764547609960_0.560404466414044","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@ws-kit/bun","version":"0.8.1","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.8.1","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"ffe3423a9ddf17137af951c3aa8e35a35964aff0","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.8.1.tgz","fileCount":32,"integrity":"sha512-IOJ244ia1YlnJ8Xjly/pDqNeGreNHS61097HgFM02dhRjDwYKKADITz5Z9g+4kOmZppLT7S6iPj9rXnVx/+4AA==","signatures":[{"sig":"MEUCICDubIAH875ksvssfjNsukje280ULbhOOhhk7s6Xn95wAiEAhzkzsO9IFRoaRT8+DbSBWszRRPwdyE9r96D3d7zuJVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":136353},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"7ba20c305112106486d082bd4241806667c98b8d","scripts":{"typecheck":"tsc --build tsconfig.check.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4620e5b6-ae44-4bd1-92dc-1c71885880d1"}},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.2","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.3","@ws-kit/zod":"^0.8.1","@ws-kit/core":"^0.8.1","@ws-kit/memory":"^0.8.0","@ws-kit/pubsub":"^0.8.1"},"peerDependencies":{"@types/bun":">=1.3.3","@ws-kit/core":"^0.8.1"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.8.1_1764550070371_0.4105150178876129","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@ws-kit/bun","version":"0.9.0","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.9.0","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"0a597324d58f5f8933d528f3981c2153737d8063","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.9.0.tgz","fileCount":32,"integrity":"sha512-++F5anc3FhQ6K/rnHCGZJmQ4//0EvRrl861gMTKdOuUSmmzTVwDqy0kLXQF6xq4XOqIctRMMXskzkvsQLe9wyQ==","signatures":[{"sig":"MEYCIQDH643Lkg66qjtIPOMPUCV74zH4O6kAAG8uwkY1qteZbwIhAObKO0eio/z22SBXIC4cz18dedMqhwE+KnszHzb9kjdH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":136028},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"7f41d1c07b55142e2f575372066b7db0a6cc5362","scripts":{"typecheck":"tsc --build tsconfig.check.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4620e5b6-ae44-4bd1-92dc-1c71885880d1"}},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.2","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.3","@ws-kit/zod":"^0.9.0","@ws-kit/core":"^0.9.0","@ws-kit/memory":"^0.9.0","@ws-kit/pubsub":"^0.9.0"},"peerDependencies":{"@types/bun":">=1.3.3","@ws-kit/core":"^0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.9.0_1764885621778_0.49589062297671394","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@ws-kit/bun","version":"0.10.0","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"author":{"name":"Konstantin Tarkus"},"license":"MIT","_id":"@ws-kit/bun@0.10.0","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"dist":{"shasum":"f4952b090082b70c6c7bd12040c8d5a3d6317e67","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.10.0.tgz","fileCount":32,"integrity":"sha512-0Q/OvVkam4e38YqpooDz/mESiBn2XB26dsLhy92BAEqLHCsSzaOOwKkByEFObgfOfeZvS/L68d7Z77B+iEFBRg==","signatures":[{"sig":"MEUCIQCWxd1bW0SIPLoI3ADxA9AYBXAiNn6Bg+kWLmIt/zfMvwIgW4kEUPn9BODS1o9yKfk/B72u5TwNZ7BVCMgwC20GvFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":136112},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"bun":">=1.3","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"funding":{"url":"https://github.com/sponsors/koistya","type":"github"},"gitHead":"b0a32263ddc6a0b9a54084519304f0bbb478538f","scripts":{"typecheck":"tsc --build tsconfig.check.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4620e5b6-ae44-4bd1-92dc-1c71885880d1"}},"repository":{"url":"git+https://github.com/kriasoft/ws-kit.git","type":"git","directory":"packages/bun"},"_npmVersion":"11.6.2","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.3","@ws-kit/zod":"^0.10.0","@ws-kit/core":"^0.10.0","@ws-kit/memory":"^0.10.0","@ws-kit/pubsub":"^0.10.0"},"peerDependencies":{"@types/bun":">=1.3.3","@ws-kit/core":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bun_0.10.0_1764943201221_0.9567002127083855","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@ws-kit/bun","version":"0.10.1","description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","type":"module","sideEffects":false,"license":"MIT","author":{"name":"Konstantin Tarkus"},"homepage":"https://kriasoft.com/ws-kit/","bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"repository":{"type":"git","url":"git+https://github.com/kriasoft/ws-kit.git","directory":"packages/bun"},"funding":{"type":"github","url":"https://github.com/sponsors/koistya"},"keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"main":"./dist/index.js","types":"./dist/index.d.ts","peerDependencies":{"@types/bun":">=1.3.6","@ws-kit/core":"^0.10.1"},"devDependencies":{"@types/bun":"^1.3.6","@ws-kit/core":"^0.10.1","@ws-kit/memory":"^0.10.1","@ws-kit/pubsub":"^0.10.2","@ws-kit/zod":"^0.10.2"},"engines":{"bun":">=1.3","node":">=22"},"publishConfig":{"access":"public"},"scripts":{"typecheck":"tsc --build tsconfig.check.json"},"gitHead":"aaa14caf31960392a54c7475fbf458811407a7f9","_id":"@ws-kit/bun@0.10.1","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-nWFSkSG541ZfRpC88T8uy36iEPJPf9G0hoCax5P44phaRKRGR2ZmUqSJ73Qy2ETZO7ZLXT1WnpXqWvKshl3QYA==","shasum":"35298e0627d49f3866eb00f80b0469060522198b","tarball":"https://registry.npmjs.org/@ws-kit/bun/-/bun-0.10.1.tgz","fileCount":32,"unpackedSize":143556,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ws-kit%2fbun@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBkUZLg7vTYM/KqtjCNH+9EWBsSb4CUxfh2SWdY2JqiGAiEA5VfIDg4yy3WHob9KXxraxqWcbgHmgSgYHsYWTGtoeCE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4620e5b6-ae44-4bd1-92dc-1c71885880d1"}},"directories":{},"maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bun_0.10.1_1768870685207_0.3692204257863845"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-31T10:29:51.071Z","modified":"2026-01-20T00:58:05.633Z","0.0.1":"2025-10-31T10:29:51.355Z","0.1.0":"2025-10-31T14:55:25.935Z","0.2.0":"2025-11-01T14:31:43.572Z","0.2.1":"2025-11-01T23:05:38.173Z","0.2.2":"2025-11-02T10:50:24.347Z","0.3.0":"2025-11-02T15:40:05.934Z","0.3.1":"2025-11-02T15:57:04.327Z","0.3.2":"2025-11-02T18:23:31.570Z","0.3.3":"2025-11-06T19:56:08.151Z","0.3.4":"2025-11-07T13:33:02.990Z","0.3.5":"2025-11-08T23:04:52.302Z","0.8.0":"2025-12-01T00:06:50.142Z","0.8.1":"2025-12-01T00:47:50.605Z","0.9.0":"2025-12-04T22:00:21.947Z","0.10.0":"2025-12-05T14:00:01.376Z","0.10.1":"2026-01-20T00:58:05.348Z"},"bugs":{"url":"https://github.com/kriasoft/ws-kit/issues"},"author":{"name":"Konstantin Tarkus"},"license":"MIT","homepage":"https://kriasoft.com/ws-kit/","keywords":["bun","websocket","server","adapter","real-time","typescript","bun-runtime","bun-websocket","server-adapter","websocket-server","full-stack","low-latency","native","performant","streaming","http-upgrade","pubsub","pub-sub"],"repository":{"type":"git","url":"git+https://github.com/kriasoft/ws-kit.git","directory":"packages/bun"},"description":"Bun platform adapter for WS-Kit leveraging native WebSocket API with built-in pub/sub and low-latency message routing","maintainers":[{"name":"koistya","email":"hello@tarkus.me"},{"name":"kriasoft-bot","email":"kriasoft@gmail.com"}],"readme":"# @ws-kit/bun\n\nBun platform adapter for WS-Kit, leveraging Bun's native high-performance WebSocket features.\n\n## Purpose\n\n`@ws-kit/bun` provides the platform-specific integration layer for WS-Kit on Bun, enabling:\n\n- Direct use of Bun's native `server.publish()` for zero-copy broadcasting\n- Seamless integration with `Bun.serve()`\n- Type-safe WebSocket message routing with `@ws-kit/core`\n- Pluggable validator adapters (Zod, Valibot, or custom)\n\n## What This Package Provides\n\n- **`bunPubSub(server)`**: Factory returning a `PubSubAdapter` for use with `withPubSub()` plugin\n- **`createBunHandler(router)`**: Factory returning `{ fetch, websocket }` for `Bun.serve()` integration\n- **Native UUID client ID generation**: Using Bun's built-in `crypto.randomUUID()` for unique connection identifiers\n- **Authentication support**: Auth gating during WebSocket upgrade (return undefined to reject)\n- **Connection metadata**: Automatic `clientId` and `connectedAt` tracking via `ctx.data`\n\n## Platform Advantages Leveraged\n\n- **Native PubSub**: Uses Bun's event-loop integrated broadcasting (no third-party message queue needed)\n- **Zero-copy**: Messages broadcast without serialization overhead\n- **Auto-cleanup**: Subscriptions cleaned up on connection close via Bun's garbage collection\n- **Automatic backpressure**: Respects WebSocket write buffer limits\n- **Optimal performance**: Direct integration with Bun's optimized WebSocket implementation\n\n## Installation\n\n```bash\nbun add @ws-kit/core @ws-kit/bun\n```\n\nInstall with a validator adapter (optional but recommended):\n\n```bash\nbun add zod @ws-kit/zod\n# OR\nbun add valibot @ws-kit/valibot\n```\n\n## Dependencies\n\n- `@ws-kit/core` (required) — Core router and types\n- `@types/bun` (peer) — TypeScript types for Bun (only in TypeScript projects)\n\n## Quick Start\n\n### Basic Example\n\n```typescript\nimport { serve } from \"@ws-kit/bun\";\nimport { z, createRouter, message } from \"@ws-kit/zod\";\n\n// Define message schemas\nconst PingMessage = message(\"PING\", { text: z.string() });\nconst PongMessage = message(\"PONG\", { reply: z.string() });\n\n// Create router\nconst router = createRouter();\n\n// Register handlers\nrouter.on(PingMessage, (ctx) => {\n  ctx.send(PongMessage, { reply: ctx.payload.text });\n});\n\n// Serve with authentication\nserve(router, {\n  port: 3000,\n  authenticate(req) {\n    // Verify auth token and return user data\n    // Returning undefined rejects the connection with 401\n    const token = req.headers.get(\"authorization\");\n    if (!token) return undefined; // Reject\n    return { userId: \"user_123\" }; // Accept\n  },\n});\n```\n\n### With Pub/Sub Plugin\n\nFor broadcasting to multiple subscribers:\n\n```typescript\nimport { serve } from \"@ws-kit/bun\";\nimport { createRouter, message } from \"@ws-kit/zod\";\nimport { withPubSub } from \"@ws-kit/pubsub\";\nimport { z } from \"zod\";\n\nconst NotificationMessage = message(\"NOTIFICATION\", {\n  text: z.string(),\n});\n\nconst router = createRouter().plugin(withPubSub());\n\nrouter.on(NotificationMessage, async (ctx) => {\n  // Broadcast to all subscribers on the topic\n  await ctx.publish(\"notifications\", NotificationMessage, {\n    text: \"Hello everyone!\",\n  });\n});\n\nserve(router, { port: 3000 });\n```\n\n**Note**: `serve()` automatically initializes the Bun Pub/Sub adapter. For `createBunHandler()`, you must manually configure the adapter (see low-level API section below).\n\n### Low-Level API (Advanced)\n\nFor more control over server configuration:\n\n```typescript\nimport { createBunHandler } from \"@ws-kit/bun\";\nimport { z, createRouter, message } from \"@ws-kit/zod\";\n\n// Define and register handlers\nconst PingMessage = message(\"PING\", { text: z.string() });\nconst PongMessage = message(\"PONG\", { reply: z.string() });\n\nconst router = createRouter();\nrouter.on(PingMessage, (ctx) => {\n  ctx.send(PongMessage, { reply: ctx.payload.text });\n});\n\n// Create handlers\nconst { fetch, websocket } = createBunHandler(router, {\n  authenticate: async (req) => {\n    // Verify tokens, sessions, etc.\n    return {};\n  },\n});\n\n// Start server\nBun.serve({\n  port: 3000,\n  fetch(req, server) {\n    const url = new URL(req.url);\n    if (url.pathname === \"/ws\") {\n      return fetch(req, server);\n    }\n    return new Response(\"Not Found\", { status: 404 });\n  },\n  websocket,\n});\n```\n\n## API Reference\n\n### `bunPubSub(server)`\n\nCreate a Pub/Sub adapter for use with the `withPubSub()` plugin.\n\n```typescript\nimport { createRouter } from \"@ws-kit/zod\";\nimport { withPubSub } from \"@ws-kit/pubsub\";\nimport { bunPubSub } from \"@ws-kit/bun\";\n\nconst server = Bun.serve({ fetch: ..., websocket: ... });\nconst adapter = bunPubSub(server);\nconst router = createRouter()\n  .plugin(withPubSub({ adapter }));\n```\n\n**Note:** Bun's pub/sub is process-scoped. For multi-instance clusters, use `@ws-kit/redis`.\n\n### `createBunHandler(router, options?)`\n\nReturns `{ fetch, websocket }` handlers for `Bun.serve()`.\n\n**Options:**\n\n- `authenticate?: (req: Request) => Promise<TData | undefined> | TData | undefined` — Custom auth function called during upgrade. Return `undefined` to reject with configured status (default 401), or an object to merge into connection data and accept.\n- `authRejection?: { status?: number; message?: string }` — Customize rejection response when authenticate returns undefined (default: `{ status: 401, message: \"Unauthorized\" }`)\n- `clientIdHeader?: string` — Header name for returning client ID (default: `\"x-client-id\"`)\n- `onError?: (error: Error, evt: BunErrorEvent) => void` — Called when errors occur (sync-only, for logging/telemetry)\n- `onUpgrade?: (req: Request) => void` — Called before upgrade attempt\n- `onOpen?: (ctx: BunConnectionContext) => void` — Called after connection established (sync-only)\n- `onClose?: (ctx: BunConnectionContext) => void` — Called after connection closed (sync-only)\n\n```typescript\nconst { fetch, websocket } = createBunHandler(router, {\n  authenticate: async (req) => {\n    const token = req.headers.get(\"authorization\");\n    if (!token) return undefined; // Reject with 401\n    const user = await validateToken(token);\n    return { userId: user.id, role: user.role };\n  },\n  authRejection: { status: 403, message: \"Forbidden\" }, // Custom rejection\n  onError: (error, ctx) => {\n    console.error(`[ws ${ctx.type}] ${error.message}`, {\n      clientId: ctx.clientId,\n      phase: ctx.type,\n    });\n  },\n  onOpen: ({ data }) => {\n    console.log(`Connection opened: ${data.clientId}`);\n  },\n  onClose: ({ data }) => {\n    console.log(`Connection closed: ${data.clientId}`);\n  },\n});\n```\n\n### Connection Data\n\nAll connections automatically include:\n\n```typescript\ntype BunConnectionData<TContext> = {\n  clientId: string; // UUID v7 - unique per connection\n  connectedAt: number; // Timestamp in milliseconds\n  // + your custom auth data (TContext)\n};\n```\n\nAccess in handlers:\n\n```typescript\nrouter.on(SomeSchema, (ctx) => {\n  const { clientId, connectedAt } = ctx.data;\n  // Use clientId for logging, userId for auth, etc.\n});\n```\n\n### Broadcasting\n\n```typescript\n// Define schemas\nconst JoinRoom = message(\"JOIN_ROOM\", { room: z.string() });\nconst RoomUpdate = message(\"ROOM_UPDATE\", { text: z.string() });\n\nrouter.on(JoinRoom, async (ctx) => {\n  const { room } = ctx.payload;\n\n  // Subscribe to room channel\n  await ctx.topics.subscribe(`room:${room}`);\n});\n\n// Broadcast to all subscribers on a channel\nawait router.publish(\"room:123\", RoomUpdate, { text: \"Hello everyone!\" });\n```\n\nMessages published to a channel are received by all connections subscribed to that channel.\n\n## PubSub Scope & Scaling\n\n### Single Bun Instance\n\nIn Bun, `router.publish(topic)` broadcasts to **all WebSocket connections in the current process** subscribed to that topic.\n\n```typescript\nimport { createRouter } from \"@ws-kit/zod\";\nimport { withPubSub } from \"@ws-kit/pubsub\";\nimport { bunPubSub } from \"@ws-kit/bun\";\n\nconst server = Bun.serve({\n  fetch() {\n    return new Response(\"\");\n  },\n  websocket: {},\n});\n\nconst router = createRouter().plugin(\n  withPubSub({ adapter: bunPubSub(server) }),\n);\n\n// This broadcasts to connections in THIS process only\nconst NotificationMessage = message(\"NOTIFICATION\", { message: z.string() });\nawait router.publish(\"notifications\", NotificationMessage, {\n  message: \"Hello\",\n});\n```\n\n### Multi-Instance Cluster (Load Balanced)\n\nFor deployments with multiple Bun processes behind a load balancer, use `@ws-kit/redis`:\n\n```typescript\nimport { createClient } from \"redis\";\nimport { createRouter } from \"@ws-kit/zod\";\nimport { withPubSub } from \"@ws-kit/pubsub\";\nimport { redisPubSub } from \"@ws-kit/redis\";\nimport { serve } from \"@ws-kit/bun\";\n\nconst redis = createClient();\nawait redis.connect();\n\nconst router = createRouter().plugin(\n  withPubSub({ adapter: redisPubSub(redis) }),\n);\n\n// Now publishes across ALL instances\nconst NotificationMessage = message(\"NOTIFICATION\", { message: z.string() });\nawait router.publish(\"notifications\", NotificationMessage, {\n  message: \"Hello\",\n});\n\nserve(router, { port: 3000 });\n```\n\n## Connection Lifecycle\n\nConnections go through phases: authenticate → upgrade → open → message(s) → close. Sync-only hooks fire at each phase for observability:\n\n```typescript\nconst { fetch, websocket } = createBunHandler(router, {\n  authenticate: async (req) => {\n    // Verify auth; return undefined to reject, object to accept\n    const token = req.headers.get(\"authorization\");\n    return token ? { userId: \"user_123\" } : undefined;\n  },\n  onOpen: ({ data }) => {\n    console.log(`Connected: ${data.clientId}`);\n  },\n  onClose: ({ data }) => {\n    console.log(`Disconnected: ${data.clientId}`);\n  },\n  onError: (error, evt) => {\n    console.error(`Error in ${evt.type}:`, error.message);\n  },\n});\n```\n\n**Handlers** receive validated messages with full connection context:\n\n```typescript\nrouter.on(LoginMessage, (ctx) => {\n  const { username, password } = ctx.payload; // From schema\n  const { userId, clientId } = ctx.data; // From auth or defaults\n  // Handle login...\n});\n```\n\n## Examples\n\n### Chat Application with Pub/Sub\n\n```typescript\nimport { createBunHandler } from \"@ws-kit/bun\";\nimport { createRouter } from \"@ws-kit/zod\";\nimport { withPubSub } from \"@ws-kit/pubsub\";\nimport { bunPubSub } from \"@ws-kit/bun\";\nimport { z, message } from \"@ws-kit/zod\";\n\ndeclare module \"@ws-kit/core\" {\n  interface ConnectionData {\n    userId?: string;\n    room?: string;\n  }\n}\n\n// Message schemas\nconst JoinRoomMessage = message(\"ROOM:JOIN\", { room: z.string() });\nconst SendMessageMessage = message(\"ROOM:MESSAGE\", { text: z.string() });\nconst UserListMessage = message(\"ROOM:LIST\", {\n  users: z.array(z.string()),\n});\nconst BroadcastMessage = message(\"ROOM:BROADCAST\", {\n  user: z.string(),\n  text: z.string(),\n});\n\nconst server = Bun.serve({\n  fetch() {\n    return new Response(\"\");\n  },\n  websocket: {},\n});\n\n// Router with pub/sub\nconst router = createRouter().plugin(\n  withPubSub({ adapter: bunPubSub(server) }),\n);\n\n// Track rooms\nconst rooms = new Map<string, Set<string>>();\n\nrouter.on(JoinRoomMessage, async (ctx) => {\n  const { room } = ctx.payload;\n  const { clientId } = ctx.data;\n\n  // Update connection data\n  ctx.assignData({ room });\n\n  // Subscribe to room\n  await ctx.topics.subscribe(`room:${room}`);\n\n  // Track membership\n  if (!rooms.has(room)) rooms.set(room, new Set());\n  rooms.get(room)!.add(clientId);\n\n  // Broadcast user list using schema\n  const users = Array.from(rooms.get(room)!);\n  await router.publish(`room:${room}`, UserListMessage, { users });\n});\n\nrouter.on(SendMessageMessage, async (ctx) => {\n  const { text } = ctx.payload;\n  const { clientId, room } = ctx.data;\n\n  // Broadcast to all in room using schema\n  await router.publish(`room:${room}`, BroadcastMessage, {\n    user: clientId,\n    text,\n  });\n});\n\nrouter.onClose((ctx) => {\n  const { clientId, room } = ctx.data;\n\n  if (room && rooms.has(room)) {\n    rooms.get(room)!.delete(clientId);\n  }\n});\n\nconst { fetch, websocket } = createBunHandler(router);\n\nBun.serve({\n  fetch(req) {\n    if (new URL(req.url).pathname === \"/ws\") {\n      return fetch(req, server);\n    }\n    return new Response(\"Not Found\", { status: 404 });\n  },\n  websocket,\n});\n```\n\n## Performance\n\nBun's native WebSocket implementation provides excellent performance characteristics:\n\n- **Zero-copy broadcasting** — Uses Bun's `server.publish()` for efficient message distribution\n- **Automatic backpressure** — WebSocket write buffer limits are respected\n- **In-memory pub/sub** — Fast topic subscriptions without external dependencies\n- **Connection limits** — Determined by OS and Bun runtime (typically 10,000+ concurrent connections)\n\nFor exact performance benchmarks, see [Bun's WebSocket documentation](https://bun.sh/docs/api/websockets).\n\n## Key Concepts\n\n### Connection Data\n\nAll connection state lives in `ctx.data` (see ADR-033 for details). Automatic fields are always available; custom fields come from the `authenticate` hook:\n\n```typescript\ndeclare module \"@ws-kit/core\" {\n  interface ConnectionData {\n    userId?: string;\n    roles?: string[];\n  }\n}\n\nrouter.on(SomeMessage, (ctx) => {\n  const { clientId, connectedAt } = ctx.data; // Automatic\n  const { userId, roles } = ctx.data; // Custom (from auth)\n  ctx.assignData({ roles: [\"admin\"] }); // Update\n});\n```\n\n**Automatic fields:**\n\n- `clientId: string` — Unique per connection\n- `connectedAt: number` — Timestamp when upgraded\n\n### Opaque Transport\n\nThe WebSocket (`ctx.ws`) is used only for low-level transport operations:\n\n```typescript\nctx.ws.send(data); // Low-level send\nctx.ws.close(1000); // Close with code\nconst state = ctx.ws.readyState; // Check state\n\n// Don't access platform-specific fields; use ctx.data instead\n```\n\n## TypeScript Support\n\nFull type inference from schema to handler context. Use module augmentation to define connection data once, shared across all routers:\n\n```typescript\ndeclare module \"@ws-kit/core\" {\n  interface ConnectionData {\n    userId?: string;\n    role?: \"admin\" | \"user\";\n  }\n}\n\nrouter.on(SomeSchema, (ctx) => {\n  const role = ctx.data.role; // Fully typed: \"admin\" | \"user\" | undefined\n});\n```\n\n## Architecture & Design\n\n### Authentication Gating\n\nPer [ADR-035](../docs/adr/035-bun-adapter-refinement.md), authentication is a critical security boundary:\n\n- **Returning `undefined`** from `authenticate` **rejects** the connection with configured status (default 401)\n- **Returning an object** merges it into `ctx.data` and accepts the connection\n- **Not providing `authenticate`** accepts connections with only automatic fields (`clientId`, `connectedAt`)\n\nThis ensures auth is a true gatekeeper, not a side effect.\n\n### Sync-Only Hooks\n\nError and lifecycle hooks (`onError`, `onOpen`, `onClose`) are **sync-only** for predictability:\n\n- Cannot await promises (no async footguns)\n- Used for observability and logging, not recovery\n- For async cleanup or recovery, use plugins instead\n\n## Troubleshooting\n\n### \"Upgrade failed\"\n\nEnsure your fetch handler returns the result of `fetch(req, server)` from `createBunHandler()`.\n\n### Authentication rejected\n\nIf your connection is rejected with 401, verify:\n\n1. `authenticate` is returning an object (not `undefined`) to accept\n2. Use `authRejection` option to customize the rejection status/message if needed\n\n```typescript\nconst { fetch } = createBunHandler(router, {\n  authenticate: (req) => {\n    // ✓ Correct: return {} to accept with no custom data\n    // ✓ Correct: return { userId: \"...\" } to accept with data\n    // ✗ Wrong: returning undefined still rejects\n    return undefined; // This rejects\n  },\n  authRejection: { status: 403, message: \"Forbidden\" },\n});\n```\n\n### Messages not broadcasting\n\nCheck that:\n\n1. Router has `withPubSub()` plugin registered\n2. Sender and receiver are subscribed to the same topic: `await ctx.topics.subscribe(\"channel\")`\n3. For multi-instance: use `@ws-kit/redis` instead of Bun's built-in pub/sub\n\n### Memory leaks\n\nEnsure handlers clean up subscriptions:\n\n```typescript\nrouter.on(JoinRoomMessage, async (ctx) => {\n  await ctx.topics.subscribe(`room:${room}`);\n});\n\n// Clean up on disconnect (via plugin or external tracking)\nawait ctx.topics.unsubscribe(`room:${room}`);\n```\n\n## Related Packages\n\n- [`@ws-kit/core`](../core/README.md) — Core router and types\n- [`@ws-kit/zod`](../zod/README.md) — Zod validator adapter\n- [`@ws-kit/valibot`](../valibot/README.md) — Valibot validator adapter\n- [`@ws-kit/redis`](../redis/README.md) — Redis rate limiter and pub/sub\n- [`@ws-kit/memory`](../memory/README.md) — In-memory pub/sub\n- [`@ws-kit/client`](../client/README.md) — Browser/Node.js client\n\n## License\n\nMIT\n","readmeFilename":"README.md"}