{"_id":"@api.global/typedsocket","_rev":"35-062b9fd10cceca6beae19d7ebb8d5765","name":"@api.global/typedsocket","dist-tags":{"latest":"8.3.0"},"versions":{"2.0.28":{"name":"@api.global/typedsocket","version":"2.0.28","author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@2.0.28","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"1265bf5df8cfeee8cf015cb2a17b0c935b4bb46b","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-2.0.28.tgz","fileCount":16,"integrity":"sha512-EIbU9sWzq6pRni2HVXexWrS7vmjUaksvlLCd1S2p7FoTVWklmrA4M3Sjoq3Ih71If+1TdG94WGoCjeDAfz1jUQ==","signatures":[{"sig":"MEYCIQDeH25Y469JA4W1lqhjDXb/PTiYKZVQOSvt7TIXKroy4wIhAN5RRNGmsxBq96HFp2KRUk++bj9T3l/UpvSli4lgePAI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33072},"main":"dist_ts/index.js","type":"module","gitHead":"f62497ce48b936db9488544411c63abb990048f0","private":false,"scripts":{"test":"(tstest test/ --web)","build":"(tsbuild --web --allowimplicitany)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_npmVersion":"9.8.1","description":"a typedrequest extension supporting websockets","directories":{},"_nodeVersion":"18.17.0","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.0","@push.rocks/smartrx":"^3.0.6","@push.rocks/smarturl":"^3.0.5","@push.rocks/smartjson":"^5.0.5","@push.rocks/smartsocket":"^2.0.22","@push.rocks/smartstring":"^4.0.2","@api.global/typedrequest":"^3.0.1","@api.global/typedrequest-interfaces":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.4.8","@gitzone/tsrun":"^1.2.44","@gitzone/tstest":"^1.0.77","@gitzone/tsbuild":"^2.1.66","@gitzone/tsbundle":"^2.0.8","@push.rocks/smartenv":"^5.0.5","@push.rocks/tapbundle":"^5.0.12"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_2.0.28_1691332904400_0.644490696257146","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@api.global/typedsocket","version":"3.0.0","author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@3.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"cb00482b6338ac46605e2f592d642500a996dbdf","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-3.0.0.tgz","fileCount":16,"integrity":"sha512-ui+6MLd99iTN/lC+iC/FKPRjzVyiZ4PrmlU6ptbCtbBj3cSOXHx+RRGF54+be2xHodf4FOgwFv/GZdW8LtO3vg==","signatures":[{"sig":"MEMCHy+pPiCrxLNmBfIuAvpOB9jPLjKI5Zk4JJW2eTpcizYCIAsx3tKFyXrwoAaJA3sbcyiabHHs0AmSyXJ8sPjwxTH+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33069},"main":"dist_ts/index.js","type":"module","gitHead":"c2f4efd33d08dca36497966f1b8e6b661ae70cf8","private":false,"scripts":{"test":"(tstest test/ --web)","build":"(tsbuild --web --allowimplicitany)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_npmVersion":"9.8.1","description":"a typedrequest extension supporting websockets","directories":{},"_nodeVersion":"18.17.0","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.0","@push.rocks/smartrx":"^3.0.6","@push.rocks/smarturl":"^3.0.5","@push.rocks/smartjson":"^5.0.5","@push.rocks/smartsocket":"^2.0.22","@push.rocks/smartstring":"^4.0.2","@api.global/typedrequest":"^3.0.1","@api.global/typedrequest-interfaces":"^3.0.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.4.8","@gitzone/tsrun":"^1.2.44","@gitzone/tstest":"^1.0.77","@gitzone/tsbuild":"^2.1.66","@gitzone/tsbundle":"^2.0.8","@push.rocks/smartenv":"^5.0.5","@push.rocks/tapbundle":"^5.0.12"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_3.0.0_1691333743040_0.8362190914235639","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"@api.global/typedsocket","version":"3.0.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@3.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"9cf8e892fccc643f02e3d744e37a924ab8d3c9ff","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-3.0.1.tgz","fileCount":17,"integrity":"sha512-xojiAVNXtHoxkpBo8U2HHJG8FrVXXuLvDNndSHXwx4C9VslUwDn5zSCI+PdBl8iAg+ZuBmKjqkpZZ9sL6DC5yQ==","signatures":[{"sig":"MEUCIFP4amqIhNbo0ht694ujF8PfkaCEvtNqiaGUH0bubSzzAiEApmAZPpe9crV01k1ouGZ/sNrV5Piu3yCH2WpuwW1tq3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38676},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-3.0.1.tgz","private":false,"scripts":{"test":"(tstest test/ --web)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/787b0eef3d651efad5c3015057ba84d7/api.global-typedsocket-3.0.1.tgz","_integrity":"sha512-xojiAVNXtHoxkpBo8U2HHJG8FrVXXuLvDNndSHXwx4C9VslUwDn5zSCI+PdBl8iAg+ZuBmKjqkpZZ9sL6DC5yQ==","_npmVersion":"10.2.3","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"21.2.0","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.0","@push.rocks/smartrx":"^3.0.7","@push.rocks/smarturl":"^3.0.5","@push.rocks/smartjson":"^5.0.19","@push.rocks/smartsocket":"^2.0.25","@push.rocks/smartstring":"^4.0.15","@api.global/typedrequest":"^3.0.21","@api.global/typedrequest-interfaces":"^3.0.18"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.12.7","@git.zone/tsrun":"^1.2.44","@git.zone/tstest":"^1.0.77","@git.zone/tsbuild":"^2.1.66","@git.zone/tsbundle":"^2.0.8","@push.rocks/smartenv":"^5.0.12","@push.rocks/tapbundle":"^5.0.23"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_3.0.1_1713469769865_0.3837725066309139","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"@api.global/typedsocket","version":"3.1.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@3.1.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"bf243028ec2eb2054998b0586a30c7f75f6c06b4","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-3.1.1.tgz","fileCount":17,"integrity":"sha512-Wkz3NlhmfdZMKqXXI2c2dMtGGmSmhdOegZiziL+9b2mqPYdc7Gd8AZRdEOKvbSoIvc9G22/5BEadIWHrfq66TA==","signatures":[{"sig":"MEQCIBgisLzIe8w2Vq0LJM5QTF2I37s6cj+A5Use9nLIP+ESAiB9b22o8xFKxtrRgd3q1Qfsa//N5kJnb+E4OSLcqZHccA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64131},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-3.1.1.tgz","private":false,"scripts":{"test":"(tstest test/ --web)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/a71c4f56b97a9135d98acd7efd44efc0/api.global-typedsocket-3.1.1.tgz","_integrity":"sha512-Wkz3NlhmfdZMKqXXI2c2dMtGGmSmhdOegZiziL+9b2mqPYdc7Gd8AZRdEOKvbSoIvc9G22/5BEadIWHrfq66TA==","_npmVersion":"11.3.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"23.8.0","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.1","@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartsocket":"^2.1.0","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.10","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1","@git.zone/tsrun":"^2.0.0","@git.zone/tstest":"^3.1.3","@git.zone/tsbuild":"^3.1.2","@git.zone/tsbundle":"^2.6.2","@push.rocks/smartenv":"^6.0.0","@push.rocks/tapbundle":"^6.0.3","@push.rocks/smartserve":"^1.1.0"},"peerDependencies":{"@push.rocks/smartserve":">=1.0.0"},"peerDependenciesMeta":{"@push.rocks/smartserve":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_3.1.1_1764683759325_0.51813702543751","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@api.global/typedsocket","version":"4.0.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"c2fe44bec51871f58df97916b2bfef4ace123541","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.0.0.tgz","fileCount":17,"integrity":"sha512-3JQdLcBRcb2Ch/kknISqivHCV8qxEd8/calu95rUoG1/FbQUdKtRNTS9j7pox91oHG7PGW2kXQbMkRx7Ir6F7Q==","signatures":[{"sig":"MEQCIEtlfuqgSyCxc086IUwsqkt72Z57KbighlfXCQR+QImNAiBNon8ZI5cBODtgMP0xjpUswrt7eCaRUbgcYgyv/508vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63069},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-4.0.0.tgz","private":false,"scripts":{"test":"(tstest test/ --web)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/88736bb9474ceaa5f9c6ac9f085599ae/api.global-typedsocket-4.0.0.tgz","_integrity":"sha512-3JQdLcBRcb2Ch/kknISqivHCV8qxEd8/calu95rUoG1/FbQUdKtRNTS9j7pox91oHG7PGW2kXQbMkRx7Ir6F7Q==","_npmVersion":"11.6.2","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.1","@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartsocket":"^3.0.0","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.10","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1","@git.zone/tsrun":"^2.0.0","@git.zone/tstest":"^3.1.3","@git.zone/tsbuild":"^3.1.2","@git.zone/tsbundle":"^2.6.2","@push.rocks/smartenv":"^6.0.0","@push.rocks/tapbundle":"^6.0.3","@push.rocks/smartserve":"^1.1.0"},"peerDependencies":{"@push.rocks/smartserve":">=1.0.0"},"peerDependenciesMeta":{"@push.rocks/smartserve":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.0.0_1764754481687_0.27603835326441906","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@api.global/typedsocket","version":"4.1.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"140cc87d7adcfa5bdf5f259da9937e1e03f2065a","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.1.0.tgz","fileCount":17,"integrity":"sha512-ttmoU5BNHmLAkAF/o+Ta8F5O4F7CUmkFo6LK7NKHQvuYJvodPMYWdhJ6yCINTF4pfCgljkMDUqoVKobm6ea4mQ==","signatures":[{"sig":"MEUCIFWGtSfS4M+PsIDFQzDwQJShgytY3rmTtno0SLG+SPxWAiEAg1GoHg2m/KjTnI8pe+FkTrJ/yNbpDlBOXY7DhVSQK8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80565},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-4.1.0.tgz","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/a286358d6d77046a9dc617df7cc14d2a/api.global-typedsocket-4.1.0.tgz","_integrity":"sha512-ttmoU5BNHmLAkAF/o+Ta8F5O4F7CUmkFo6LK7NKHQvuYJvodPMYWdhJ6yCINTF4pfCgljkMDUqoVKobm6ea4mQ==","_npmVersion":"11.6.2","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.1","@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1","@git.zone/tsrun":"^2.0.0","@git.zone/tstest":"^3.1.3","@git.zone/tsbuild":"^3.1.2","@git.zone/tsbundle":"^2.6.3","@push.rocks/smartenv":"^6.0.0","@push.rocks/tapbundle":"^6.0.3","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.1.0_1764806447518_0.6124328596225284","host":"s3://npm-registry-packages-npm-production"}},"4.1.2":{"name":"@api.global/typedsocket","version":"4.1.2","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.1.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3197fb569223a1d9139264bad66ce9af637d60b3","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.1.2.tgz","fileCount":17,"integrity":"sha512-fZFuJY9ucFCICjF4wi6OvK8drsv6UcwVVsfamOT1HxFj7OBOYw6QHOceQ+cAQ8IrWbX817sf8gzlesl+jlG8JA==","signatures":[{"sig":"MEYCIQCi7J8vGEUesIP6sLGE4YId74KQbbnB3ZTXPEbMcxY7OAIhAP99ltKFQkReRvmx8DBAZH61DN5mj81Sw6+zs2g/NbIf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81700},"main":"dist_ts/index.js","type":"module","gitHead":"56be58340387de364641d5ab1d3d29d1b7676a97","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.1","@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34","devDependencies":{"@types/node":"^24.10.1","@git.zone/tsrun":"^2.0.0","@git.zone/tstest":"^3.1.3","@git.zone/tsbuild":"^3.1.2","@git.zone/tsbundle":"^2.6.3","@push.rocks/smartenv":"^6.0.0","@push.rocks/tapbundle":"^6.0.3","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.1.2_1772125336448_0.7385792480165245","host":"s3://npm-registry-packages-npm-production"}},"4.1.3":{"name":"@api.global/typedsocket","version":"4.1.3","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.1.3","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"6e2388ea180b91351630145464c2a1302bdcc7e0","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.1.3.tgz","fileCount":17,"integrity":"sha512-gpMyVx90RgNb67YSuOihAqge47UtxaPYc7+6vw7T7kkd3BO7/tg8z32Vovx2EQw2ANczRNwgQmXuZrAbCUjeQA==","signatures":[{"sig":"MEYCIQCDyIGY5/aBTTSjhTTOHEkbTIOnUa85nV5bhD75pP8aEgIhAPnFgPCPwfAYbmVTM9Kp1ET5VKwXmIKQwbUpYQJ/ZQbv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82209},"main":"dist_ts/index.js","type":"module","gitHead":"33b65042f99ee0b586991c3b9a40344fdcb17d5b","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/isohash":"^2.0.1","@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34","devDependencies":{"@types/node":"^24.10.1","@git.zone/tsrun":"^2.0.0","@git.zone/tstest":"^3.1.3","@git.zone/tsbuild":"^3.1.2","@git.zone/tsbundle":"^2.6.3","@push.rocks/smartenv":"^6.0.0","@push.rocks/tapbundle":"^6.0.3","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.1.3_1778235450886_0.5141409086950524","host":"s3://npm-registry-packages-npm-production"}},"4.1.4":{"name":"@api.global/typedsocket","version":"4.1.4","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.1.4","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"9b4daa0b7461607ef04f0f570ee413fcdbd94fa3","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.1.4.tgz","fileCount":17,"integrity":"sha512-OeW1gSR2siC3pmq41FMZm9g0PFIkmit7HcnEj2VNuJUBXeN+ZTVb2KCwpnSNlF/+ljviLfR90+rTF56xkBOXmQ==","signatures":[{"sig":"MEQCIEC8ol2UrfG6oXOVV+M3/uz5TJHK8o84J8cCRo7ZGDotAiA6f3mbTr1nJ5OU3W+wHd8MBQk2FAHMhTE7FdbdNye5Eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81764},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-4.1.4.tgz","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/46e3fa6c221e941b0ce2b6386d8e4f33/api.global-typedsocket-4.1.4.tgz","_integrity":"sha512-OeW1gSR2siC3pmq41FMZm9g0PFIkmit7HcnEj2VNuJUBXeN+ZTVb2KCwpnSNlF/+ljviLfR90+rTF56xkBOXmQ==","_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.1","@git.zone/tsrun":"^2.0.0","@git.zone/tstest":"^3.1.3","@git.zone/tsbuild":"^3.1.2","@git.zone/tsbundle":"^2.6.3","@push.rocks/smartenv":"^6.0.0","@push.rocks/tapbundle":"^6.0.3","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.1.4_1779207864563_0.8358938613291245","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@api.global/typedsocket","version":"4.2.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"da4544e78e733691dd6a6321c6eab76b4cbe0a4e","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.2.0.tgz","fileCount":17,"integrity":"sha512-7c0L8KgQUzCDuldbhKJ2AGZVeJUOYgHqRzZnXWYsRO9/tsqqhHdjXoTcqCvntazJNFJy/jCaWz06V95KFZyYbQ==","signatures":[{"sig":"MEUCID/lEQ7DKCMkFgLr/b4s2ESi4laAPJie3oN4pVADguV1AiEAypcbnmDhs/2olq8r2aRAMCRyXTnYa0tixpM6SRtdS3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96410},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-4.2.0.tgz","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/e49d418c8dc6aa03b0a86f7ea074db1b/api.global-typedsocket-4.2.0.tgz","_integrity":"sha512-7c0L8KgQUzCDuldbhKJ2AGZVeJUOYgHqRzZnXWYsRO9/tsqqhHdjXoTcqCvntazJNFJy/jCaWz06V95KFZyYbQ==","_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"25.9.1","@git.zone/tsrun":"^2.0.4","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.10.4","@push.rocks/smartenv":"^6.0.0","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.2.0_1780962842057_0.6949759046976525","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"@api.global/typedsocket","version":"4.2.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.2.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3ef2c61b9120fc3c98078fd3c83fe175dcce1ddb","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.2.1.tgz","fileCount":17,"integrity":"sha512-ICN23wk/DbHKdrWQNOJqob6SgF/vpPMjw1q5vZWv+hYauY8la5zj11v6wmcO3VcpN9Q9TNp7uSfa9vNxr6ObrA==","signatures":[{"sig":"MEUCIQDKeMzOzcANdC/zn18va5HVdj2TLY7icnQxFMUB2+no/gIgaxOAt6+l5ar8RGHG0BOnKDbVMXNpKzOAAfpWhGjlWfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99813},"main":"dist_ts/index.js","type":"module","gitHead":"9ed910e60a41bd842695c2aa73efe94898e05e54","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^5.2.0","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34","devDependencies":{"@types/node":"25.9.1","@git.zone/tsrun":"^2.0.4","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.10.4","@push.rocks/smartenv":"^6.0.0","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.2.1_1781083991910_0.1113118373240245","host":"s3://npm-registry-packages-npm-production"}},"4.2.2":{"name":"@api.global/typedsocket","version":"4.2.2","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.2.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"7d009f844bf988e19e5208d04804030921d21c11","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.2.2.tgz","fileCount":17,"integrity":"sha512-Wf1eeAEemTPNrsYAOzWTuPy+LueriNLvSJw1HiIBKYJTJ7AdLF8N/1fWYOitaF1Cq0rA6vcsOdNV2ntKF82prg==","signatures":[{"sig":"MEUCIQCKqodiCjf3ZODMVVBxXBG8OJhZPW+aEMuXwkoAotAGHAIgMOg5YjU78EvMQraCi4IF/9MabX26Tp4J+g8K7XVkX8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99640},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-4.2.2.tgz","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/863ebeb41b93765e17c9b1d1177e112b/api.global-typedsocket-4.2.2.tgz","_integrity":"sha512-Wf1eeAEemTPNrsYAOzWTuPy+LueriNLvSJw1HiIBKYJTJ7AdLF8N/1fWYOitaF1Cq0rA6vcsOdNV2ntKF82prg==","_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"25.9.1","@git.zone/tsrun":"^2.0.4","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.0","@push.rocks/smartenv":"^6.0.0","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.2.2_1782249823245_0.5545549926545563","host":"s3://npm-registry-packages-npm-production"}},"4.2.3":{"name":"@api.global/typedsocket","version":"4.2.3","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":{"name":"Lossless GmbH"},"license":"MIT","_id":"@api.global/typedsocket@4.2.3","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"d2ddfa57957e105af9dc826d872f7729c7f12f21","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.2.3.tgz","fileCount":17,"integrity":"sha512-ndT/GXfflCCLXwsPPbR9Dv4+Cx0yiPPYJNa0FuFuMxs4EWlMh7nqiF8roR5nMesNk/siEJG7RxuuuMZirb0fwQ==","signatures":[{"sig":"MEQCIG355mLiQX1SEN8GLC8eksqW4LJWcgLlADVOR336zSEfAiB/cF6hDGjqLP5QmPWmheKxR27W60/XjAVea7almkesCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103436},"main":"dist_ts/index.js","type":"module","_from":"file:api.global-typedsocket-4.2.3.tgz","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"_resolved":"/tmp/a4d27a3fbfe21f39990d71b87179c53b/api.global-typedsocket-4.2.3.tgz","_integrity":"sha512-ndT/GXfflCCLXwsPPbR9Dv4+Cx0yiPPYJNa0FuFuMxs4EWlMh7nqiF8roR5nMesNk/siEJG7RxuuuMZirb0fwQ==","_npmVersion":"11.7.0","description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.0","@api.global/typedrequest":"^3.1.11","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"25.9.1","@git.zone/tsrun":"^2.0.4","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.0","@push.rocks/smartenv":"^6.0.0","@push.rocks/smartserve":"^1.1.2"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.2.3_1783550679405_0.7198290193625498","host":"s3://npm-registry-packages-npm-production"}},"4.2.4":{"name":"@api.global/typedsocket","version":"4.2.4","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@4.2.4","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"5cec4bf5b9f40ac6129ea7c5eb9eeeb73f0bee08","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.2.4.tgz","fileCount":17,"integrity":"sha512-4ILP1kX8jgchgeZjacM1XnImVFe3nPoxua4IGtZ9FjBP34vSWtH/+TBNMuVAKEeNBlESxTctoZzks9TKEhGT2A==","signatures":[{"sig":"MEUCICSD/8z/HAyDuPxou/b1CZVv4DKwaDu86IFWfLl9SZEiAiEA/6FCs0MC7kxSQ/+EGLqJVJ0ScZnz+h2ug2WZoZVSKmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106013},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.3.2","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.0","@git.zone/tsrun":"^2.0.5","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.0","@push.rocks/smartenv":"^6.0.0","@push.rocks/smartserve":"^2.2.0"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.2.4_1783718241255_0.09292021863017119","host":"s3://npm-registry-packages-npm-production"}},"4.2.5":{"name":"@api.global/typedsocket","version":"4.2.5","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@4.2.5","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"2c7d19eb510a51d1b7cc82fb3ad8e722c96ff9ea","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-4.2.5.tgz","fileCount":17,"integrity":"sha512-hWPr2mNkhDWBRcpIRFD3894BcAto8r1TslI3gyReTJIsr3RhW8JOomqYMAz2NA98EuemOHmkO+caDAmGc9B35A==","signatures":[{"sig":"MEUCIC3jRsYjCdB5jTSV+v9f2hsNG3l1ujjxDeJjNO0eGUKTAiEAmqcVir7tPCJzmGriR9nEvoPSoPeZQ4BIVEPvGV/s16I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103863},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.10","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.0.5","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.3.2","@push.rocks/smartpromise":"^4.2.3","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.0","@git.zone/tsrun":"^2.0.5","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.0","@push.rocks/smartenv":"^6.0.0","@push.rocks/smartserve":"^2.2.0"},"peerDependencies":{"@push.rocks/smartserve":">=1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_4.2.5_1783719148293_0.8278201835542252","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@api.global/typedsocket","version":"5.0.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@5.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"6a2ac28562d9a9ba8528b226ea28bd932d8db139","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-5.0.0.tgz","fileCount":17,"integrity":"sha512-aMmcWdpljTZxUPOfdxbZig+wgR8aicOhgrdDojZfw5TQFcRvJ4pZ2nHjEpa9wPmUBfoqmm4czeIG1gJNKSZ7/w==","signatures":[{"sig":"MEYCIQDQUtH5NGeG5NL0YEQ8dI8b4oBnj4kMgoFrN285b+W85wIhAJOv46XaAtKt17UesX5IKBWPfxvn9v/R4/HIZ3P+lm/e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124168},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.3.2","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.5","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.2","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^2.3.0"},"peerDependencies":{"@push.rocks/smartserve":">=2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_5.0.0_1784587398192_0.9234427631709583","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@api.global/typedsocket","version":"5.0.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@5.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"5b5024f20829cc4905c7ae3a32c3710696223118","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-5.0.1.tgz","fileCount":17,"integrity":"sha512-GhuR8QL+UE7yT6BcaO5/GE5xs5MZwzEBlYG0JckpqKpQyo4B+wFiaww9qDAYGgdlIcSxUgqCxmPtH34HIw6mmg==","signatures":[{"sig":"MEUCIFA2bVDP87TacQuO5Plyl1xaJEYNDicIMwR05zRaI4axAiEAwgQ2QDIdozVTm1Y7LSLHbZdXa4acsDnhmYBiMC4k0vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126511},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.3.2","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^3.0.19"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.5","@git.zone/tstest":"^3.6.6","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^2.3.0"},"peerDependencies":{"@push.rocks/smartserve":">=2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_5.0.1_1784876316005_0.24279340200876187","host":"s3://npm-registry-packages-npm-production"}},"5.0.2":{"name":"@api.global/typedsocket","version":"5.0.2","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@5.0.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"7b907375143618824c909641596d0e106a639a3f","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-5.0.2.tgz","fileCount":17,"integrity":"sha512-Lsgr9HHrArbEUXII2Lm/rkjrd9t98XTWAduizYx9N9qkS+KkpNS8P2X3Lxd0KnD5dxFbcPsBSoYdqxm4rTPXfg==","signatures":[{"sig":"MEUCIQDxPNxAJdfktoo2PRudjpQaNU78KYJTb76LqcZxufy5fwIgemKxWZFfoAu7yQ7a6HjOjW/iiHcg4dDf0FBjU6sKczo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132954},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.5.0","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^2.4.1"},"peerDependencies":{"@push.rocks/smartserve":">=2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_5.0.2_1785336341638_0.35756650678282575","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@api.global/typedsocket","version":"5.1.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@5.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"e933150e44ce4c7a58168c0b556b9496753c1ecd","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-5.1.0.tgz","fileCount":17,"integrity":"sha512-txYgE3Ejjeir5a8YVnU59Vsuk2CmeSS0Gf+/0WYEww7r6yn8oJtbRWarYxkz5ZyMvbYtojWI4AyRiuyb2xePfQ==","signatures":[{"sig":"MEUCIQDorjRFmpagaE9sXHYTylgDm94gRiSSaPDoZUNmUuvxAwIgPBOVvylvC6LXB4Sl+wFwZ9zEClgB89c4k3D/B3rcyVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146034},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.7.0","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^2.6.0"},"peerDependencies":{"@push.rocks/smartserve":">=2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_5.1.0_1785349552356_0.9164776605421752","host":"s3://npm-registry-packages-npm-production"}},"5.1.1":{"name":"@api.global/typedsocket","version":"5.1.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@5.1.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3bc9c34867c1234cfe552390bbd1a2a58b4512ef","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-5.1.1.tgz","fileCount":17,"integrity":"sha512-H1n8vu/+7HtR5V52G+6ZKBdVU3qRWe9qY2MvNzWXwSDzfe5iR/0e0CfBNp15SRNzV3mFug5hNdxE+IXQbs5TvA==","signatures":[{"sig":"MEUCIFN6nZ525y+c6GfHIckSXFynOyVZkNB6y5Jk0SHJRjDXAiEA93MI80kw3UDoq3Tf3dQtNUurO244547tf5lEKLiJHDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146868},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.7.0","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^2.6.0"},"peerDependencies":{"@push.rocks/smartserve":">=2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_5.1.1_1785445784463_0.23727389219397121","host":"s3://npm-registry-packages-npm-production"}},"5.1.2":{"name":"@api.global/typedsocket","version":"5.1.2","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Lossless GmbH","license":"MIT","_id":"@api.global/typedsocket@5.1.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"a380f78ff4a1e4555efe8e122e86a8619a277120","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-5.1.2.tgz","fileCount":17,"integrity":"sha512-Wjdn5YZZ+Bfpr0f3rQZt0WyTtgvOzxbL2DT+v0YleEx0ucvmuJctZ6uRIbj2K310EVa0GX4dGmvWoUDcbuwvzQ==","signatures":[{"sig":"MEQCIF/LpXanHQLrITvxW+t+2Z1V0u7Fr54TSQqTa5u1IbgFAiA2NI1C5elSXwo4MZ4KeAWTCaoKhMLga9pF3Ej/NNdXMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146871},"main":"dist_ts/index.js","type":"module","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --allowimplicitany --skiplibcheck)","buildDocs":"tsdoc"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^3.7.0","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^4.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^2.6.0"},"peerDependencies":{"@push.rocks/smartserve":">=2.3.0 <4"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_5.1.2_1785512096673_0.10106088431318505","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@api.global/typedsocket","version":"6.0.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@6.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"edafd49915f17087284feee45d219051d968d9db","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-6.0.0.tgz","fileCount":24,"integrity":"sha512-2LIDxYSGTHJI+BXL9myPIqOxEOmX5wJZaIVldnA4JIqa3F306B1yfPlUZgl4mJWW405q6rqx7dxTOOJ599TYHw==","signatures":[{"sig":"MEUCIHdeqc82j0AJpBr0BnyZD5T5jL6UoTL29nWCQTwb17BsAiEAnd5j/RjEsio4RB0qgslkbMmdLQKFbNGkLc6nCO277X4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":581815},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^5.2.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^5.1.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^4.2.1"},"peerDependencies":{"@push.rocks/smartserve":">=4.2.1 <5"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_6.0.0_1785674712515_0.6388025193008742","host":"s3://npm-registry-packages-npm-production"}},"6.1.0":{"name":"@api.global/typedsocket","version":"6.1.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@6.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"93cdf9cdd4626beb767b68db26755dca56839031","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-6.1.0.tgz","fileCount":30,"integrity":"sha512-Sxh/GlCbOBVeMATDMLZFUDVtOldCQhzBwdMyIzMpX9iQkPehJ3KlcTENU+2HEPCPtbR6LB8L1HJV5eOj7v37GA==","signatures":[{"sig":"MEQCIBtF5o61GeB3lw+H3LmJRhB1mxejmZRNkTd05SfIrJyQAiAZkH9QrM4TwKUcNKigfjJVTRqGtB1beyiou8btUZJS7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615215},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^5.2.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^5.1.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^4.2.1"},"peerDependencies":{"@push.rocks/smartserve":">=4.2.1 <5"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_6.1.0_1785717650575_0.8980302934808257","host":"s3://npm-registry-packages-npm-production"}},"6.2.0":{"name":"@api.global/typedsocket","version":"6.2.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@6.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"e4a111ccfdaa52e2812f692d629c3d95e212ee9b","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-6.2.0.tgz","fileCount":30,"integrity":"sha512-e3KrX//D7dgW37khPQsALxh7GN10LZ7pEm6h0dPhPYErUasyIWwjjq4fnbqwx2lUYw5qFnjgOVE9WetFdcdjEw==","signatures":[{"sig":"MEUCIDihAOIovq+fGi7pvpXaNfLRynggD7TtVToJAMkgBWQxAiEAq2M7j0cDb9gCoCBiCVo7fu9Kpq4eimXKI3lUzj2vAP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615579},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^5.2.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^5.1.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^3.6.7","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^4.2.1"},"peerDependencies":{"@push.rocks/smartserve":">=4.2.1 <5"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_6.2.0_1785836420859_0.4732897898106396","host":"s3://npm-registry-packages-npm-production"}},"6.3.0":{"name":"@api.global/typedsocket","version":"6.3.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@6.3.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"e2ea77991fa1c2491f358a88a1d56c648d50c735","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-6.3.0.tgz","fileCount":36,"integrity":"sha512-XYU72weM/ABVl8qBPFZ3YjY/gL896hEA8ZCPK+D6kXNgr+FqeoBUp9zpZMW8uGaFb5enX9OXdKs5gB7zE/k7tQ==","signatures":[{"sig":"MEUCIQCM3Vzd9W8krgTU/ZG2gRxl22YsdLQ4fh4RL2Wy5DL79QIgGVIg0IWqNVjGJFEyAbDVgmdAu5z0nBtDcpfypdEAfmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":828594},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^5.2.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^5.1.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.2","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^4.2.1"},"peerDependencies":{"@push.rocks/smartserve":">=4.2.1 <5"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_6.3.0_1785871951654_0.5477100940738415","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@api.global/typedsocket","version":"7.0.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@7.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"00474e383d0ef03e48e13f84dcb9f548b88034b5","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-7.0.0.tgz","fileCount":28,"integrity":"sha512-achRfaWFxy8RWOSxGlFsBxYX7RnTppBF17NtEFfCuT6sdl8nVvgSw7rV+S3gXKnzOwffYENv3a2peB3eIFDyPA==","signatures":[{"sig":"MEUCIQDsOIG6kTQsj4T31xEJcC8rApcezuwETNValJO9DPp1AgIgUezhxqzfsK1b7MEzasDus5aBIGZW2acN6f9ia2foqIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572614},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^7.0.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.2","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^5.1.1"},"peerDependencies":{"@push.rocks/smartserve":">=5.1.1 <6"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_7.0.0_1785899207855_0.0682286563053578","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@api.global/typedsocket","version":"7.1.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@7.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"1f996e2375045a6e62387d86369d8eae74bba683","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-7.1.0.tgz","fileCount":28,"integrity":"sha512-Mzvg+bZGQLOjZSTf2/vYyYUgFqRf+5hmPbv8frql5cbPlnET0qgYCHklVvbwBtTWlZxUPfwKSjLstZBbWqBYZQ==","signatures":[{"sig":"MEUCIQCigjaJajtA2tkd6DByvQBFEpMlrO6A0zVX+KqBOvV5qwIgdZGKlLHlMgk1JS/LPDIUBIo3iPJBLDFyoCZl4vreoYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":577916},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^7.0.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.1.2","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.3","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^5.1.1"},"peerDependencies":{"@push.rocks/smartserve":">=5.1.1 <6"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_7.1.0_1785902861434_0.07861493200800185","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@api.global/typedsocket","version":"8.0.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.0.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"e7410b08d57b125da7f49e3c9b0d6ee81b81af0f","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.0.0.tgz","fileCount":30,"integrity":"sha512-kcR/kxK5yJ7h3VibB0GfM2YbqnXX8T1QLmMBcdA567ZhKwf4kqNKWuLK2gyHNqjIKX7wCUpncoBHj6u+iVImEQ==","signatures":[{"sig":"MEYCIQCjCuj0Nq8x+Ov9f/ddmy61Nqia25f8gOU5eKNoNTTaxgIhAPIfd6Z5iTlaqWiR5Etc3aKBghlk0+mo1nMQkeA3yFD9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":637708},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.4","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.0.0"},"peerDependencies":{"@push.rocks/smartserve":">=6.0.0 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.0.0_1786800463107_0.8964935793424178","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@api.global/typedsocket","version":"8.0.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.0.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"48fb5c787cc7415ec1fc86fc4d9fc3bb679dd7f1","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.0.1.tgz","fileCount":30,"integrity":"sha512-Up5GAY/GXd5Ur3goDB+HhIA1myPxxI8LtucNbfe2p4q8nVEtYXjm6LBHL/wxcWdVx2XRgDGKLuaYhCs+VLSs0g==","signatures":[{"sig":"MEYCIQCBO4cUXMsZ+ahJH9XU9SpzZ4rpmJ7tXcEYDgulU0onlAIhANBy2RfuY19OoL4EI6phfZhoqy/fhmZLa0oAXZ2t6HQA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":639764},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.1","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.1","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.4","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.0.0"},"peerDependencies":{"@push.rocks/smartserve":">=6.0.0 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.0.1_1787508823696_0.40643194956715867","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@api.global/typedsocket","version":"8.0.2","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.0.2","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"66e70d1afc3acc26f95935e9333883b6ec30bb62","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.0.2.tgz","fileCount":30,"integrity":"sha512-58/M68dBec7z98aeUPnhcIZTkvfbb2vrCPyfdXz7GKaDXlhUm6qHTA/I28RX26p6gGvl2BBBrIfEWZNVtZP04A==","signatures":[{"sig":"MEYCIQDvQ7FpzDt53Vqs3I776pFcT5fJzd6Yi3NVuOQo9VEVZQIhAIDGHDbs0fOnKTOVcPhUZAd4taVrH643XRsLv4HAOaTe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":641241},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.2","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.3","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.4","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.2.0"},"peerDependencies":{"@push.rocks/smartserve":">=6.2.0 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.0.2_1788029799653_0.6465009876433527","host":"s3://npm-registry-packages-npm-production"}},"8.0.3":{"name":"@api.global/typedsocket","version":"8.0.3","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.0.3","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3a5fa75446489ca8e385a0c02a76ee58114cb546","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.0.3.tgz","fileCount":30,"integrity":"sha512-krcy6ZPY0zZJTRf76RaixPLGgM2ySWyjVslNn0NkV2AJtF7yQ5Ib7AL7uhe4O1urXNUtJIzbueXNriL5GRTvZw==","signatures":[{"sig":"MEYCIQDn7GZQJH8pRJy55O8lPVk3j3v7MS/3InMVo3VNH1mVZAIhAMwjsT57uOopZGVau+oPrrSnLwrZDH1Gm2yN1s522Wiw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":680247},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts","benchmark:virtualstream":"tsrun benchmark/benchmark.virtualstream.node.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"_nodeVersion":"25.2.1","browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.2","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.3","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.2.0","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.11.4","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.2.1","@api.global/typedsocket-v8-0-0-fixture":"npm:@api.global/typedsocket@8.0.0","@api.global/typedsocket-v8-0-1-fixture":"npm:@api.global/typedsocket@8.0.1","@api.global/typedsocket-v8-0-2-fixture":"npm:@api.global/typedsocket@8.0.2"},"peerDependencies":{"@push.rocks/smartserve":">=6.2.1 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.0.3_1788092403607_0.5611211466021875","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@api.global/typedsocket","version":"8.1.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.1.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"3d078e5b4b6c9317186c8f949e7da2a1076121e5","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.1.0.tgz","fileCount":29,"integrity":"sha512-BtZ3MkjVHi+5daK6THo82m4qYncfgRw78CNr64c2QN7p3vZGHvRHSvOoUmX1p0a29y5P+KkULos0bVA0lfwJlA==","signatures":[{"sig":"MEQCIFTHXlvs0RR+aq+JIGItZS0OsVxTqtKaUSnZpjUqg5XHAiADmkboS6zpQUkr7m2D/dRq4K/ipRSYjGSEPMwu7zIooQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":689911},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts","benchmark:virtualstream":"tsrun benchmark/benchmark.virtualstream.node.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.2","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.3","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.4.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^4.0.0","@git.zone/tsbuild":"^4.4.2","@git.zone/tsbundle":"^2.13.0","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.2.1","@api.global/typedsocket-v8-0-0-fixture":"npm:@api.global/typedsocket@8.0.0","@api.global/typedsocket-v8-0-1-fixture":"npm:@api.global/typedsocket@8.0.1","@api.global/typedsocket-v8-0-2-fixture":"npm:@api.global/typedsocket@8.0.2"},"peerDependencies":{"@push.rocks/smartserve":">=6.2.1 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.1.0_1788931767311_0.0011710996554195052","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"@api.global/typedsocket","version":"8.2.0","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.2.0","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"59e87f571cafd6d16579df4c995b04f400ade734","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.2.0.tgz","fileCount":29,"integrity":"sha512-46Fy60uXhRxR6fVDKfoh9G8ptQLC8oqXagsC/67Q84uxXWaRjlWuhAZ7srY/8L1eKGbw3EaFAthNSFOyB9ssGw==","signatures":[{"sig":"MEQCICKs1fBIGu1tPjL7VJcsabkXAyP/9NfNosKgPFqbIAZoAiAk6hVQELNSr94HbDdUAiP04SNKqgdGluFDF30n8l8gmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":702324},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts","benchmark:virtualstream":"tsrun benchmark/benchmark.virtualstream.node.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.2","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.3","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.4.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^6.0.0","@git.zone/tsbuild":"^4.4.3","@git.zone/tsbundle":"^2.13.0","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.2.4","@api.global/typedsocket-v8-0-0-fixture":"npm:@api.global/typedsocket@8.0.0","@api.global/typedsocket-v8-0-1-fixture":"npm:@api.global/typedsocket@8.0.1","@api.global/typedsocket-v8-0-2-fixture":"npm:@api.global/typedsocket@8.0.2"},"peerDependencies":{"@push.rocks/smartserve":">=6.2.4 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.2.0_1789396425112_0.9684451841014854","host":"s3://npm-registry-packages-npm-production"}},"8.2.1":{"name":"@api.global/typedsocket","version":"8.2.1","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"author":"Task Venture Capital GmbH","license":"MIT","_id":"@api.global/typedsocket@8.2.1","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"dist":{"shasum":"5ce2e91b28f6c9c108b147c9b5de6c0cc4f65f0b","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.2.1.tgz","fileCount":29,"integrity":"sha512-HPWwdQNSPW7+V51w1ecIo6naXRXkAFqlVczEfCkvKRUQ7ZFfjqMb6+9Ta9i95F6jRsm/xULYebgjNTJliiDGHg==","signatures":[{"sig":"MEQCIAmKZVE6HYB2MFfv44QbFO6tZXwF2vWFr/r2JgkQ6Lp/AiBqTufyS9aOat7QuZp4Q/btVaaXldQYWSzDyRH52hwpNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCyLJg0A+5emOyCQwDDGLNTdolDP3eSYn8nKrqXyFZ+cgIgJUbNqao55Q+kUB56KHUxs71ULB005rJhgjrcMudWoWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":704586},"main":"dist_ts/index.js","type":"module","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts","benchmark:virtualstream":"tsrun benchmark/benchmark.virtualstream.node.ts"},"typings":"dist_ts/index.d.ts","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.2","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.3","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.5.0","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^6.0.0","@git.zone/tsbuild":"^4.4.3","@git.zone/tsbundle":"^2.13.0","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.2.4","@api.global/typedsocket-v8-0-0-fixture":"npm:@api.global/typedsocket@8.0.0","@api.global/typedsocket-v8-0-1-fixture":"npm:@api.global/typedsocket@8.0.1","@api.global/typedsocket-v8-0-2-fixture":"npm:@api.global/typedsocket@8.0.2"},"peerDependencies":{"@push.rocks/smartserve":">=6.2.4 <7"},"_npmOperationalInternal":{"tmp":"tmp/typedsocket_8.2.1_1789408962332_0.43734621820231245","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"_id":"@api.global/typedsocket@8.3.0","dist":{"shasum":"40e7291bf8a6e2fbbd09d7e40c4276b9aa2790ef","tarball":"https://registry.npmjs.org/@api.global/typedsocket/-/typedsocket-8.3.0.tgz","fileCount":29,"integrity":"sha512-rA/ZoPo8xzTiXFfFCx3DFb7j1lDJMOMxQFKgQxH188WibroHmmm2+k2Nfqq/KjDK3sWSN9+nLXbBC3WzJdu3dg==","signatures":[{"sig":"MEUCIQDRqc8S7TyTQ9cuLNNIo03DF0AUQKsojazT6/SZ8QvzuwIgGxKJpOWPBB/5Cdg+fKnnZ0SkwGHU5s94QToV6/UpO80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDn/+PNfQ+9YKm5lIA5DgoAIWKANyQDaYeSG3bMxeXNBwIgPS3XWqgPLVyJpds9VcUVs3uIkmW4sAu0IWHLCLAK5XQ="}],"unpackedSize":716183},"main":"dist_ts/index.js","name":"@api.global/typedsocket","type":"module","author":"Task Venture Capital GmbH","exports":{".":{"types":"./dist_ts/index.d.ts","import":"./dist_ts/index.js","default":"./dist_ts/index.js"}},"license":"MIT","private":false,"scripts":{"test":"(tstest test/ --verbose)","build":"(tsbuild --web --disallowimplicitany)","buildDocs":"tsdoc","verify:package":"tsrun verify.package.ts","benchmark:virtualstream":"tsrun benchmark/benchmark.virtualstream.node.ts"},"typings":"dist_ts/index.d.ts","version":"8.3.0","_npmUser":{"name":"lossless","email":"hello@lossless.com"},"keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","directories":{},"maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"browserslist":["last 1 chrome versions"],"dependencies":{"@push.rocks/smartrx":"^3.0.12","@push.rocks/smarturl":"^3.1.0","@push.rocks/smarthash":"^3.3.0","@push.rocks/smartjson":"^6.0.2","@push.rocks/smartdelay":"^3.1.0","@push.rocks/smartstring":"^4.1.1","@api.global/typedrequest":"^8.0.3","@push.rocks/smartpromise":"^4.2.4","@api.global/typedrequest-interfaces":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"26.5.1","@git.zone/tsrun":"^2.0.6","@git.zone/tstest":"^6.1.1","@git.zone/tsbuild":"^4.4.3","@git.zone/tsbundle":"^2.13.0","@push.rocks/smartenv":"^6.1.0","@push.rocks/smartserve":"^6.2.4","@api.global/typedsocket-v8-0-0-fixture":"npm:@api.global/typedsocket@8.0.0","@api.global/typedsocket-v8-0-1-fixture":"npm:@api.global/typedsocket@8.0.1","@api.global/typedsocket-v8-0-2-fixture":"npm:@api.global/typedsocket@8.0.2"},"peerDependencies":{"@push.rocks/smartserve":">=6.2.4 <7"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/typedsocket_8.3.0_1789660344677_0.2322158511328405"}}},"time":{"created":"2023-08-06T14:41:44.314Z","modified":"2026-09-17T15:52:24.981Z","2.0.28":"2023-08-06T14:41:44.603Z","3.0.0":"2023-08-06T14:55:43.201Z","3.0.1":"2024-04-18T19:49:30.044Z","3.1.1":"2025-12-02T13:55:59.501Z","4.0.0":"2025-12-03T09:34:41.896Z","4.1.0":"2025-12-04T00:00:47.727Z","4.1.2":"2026-02-26T17:02:16.604Z","4.1.3":"2026-05-08T10:17:31.020Z","4.1.4":"2026-05-19T16:24:24.712Z","4.2.0":"2026-06-08T23:54:02.201Z","4.2.1":"2026-06-10T09:33:12.040Z","4.2.2":"2026-06-23T21:23:43.411Z","4.2.3":"2026-07-08T22:44:39.532Z","4.2.4":"2026-07-10T21:17:21.392Z","4.2.5":"2026-07-10T21:32:28.522Z","5.0.0":"2026-07-20T22:43:18.375Z","5.0.1":"2026-07-24T06:58:36.142Z","5.0.2":"2026-07-29T14:45:41.783Z","5.1.0":"2026-07-29T18:25:52.490Z","5.1.1":"2026-07-30T21:09:44.683Z","5.1.2":"2026-07-31T15:34:56.821Z","6.0.0":"2026-08-02T12:45:12.662Z","6.1.0":"2026-08-03T00:40:50.755Z","6.2.0":"2026-08-04T09:40:20.999Z","6.3.0":"2026-08-04T19:32:31.853Z","7.0.0":"2026-08-05T03:06:48.073Z","7.1.0":"2026-08-05T04:07:41.583Z","8.0.0":"2026-08-15T13:27:43.285Z","8.0.1":"2026-08-23T18:13:43.838Z","8.0.2":"2026-08-29T18:56:39.795Z","8.0.3":"2026-08-30T12:20:03.780Z","8.1.0":"2026-09-09T05:29:27.467Z","8.2.0":"2026-09-14T14:33:45.242Z","8.2.1":"2026-09-14T18:02:42.441Z","8.3.0":"2026-09-17T15:52:24.814Z"},"author":"Task Venture Capital GmbH","license":"MIT","keywords":["WebSocket","Type Safety","Real-time Communication","Client-Server Architecture","TypeScript","Networking"],"description":"A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.","maintainers":[{"name":"lossless","email":"hello@lossless.com"}],"readme":"# @api.global/typedsocket\n\nTyped request/response communication over WebSockets with one peer-scoped transport for JSON RPC and ordered `virtual-stream-v1` byte streams. TypedSocket 8 integrates TypedRequest 8, enforces an exact package-major handshake, and binds every server operation to the physical peer and routing surface selected during upgrade.\n\n## Issue Reporting and Security\n\nFor reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.\n\n## Install\n\n```bash\npnpm add @api.global/typedsocket @api.global/typedrequest @api.global/typedrequest-interfaces\n```\n\nServer applications also need SmartServe:\n\n```bash\npnpm add @push.rocks/smartserve\n```\n\nTypedSocket 8 requires `@api.global/typedrequest` 8.0.3 or newer within major 8,\n`@api.global/typedrequest-interfaces` 7.1 or newer within major 7, and\n`@push.rocks/smartserve` 6.2.4 or newer within major 6. These packages resolve\none TypedRequest 8 router graph and must not be mixed with earlier router or stream APIs.\n\n## Version 8 transport model\n\nEach physical WebSocket peer has one always-on TypedSocket transport:\n\n- text frames carry bidirectional TypedRequest envelopes;\n- binary frames carry the same peer's `virtual-stream-v1` streams;\n- SmartServe fixes the peer's `routingSurface` and `transportOwner` during upgrade;\n- the client and server must complete the exact TypedSocket package-major handshake before application requests or streams are admitted;\n- the exact handshake also requires `typedrequest-cancellation-v1`; mixed peers fail before application traffic;\n- client connection restoration runs after the handshake and before desired tags and the `connected` state are published.\n\nThere are no optional native-byte or native-message capability modes in version 8. The v6 `nativeBytes`, `native-byte-v1`, `native-message-v1`, binary-message channel, and capability-mode APIs are not part of the v8 public surface. There is also no `TypedSocket.fromSmartServe()` attachment shortcut: server composition must happen before SmartServe is constructed.\n\n## Define shared contracts\n\nTypedSocket uses ordinary TypedRequest interfaces. VirtualStreams use the transport-neutral TypedRequest 8 types:\n\n```typescript\nimport type {\n  ITypedRequest,\n  TVirtualStream,\n  implementsTR,\n} from '@api.global/typedrequest-interfaces';\n\nexport interface IGreetRequest extends implementsTR<ITypedRequest, IGreetRequest> {\n  method: 'greet';\n  request: { name: string };\n  response: { message: string };\n}\n\nexport interface IUploadRequest extends implementsTR<ITypedRequest, IUploadRequest> {\n  method: 'upload';\n  request: {\n    stream: TVirtualStream<'send'>;\n  };\n  response: {\n    storedBytes: number;\n  };\n}\n\nexport interface IDownloadRequest extends implementsTR<ITypedRequest, IDownloadRequest> {\n  method: 'download';\n  request: { objectId: string };\n  response: {\n    // Direction is local to the requester. The server handler sees 'send'.\n    stream: TVirtualStream<'receive'>;\n  };\n}\n\nexport interface IRestoreSessionRequest\n  extends implementsTR<ITypedRequest, IRestoreSessionRequest> {\n  method: 'restoreSession';\n  request: { token: string };\n  response: { restored: true };\n}\n```\n\n`TypedHandler` reverses stream directions at the handler boundary. An upload declared as requester-local `send` reaches the server handler as local `receive`; a download declared as requester-local `receive` is created by the handler as local `send`.\n\n## Server setup with SmartServe 6\n\nConstruction order is part of the transport contract:\n\n1. Create and populate the application `TypedRouter`.\n2. Call `TypedSocket.createServer()`.\n3. Obtain the generated transport routing surface with `getServerRoutingSurface()`.\n4. Construct SmartServe with that routing surface and the exact `webSocketTransportOwner` object.\n5. Call `attachSmartServe()`.\n6. Start SmartServe.\n\n```typescript\nimport { TypedSocket } from '@api.global/typedsocket';\nimport { TypedHandler, TypedRouter } from '@api.global/typedrequest';\nimport { SmartServe } from '@push.rocks/smartserve';\n\nconst applicationRouter = new TypedRouter();\n\napplicationRouter.addTypedHandler(\n  new TypedHandler<IGreetRequest>('greet', async ({ name }) => ({\n    message: `Hello, ${name}!`,\n  })),\n);\n\nconst typedSocket = TypedSocket.createServer(applicationRouter, {\n  onServerConnectionReady: (connection) => {\n    typedSocket.setServerTag(connection, 'application-client');\n    return undefined;\n  },\n});\n\nconst smartServe = new SmartServe({\n  port: 3000,\n  websocket: {\n    typedRouter: typedSocket.getServerRoutingSurface(applicationRouter),\n    transportOwner: typedSocket.webSocketTransportOwner,\n  },\n});\n\ntypedSocket.attachSmartServe(smartServe);\nawait smartServe.start();\n```\n\nDo not pass `applicationRouter` directly to `websocket.typedRouter`. `createServer()` creates a distinct routing surface that composes the private TypedSocket protocol before the application router. SmartServe must bind that returned surface and the exact transport-owner identity to the peer.\n\n`onServerConnectionReady(connection)` may synchronously assign protected tags or\nother connection-local state after the exact handshake response has been\nsettled. It must return `undefined`; returning any other value, including a\nPromise or custom thenable, or throwing closes the connection before readiness\nis published.\n\n### Multiple isolated routing surfaces\n\nOne TypedSocket can compose multiple application routers without making them reachable from one another. Resolve the corresponding generated surface during upgrade:\n\n```typescript\nconst publicRouter = new TypedRouter();\nconst adminRouter = new TypedRouter();\nconst typedSocket = TypedSocket.createServer([publicRouter, adminRouter]);\n\nconst smartServe = new SmartServe({\n  port: 3000,\n  authorityValidation: 'strict',\n  websocket: {\n    resolveTypedRouter: (context) => {\n      if (context.url.hostname === 'api.example.com') {\n        return typedSocket.getServerRoutingSurface(publicRouter);\n      }\n      if (context.url.hostname === 'admin.example.com') {\n        return typedSocket.getServerRoutingSurface(adminRouter);\n      }\n      return undefined;\n    },\n    transportOwner: typedSocket.webSocketTransportOwner,\n  },\n});\n\ntypedSocket.attachSmartServe(smartServe);\nawait smartServe.start();\n```\n\nSmartServe rejects an upgrade when `resolveTypedRouter()` returns `undefined`. `typedRouter` and `resolveTypedRouter` are mutually exclusive, as are `transportOwner` and `resolveTransportOwner`.\n\n## Client setup\n\nThe client router handles server-initiated requests. `createClient()` resolves only after the package-major handshake, optional connection restoration, and desired-tag reconciliation succeed.\n\n```typescript\nimport { TypedHandler, TypedRouter } from '@api.global/typedrequest';\nimport { TypedSocket } from '@api.global/typedsocket';\n\nconst clientRouter = new TypedRouter();\n\nclientRouter.addTypedHandler(\n  new TypedHandler<IGreetRequest>('greet', async ({ name }, tools) => {\n    tools?.abortSignal.throwIfAborted();\n    return { message: `Hello from the client, ${name}!` };\n  }),\n);\n\nconst client = await TypedSocket.createClient(\n  clientRouter,\n  'https://api.example.com',\n  {\n    autoReconnect: true,\n    maxRetries: 20,\n    initialBackoffMs: 1_000,\n    maxBackoffMs: 30_000,\n  },\n);\n\nconst response = await client\n  .createTypedRequest<IGreetRequest>('greet')\n  .fire({ name: 'Ada' });\n```\n\nUse `TypedSocket.useWindowLocationOriginUrl()` for same-origin browser connections. Remote connections must use `https:` or `wss:`. Plain `http:` and `ws:` are restricted to loopback hosts. URLs containing credentials or fragments are rejected, and lifecycle logs redact paths and query strings.\n\n### Restoring authenticated connection state\n\n`restoreConnection` runs after the version handshake and before tags or readiness. Its request factory is deadline-bound and becomes invalid when the callback finishes:\n\n```typescript\ndeclare const serverUrl: string;\ndeclare const currentSessionToken: string;\n\nconst client = await TypedSocket.createClient(clientRouter, serverUrl, {\n  restoreConnection: async ({ createTypedRequest, abortSignal }) => {\n    if (abortSignal.aborted) return;\n    await createTypedRequest<IRestoreSessionRequest>('restoreSession').fire(\n      { token: currentSessionToken },\n    );\n  },\n});\n```\n\nA `TypedSocketHandshakeError` is terminal for that client startup. A package-major mismatch, malformed handshake envelope, handshake timeout, or binary frame before handshake completion closes the connection instead of falling back to a reduced transport.\n\n### Deferring a refused registration\n\nA server may refuse a peer for a stated period instead of permanently, for example while a protocol rollout is in progress. Throw `TypedSocketRestoreDeferral` from `restoreConnection` to close that attempt cleanly, wait, and offer the peer again:\n\n```typescript\nimport { TypedResponseError } from '@api.global/typedrequest';\nimport { TypedSocketRestoreDeferral } from '@api.global/typedsocket';\n\nconst client = await TypedSocket.createClient(clientRouter, serverUrl, {\n  restoreConnection: async ({ createTypedRequest }) => {\n    try {\n      await createTypedRequest<IOfferRegistration>('offerRegistration').fire(\n        { nodeName: 'pallet-a' },\n      );\n    } catch (errorArg) {\n      if (\n        errorArg instanceof TypedResponseError\n        && errorArg.errorData?.reason === 'protocol-incompatible'\n      ) {\n        throw new TypedSocketRestoreDeferral(5 * 60 * 1000);\n      }\n      throw errorArg;\n    }\n  },\n});\n```\n\n- `retryAfterMs` must be a positive safe integer of at most `TYPEDSOCKET_MAX_RESTORE_DEFERRAL_MS` (3,600,000). Non-finite, negative, zero, fractional, and larger values are refused by `RangeError` at construction, and that `RangeError` reaches the client as an ordinary restore denial.\n- A deferral does not consume a reconnect retry: `retryCount` and the exponential backoff both stay where they were, so a peer refused for days keeps its retries for real connection failures. An ordinary restore failure still consumes its scheduled retry.\n- A deferral is honoured only while reconnection is possible, so `autoReconnect: false`, a stopped or aborted client, and exhausted retries surface the deferral to the caller instead.\n- The deferred attempt runs on its own timer, detached from the attempt that deferred it, so a long-refused client never nests reconnect chains. That timer is referenced, exactly like a pending reconnect delay: a pending deferral keeps the host process alive until it fires or the client stops, because a client-only process that exited during the window would never offer itself again. `stop()` and the client `abortSignal` cancel a pending deferral, so shutdown never waits for one.\n- When the first connection attempt is deferred, `createClient()` resolves with a client in the `reconnecting` state instead of rejecting: a refused peer stays up and keeps its workloads. Use `statusSubject` or `diagnosticsSubject` to observe when it becomes `connected`.\n- Every deferral publishes a `restoreDeferred` diagnostic carrying `retryAfterMs`, the unchanged `attempt`, `maxRetries`, and the redacted endpoint.\n\n## Explicit server targets\n\nClient requests target their server implicitly because the client owns one current physical connection. Server-initiated requests always require an explicit `ISmartServeConnectionWrapper`:\n\n```typescript\nconst target = await typedSocket.findTargetConnectionByTag('account', {\n  accountId: 'account-123',\n});\n\nif (target) {\n  const response = await typedSocket\n    .createTypedRequest<IGreetRequest>('greet', target, {\n      timeoutMs: 15_000,\n    })\n    .fire({ name: 'server push' });\n}\n```\n\nInside a server handler, bind follow-up work to the request's exact trusted peer:\n\n```typescript\napplicationRouter.addTypedHandler(\n  new TypedHandler<IGreetRequest>('greet', async ({ name }, tools) => {\n    const target = typedSocket.getServerConnectionForRequest(tools);\n    typedSocket.setServerTag(target, 'authenticated', { subject: 'user-123' });\n    return { message: `Hello, ${name}!` };\n  }),\n);\n```\n\n`findTargetConnection()`, `findAllTargetConnections()`, and their tag variants return only live peers attached to this TypedSocket's generated routing surfaces. There is no implicit single-peer server fallback in v8.\n\n## VirtualStreams\n\nTypedSocket 8 supplies TypedRequest 8's `IVirtualStreamTransport` for each handshake-ready physical peer. TypedRequest serializes only the JSON-compatible descriptor in the parent envelope; ordered `Uint8Array` chunks travel as bounded binary frames on that exact peer.\n\nAll stream facades expose `protocol`, `direction`, `streamId`, optional `contentType` and `integrity`, `opened`, `completion`, `closed`, and `abort()`. Senders add `send()`, `writable`, and `close()`. Receivers add `receive()`, `readable`, `accept()`, and `reject()`. Concurrent sender calls may fill the existing bounded admission window; authorization and frame transmission remain same-stream ordered, and each promise still resolves only after the receiver dequeues that exact logical chunk. `close()` waits for every admitted send before emitting `FIN`.\n\n`receive()` returns one complete logical chunk at a time and `undefined` at graceful EOF. Dequeued bytes reach the application immediately while the corresponding bounded ACK write completes independently. ACK write failures still reject stream completion, and `accept()` waits for pending ACK writes before sending acceptance. The receiver must call `accept()` after draining EOF. `completion` resolves with the shared acceptance receipt; abnormal termination rejects it. Direct `receive()` and `readable` consumption are mutually exclusive.\n\n### Bounded application acceptance\n\nReceivers can finish application processing, such as archive repacking and a durable metadata commit, before calling `accept()`. Both endpoints independently limit this phase to 30 seconds by default. A send creator can select `acceptanceTimeoutMs` on `createRegistration()` or the server `createVirtualStream()` facade. A receiver uses the locally configured `receiverAcceptanceTimeoutMs` on `TypedSocket.createClient()`, `TypedSocket.createServer()`, or `VirtualStreamManager` construction. That receiver policy applies to every stream received by that socket or manager, including receive creators. Receive creators cannot set the sender-only registration option.\n\n```typescript\nconst server = TypedSocket.createServer(applicationRouter, {\n  receiverAcceptanceTimeoutMs: 600_000,\n});\nconst registration = client.virtualStreams.createRegistration({\n  creatorDirection: 'send',\n  acceptanceTimeoutMs: 600_000,\n});\n```\n\nBoth options are snapshotted and validated as integer milliseconds from 1 through 3,600,000 (one hour). Neither option is serialized: the sender cannot extend the receiver's policy. The sender's fixed deadline starts after FIN transmission settles. The receiver's fixed deadline starts after validated FIN and drainage of all retained chunks and acknowledgements. Other traffic, clock changes, and authorization revalidation never renew these deadlines. The default runtime uses a monotonic clock; custom runtimes without `monotonicNow()` use a single fixed duration timer.\n\nOpening, chunk delivery, unread payloads, FIN transmission, and ACCEPT transmission retain their existing transport deadlines and resource ceilings. The parent TypedRequest timeout is also unchanged. Applications whose processing outlives the parent request should return an admission response promptly, own the continuing processing operation, and call `accept()` only after the application commit completes. Observe `completion` rejection throughout processing, including after readable EOF: abort and join owned source/storage work before releasing its resources. `closed` alone does not mean acceptance or application commit. A timeout sends RESET (or closes a failed transport), rejects completion on both endpoints, and joins transport cleanup.\n\nThe descriptor, binary frames, and handshake remain `virtual-stream-v1`. Existing Socket 8 peers remain compatible and retain their own 30-second processing limit; a longer acceptance wait requires each receiving peer to configure its own policy in a version that supports it.\n\n### Client-created streams with manager registrations\n\nApplication-level client streams use the advanced manager registration API, then bind the registration to TypedRequest's public facade:\n\n```typescript\nimport { VirtualStream } from '@api.global/typedrequest';\n\nconst transport = client.virtualStreams.getClientTransport();\nif (!transport) {\n  throw new Error('TypedSocket client transport is not connected');\n}\n\nconst registration = client.virtualStreams.createRegistration({\n  creatorDirection: 'send',\n  contentType: 'application/octet-stream',\n});\n\nconst stream = VirtualStream.fromRegistration({\n  transport,\n  registration,\n});\n\nconst request = client.createTypedRequest<IUploadRequest>('upload');\nconst responsePromise = request.fire({ stream });\n\nawait stream.opened;\nawait stream.send(new Uint8Array([1, 2, 3]));\nawait stream.close();\n\nconst response = await responsePromise;\n```\n\nClient registrations do not take a peer target: the manager binds them to the current handshake-ready client generation. Registration is synchronous and silent. Its descriptor capability expires if it is not consumed, and TypedRequest owns disposal after the facade is created. Do not hand-build descriptors or reuse them across connections.\n\nThe matching server handler receives a requester-local `send` stream as local `receive`:\n\n```typescript\napplicationRouter.addTypedHandler(\n  new TypedHandler<IUploadRequest>('upload', async ({ stream }) => {\n    let storedBytes = 0;\n    while (true) {\n      const chunk = await stream.receive();\n      if (chunk === undefined) break;\n      storedBytes += chunk.byteLength;\n    }\n    await stream.accept();\n    return { storedBytes };\n  }),\n);\n```\n\n### Server-created streams and the authorization facade\n\nServer application code should create streams through `TypedSocket.createVirtualStream()`. This facade requires an exact attached target and a configured `virtualStreamAuthorizationAdapter`; it synchronously binds application authorization before publishing a descriptor.\n\n```typescript\ninterface IStreamAuthorization {\n  subject: string;\n  objectId: string;\n  revision: string;\n}\n\ndeclare function isStreamAuthorityCurrent(\n  authority: IStreamAuthorization,\n  operation: 'open' | 'chunk' | 'accept' | 'reject',\n): Promise<boolean>;\n\nconst typedSocket = TypedSocket.createServer(applicationRouter, {\n  virtualStreamAuthorizationAdapter: {\n    bind: (authorization, context) => {\n      const authority = authorization as IStreamAuthorization;\n      if (!authority.subject || !authority.objectId || !authority.revision) {\n        throw new Error('Invalid stream authorization');\n      }\n      const target = context.target;\n\n      return {\n        revalidate: async ({ operation, connection, abortSignal }) => {\n          if (\n            abortSignal.aborted\n            || connection.side !== 'server'\n            || connection.peer !== target\n          ) return false;\n          return await isStreamAuthorityCurrent(authority, operation);\n        },\n      };\n    },\n  },\n});\n```\n\n`bind()` must return synchronously and must provide `revalidate(context)`. Revalidation runs with the exact connection binding, operation (`open`, `chunk`, `accept`, or `reject`), deadline, and abort signal. Return literal `true` only while the application authority remains current. Primitive boolean results settle their authorization slot synchronously. Promise results remain charged against the unchanged limits of four active revalidations per connection and 128 per server until the callback actually settles, including after caller-visible timeout or abort. A fifth per-connection or 129th server-wide asynchronous revalidation fails closed instead of raising those limits.\n\n```typescript\ndeclare function loadBoundedObjectChunks(\n  objectId: string,\n): AsyncIterable<Uint8Array>;\n\napplicationRouter.addTypedHandler(\n  new TypedHandler<IDownloadRequest>('download', async ({ objectId }, tools) => {\n    const target = typedSocket.getServerConnectionForRequest(tools);\n    const stream = typedSocket.createVirtualStream({\n      target,\n      creatorDirection: 'send',\n      contentType: 'application/octet-stream',\n      authorization: {\n        subject: 'user-123',\n        objectId,\n        revision: 'revision-7',\n      } satisfies IStreamAuthorization,\n    });\n\n    const production = (async () => {\n      await stream.opened;\n      for await (const chunk of loadBoundedObjectChunks(objectId)) {\n        await stream.send(chunk);\n      }\n      await stream.close();\n    })();\n    void production.catch((error) => stream.abort(error).catch(() => undefined));\n\n    return { stream };\n  }),\n);\n```\n\nFinite streams may include `{ algorithm: 'sha256', byteLength, digest }` integrity metadata. Open-ended streams omit integrity. Capabilities are opaque, single-use, peer-scoped, generation-scoped, and short-lived.\n\n## Connection tags\n\nClient tag mutation is default-deny. Declare exact rules on the server:\n\n```typescript\nconst typedSocket = TypedSocket.createServer(applicationRouter, {\n  clientTagPolicy: {\n    authorizationTimeoutMs: 2_000,\n    rules: [{\n      name: 'workspace',\n      owner: 'client',\n      validateAndAuthorize: ({ payload, operation, abortSignal }) => {\n        if (abortSignal.aborted) return false;\n        if (operation === 'remove') return true;\n        return typeof payload === 'object'\n          && payload !== null\n          && typeof Reflect.get(payload, 'workspaceId') === 'string';\n      },\n    }],\n  },\n});\n```\n\n```typescript\nawait client.setTag('workspace', { workspaceId: 'workspace-123' });\nawait client.removeTag('workspace');\n```\n\nUse `setServerTag()` and `removeServerTag()` for authentication, roles, registration state, and other server-owned metadata. A server-owned name remains protected from client overwrite after removal. Desired client tags are reconciled after reconnect only after `restoreConnection` succeeds.\n\nDo not use a universal `allClients` broadcast tag. Assign a dedicated application tag and target only clients that implement the corresponding server-initiated method.\n\n## Lifecycle, limits, and diagnostics\n\n- `statusSubject` publishes `new`, `connecting`, `connected`, `disconnected`, and `reconnecting` transitions.\n- `diagnosticsSubject` publishes bounded structured events for invariant closes, peer rejection, reconnect scheduling, restore deferral, reconnect exhaustion, and tag denial. Subscribers own unsubscription; the subject does not complete.\n- `stop()` disables client reconnect, cancels a pending restore deferral, rejects pending work, closes streams, and releases router registrations. Server `stop()` detaches TypedSocket state and composition but does not stop SmartServe.\n- Request `timeoutMs` and `abortSignal` are supported on both sides. Server requests are cancelled on target disconnect or server stop.\n- Timeout, caller abort, requester disconnect, target disconnect, client/server stop, and connection replacement abort the exact remote handler through `TypedTools.abortSignal`.\n- Cancellation identity binds the physical peer, generated routing surface, connection generation, method, correlation ID, and fresh `requestInstanceId`. The control method is `__typedsocket_cancelRequest` with protocol `typedrequest-cancellation-v1` and is never broadcast or forwarded to another peer.\n- Handshake and cancellation-control envelopes carry their own fresh top-level `requestInstanceId`. A cancellation payload separately names the exact application request instance being cancelled. Malformed, oversized, or authority-mismatched identities fail closed.\n- A cancellation that wins routing before handler registration creates an `early-cancel` tombstone and delivers an already-aborted signal when that exact request registers. Completion replaces it with a terminal tombstone, so a late cancellation is ignored; reuse of the correlation ID is safe only with a fresh request instance ID.\n- Active handlers are capped at 64 per connection and 1,024 per TypedSocket. Disconnect, stop, and the five-minute handler lifetime abort and detach work, but global active accounting is released only when TypedRequest calls the registration's `complete()` callback after the handler promise settles. Internal cancellation stats report that full unsettled count as `active`, its detached subset as `detachedActive`, and only live attached states as `connections`.\n- Early/terminal cancellation tombstones are capped at 1,024 per connection and 16,384 per TypedSocket and expire after ten seconds. Per-connection overage closes that connection. On global pressure, largest-consumer selection includes the triggering connection and deterministically closes the oldest attached connection with the largest tombstone share. The triggering cancellation is admitted only when another consumer is reclaimed and the triggering connection remains open.\n- Client `limits` may lower package ceilings but cannot raise them. Untrusted network deployments should lower text-frame and queue ceilings to match the application protocol.\n- The stream transport bounds connections, active streams, logical chunk size, queued chunks and bytes, raw frames, outbound frames, revalidations, arrival accounting, tombstones, capability lifetime, outstanding protocol progress, and cleanup time. An open stream with no queued or retained work may remain idle indefinitely.\n- Incoming binary frames are validated immediately, then dispatched in independent per-stream FIFO lanes. A slow application authorization callback on one stream cannot block data or control on another. RESET immediately cancels its own lane, including a held authority callback; it discards pending work instead of waiting behind it. The 64-frame / 2 MiB inbound budget includes active work; CHUNK traffic leaves eight admission slots for control and each stream may retain at most 40 incomplete frames before its own stream is reset. Malformed framing and the aggregate hard ceiling still close the connection.\n- Server binary output pipelines up to eight native sends, with exact frame identity accounting until every native settlement arrives, including after detach. Logical chunks fill a sliding eight-fragment window; logical sequence, authorization, receiver dequeue ACKs, and FIN ordering stay intact. Both server and client reserve eight outbound entries for control and yield to data after at most four controls. This removes application-level cross-stream waits; a single WebSocket still has ordered transport delivery, including when carried over HTTP/3.\n- Client binary output submits one frame immediately when idle, reserving a later continuation so repeated or reentrant sends cannot drain synchronously without a bound. Continuation turns send at most eight frames and 256 KiB. Control frames remain preferred, but queued data progresses after at most four controls. Requested follow-up turns use a cancellable immediate task when available, a shared MessageChannel task queue in browsers, and a zero-delay timer only when neither exists. A prospective 2 MiB `WebSocket.bufferedAmount` high watermark pauses dequeue until the socket reaches the 1 MiB low watermark; the existing 30-second progress deadline still bounds blocked work.\n- The default runtime uses a monotonic clock to share client frame settlements across one connection deadline timer and move one lazy endpoint progress deadline instead of replacing its timer. Custom manager runtimes may provide `monotonicNow()` for the same consolidation; otherwise duration timers preserve the exact timeout boundary.\n- Invalid framing, overflow, integrity failure, authority revocation, handshake failure, and timeout fail closed. Physical-peer identity and raw-frame settlement identity are never inferred from caller-controlled payloads.\n\nSelected stream defaults are 32 KiB physical frames, 4 MiB logical chunks, 32 active streams per connection, a 10-second handshake and capability deadline, a 30-second deadline while protocol progress or retained chunks are outstanding, and a 5-second revalidation deadline. Root exports provide the principal package ceilings and timeout constants.\n\n### VirtualStream benchmark\n\nRun the tracked Node loopback benchmark from the repository with:\n\n```bash\npnpm run benchmark:virtualstream\n```\n\nThe default workload transfers 64 MiB in each direction as 64 KiB chunks over one connection and one outstanding send per stream. It reports throughput, sender latency, event-loop delay, memory deltas, and final transport accounting. Use `--send-window=<1..8>`, `--streams=8` or `--streams=32`, `--chunk-kib=<1..4096>`, `--total-mib=<value>`, `--integrity`, and `--delay-receive --receive-delay-ms=<value>` to exercise pipelining, concurrency, chunk, integrity, and receiver-delay cases. The benchmark always enforces the unchanged stream and connection chunk/byte ceilings. `--assert` enforces the 100 MiB/s and 2 ms p95 targets only for the default 64 MiB, 64 KiB, one-stream, one-send-window acceptance workload.\n\n## Public API summary\n\n### `TypedSocket`\n\n| API | Side | Purpose |\n| --- | --- | --- |\n| `TypedSocket.createClient(router, url, options?)` | client | Connects, handshakes, restores connection state, and reconciles tags. |\n| `TypedSocket.createServer(routerOrRouters, options?)` | server | Composes private protocol and application routers before SmartServe construction. |\n| `getServerRoutingSurface(applicationRouter?)` | server | Returns the exact generated router SmartServe must bind during upgrade. |\n| `attachSmartServe(smartServe)` | server | Attaches lifecycle, authority guards, and peer-scoped stream resolvers. |\n| `createTypedRequest(method, target?, options?)` | both | Creates a TypedRequest; server calls require an explicit target. |\n| `createVirtualStream(options)` | server | Creates an exact authorized stream facade for one attached peer. |\n| `getServerConnectionForRequest(tools)` | server | Resolves the exact trusted physical peer for an incoming request. |\n| `setTag()` / `removeTag()` | client | Mutates an explicitly allowed client-owned tag. |\n| `setServerTag()` / `removeServerTag()` | server | Maintains protected server-owned peer metadata. |\n| `findTargetConnection*()` / `findAllTargetConnections*()` | server | Finds live attached targets by predicate or tag. |\n| `getStatus()` | both | Returns the current connection status. |\n| `stop()` | both | Releases all TypedSocket-owned lifecycle state. |\n\n### `virtualStreams`\n\n`VirtualStreamManager` is the peer-scoped transport manager. Client applications may use `getClientTransport()` and `createRegistration()` for explicit creator registrations. `getStats()` exposes bounded transport accounting. Server registration is not exposed on the manager; server applications must use the authorization-enforcing `TypedSocket.createVirtualStream()` facade.\n\n## Migration to version 8\n\n- Replace TypedRequest 7 and SmartServe 5 with TypedRequest 8.0.3 or newer and SmartServe 6.2.1 or newer so the transport resolves one TypedRouter major.\n- Treat wire major 8 as intentionally incompatible with TypedSocket 7. The exact handshake requires package major 8, `typedrequest-cancellation-v1`, and a fresh request instance ID; there is no compatibility fallback.\n- TypedSocket 7 application APIs remain otherwise unchanged.\n- When migrating directly from version 6, remove `nativeByteCapabilityMode`, `nativeMessageCapabilityMode`, `nativeBytes`, message-channel APIs, and native-specific authorization adapters.\n- Replace native stream DTOs with `TVirtualStream<'send' | 'receive'>` from `@api.global/typedrequest-interfaces`.\n- Replace `fromSmartServe()` with the required `createServer()` → SmartServe construction → `attachSmartServe()` order.\n- Pass `getServerRoutingSurface(applicationRouter)` to SmartServe, not the application router itself.\n- Always pass an explicit server target to `createTypedRequest()`.\n- Configure `virtualStreamAuthorizationAdapter` and use `createVirtualStream()` for server-created streams.\n- Treat a package-major handshake failure as terminal; there is no JSON-only or capability-disabled fallback.\n\n## License and Legal Information\n\nThis repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license.md](./license.md) file.\n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.\n\nUse of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.\n\n### Company Information\n\nTask Venture Capital GmbH<br>\nRegistered at District Court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n","readmeFilename":""}