{"_id":"ws-wrapper","_rev":"32-1d92eb91ac9eb9f257a80ba4851e3265","name":"ws-wrapper","dist-tags":{"latest":"4.3.2"},"versions":{"1.0.0":{"name":"ws-wrapper","version":"1.0.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.0.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"1c84322808f46843669ee9ba342db4a031546158","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.0.0.tgz","integrity":"sha512-UPEEqwB770dpsgCT99Ga6IUSYHfFtZLhWKsaPbQ9rGxTLMvmyBkEQOwVoQics01LesdD7FEVknXSkqzkfZvW2g==","signatures":[{"sig":"MEYCIQDPFPoSgWkb7ZdD5g4Lqncy99oIGiZS12KUR3MA9LS93QIhANrtQSKNRUF06wIkme3PVP0pTDPIi2U14BFLgT68+GbI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"1c84322808f46843669ee9ba342db4a031546158","browser":{"events":"eventemitter3"},"gitHead":"3fed8f57bcdb920768091741618792b9ee297d22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"3.10.9","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"6.9.2","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.0.0.tgz_1481569281726_0.23625865625217557","host":"packages-12-west.internal.npmjs.com"}},"1.1.0":{"name":"ws-wrapper","version":"1.1.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.1.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"7788343ed1c8043a72bcd2c7322dc6a3297fa2f9","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.1.0.tgz","integrity":"sha512-TIgg7B++aGBHusOGxJr6AcXzMuZrbyNuZADgUb6KKLR6goxEKQFDNDuq9ojhKaAiIIy2wiiMY/n6TQeRbtM5cg==","signatures":[{"sig":"MEYCIQDPAfP56u2Vsw9+kfnMhrSoQQFRfCqH8epPNYAtce/k7wIhAIImWhnk9iGubVjI5Z04ZnQsfTMiLp9lJ2JiMLqrmEal","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"7788343ed1c8043a72bcd2c7322dc6a3297fa2f9","browser":{"events":"eventemitter3"},"gitHead":"dd6c80ff16728203dff8885e4636bd2356380374","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"3.10.10","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"6.9.5","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.1.0.tgz_1486508763703_0.016039828537032008","host":"packages-18-east.internal.npmjs.com"}},"1.1.1":{"name":"ws-wrapper","version":"1.1.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.1.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"3b4080acf1100191680bf4420261f84a7a9ea5e3","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.1.1.tgz","integrity":"sha512-opU+FQguIMVfW3NW8x8FzW++IXfmNHHdo1sSGZ3h8MNAyqjdb0T6cpgZOiqQmTSJRuAoZ1ZfONHI7Q+RAgndmA==","signatures":[{"sig":"MEYCIQDrnNU7yZ47I+owQ490HXVRqiDyEL/X1LngEs/SAEtC+QIhAO4vP+xty4wmu8Ylj1sPyBbHpU4ZeaS2skA8XAyWcJvu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"3b4080acf1100191680bf4420261f84a7a9ea5e3","browser":{"events":"eventemitter3"},"gitHead":"3008f8c251c69ba79dd7038508674a8b0c63166f","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"3.10.10","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"6.9.5","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.1.1.tgz_1486581069332_0.8151039711665362","host":"packages-18-east.internal.npmjs.com"}},"1.2.0":{"name":"ws-wrapper","version":"1.2.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.2.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"e13462d9a1fb1293947be1fd1c375dc8405b2862","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.2.0.tgz","integrity":"sha512-QoF9SWpGON7kENNwjMtmcXjT7XI4r14QS7cFEafe/hMkl4mNOGhcwjK8us1U0sxEsB7VimyLmx1lQEBpBWVOVA==","signatures":[{"sig":"MEYCIQC5pjdfsSz9Ajy1H9r1CmFsA4+y+YHN1bg5LbBN2F1WCAIhAL5C0qPpwqLwhA4uj1Me5tK1VKs2ykx4mhBvbkf/PcXd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"e13462d9a1fb1293947be1fd1c375dc8405b2862","browser":{"events":"eventemitter3"},"gitHead":"6226812598d09fa0d249ce76706cfe2a368bafcc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"3.10.10","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"6.9.5","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.2.0.tgz_1486657960619_0.380641637602821","host":"packages-18-east.internal.npmjs.com"}},"1.2.1":{"name":"ws-wrapper","version":"1.2.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.2.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"f0d9f871dac1f19aff337f44ed15785537bda206","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.2.1.tgz","integrity":"sha512-EDFwKY2KuwXgy6KFg4XhMp6TiXD6I+pKdz769RHzS2yP16XYjZ36+F/Kt/mKUrzuDiO9ShK6KzsQ/0kQavxBVw==","signatures":[{"sig":"MEUCIEmVoZrFHGc/scWkx4K1znDPf9GThLwYhlYptMG1kGCTAiEAxWHm5+j0ek+Kr6AlQjmrytrl67x7pTITWBr6Lq2b/JA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"f0d9f871dac1f19aff337f44ed15785537bda206","browser":{"events":"eventemitter3"},"gitHead":"398b0205e50a4da71b8ff2bab7eed8beb1a581d5","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"3.10.10","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"6.9.5","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.2.1.tgz_1487101773036_0.5396752764936537","host":"packages-12-west.internal.npmjs.com"}},"1.3.0":{"name":"ws-wrapper","version":"1.3.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.3.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"b030b4c9755e412a6c9f3cce91592e31f95e717c","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.3.0.tgz","integrity":"sha512-mguiAb/EI0F8MrJxH0RvO/CAzZBhMbP41W9wZwquD10QjCFFS2LB5OUl5od5D4rIMcRDH7iIdmCjMWNkHDBpqw==","signatures":[{"sig":"MEYCIQCOFGVTYrLHEtmxpmg9QpVjia9TPAJFfzvWSd60AbcLywIhANQz+TtRkgTzJN3MoXkOsQ0BO1oev/4hSFYubRPnElNA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"b030b4c9755e412a6c9f3cce91592e31f95e717c","browser":{"events":"eventemitter3"},"gitHead":"432a1a090ec824f2947982daa9979531202cb044","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"4.2.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"7.10.0","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.3.0.tgz_1495223168793_0.8919663135893643","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"ws-wrapper","version":"1.3.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.3.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"9ba1a5d9f6cb8573d2a7a8fe52f2975e7c3f4997","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.3.1.tgz","integrity":"sha512-+tuV1rZvXJVcsL+SuqKQxawJagWbZL9eJKoI/ZE91h5AqVnP7O5MZh8e4UOM9D3pwvUrlbv01LHjCE14G+hR3w==","signatures":[{"sig":"MEUCIQCeHJcNbpQCuI+U+4Zxn0EVNAwk65GoJxcyy+SO/RcuIQIgLiBjMXC/1VZqNPIVpr5X35MqiLFXnCJJ4g6SFrkEQLM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"9ba1a5d9f6cb8573d2a7a8fe52f2975e7c3f4997","browser":{"events":"eventemitter3"},"gitHead":"4e8236e9523c856c61152451f5544529aa24cb61","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"4.2.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"7.10.0","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.3.1.tgz_1497895199000_0.24331044941209257","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"ws-wrapper","version":"1.3.2","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.3.2","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"d00199ceea798db6521235a8f2309f9ab31c5bc0","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.3.2.tgz","integrity":"sha512-ZWhO0faWPBy1h4xXXfNZFwZBZeQjIXTmDMx2W7uQhGjgsKEjH/IHeIhQlhwvQJ6QW3eFzXVQ/rvVs2IJYt1OSQ==","signatures":[{"sig":"MEQCIHZA6UFLdE6Hz/AuAtKvOJ8mRTd+tU2ZBulMthlfO2h6AiAjnYS/J/lPgjB1TQ4HCn6AZxzq7aKXGPpmjHucp5lnLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/wrapper.js","_from":".","_shasum":"d00199ceea798db6521235a8f2309f9ab31c5bc0","browser":{"events":"eventemitter3"},"gitHead":"658da2569852da496fe55bfa38bcc493a99ed712","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"4.2.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"7.10.0","dependencies":{"eventemitter3":">=2 <3"},"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper-1.3.2.tgz_1498767261711_0.06370215327478945","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"ws-wrapper","version":"1.5.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.5.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"52e1bc8b88b6e8313830f16252e5baa19026ab5b","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.5.0.tgz","fileCount":5,"integrity":"sha512-wLHQirT5vCJeagTVbubKybrO5ldIJKBITuunzfPP2D4xQ5Sfv/6WHmF+c6aupt/tDnp8xuz1aF2OehYmXSrd2A==","signatures":[{"sig":"MEQCIB/oNvlL3Zig70OeeC90ZNgXWP0FI/hbdBRFTAncPdE5AiBmfJY0I2DJkI4tGOV4Fb1YQDcNb29TWNgqHQacW/Ro4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30966},"main":"./lib/wrapper.js","browser":{"events":"eventemitter3"},"gitHead":"f5f3fd43fe83fd81d68e235e1bccf99dc01ba7a7","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"5.8.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"8.10.0","dependencies":{"eventemitter3":">=2 <3"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","node-module-concat":">=1.5 <2"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_1.5.0_1522087224964_0.6325567754192047","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"ws-wrapper","version":"1.5.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.5.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"ab3baab6606bfab38b72155d45f54a3f215dc722","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.5.1.tgz","fileCount":5,"integrity":"sha512-9TJH79+QzAeFiQq2vpLOt0dPP+Bs44MHTo1siJozxKjog1RDB9sUimpNg8k00R9yFIPHJjRdvaAJG0TIGXYXUw==","signatures":[{"sig":"MEYCIQDLLplwIobiaxTHQPEmrrHRvb5SiJdFiv6f5tISgVZzpQIhANADFcNTvQpV3w9QWT+TWJyt7jyr/7EMNPlpfzCt0fGd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32624},"main":"./lib/wrapper.js","browser":{"events":"eventemitter3"},"gitHead":"d9c6b76284b98ba59779356f9356940266e7e7a3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"5.6.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"8.11.1","dependencies":{"eventemitter3":">=2 <3"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","module-concat":">=2 <3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_1.5.1_1523378737234_0.8419042483823109","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"ws-wrapper","version":"1.6.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.6.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"caa78a129a94012cd5b9d9c5f0fb12ccefeed4af","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.6.0.tgz","fileCount":5,"integrity":"sha512-b1Xzzzdn0tjCgapvfJRTvhvI/Xsp99f77J9WC+IObBKce3RuFK7Az8/px7KN1m5QoRQjFzeI57NAK7ddNwlCtQ==","signatures":[{"sig":"MEUCIHLozmNg/YwqoJ+ckT/SXC1eGbUnpHorljFZpOJg0JsjAiEAnZnQcJHyHWLd7ayGKyyO2zjW0TJuOWWOhywGlRu5zOY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8fLMCRA9TVsSAnZWagAAs0MP/iCiOI5l9wSy7MAynVde\ntT+P3XRj4PgmLF1P5ftCoY6w7I8L5ue3V+gV+YhN31FhPDrc6vdLtDalr3DS\nwO039IKzhmBXDQ7uQFGOHGBLg+NwRzfQ6ZfejdZ6kwUaUMSAQcTV8doNv6ep\n7J+mvQX1224b8svHsnAHPvS/vmt1EJqOtONArRB6zFvTyLv+OjwyunCgG9cQ\nbNj7rWbtBJs1/Pxrx01Q+Wr1nWJw9wSVI3DLIymWrpzhBlTA1X2MbThL3Cyq\nk8WsphvyQ4KDni8GLw0qZLocq8HZJEo2TiSHNvF2Ejmmb6KI4pjo0JXxBgVS\nToJtjZnUQksSnyclUuM53XnJgCI9tIO2aVWctqWNjkF4YgJ1HUrUF9pzgVzT\nFeEDVnID2VvbgLtnwR4iRcdqoAZ3ryLraHM2JFGMPVz1BGz1GUdcK1SW+cXz\nmy1yMubNtI0NV+L/Qwo2bDu0LmC8zSs30vUajnhZaE+lpJM+hPrQ8PmYEG/U\na4We+2PStojQE27GAvPhYJB3JV1PHpSLz4cIXWLlosGqh3Uuh0xJLlzQTuHy\nHU34n7Pigtcmm9LByfkhD4++XqTpFHYVTUnAy6VaIjrEcmVSc2Qi6U/KykNV\nh+LnfJcWq2CyHHQRGTm2tOziBk5Rxa5P4wUWLJIfUuMb6s6hxZCjCOxpEUwD\nBPBO\r\n=spjk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/wrapper.js","browser":{"events":"eventemitter3"},"gitHead":"299aea737754e1911db0dbacb08316767be9a98e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"5.6.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"8.11.1","dependencies":{"eventemitter3":">=2 <3"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","koa-router":">=5.4 <6","module-concat":">=2 <3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_1.6.0_1525805770557_0.14730234530392838","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"ws-wrapper","version":"1.7.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@1.7.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"acc43181548ee5ef59b29c638e001256f121abbe","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-1.7.0.tgz","fileCount":6,"integrity":"sha512-ED8b5vxJD1ycsaeG6mnaNjEHOPTwThlUL7KrY1DBovf/KVIAlf4fy+6YN6yEoLu/RVKCZkPR1mEaBjfW7k2HLw==","signatures":[{"sig":"MEUCIQChMSWAXoly8FJlH+pbCb6RqEOcDHyeCBgQw4JdmgqczwIgYS0SCEiwzbsZY1aGTt3HEiLo5T6nunYd7OR05cd39dM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbPniKCRA9TVsSAnZWagAA3UQP/3FRWbQmc8n6Aqc4MPV1\na/tz5B0pVGe0pqfXkUchbnPuJvoqRzO6GQOatv3LlRLijZu0kWaQ7Y6CdjM/\nPNC1HiEPljUyrXzPkrjElal/f+nd65xgTJsIyc9sSDrYWHgaCZ/hxxdFBJlQ\nHn002AjekBYZ0svbgN8IcLM087QQ+arfg+ewCAX3dvfHhSJtUtV5jwOWJf+B\nI+cgY2XnnfMNr6nPSZdiMHEHMyUE2Rugc80Yix9zHhtnC4Hu1Foo+LMp4Q1v\nEBF3SPQPFvUoHVog0Yvz/H4sQ6c+inY7bMRXcUnqs2Ak72i997s5NddWbYm9\nihAzGUgNoGrJLYZPn2B/MQP32SqLEPyDrTIGcPygjncKpSI2W6uSXTO8N7sd\n1xJIzJwt95bg/GSCelc6845p84TAJ8rDv8CGj/lOgyFThPksZMP9UAQeZ+9W\nqJKP4qn/rjZDk86TzWOM112v3h8iX1UnIg452b9zs8FBsP2V4+dNF5b27k2U\n6njcRd6INiaAYJNCcg4tIKUCSgBMAS/QxuLelEK3rdrB1YvroPhA0zTQFYKf\nkLTkDB3VkCgIgvxR9Fjt5K0ewAy0xfob1c9PgzRCPA3NMBJPfkMWc/6mga/O\nCYGcLGQEhbMW23CRBYe9G/20rpdID7dY2wPeCRkXgJMglWMOnQabPLxz7d3b\naKDw\r\n=FJy9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/wrapper.js","browser":"./dist/index.js","gitHead":"be8a3300c09c543fc380c664fe1a521f70f6473e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","babel":"babel dist/index.js --out-file dist/index.js --presets=env","concat":"node ./node_modules/module-concat ./lib/wrapper.js ./dist/index.js","prepublish":"npm run concat && npm run babel"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"5.6.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"8.11.3","dependencies":{"eventemitter3":">=2 <4"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","babel-cli":"^6.26.0","koa-router":">=5.4 <6","module-concat":">=2 <3","babel-preset-env":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_1.7.0_1530820746696_0.7814583025911832","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"ws-wrapper","version":"2.0.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@2.0.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"598f67a9fdf13d532abaf593d8ce8889f94b5a2a","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-2.0.0.tgz","fileCount":6,"integrity":"sha512-wwCEsLhTsgG5NE/t7ZqfT84FNdLynLpPRgxBJDUdefRYEAWS+LBZ63yDk+4YMptcFCJ2h4yFKYXgrTQWGvaumg==","signatures":[{"sig":"MEQCIGa8MBERUQixNWFbhRFIyxcDpJ15/NzttaMCkYQR4yrKAiBHjuNoFpgaJq8FMwvUXF1+gq969a8zZ+kud115PXOwgA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgZL5CRA9TVsSAnZWagAA8CYP/13mnX1rUDxa16Ul4Kkw\nNjnFJtJ39h2ZbFnkYHs3OV6gQa2Wqe7osgbT6Kcxe4K7wCfcbkv5yyUYq+y0\nuH80U5Vrf1sbIk6cRrYtyg/fBAHPbaHi3Up3TYnTCP1TK445XlabVMFYNb4m\nFJ0rpnZ6SPuEdNpz9r6RquWcFshSFSX9sUwfuiMXrrp1WLzb4BY2m9z9/Zn/\n9LrrRsWi1KZdze2Q4uvaE6j+UslQyix3JcE7PJWJQ70/WAQKewBzfgiRarrD\ni1IacoK++Pk1LwxnFZO6VOMmWt2usRjKNaebjZBcAaOqoDNzGLeDlYClAYdq\npM3pwS8G8COmXEkCSawKYDk9/yGIDQahQjXJ/lVuTnxbaaVocCxChjhu00jV\nNX0Cyosm9YQScePKJELhr+R6lYCuyi6UMDAJuWfGis2DO+Xtx2dYeKPAhRch\nC2rbH9acN26elP6Q2lXh24ML8OvEipSClDwxCHII3FGoUShmgV30rW2lndqZ\nVstVmBTD8ncBiZvxZoMCh9DbPj6j8fJouUhag1CoY8mV5NVCLwBG7GL6ZvI9\nYrmY7/JgB1e/iMre5uklfplmySYt5hwwc9zIzwhieaDbHsWiO97B6Oxt5Mp9\n6v/SuaSKnClj/K3yTHgbvVkgs1t8LpNZLtInTVuu+oKAHHk7D44ojgeNTZcS\nyLrd\r\n=J1Zw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/wrapper.js","browser":"./dist/index.js","gitHead":"0e544c614efbaf71128c82b9e945ecba272936b3","scripts":{"test":"echo \"Error: no test specified\" && exit 1","babel":"babel dist/index.js --out-file dist/index.js --presets=env","concat":"node ./node_modules/module-concat ./lib/wrapper.js ./dist/index.js","prepublish":"npm run concat && npm run babel"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"6.4.1","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"8.15.1","dependencies":{"eventemitter3":">=2 <4"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^1.1.1","koa":">=1.2 <2","babel-cli":"^6.26.0","koa-router":">=5.4 <6","module-concat":">=2 <3","babel-preset-env":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_2.0.0_1551995640334_0.9716416203685003","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"ws-wrapper","version":"2.0.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@2.0.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"4ff2baef83fb5fd9b0ed64fb11e8ada409dfbdc2","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-2.0.1.tgz","fileCount":6,"integrity":"sha512-I3zdHJe6iRcPdUUJrlGJi0YyYHKasNRaU5kqZThb+e+8Hj9iAkgFIGybfbrnt3sll+ucYq8hRHt6eE5GSV5lnw==","signatures":[{"sig":"MEYCIQCmI/oLfkeLekVvyihSSDcH7tAs9PU7Rk9X+rWZrFVgswIhAKIeL8V9JVMli9lTjk8kLi9JG83kAWa6Mc9+7SEFsgRD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPkVwCRA9TVsSAnZWagAAqvAP/3MfSP6sc/Rf92mKu77u\nP4JsEFITR9siWG5ebb03BiYEy901cQMz7KtwNTgVX+WUtfOfICuTHFQk4gGO\nXwVy7N9U3tvzacuYKyYLG4PcgpKe3YZjWq3HC0+7uE5bUXv+aC/GFh2urd+d\nzIbrNtivd42pAOVrQza4oSIAJiQ/weYrKVRz1Hdbsz8n8wvyN58e9PT3BpvN\nsqxwgjict6vP16FCsCzOPYrdRN/KjiHNUJBmYK/4k5jKI2UWlhCWCWECUDLt\nZXWjbeBYCWXEBtws16dMzndivfqIuNYKrmTSrhy1MfUeMZWchF4jqdmPl6MZ\nEu+jFbYGqnyCRRop0RH24rZ/FbbE8ULRVnpzeTSH2GWPRNUFFCtC2MXlzOny\n/krkfOmj1Wp6GWJQYSF/FWUUc5Q+ynO2oBfYfn9ht/rdrZBe0Pz6wdxcy4Q2\nM+K8SGYdYwTit2MgZRYX59KTrP1QywoC7ZOf1fxSWLC74zcB4Lm6Qyqc9LD5\n/XLFTfBJ2dNllfKgDe2601ONkAO8h+wXk2LJfZyujts7X8/kr3Mo/SE0Xtsb\nJu3YiYw0/YwR+xSuzriMGzp4BdIAYj9peVdzAOBCEelNJRNspwFS0mC4Haft\nI5f6fxcYObr9trFpXfvXCPzn3a5EcGjRY7f3+oI5oxpUSAG2ZtiMdIiFWv5D\nMZ1u\r\n=oDdt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/wrapper.js","browser":"./dist/index.js","gitHead":"adc597934457adcfdf7101bf46d971d87d3563fe","scripts":{"test":"echo \"Error: no test specified\" && exit 1","babel":"babel dist/index.js --out-file dist/index.js --presets=env","concat":"node ./node_modules/module-concat ./lib/wrapper.js ./dist/index.js","prepublish":"npm run concat && npm run babel"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"6.10.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"12.7.0","dependencies":{"eventemitter3":">=2 <4"},"_hasShrinkwrap":false,"devDependencies":{"ws":">=3.3.1 <4","koa":">=1.2 <2","babel-cli":"^6.26.0","koa-router":">=5.4 <6","module-concat":">=2 <3","babel-preset-env":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_2.0.1_1564362095746_0.6410131715841978","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"ws-wrapper","version":"2.0.2","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@2.0.2","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"edada31dfb5bc5602f538891e27afb5106611d55","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-2.0.2.tgz","fileCount":6,"integrity":"sha512-jMoPZ0UGdRXH9YPhtCPFXxwytJtanAJLkK+WuLwDVTQtJnqy0dSFEmHifvmqaLw5qUWY8NmMrMoc7v1usbS+uA==","signatures":[{"sig":"MEUCIQDo5ItxOLC8DEUhyvdZ46z1W6QNB26QTI2+VB7cXgZfwAIga8nq9wq2CK2Us7Onc2+ccdsro6V4m6uN8jzctW3HNRY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2BgMCRA9TVsSAnZWagAAmxIP/0KbFdQj/rzMemSyaEVY\neBdoXMxYy4eb+jraLQ8WLdPogYEQRYPrIMRr8su5zniVRdUfBGuYA5IlaFEq\nDBV0qkr+PGGO1KEYggK8xs+XLVN/7Ngs9b+xgQC1ASYtnVzp0Qcufv5h7qy7\ntNsFcmP4fZRpc0NRyLm7o/NwyoBjNZUm5CKPsY+6AIdIqU2XmB1AWTQhD2Px\nsJCIKHEE9VdcXjJOasULOtKPf6+OtrmFhKSuKguVOn4M7WwJAqRi2WCnjn22\nU6BkiBNRvxcP/jE57GXhRxcoRfPGnuR4Bp1H9Ag6MQoM1zU6LSlTtf/K7Zxx\n4lI1CrD+bGvxRyfwlSzk3Ot+pUPKMawwJ03xTC2ivSKqmAGrIRP52ZGNdG7Y\ndMIt4ztDTav7CIPa1mjfCv+irqxfLXbsogfntgWz+zv9RcOxX/YCLR0B4wVU\nhoOP8swWc79BNoRsFkvfqNUvVMXdgiJmhz+aBeN/Cc8mN9kK/ZLdoyJOfnOU\nuUh8StidI+0WFPSxmIBf7q0/xfPl9X8a+PWC7BNPOCVTmIwbn8FYSzXzuuCw\nhL1+o0fDKI9zvep3VDHzKbzQfCWNX4nTRy6W9m05ErcBfmruRZiASZAvHVUO\nAsRdgMCu3rAXLBfc+ctPtolxqODJ2Xw+NroYGgGbVZktiQ2K4UXF5YAs27AT\nrfpp\r\n=kz8p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/wrapper.js","browser":"./dist/index.js","gitHead":"054083a2833093f4dce4f7adafe6e8e9643cffd7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","babel":"babel dist/index.js --out-file dist/index.js --presets=env","concat":"node ./node_modules/module-concat ./lib/wrapper.js ./dist/index.js","prepublish":"npm run concat && npm run babel"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"6.12.1","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"12.13.1","dependencies":{"eventemitter3":">=2 <4"},"_hasShrinkwrap":false,"devDependencies":{"ws":">=3.3.1 <4","koa":">=1.2 <2","babel-cli":"^6.26.0","koa-router":">=5.4 <6","module-concat":">=2 <3","babel-preset-env":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_2.0.2_1574443019778_0.4873508484395639","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"ws-wrapper","version":"2.1.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@2.1.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"507c244c6de580202bad6a32109b9da4612f971c","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-2.1.0.tgz","fileCount":8,"integrity":"sha512-+OhiyqJP+k5xQycWPgnIGf2BgqhxGF8e8/AofLYk0qrHmI6sL3pXsJE9eEnskMJOmsrcFd1HfUnYQlevDIHuDg==","signatures":[{"sig":"MEUCIQC3UDOvPv07EZ4ZIfrxY/MeDIArkV8JqPUjaxzhbfknHQIgT5U70z6LShAw4Pmi0bf7O6Eif32LTNADv5/snGhyY0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67138},"main":"./lib/wrapper.js","browser":"./dist/index.js","gitHead":"76f9d14b026e3ae992163f067d77f3d44955e4b6","scripts":{"test":"echo \"Error: no test specified\" && exit 1","babel":"babel dist/index.js --out-file dist/index.js --presets=env","concat":"node ./node_modules/module-concat ./lib/wrapper.js ./dist/index.js","format":"prettier --config .prettierrc --write \"**/*.js\"","prepublish":"npm run concat && npm run babel"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"8.19.4","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"16.20.0","dependencies":{"eventemitter3":">=2 <5"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^7.4.5","koa":">=1.2 <2","prettier":"^2.3.0","babel-cli":"^6.26.0","koa-router":">=5.4 <6","module-concat":">=2 <3","babel-preset-env":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_2.1.0_1687537096997_0.19015962643403728","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"ws-wrapper","version":"2.2.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@2.2.0","homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"3e5801715a7a5e8c34e53935c9d0f81c4e6e2d9d","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-2.2.0.tgz","fileCount":8,"integrity":"sha512-rfTNFHQ4lSuzyfe5dMtzIUbxDsRyuCWv4f8NDUUyWyjGG1RIz+po2EELYWspESfKaR5ym1NLU/ok5ITuh9QR9Q==","signatures":[{"sig":"MEYCIQDKuWxBfNT6pMp8O17biaZFphKbaUeobMirTIk7eQvuLAIhAP1I1dRjqq9m3hmf4AzYsPZ5JbXn0LHZ07MAF91vZQ/M","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74252},"main":"./lib/wrapper.js","browser":"./dist/index.js","gitHead":"17ae1832671faa0531fdb1e8044f0802dc710a96","scripts":{"test":"echo \"Error: no test specified\" && exit 1","babel":"babel dist/index.js --out-file dist/index.js --presets=@babel/preset-env","concat":"node ./node_modules/module-concat ./lib/wrapper.js ./dist/index.js","format":"prettier --config .prettierrc --write \"**/*.js\"","prepublish":"npm run concat && npm run babel"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"8.19.4","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"16.20.2","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^2.15.3","eslint":"^8.57.0","prettier":"^3.3.2","@babel/cli":"^7.24.7","koa-router":"^12.0.1","module-concat":">=2 <3","@babel/preset-env":"^7.24.7","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_2.2.0_1718986354912_0.6746867979548319","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"ws-wrapper","version":"3.0.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@3.0.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"7f430ee18e7200a453b2210ba372772b54e5214c","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-3.0.0.tgz","fileCount":7,"integrity":"sha512-XYQTEUpd1zGKI7mxXLwbGOSYVk/Quw5dmvWF0g+0UMpY6hwvEGfElyM9bBrr+iXaj8P1fyXUBfS5gs54enV4gQ==","signatures":[{"sig":"MEQCIDFYz6ePm9QifQ4d982fqXzQsHYtP4hKbuFso8S4QKp7AiBGHS8OFIxi+fo8oYIiDq1f18UzZJ9IZ35fFY9enQiuaQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37250},"type":"module","exports":"./lib/wrapper.mjs","gitHead":"556797a34da997d951fc3fe97691af29f362b601","scripts":{"lint":"eslint . --ignore-pattern dist","test":"echo \"Error: no test specified\" && exit 1","format":"prettier --config .prettierrc --write \"**/*.js\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"9.2.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"18.19.1","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^2.15.3","eslint":"^8.57.0","parcel":"^2.13.3","prettier":"^3.3.2","koa-static":"^5.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_3.0.0_1737176450312_0.6540800458651124","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"ws-wrapper","version":"3.0.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@3.0.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"9abac1fdc9c19c0b18861de88fa1254b49931bc2","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-3.0.1.tgz","fileCount":8,"integrity":"sha512-s1XMbhIrML3LwNwfx16piH8OnA/JIoO2YAzlMcaR+ezA3dSJrvUUoJuG0ss+xZzkKPtJ6D+lNBGBF++A6UUtJQ==","signatures":[{"sig":"MEUCIEjUjJGhnY3naK6+H9wwYUQE334zpR/wH/EdyfdtAHE5AiEAx9sjr2DK1HohnW7z8ik7JP0/nMkY9ez3AtGAcCoot1A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37332},"type":"module","exports":"./lib/wrapper.mjs","gitHead":"b30eece28e7f8f65dfac643e84ab9c6d85ab517d","scripts":{"lint":"eslint . --ignore-pattern dist","test":"echo \"Error: no test specified\" && exit 1","format":"prettier --config .prettierrc --write \"**/*.js\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"9.2.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"18.19.1","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^2.15.3","eslint":"^8.57.0","parcel":"^2.13.3","prettier":"^3.3.2","koa-static":"^5.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_3.0.1_1737179587515_0.20306953661688976","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"ws-wrapper","version":"3.0.2","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@3.0.2","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"afa8cd3ddf1bd9136bcc7ce80f47ee902b46b4d8","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-3.0.2.tgz","fileCount":8,"integrity":"sha512-+fH00xWamoizUA14ZfzHOUrOlSxJ9bzMxrRwm093N3cwCQLPkKKVdGRXAiT+1KGNbTlNSvwaRmMkY3Kv5aYFZg==","signatures":[{"sig":"MEQCID/XGkPbvtMDlkKDIWNOuwt+mtvZcKllqw+0PetTSP6gAiBnAdU9wTiSASNGm0mn51VJ4EdBU8yj6tryqemOwyUSsQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37784},"type":"module","exports":"./lib/wrapper.mjs","gitHead":"042f78f46e6b162fc8141abe9ed62aaca4b370e4","scripts":{"lint":"eslint . --ignore-pattern dist","test":"echo \"Error: no test specified\" && exit 1","format":"prettier --config .prettierrc --write \"**/*.js\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"9.2.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"18.19.1","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^2.15.3","eslint":"^8.57.0","parcel":"^2.13.3","prettier":"^3.3.2","koa-static":"^5.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_3.0.2_1738010901745_0.5027567486754063","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"ws-wrapper","version":"3.0.3","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@3.0.3","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"7afcce53b4190e0bccf5e6a964418db215d4a784","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-3.0.3.tgz","fileCount":10,"integrity":"sha512-BbTpk1J5yBsDrcldkamjDPCyS1G3GStM33UdIdQN9pyqQnPVZwelGSvOx1IchzBBWVG5rzZuLzbzs2U2MM4lFg==","signatures":[{"sig":"MEQCIB/496fo0mvSD62qJWFpqY+EkSHkO5WRsE5uAwV/CF6mAiBW+UBCRwNWYsuZduAVubCmW2Hn9d24ipDjcyKs1k+ZYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222184},"type":"module","exports":"./lib/wrapper.mjs","gitHead":"5d78277f46e247e130b04a3d703dcdbec32e1764","scripts":{"lint":"eslint . --ignore-pattern dist","test":"echo \"Error: no test specified\" && exit 1","format":"prettier --config .prettierrc --write \"**/*.js\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"10.9.2","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"22.15.1","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^2.15.3","eslint":"^8.57.0","parcel":"^2.13.3","prettier":"^3.3.2","koa-static":"^5.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_3.0.3_1747620866946_0.3052891498603516","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"ws-wrapper","version":"4.0.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@4.0.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"dd226365e426f61db9ecc6e56d576409a800fe7f","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-4.0.0.tgz","fileCount":12,"integrity":"sha512-y8TLfGVyy31ZoiayCqGRmllDJPN/a3tqlpsKTqtMcLrrspYHqengruIr7Y6FIQdRQiPrDS32GvqtlHZ8uR5wog==","signatures":[{"sig":"MEUCIG4vf1kF1w98M4fcT+FzPPYvJQjTapY1Icb5dbqVXQLqAiEA02bYXFdb9V2QnpB4++c3NE1JWfFGO3XOCUWegh2KUWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":495058},"type":"module","types":"./index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./lib/wrapper.mjs"}},"gitHead":"f4236321d5eb5e0efcffdee9b79060d83b4851ab","scripts":{"lint":"eslint . --ignore-pattern \"**/dist\"","test":"node --test","format":"prettier --config .prettierrc --write \"**/*.{js,mjs}\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"deprecated":"Please use version 4.1.0 instead","repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"10.9.7","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"22.22.2","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^3.1.2","eslint":"^9.39.4","parcel":"^2.13.3","prettier":"^3.3.2","koa-static":"^5.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_4.0.0_1774681152875_0.5866747349661483","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"ws-wrapper","version":"4.1.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@4.1.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"bdb9c6b35912cf7fe352996cd5a412d69a0c5ced","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-4.1.0.tgz","fileCount":12,"integrity":"sha512-DljCxsRdZzPNkVUaBdPFUQQAIiEURUdwYCTHzt4AR8+B1AEUYU0YVAo+AHlJaQV187DjeHSWhhizVr0u8BtPGg==","signatures":[{"sig":"MEQCIHIeUTy1FLo56rZXjqvlUaSKJ3XWkouCtvP937a66L4mAiAi2EowtWfRR3fKgfERkF9gU3L1XgvkVT0cEg5UY3xJCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":844539},"type":"module","types":"./index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./lib/wrapper.mjs"}},"gitHead":"6dd23da13ebad3bbb95112d6c4bfe888066b2c9a","scripts":{"lint":"eslint . --ignore-pattern \"**/dist\"","test":"node --test","format":"prettier --config .prettierrc --write \"**/*.{js,mjs}\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"10.9.7","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"22.22.2","browserslist":"defaults","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^3.1.2","eslint":"^9.39.4","parcel":"^2.13.3","prettier":"^3.3.2","koa-static":"^5.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_4.1.0_1774832638213_0.39420531431385797","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"ws-wrapper","version":"4.2.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@4.2.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"e87d8f37c1659f2acd21925314f6df6df7312464","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-4.2.0.tgz","fileCount":16,"integrity":"sha512-ie8wgMtYIjtKZBgnTiIoifjTStL/HfodzjnbLZ05aP+iJg6tcXuyNlud6DhSiV8fThlnGiiUqWT3ZhxTy7nTJQ==","signatures":[{"sig":"MEYCIQC2fHEovSxFcCOuLvnBUfXqAIOMzw19rlY4LNoDveGEWwIhAN9vq5vprfNSQtqzLc3jixyejnlXPdrU0NoE2GYJ+1CA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":967096},"type":"module","types":"./index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./lib/wrapper.mjs"}},"gitHead":"a5f5ae3faf0203b47706f17e232408f312e7e3cc","scripts":{"lint":"eslint .","test":"node --test","format":"prettier --config .prettierrc --write \"**/*.{js,mjs,md}\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"10.9.7","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"22.22.2","browserslist":"defaults","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^3.1.2","eslint":"^10.2.0","parcel":"^2.13.3","globals":"^17.5.0","prettier":"^3.3.2","@eslint/js":"^10.0.1","koa-static":"^5.0.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_4.2.0_1776394738962_0.30780917081933756","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"ws-wrapper","version":"4.3.0","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@4.3.0","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"9305182c82b94a2ec2ae81c0253f532ce0ca3227","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-4.3.0.tgz","fileCount":12,"integrity":"sha512-P0sVPgo6PR2Mj1r4vAvzRuvSDxAXb+7uR5Bb4GXukyOZr8ZdJRmiT8zATHllwhop117UIel8iH/xipFPxwu66A==","signatures":[{"sig":"MEYCIQC9gY3qTTZO/trKJontS7LIJNx9Ez2Pb8F409mQ/rIXtAIhAJRU93j2aAjZXUZ+VJdO2Cm0Q6k6EkNRmu2kOX3Xpc1/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111646},"type":"module","types":"./index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.mjs"}},"gitHead":"7cec64313da78be50b21dbfeda66b919156479d4","scripts":{"lint":"eslint .","test":"node --test","format":"prettier --config .prettierrc --write \"**/*.{js,mjs,md}\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"10.9.7","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"22.22.2","browserslist":"defaults","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^3.1.2","eslint":"^10.2.0","parcel":"^2.13.3","globals":"^17.5.0","prettier":"^3.3.2","@eslint/js":"^10.0.1","koa-static":"^5.0.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_4.3.0_1777569492453_0.4407070741250547","host":"s3://npm-registry-packages-npm-production"}},"4.3.1":{"name":"ws-wrapper","version":"4.3.1","keywords":["websocket","ws","event","handling","channels","request","namespace"],"author":{"name":"Blake C. Miner"},"license":"MIT","_id":"ws-wrapper@4.3.1","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"homepage":"https://github.com/bminer/ws-wrapper#readme","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"0280541f910e3a6ea0f2d67cb6bc0c3b5eb20c42","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-4.3.1.tgz","fileCount":12,"integrity":"sha512-LOzQKBf80grkyO4PHTgL/NNyedL8WUWejf0I8hVSWOuCBsMp6UlBORARTHaR3HBh44LrTibQNj0fGNuKuKyKig==","signatures":[{"sig":"MEUCIFLm+mLV55GTw8c1ARWZS74GUY9y6EVT5cMCL+FO2IEMAiEAiVREONpVyxh+SvF5/CXAlKq3W6EL6/2LawK9km0S96M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112221},"type":"module","types":"./index.d.ts","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.mjs"}},"gitHead":"b2fe1e89e81ff9317366419af37b4cef45fb9ece","scripts":{"lint":"eslint .","test":"node --test","format":"prettier --config .prettierrc --write \"**/*.{js,mjs,md}\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"11.12.1","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"_nodeVersion":"24.15.0","browserslist":"defaults","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^3.1.2","eslint":"^10.2.0","parcel":"^2.13.3","globals":"^17.5.0","prettier":"^3.3.2","@eslint/js":"^10.0.1","koa-static":"^5.0.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"tmp":"tmp/ws-wrapper_4.3.1_1777862155822_0.9142463940285894","host":"s3://npm-registry-packages-npm-production"}},"4.3.2":{"_id":"ws-wrapper@4.3.2","bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"dist":{"shasum":"ae754f635dac5aadaa6bb39e8123c3c8e8d4c49f","tarball":"https://registry.npmjs.org/ws-wrapper/-/ws-wrapper-4.3.2.tgz","fileCount":12,"integrity":"sha512-WKBqBY4azcFeWXY3DbHOL5STMxx80JRlhOyxrdBfr7yOMmphaEQqPnays4r0G1bXIkKAMqXT6Kpel8hEMASeoA==","signatures":[{"sig":"MEYCIQDpp5pwitm/8R0WJyA3YXqLOQQ+oT1WVrk//5On3YbS8gIhAOsGVHNaJQXh3zgKct+JBoValrL0Tx81vTNbBiMFPSlL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF6npJFzieinDvulPDGNjljHsixSpkxfBomsayKyTBWmAiB3B+UI2TvY7fvC3S1o4Iq4q3qsl3xs2dnYIYLEq4pMCQ=="}],"unpackedSize":112221},"name":"ws-wrapper","type":"module","types":"./index.d.ts","author":{"name":"Blake C. Miner"},"engines":{"node":">=14.0.0"},"exports":{".":{"types":"./index.d.ts","default":"./index.mjs"}},"gitHead":"57a9e93d5ad4a5221ebe5a1a09641b9c11b21c7a","license":"MIT","scripts":{"lint":"eslint .","test":"node --test","format":"prettier --config .prettierrc --write \"**/*.{js,mjs,md}\"","build-example":"parcel build --no-cache --dist-dir ./example-app/dist ./example-app/index.html"},"version":"4.3.2","_npmUser":{"name":"bminer","email":"miner.blake@gmail.com"},"homepage":"https://github.com/bminer/ws-wrapper#readme","keywords":["websocket","ws","event","handling","channels","request","namespace"],"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"_npmVersion":"11.19.0","description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","directories":{},"maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"_nodeVersion":"24.20.0","browserslist":"defaults","dependencies":{"eventemitter3":"^5.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.17.1","koa":"^3.1.2","eslint":"^10.2.0","parcel":"^2.13.3","globals":"^17.5.0","prettier":"^3.3.2","@eslint/js":"^10.0.1","koa-static":"^5.0.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.1.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ws-wrapper_4.3.2_1788918322578_0.1632832326524667"}}},"time":{"created":"2016-12-12T19:01:23.674Z","modified":"2026-09-09T01:45:22.826Z","1.0.0":"2016-12-12T19:01:23.674Z","1.1.0":"2017-02-07T23:06:04.431Z","1.1.1":"2017-02-08T19:11:10.131Z","1.2.0":"2017-02-09T16:32:41.344Z","1.2.1":"2017-02-14T19:49:35.062Z","1.3.0":"2017-05-19T19:46:09.950Z","1.3.1":"2017-06-19T18:00:00.012Z","1.3.2":"2017-06-29T20:14:22.781Z","1.5.0":"2018-03-26T18:00:25.098Z","1.5.1":"2018-04-10T16:45:37.363Z","1.6.0":"2018-05-08T18:56:10.715Z","1.7.0":"2018-07-05T19:59:06.748Z","2.0.0":"2019-03-07T21:54:00.483Z","2.0.1":"2019-07-29T01:01:35.886Z","2.0.2":"2019-11-22T17:16:59.916Z","2.1.0":"2023-06-23T16:18:17.195Z","2.2.0":"2024-06-21T16:12:35.052Z","3.0.0":"2025-01-18T05:00:50.554Z","3.0.1":"2025-01-18T05:53:07.689Z","3.0.2":"2025-01-27T20:48:21.953Z","3.0.3":"2025-05-19T02:14:27.136Z","4.0.0":"2026-03-28T06:59:13.039Z","4.1.0":"2026-03-30T01:03:58.400Z","4.2.0":"2026-04-17T02:58:59.160Z","4.3.0":"2026-04-30T17:18:12.611Z","4.3.1":"2026-05-04T02:35:55.967Z","4.3.2":"2026-09-09T01:45:22.676Z"},"bugs":{"url":"https://github.com/bminer/ws-wrapper/issues"},"author":{"name":"Blake C. Miner"},"license":"MIT","homepage":"https://github.com/bminer/ws-wrapper#readme","keywords":["websocket","ws","event","handling","channels","request","namespace"],"repository":{"url":"git+https://github.com/bminer/ws-wrapper.git","type":"git"},"description":"Lightweight WebSocket wrapper lib with socket.io-like event handling, requests, and channels","maintainers":[{"name":"bminer","email":"miner.blake@gmail.com"}],"readme":"# ws-wrapper\n\nA lightweight, isomorphic library that brings named events, Promise-based\nrequests, channels, and more to native\n[WebSockets](https://en.wikipedia.org/wiki/WebSocket) — with first-class support\nfor **web browsers**, **Node.js**, and **Go**.\n\n## What?\n\nRaw WebSockets give you one primitive: `send()`. ws-wrapper builds a practical\ncommunication layer on top of that, so instead of parsing and routing raw\nmessages yourself, you get:\n\n- **Named events** – emit an event on one end, handle it on the other (similar\n  to [Socket.IO](https://socket.io/docs/))\n- **Request / response** – send a request and get back a Promise that resolves\n  (or rejects) with the remote handler's return value\n- **Channels** – logically namespace events over a single WebSocket connection\n- **Streaming** – anonymous (request-scoped) channels permit streaming /\n  iterator patterns\n- **Cancellation** – cancel in-flight requests using the standard `AbortSignal`\n  API, with cooperative cancellation support on the remote end\n- **Bi-directionality** – clients can request data from the server, and the\n  server can also request data from clients\n\nBy default, the wire protocol is a thin JSON layer over the native WebSocket,\nkeeping everything interoperable across JavaScript (browser or Node.js) and Go.\nIf needed, you can plug in custom `messageEncode` / `messageDecode` functions to\nhandle protocol frames (for example, to send binary frames).\n\n## Why?\n\n[Socket.IO](https://socket.io/docs/) is great, but it lacks a few features and\nships with the heavier [engine.io](https://github.com/socketio/engine.io)\ntransport stack. If you're already using a plain WebSocket, ws-wrapper gives you\nthe event handling and request/response patterns you actually want – without the\noverhead. The entire library and its dependencies weigh **under 12 KB minified**\n(**under 4 KB** minified and gzipped).\n\n## Comparison\n\n| Feature                                 | ws-wrapper | [Socket.IO](https://socket.io/) | [ws](https://github.com/websockets/ws) | [SockJS](https://github.com/sockjs/sockjs-client) |\n| --------------------------------------- | :--------: | :-----------------------------: | :------------------------------------: | :-----------------------------------------------: |\n| Uses native WebSocket                   |     ✅     |             ❌ [^1]             |                   ✅                   |                      ❌ [^1]                      |\n| Unnecessary HTTP polling fallback       |     ❌     |               ✅                |                   ❌                   |                        ✅                         |\n| Auto-reconnect                          |   ❌[^2]   |               ✅                |                   ❌                   |                        ✅                         |\n| Named events                            |     ✅     |               ✅                |                   ❌                   |                        ❌                         |\n| Request / response                      |     ✅     |               ✅                |                   ❌                   |                        ❌                         |\n| Channels / rooms [^3]                   |     ✅     |               ✅                |                   ❌                   |                        ❌                         |\n| Streaming                               |     ✅     |               ❌                |                   ❌                   |                        ❌                         |\n| Middleware                              |     ✅     |               ✅                |                   ❌                   |                        ❌                         |\n| Request cancellation (i.e. AbortSignal) |     ✅     |               ❌                |                   ❌                   |                        ❌                         |\n| Custom encoding                         |     ✅     |               ✅                |                   ✅                   |                        ❌                         |\n| Browser bundle (min + gzip)             |   ~4 KB    |             ~25 KB              |                  N/A                   |                       ~8 KB                       |\n\n[^1]: Library protocol is not compatible with a bare WebSocket\n\n[^2]: Easy to implement\n\n[^3]:\n    ws-wrapper **channels** are persistent namespaces scoped to a single\n    connection (similar to Socket.IO\n    [namespaces](https://socket.io/docs/v4/namespaces/)). ws-wrapper **anonymous\n    channels** are request-scoped and suit streaming / iterator patterns –\n    loosely analogous to Socket.IO [rooms](https://socket.io/docs/v4/rooms/) in\n    that they scope a subset of communication.\n\n## Install\n\n**Node.js / Browser**\n\n```\nnpm install ws-wrapper\n```\n\nor for Node.js servers, use the recommended\n[ws-server-wrapper](https://github.com/bminer/ws-server-wrapper) library:\n\n```\nnpm install ws-server-wrapper\n```\n\n**Go server** (use with\n[ws-server-wrapper-go](https://github.com/bminer/ws-server-wrapper-go))\n\n```\ngo get github.com/bminer/ws-server-wrapper-go\n```\n\n## Usage\n\nws-wrapper is an isomorphic ES module, so it works in Node.js and in the browser\n(with or without a bundler like Webpack or Parcel.js).\n\nCheck out the\n[example-app](https://github.com/bminer/ws-wrapper/tree/master/example-app) for\na sample chat application (recommended).\n\n#### Client-side\n\n```javascript\n// Use a bundler to make the next line of code \"work\" on the browser\nimport WebSocketWrapper from \"ws-wrapper\"\n// Create a new socket\nconst socket = new WebSocketWrapper(new WebSocket(\"ws://\" + location.hostname))\n// Now use the WebSocketWrapper API... `socket.emit` for example\nsocket.emit(\"msg\", \"my_name\", \"This is a test message\")\n// See additional examples below...\n```\n\nNote: This library is designed to work with all modern browsers, but if you need\nsupport for older browsers, try using a code transpiler like\n[Babel](https://babeljs.io/).\n\n#### Server-side (Node.js)\n\nWe recommend using\n[ws-server-wrapper](https://github.com/bminer/ws-server-wrapper) to wrap the\nWebSocketServer. See the\n[ws-server-wrapper README](https://github.com/bminer/ws-server-wrapper/blob/master/README.md)\nfor more details.\n\nIf you don't want to use ws-server-wrapper, you can wrap the WebSocket yourself\nonce a new WebSocket connects like this:\n\n```javascript\nimport { WebSocketServer } from \"ws\"\nimport WebSocketWrapper from \"ws-wrapper\"\nvar wss = new WebSocketServer({ port: 3000 })\nwss.on(\"connection\", (socket) => {\n\tsocket = new WebSocketWrapper(socket)\n\t// ...\n})\n```\n\n#### Server-side (Go)\n\nUse [ws-server-wrapper-go](https://github.com/bminer/ws-server-wrapper-go) to\nwrap your favorite WebSocket library. The example below uses the\n[coder/websocket](https://github.com/coder/websocket) adapter:\n\n```go\nimport (\n    \"log\"\n    \"net/http\"\n\n    wrapper \"github.com/bminer/ws-server-wrapper-go\"\n    \"github.com/bminer/ws-server-wrapper-go/adapters/coder\"\n    \"github.com/coder/websocket\"\n)\n\nfunc main() {\n    wsServer := wrapper.NewServer()\n    // Register an event handler; return values are sent back as a response\n    wsServer.On(\"echo\", func(s string) (string, error) {\n        return s, nil\n    })\n    // Create HTTP server that accepts WebSocket connections on /\n    http.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n        conn, err := websocket.Accept(w, r, nil)\n        if err != nil {\n            return\n        }\n        wsServer.Accept(coder.Wrap(conn))\n    })\n    log.Fatal(http.ListenAndServe(\":8080\", nil))\n}\n```\n\nSee the [ws-server-wrapper-go](https://github.com/bminer/ws-server-wrapper-go)\nrepository for a complete example and other adapter options.\n\n#### Other servers\n\nPlease implement ws-wrapper in your favorite language, and let me know about it!\nI'll give you beer!\n\n## Event Handling\n\nIt's what you'd expect of an event handler API.\n\nCall `on` or `once` to bind an event handler to the `wrapper` or to a channel.\nCall `emit` to send an event.\n\nServer-side Example (_without using ws-server-wrapper_):\n\n```javascript\nimport { WebSocketServer } from \"ws\"\nimport WebSocketWrapper from \"ws-wrapper\"\nvar wss = new WebSocketServer({ port: 3000 })\nvar sockets = new Set()\nwss.on(\"connection\", (socket) => {\n\tvar socket = new WebSocketWrapper(socket)\n\tsockets.add(socket)\n\tsocket.on(\"msg\", function (from, msg) {\n\t\t// `this` refers to the WebSocketWrapper instance\n\t\tconsole.log(`Received message from ${from}: ${msg}`)\n\t\t// Relay message to all clients\n\t\tsockets.forEach((socket) => {\n\t\t\tsocket.emit(\"msg\", from, msg)\n\t\t})\n\t})\n\tsocket.on(\"disconnect\", () => {\n\t\tsockets.delete(socket)\n\t})\n})\n```\n\nClient-side Example:\n\n```javascript\n// Use a bundler to make the next line of code \"work\" on the browser\nimport WebSocketWrapper from \"ws-wrapper\"\n// Establish connection\nvar socket = new WebSocketWrapper(new WebSocket(\"ws://\" + location.host))\n// Add \"msg\" event handler\nsocket.on(\"msg\", function (from, msg) {\n\tconsole.log(`Received message from ${from}: ${msg}`)\n})\n// Emit \"msg\" event\nsocket.emit(\"msg\", \"my_name\", \"This is a test message\")\n```\n\nNote: By default, this module uses `JSON.stringify` / `JSON.parse` to encode\nprotocol data over the raw WebSocket connection. This means that encoding\ncircular references is not supported out of the box. You can override this with\nthe `messageEncode` / `messageDecode` constructor options.\n\n## Channels\n\nJust like in socket.io, you can \"namespace\" your events using channels. When\nsending messages to multiple channels, the same WebSocket connection is reused,\nbut the events are logically separated into their appropriate channels.\n\nBy default, calling `emit` directly on a WebSocketWrapper instance will send the\nmessage over the \"default\" channel. To send a message over a channel named\n\"foo\", just call `socket.of(\"foo\").emit(\"eventName\", \"yourData\")`.\n\n## Request / Response\n\nEvent handlers can return values or\n[Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)\nto respond to requests. The response is sent back to the remote end.\n\nThe example below shows the client requesting data from the server, but\nws-wrapper also allows servers to request data from the client.\n\nServer-side Example (_without using ws-server-wrapper_):\n\n```javascript\nimport fs from \"node:fs\"\nimport { WebSocketServer } from \"ws\"\nimport WebSocketWrapper from \"ws-wrapper\"\nconst wss = new WebSocketServer({ port: 3000 })\nconst sockets = new Set()\nwss.on(\"connection\", (socket) => {\n\tsocket = new WebSocketWrapper(socket)\n\tsockets.add(socket)\n\tsocket.on(\"userCount\", () => {\n\t\t// Return value is sent back to the client\n\t\treturn sockets.size\n\t})\n\tsocket.on(\"readFile\", (path) => {\n\t\t// We can return a Promise that eventually resolves\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// TODO: `path` should be sanitized for security reasons\n\t\t\tfs.readFile(path, (err, data) => {\n\t\t\t\t// `err` or `data` are now sent back to the client\n\t\t\t\tif (err) reject(err)\n\t\t\t\telse resolve(data.toString(\"utf8\"))\n\t\t\t})\n\t\t})\n\t})\n\tsocket.on(\"disconnect\", () => {\n\t\tsockets.delete(socket)\n\t})\n})\n```\n\nClient-side Example:\n\n```javascript\n// Assuming WebSocketWrapper is somehow available to this scope...\nconst socket = new WebSocketWrapper(new WebSocket(\"ws://\" + location.host))\nvar p = socket.request(\"userCount\")\n// `p` is a Promise that will resolve when the server responds...\np.then((count) => {\n\tconsole.log(\"User count: \" + count)\n}).catch((err) => {\n\tconsole.error(\"An error occurred while getting the user count:\", err)\n})\nsocket\n\t.request(\"readFile\", \"/etc/issue\")\n\t.then((data) => {\n\t\tconsole.log(\"File contents:\", data)\n\t})\n\t.catch((err) => {\n\t\tconsole.error(\"Error reading file:\", err)\n\t})\n```\n\n### Request Timeout\n\nCall `.timeout(ms)` directly before `.request(...)` like this:\n\n```js\nconst promise = socket.timeout(5 * 1000).request(\"readFile\", \"/etc/issue\")\n```\n\nThe `timeout` function affects the next call of `request`.\n\n### Request Cancellation\n\nStarting in version 4, ws-wrapper supports request cancellation using the Web\nstandard `AbortSignal` API. This allows you to cancel in-flight requests from\neither the client or server side.\n\n```javascript\n// Send a request that can be cancelled\nconst controller = new AbortController()\nconst promise = socket.signal(controller.signal).request(\"longOperation\", data)\n// Cancel the request at any time\ncontroller.abort()\n// The promise will be rejected with \"Request aborted\"\npromise.catch((err) => {\n\tif (err instanceof RequestAbortedError) {\n\t\tconsole.log(\"Request was cancelled by user\")\n\t}\n})\n// The remote end will also be notified of the cancellation\n```\n\nEvent handlers can access the `AbortSignal` via `this.signal` to implement\ncooperative cancellation:\n\n```javascript\nsocket.on(\"longOperation\", async function (data) {\n\t// Do long running work, checking signal periodically\n\tfor (let i = 0; i < 10; i++) {\n\t\tif (this.signal?.aborted) {\n\t\t\tthrow new Error(\"Operation was cancelled\")\n\t\t}\n\t\tawait doSomeWork()\n\t}\n\treturn \"Operation completed\"\n})\n```\n\n### Combining with Timeout\n\nYou can use both timeout and cancellation together:\n\n```javascript\nimport WebSocketWrapper, {\n\tRequestTimeoutError,\n\tRequestAbortedError,\n} from \"ws-wrapper\"\n\nconst controller = new AbortController()\nconst promise = socket\n\t.timeout(30000) // 30 second timeout\n\t.signal(controller.signal) // User cancellation\n\t.request(\"heavyComputation\", data)\n\n// Handle different error types\npromise.catch((err) => {\n\tif (err instanceof RequestTimeoutError) {\n\t\tconsole.log(\"Request timed out after 30 seconds\")\n\t} else if (err instanceof RequestAbortedError) {\n\t\tconsole.log(\"Request was cancelled by user\")\n\t} else {\n\t\tconsole.log(\"Request failed with other error:\", err)\n\t}\n})\n```\n\n## Anonymous Channels\n\n**Anonymous channels** are request-scoped channels. A request handler can call\n`this.channel()` to create a channel and return it, and the requestor's\n`request()` Promise resolves to a full `WebSocketChannel` instead of a plain\nvalue. This provides a scoped, two-way communication primitive for streaming,\npagination, and other multi-message patterns — all over a single WebSocket\nconnection.\n\nAnonymous channels should be explicitly closed when done. Use `chan.close()` to\nclean up locally; use `chan.abort()` to also notify the remote end (which closes\nits anonymous channel). Calling `emit` or `request` on a closed channel throws\nan error. If the remote end sends a cancellation for the channel, the local\nchannel is automatically closed and `closeSignal.reason` is set to the\nreconstructed cancellation reason.\n\n### One-way streaming (server pushes values to client)\n\nServer-side example:\n\n```javascript\nsocket.on(\"watchTemperature\", function () {\n\t// Create an anonymous channel\n\tconst chan = this.channel()\n\t// Register whatever listeners the client will emit on the channel\n\tchan.on(\"stop\", () => chan.close())\n\tchan.on(\"start\", () => {\n\t\t// Start pushing temperature readings once the client is ready\n\t\tconst timer = setInterval(() => {\n\t\t\ttry {\n\t\t\t\t// emit() / request() will throw if chan closes\n\t\t\t\tchan.emit(\"temp\", getSensorReading())\n\t\t\t} catch (err) {\n\t\t\t\tclearInterval(timer)\n\t\t\t}\n\t\t}, 1000)\n\t\t// Clean up when the channel is closed\n\t\tchan.closeSignal?.addEventListener(\"abort\", () => clearInterval(timer))\n\t})\n\t// Note: calling `chan.emit()` or `chan.request()` is not allowed here...\n\t// You have to return the channel first!\n\treturn chan // returning a channel sends it to the requestor\n})\n```\n\nClient-side example:\n\n```javascript\n// request() resolves to the anonymous channel\nconst chan = await socket.request(\"watchTemperature\")\nchan.on(\"temp\", (val) => console.log(\"Temperature:\", val))\nchan.emit(\"start\") // start emitting after \"temp\" event handler is registered\n\n// Stop the stream after 10 seconds\nsetTimeout(() => {\n\tchan.emit(\"stop\")\n\tchan.close()\n}, 10000)\n```\n\n### Two-way communication (sub-requests on the channel)\n\nServer-side example:\n\n```javascript\nsocket.on(\"openCalculator\", function () {\n\tconst chan = this.channel()\n\tchan.on(\"add\", function (a, b) {\n\t\treturn a + b // return value is sent back as a response\n\t})\n\tchan.on(\"multiply\", function (a, b) {\n\t\treturn a * b\n\t})\n\tchan.on(\"done\", () => chan.close())\n\treturn chan\n})\n```\n\nClient-side example:\n\n```javascript\nconst calc = await socket.request(\"openCalculator\")\nconst sum = await calc.request(\"add\", 3, 4) // 7\nconst product = await calc.request(\"multiply\", 6, 7) // 42\ncalc.emit(\"done\") // closes remote side\ncalc.close() // closes my side *OR* calc.abort() closes both sides\n```\n\n### Async iterator\n\nAnonymous channels have a built-in `[Symbol.asyncIterator]` implementation,\nenabling one-way streaming using `for await...of`. The handler drives the stream\nby emitting `\"next\"` events with `{ value, done }` payloads; the iterator emits\n`\"start\"` on the first call to `next()` to signal readiness.\n\nServer-side example:\n\n```javascript\nsocket.on(\"generateNumbers\", function () {\n\tconst chan = this.channel()\n\treturn chan.on(\"start\", () => {\n\t\tfor (let i = 1; i <= 100; i++) {\n\t\t\tchan.emit(\"next\", { value: i, done: false })\n\t\t}\n\t\tchan.emit(\"next\", { value: undefined, done: true })\n\t\tchan.close() // clean up server-side channel\n\t})\n})\n```\n\nClient-side example:\n\n```javascript\nconst chan = await socket.request(\"generateNumbers\")\nfor await (const value of chan) {\n\tconsole.log(value) // 1, 2, ..., 100\n}\n// Iterator completed; channel is still open, so we close it\nchan.close()\n```\n\n### `iterableHandler` — generators as stream handlers\n\n`iterableHandler` lets you write a streaming handler as a plain JS generator\n(sync or async) instead of wiring `\"start\"` / `\"next\"` events by hand. Return\nany sync or async iterable and ws-wrapper handles the rest.\n\n```javascript\nimport WebSocketWrapper, { iterableHandler } from \"ws-wrapper\"\n\n// Sync generator — yields items one by one\nsocket.on(\n\t\"generateNumbers\",\n\titerableHandler(function* () {\n\t\tfor (let i = 1; i <= 100; i++) yield i\n\t})\n)\n\n// Async generator — works with async data sources\nsocket.on(\n\t\"streamRows\",\n\titerableHandler(async function* (query) {\n\t\tfor await (const row of db.query(query)) {\n\t\t\tyield row\n\t\t}\n\t})\n)\n\n// Any iterable works — arrays, Sets, Maps, generators, ...\nsocket.on(\n\t\"listUsers\",\n\titerableHandler(() => activeUsers)\n)\n```\n\nThe client side is unchanged — `request()` resolves to the anonymous channel and\n`for await...of` consumes it:\n\n```javascript\nconst chan = await socket.request(\"generateNumbers\")\nfor await (const value of chan) {\n\tconsole.log(value) // 1, 2, ..., 100\n}\nchan.close()\n```\n\nIf the requestor aborts the anonymous channel mid-stream, the generator stops on\nthe next iteration. `yield` always evaluates to `undefined` since the stream is\none-way.\n\n### Signal inheritance\n\nWhen a requestor uses `signal()` with a `request()` that resolves to an\nanonymous channel, the AbortSignal is inherited by the anonymous channel. If the\nsignal aborts after the channel is created, `chan.abort()` is called\nautomatically, sending a cancellation to the remote end and closing the channel\nlocally.\n\n```javascript\nconst controller = new AbortController()\nconst chan = await socket.signal(controller.signal).request(\"startStream\")\n// The channel inherits the signal; aborting it aborts the channel.\ncontroller.abort()\n```\n\n> [!NOTE]\n>\n> `timeout()` is **not** inherited by the anonymous channel. To impose a time\n> limit on both the request and anonymous channel, pass an\n> `AbortSignal.timeout()` as the signal:\n>\n> ```javascript\n> const chan = await socket\n> \t.signal(AbortSignal.timeout(30_000))\n> \t.request(\"startStream\")\n> ```\n\n## API\n\nSee [API.md](API.md) for the full API reference, including:\n\n- `WebSocketWrapper` constructor and options\n- Channels (`socket.of()`)\n- EventEmitter-like API (`on`, `once`, `emit`, etc.)\n- Request / Response (`request`, `timeout`, `signal`)\n- Async Iterator (one-way streaming) and `iterableHandler`\n- Middleware\n- Other methods, properties, and error classes\n\n## Protocol\n\nSee [PROTOCOL.md](PROTOCOL.md) for the full wire protocol specification,\nincluding all message types (Event Dispatch, Request, Response, Request\nCancellation, Anonymous Channel messages, and more).\n\n## Auto-Reconnect\n\nws-wrapper does not implement auto-reconnect functionality out of the box. For\nthose who want it (_almost_ everyone), I have written some sample code to show\nhow easy it is to add.\n\n[How to implement auto-reconnect for ws-wrapper](https://github.com/bminer/ws-wrapper/wiki/Client-side-Auto-Reconnect)\n\nIf someone wants to make an npm package for the auto-reconnect feature, I'd be\nhappy to list it here, but it will probably never be a core ws-wrapper feature.\n","readmeFilename":"README.md"}