{"_id":"websocket-express","_rev":"14-3eaefcd79636867cf23696094ba367e5","name":"websocket-express","dist-tags":{"latest":"4.1.0"},"versions":{"1.3.13":{"name":"websocket-express","version":"1.3.13","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@1.3.13","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"ad6b90d19519b6c7390cbeade99033bf965dfd9b","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-1.3.13.tgz","fileCount":6,"integrity":"sha512-78pzzZxcEAYMVPBDLzXm1cP720XvXls9SML6x3QWBxtZ2cRH1zLcQCjSrBnsZl2IOtrCdqu0vBAtl8dZXLKgkg==","signatures":[{"sig":"MEQCIEMRyM27bJc2UhOHWYjVkOQTizCYh9K3s5w3apN5OS3qAiBfWrifg1xSfmes4DBvyx/JG0TEjdCclgdXjOW/P0IwiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSto7CRA9TVsSAnZWagAAuLoP/19DfLigrxUm9/IOIM5N\nDUqIHhOzsDSemeXvbWORFLfg0CaX7uY2vSDqqLPq0tbhdv8bZN30h8Q2VbsA\n3M/5J9wvMZPHeVk9yFQ/IlJfhQmAFOTnELkjZQOy5c7R/1hT3o9S+bMLwOk5\nGmfSAUGXkm8PVie4w/6tBnJ66WbYUGonm7oKIZo508CIM3iFtKqdRHm/G1fa\nGG2vd5R85nrEw5XL8hC7dlfqWXCxomDxakHCzhDOuMwODhgyDAnTAxtpy1Tj\nmiz+JT6/e1rTtvCfpK2ZX4cWPnwVIaNbvvwO1eSlj9K26xThVtF2X52cjDRa\nCbO3zb7GzhHvThKzp0tw95K8qJ1s1Ez5tu+xntTy8EET9bu6hynCDogffV9v\nx8pXI2Hx3YPScc8lgau0EswWvCI43T8qS7XmTf7YIxBqxi2uGmBxcHgoKtkr\nEgRXJtOufc/i0f7lgkVdMVoKtcxW0gUPM06le7KqmmnIGjfttzCKtuabrgs3\n8AXotRreJ9wt78C1wR7ugAxxRLA+BTSwu9Vcf1zoDcUWsxnXkVmXQQHAduxS\n3a9iW9NqSd6Q/W16/stc9Jg37oY0DfyJTggibW2hNe4cK1+i5HJ7Ttsaxsmr\n7RL/KViCHksOcVZcE1w7HovoIiYWr1rF9R8OURCPdqqiccmUUdtGL+5Wc4Lx\nVpUe\r\n=L4rd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"index.d.ts","gitHead":"73be3b27fbf63fd61c2faec83be3b3296057bd05","scripts":{"lint":"eslint --format codeframe --ext mjs,jsx,js src","test":"jest","build":"webpack --mode production","posttest":"npm run lint","test:watch":"jest --watch"},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"6.14.7","description":"express and ws combined","directories":{},"_nodeVersion":"14.8.0","dependencies":{"ws":"7.x","express":"4.x","@types/ws":"7.x","@types/express":"4.x"},"_hasShrinkwrap":false,"devDependencies":{"jest":"26.x","eslint":"7.x","webpack":"4.x","neutrino":"9.x","superwstest":"1.x","webpack-cli":"3.x","@neutrinojs/jest":"9.x","@neutrinojs/library":"9.x","@neutrinojs/airbnb-base":"9.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_1.3.13_1598741051216_0.6143700922267792","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"websocket-express","version":"1.4.0","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@1.4.0","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"9f718a4b29c1e260563aa2dae69b790938e91cee","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-1.4.0.tgz","fileCount":6,"integrity":"sha512-oJXxeHzBdlU6jekvyfZuDXgMtLHk89gu905swC0xAe1gUinJYLBdnoW7v4w7r2aeTihiftmxOlIRkuf7uQlGDg==","signatures":[{"sig":"MEYCIQDcaZ1bBytd5O9lGHjVNrpUBAV4kOl2VOHZaGx1hUy7xwIhAKNWQXvvPu0OxodXdqGpVfsGWuc0l/ZSmbK0aGCFBL5L","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYQSoCRA9TVsSAnZWagAA0hwP/it8ng/++JV0U6TTl0z5\nelRtG2XC+k5ydtVVeDf8vcv5ZEKBuwYiq1RVq1vScjm5k5zjPGhxTWuJQqjO\nTaJJhcuwv3pjvsiRdOjX1a1xGM+sSK6vVhV/Zi9d9oIU/Dt07hx+qmdTcAwi\ngpfHgSeujeHQUTNQhLWldjGqQey4fJ7411MiUw5DO6lbkc/iVK08Be5tph1E\ngTsQ7uDZojC7tS1SCXg7iij97qEysdAZ8pMi4Wy7dSb4sKlWhsNJTrhuNvOS\ngUSX2nqSSd7cBJH/Pdvmio64Ujz3lXzhmLXipgD08YmSgD8V8CzNFK8tHoy6\nsAUKzUz7iEOjIXoHRm1jthbxkjI5GoEOBDLzyUI3ryNwwU286ki78CmbG/RN\nzlE5Tp6ZfMQcgAJ5aFvHG71D4z6KDiTgwkk3vz33YKGKxLZToKbCiMk/XVqp\ncTLzCLuMgam8enJVS7G2buycBjdEAdgPX/qKbLAYO0dUi26e/R6hQiK5Dg6u\nW4d2049vl5+Bk9hx5no/PzZqIulG9eeepwAJJJDNgh/qF/uI6MoXbOFXAc5I\nYba6XlNhUrjsaR9iXmg4j5EgkPPCTT0eALreGTUNUFLXQvDAuz6vLgFMbkrf\nDr0gKebVzTonAtxvQ2F+dPY4jikMcJc0QJNaBS6YFezivgiLj2vSTd1bl1FV\n9joH\r\n=z1R0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"index.d.ts","gitHead":"b5fe1a1a2d38ad9af9b8eeb5b355241b2dcdcaa0","scripts":{"lint":"eslint --format codeframe --ext mjs,jsx,js src","test":"jest","build":"webpack --mode production","posttest":"npm run lint","test:watch":"jest --watch"},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"7.6.3","description":"express and ws combined","directories":{},"_nodeVersion":"15.12.0","_hasShrinkwrap":false,"devDependencies":{"ws":"7.x","jest":"26.x","eslint":"7.x","express":"5.0.0-alpha.8","webpack":"4.x","neutrino":"9.x","superwstest":"1.x","webpack-cli":"3.x","@types/express":"4.x || 5.x","@neutrinojs/jest":"9.x","@neutrinojs/library":"9.x","@neutrinojs/airbnb-base":"9.x"},"peerDependencies":{"ws":"7.x","express":"4.x || 5.x","@types/ws":"7.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_1.4.0_1616970920175_0.9386943856746712","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"websocket-express","version":"2.0.0","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@2.0.0","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"a18bf7083857aa8e818c9eb747db880f81747dfd","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-2.0.0.tgz","fileCount":6,"integrity":"sha512-ZPM+hQQ5XtVOcNuV3DfJc4QIyFiRZbIFVF5PvftKGgdLxI4x5laXSdQF2xuYIUtVmSQcNzGMa/Ht8wIA7lZxKw==","signatures":[{"sig":"MEUCIQDqvyCad6gtqnwZu8i/Us/leG9oHpeRnkrEkgQ9N1vPnAIgbwOzrmU6C59YQvVmPzN87BQT7a/E/7qQLrtNy8Kftj8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52844},"main":"build/index.js","types":"index.d.ts","gitHead":"0faf2a5e00c75df769006ea484ec8957342cbef7","scripts":{"lint":"eslint --format codeframe --ext mjs,jsx,js src","test":"jest","build":"webpack --mode production","posttest":"npm run lint","test:watch":"jest --watch"},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"7.19.1","description":"express and ws combined","directories":{},"_nodeVersion":"16.5.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","jest":"26.x","eslint":"7.x","express":"5.0.0-alpha.8","webpack":"4.x","neutrino":"9.x","superwstest":"1.x","webpack-cli":"3.x","@types/express":"4.x || 5.x","@neutrinojs/jest":"9.x","@neutrinojs/library":"9.x","@neutrinojs/airbnb-base":"9.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_2.0.0_1632351635672_0.7911998333043051","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"websocket-express","version":"2.0.1","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@2.0.1","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"d9793ce2192869a9641cd249e5f00089d66ddee5","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-2.0.1.tgz","fileCount":6,"integrity":"sha512-sENx1M+aJ/r1jxm+LZnjXktZPN+L8mbFpVC6ScxK1ELc1+C/EscrPUO1KLZMaP0DD08P0S+ei/Z/39pZMDlfvQ==","signatures":[{"sig":"MEUCIQD25wx8ZxLMvOfH0rcpKdr/wp67JS1VEFzlmo2tzYWqRwIgZPoBzwKugI8Yx+KH0BTYTsU7MDnIPGliAsj4JlGzMS0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3BIxCRA9TVsSAnZWagAAIzAQAICEksQwhnBwdbqoMNDB\nwykRQ8zgsGOLFJ+TlK/kiXGs7ep5w7v4cmVxeKINoDjEoWeVPNwW1UtbXVb4\ngJMpTnH06zw1S9dOJA9VFDBOBOsqOzuzTgUnxw+bCxwHdTb8LAohggqvZOuo\nf9SmvFrf6QdBidQABaETrdI2wQoMUyW/XBpbvbCTJTEOf+BFetU0ii5Akk0K\nN/k7rKRdvERhl05yWBtX7uar7crc9UBW60sO9E7/qWWRuzf9bcuLdQApqvoL\n7ubraPmwnh1qCfkM64rpgdArn+2XadnY3ujsjgq6XJpesWnTaA6jHifoUjFG\nWwV8Zawrk+d+ZNiXnei7hFo3VueLDAxMCoMVxNiSLfSlPwbkH0hXol4CNvCL\nZpRdQW/NtxShSKCmAXHIA9GEjJqqWOc5WgoGZHmKvceiOHS1Im9ldaanFBPa\n2S5rTi2PU0DMK/Oob2q4np8vPIlGIlXIhSaKPCWcV38aPW+LJ9HKeM6vzWe6\nVBkqkToCN5Gh1TT1ch/AvXhL64gRAa3aopX9Lg1Yc/j/MqhvqvZFrUfY3hZV\nwB/kiIYhzDHyxm5wvyLfJyM6FOQDQeAklugvDAs9L+tyf+PTJRdsFN1LFgIx\nOX1qLkLsDuvgi2lb67OMUbNyo0IZxDN5HVD00T6tWBvS+XV02sAYZJjbINUH\nMKvq\r\n=edd3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"index.d.ts","gitHead":"9fa362ff9e8a2f62aa52cc7ae5ec3d65a29569bd","scripts":{"lint":"eslint --format codeframe --ext mjs,jsx,js src","test":"jest","build":"webpack --mode production","posttest":"npm run lint","test:watch":"jest --watch"},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"7.19.1","description":"express and ws combined","directories":{},"_nodeVersion":"16.5.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","jest":"26.x","eslint":"7.x","express":"5.0.0-alpha.8","webpack":"4.x","neutrino":"9.x","superwstest":"1.x","webpack-cli":"3.x","@types/express":"4.x || 5.x","@neutrinojs/jest":"9.x","@neutrinojs/library":"9.x","@neutrinojs/airbnb-base":"9.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || ~5.0.0-alpha.1 || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_2.0.1_1632574970969_0.07232286835559742","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"websocket-express","version":"3.0.0","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@3.0.0","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"9008fe4ee7379ec85b9cebdef2168b2215636d71","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-3.0.0.tgz","fileCount":6,"integrity":"sha512-b8tKN2CtbBNTVY+G4A8IqxB1dpnuSqmMzpHiA30om7j9eQn0V52NTpGudg6gu9gKd0a/xh5PNQR+I1WSnQp7NQ==","signatures":[{"sig":"MEQCICvSsaG6EgtmRWyB9ZcbfhjJHtXpT6YaEmhyYls3uM88AiBR8yBzeMroSNzONxE1yIBBfBuuMvaBhYunpkAhJnBufQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkK1OcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMsA//cC3lF5o9mS9p4JeGklVzOlUOH5IDFHIRVlXs4MVSGdRusimu\r\nOYxKTkre7XtSBPyQtRk/pQY+DfcjouWycKnsfrLHxcsUS+e7GnP2aLZERJjl\r\nfjuvdas33inyVHRu0rbkgibzzNuioinsVE7YMc/SpYDjJJqkE/JNND7VFPAx\r\nNFRPjE4hV/CCAxFIApR5LXxwiM99j3+VR6wlHHtjSXJnXc2JcQ/+B894bLBr\r\nH3QT2kl1kCnj87yKi1IkqYjQhV9wF+h4+aEb0jBudJLdmf2T73NFZs9bqpWJ\r\nJKilgcrIMKgaxDIIhTyRvBFb7LcIbtFACUlrIExbBl1Ja8B8lXIa+DDL/pku\r\ns6kt0VUJxTUqKeEqLiy1KTZYE467l4+kkPCvSzDz9md6p9MHWcWZWUG6yJ44\r\nrEysUx8zm+r99RKpo/iBCjCl+NklSOg4RsMeO4ohdT66wKNsKOapZoq04kBc\r\nAhHuQHLLDXUn3wY7GzgKWTHlxRgB/S+vFwBO8hpS0vvi08R6mZh6FDVW+ARY\r\njkslZLR5Jt3f2Y6nNRgxWHytSNvJTf5XJoxK3bmtKhq7Nn5frqhIe6oNMe+N\r\nC6OvtD3T/NbLqRkCFujEWrQRNpCoJMKNyhTAGmIQZE0eJX1741hlirlP53ok\r\ndb0NpLSiaUGzQ3BX6sYuEzzEQrfKf+d5Joc=\r\n=JThu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"89bbbc13586ed81fc0d7a5b82de500269b9bd64c","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"9.3.1","description":"express and ws combined","directories":{},"_nodeVersion":"18.14.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"3.x","express":"4.x","prettier":"2.8.7","lean-test":"2.x","supertest":"6.x","superwstest":"2.x","@types/express":"4.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || ~5.0.0-beta.1 || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_3.0.0_1680561051910_0.33379201396715996","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"websocket-express","version":"3.1.0","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@3.1.0","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"2093801560ad669df46b640b456acdbc50b114c8","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-3.1.0.tgz","fileCount":6,"integrity":"sha512-QpAo71sJR/qWT+i7I26gWUbJyPGmfzjGWIGIj6ArOs2Wo0tYT45Q+6C57R+HKbfjVMsEkR+nn/Eng8h5qtbgHA==","signatures":[{"sig":"MEQCIEGJAw9luyCvPrl9QUUo6sUeX1Z+iIOSD7Q0Ft8LsKeSAiAPJ4riIZ4djU+KOhikDsfOubJiXjY+xwjxT0aUNgHurw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":45536},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"0e15a2eb16afa0bfbd3a5623115c41957ae7a3d2","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"9.3.1","description":"express and ws combined","directories":{},"_nodeVersion":"18.14.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"3.x","express":"4.x","prettier":"2.8.7","lean-test":"2.x","supertest":"6.x","superwstest":"2.x","@types/express":"4.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || ~5.0.0-beta.1 || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_3.1.0_1688827286887_0.09542721588496539","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"websocket-express","version":"3.1.1","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@3.1.1","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"1bcb78f9fb7286dfd4afe894c34db14b471cc433","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-3.1.1.tgz","fileCount":6,"integrity":"sha512-vFxdvmtcj01+XZFq26MU9a687wlc/TfenE7bh4HslqFZLDydWxZ8mjbGtYpReq3JMjV9OD1qgZSYSU+GNJhK0Q==","signatures":[{"sig":"MEYCIQDmltwDwxovfdDhfhMqkYnyrYPCYOhDgMmsw8C4xsAsUwIhANIz8pQoEvqHw9ue0BYSImdZ2USWdQa2u0dT7PhMwV09","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46672},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"a4539e77b19cdc2bee4e35c4977476d399c2e202","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"10.8.2","description":"express and ws combined","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"4.x","express":"4.x","prettier":"3.3.3","lean-test":"2.x","supertest":"7.x","superwstest":"2.x","@types/express":"4.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || ~5.0.0-beta.1 || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_3.1.1_1727162711212_0.9059366096443928","host":"s3://npm-registry-packages"}},"3.1.2":{"name":"websocket-express","version":"3.1.2","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@3.1.2","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"67714b3bb1258fab8a79ae95d1f78f4a94ae6bf2","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-3.1.2.tgz","fileCount":6,"integrity":"sha512-/gIz4X+bXRROH/YI1QHb1YE+kPkq1ZVsP0E9FgoOSRvR3pSo+XUx1KYobpDvqnPnD0pu6KdiMn9v3RWogv7RPQ==","signatures":[{"sig":"MEUCIDc091I7IM67Rg9ZwVmTZtn9O+9JJmnfPnAww+MKw+EjAiEA8aanLleK2l8INmR3WbvGM3pNZvisKehukF/vK/hPPmE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46682},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"9128a463c39f71fb55de5736c947e839f20e77e8","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"10.8.2","description":"express and ws combined","directories":{},"_nodeVersion":"20.17.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"4.x","express":"4.x","prettier":"3.3.3","lean-test":"2.x","supertest":"7.x","superwstest":"2.x","@types/express":"4.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || ~5.0.0-beta.1 || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_3.1.2_1729878800035_0.641687586493241","host":"s3://npm-registry-packages"}},"3.1.3":{"name":"websocket-express","version":"3.1.3","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@3.1.3","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"c643bca414d2846173a8e68c9b2b9dd348ae28a5","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-3.1.3.tgz","fileCount":6,"integrity":"sha512-/MBGyJPFm/T8uP8/IqBa6JuCuxBYgHgpCKFMTZmSojymwV51AVFP+nUzDalB9zjZ3ofHk4mgE7U4rbM0xlQTAQ==","signatures":[{"sig":"MEQCICQP5cJYAhAQb1hDxma7IfwpfFYdEMJnqAXQWyKycHCMAiApD0FsW3+YwP0jqJC7B6sS76m5By6eZYYSfRB8tTKQOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47300},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"d2bc553920c1c087c5900975a783114ef32144ba","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"11.3.0","description":"express and ws combined","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"4.x","express":"5.x","prettier":"3.5.3","lean-test":"2.x","supertest":"7.x","superwstest":"2.x","@types/express":"5.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || ~5.0.0-beta.1 || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_3.1.3_1749748871879_0.5391637189498566","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"websocket-express","version":"4.0.0","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@4.0.0","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"06aa3e24b3b30057988ed69cc380bd712c6efdbe","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-4.0.0.tgz","fileCount":6,"integrity":"sha512-h/mNjH0gPHe+FNNfQipmsxNlDezV5rVdhNwRe+M3n5+eeG98sj5amK1YIE4sJps4yyzikgrSjxrgXh+56xo26A==","signatures":[{"sig":"MEUCIQDL1CJJWtiIWNLQ9d+bCGtHCmFC0HNBrRwGg7UIN6MqQgIgY5NeMUo7JGD5KpYoIeInbfMQj8oynLaq6pZE8cp3MHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47510},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"19d8e9eff9554872edcfd0fc551bd69a3f8ee363","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","actor":{"name":"davidje13","type":"user","email":"refacto.app@gmail.com"},"email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"11.3.0","description":"express and ws combined","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"4.x","express":"5.x","prettier":"3.6.2","lean-test":"2.x","supertest":"7.x","superwstest":"2.x","@types/express":"5.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_4.0.0_1752136589110_0.41231584528123455","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"websocket-express","version":"4.0.1","keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","_id":"websocket-express@4.0.1","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"homepage":"https://github.com/davidje13/websocket-express#readme","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"dist":{"shasum":"e063fe77a22788176c6925fbdf4bea957c4ba7bc","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-4.0.1.tgz","fileCount":6,"integrity":"sha512-Mjcpu1XfuAknVXA8bADHQNqp6iTk7fbj5ldhTatxsEAp67l/EbGAljGDGlUokpfBWZw2u34vauvlaTnbltGR4A==","signatures":[{"sig":"MEYCIQD2NifKAtjUMevFR6/seYfcOX4pZ35yYMENdsxfqAp3gwIhAIALZjnFKdRocKoYKXdIHPBlbMLTYdHSAc6MVXzEiHGi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47924},"main":"build/index.js","types":"index.d.ts","module":"build/index.mjs","gitHead":"40329a099a0ad8791cc3c04e0848d8168e6e983a","scripts":{"test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check .","build":"rollup --config rollup.config.mjs","format":"prettier --write ."},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"repository":{"url":"git+https://github.com/davidje13/websocket-express.git","type":"git"},"_npmVersion":"11.3.0","description":"express and ws combined","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"devDependencies":{"ws":"8.x","rollup":"4.x","express":"5.x","prettier":"3.6.2","lean-test":"2.x","supertest":"7.x","superwstest":"2.x","@types/express":"5.x"},"peerDependencies":{"ws":"7.x || 8.x","express":"4.x || 5.x","@types/ws":"7.x || 8.x","@types/express":"4.x || 5.x"},"_npmOperationalInternal":{"tmp":"tmp/websocket-express_4.0.1_1753170265478_0.9318968690534974","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"websocket-express","version":"4.1.0","description":"express and ws combined","main":"build/index.js","module":"build/index.mjs","types":"index.d.ts","scripts":{"build":"rollup --config rollup.config.mjs","format":"prettier --write .","test":"rm -rf build || true; lean-test --parallel-suites && npm run build && packagetest/run.sh && prettier --check ."},"repository":{"type":"git","url":"git+https://github.com/davidje13/websocket-express.git"},"keywords":["express","ws","WebSocket","WebSockets"],"author":{"name":"David Evans"},"license":"MIT","bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"homepage":"https://github.com/davidje13/websocket-express#readme","peerDependencies":{"@types/express":"5.x","@types/ws":"8.x","express":"5.x","ws":"8.x"},"peerDependenciesMeta":{"@types/express":{"optional":true},"@types/ws":{"optional":true}},"devDependencies":{"@types/express":"5.x","@types/ws":"8.x","express":"5.x","lean-test":"2.x","prettier":"3.8.3","rollup":"4.x","supertest":"7.x","superwstest":"3.x","ws":"8.x"},"gitHead":"e7b2ad32db02b501d31a6eb760e94bef7c30b979","_id":"websocket-express@4.1.0","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-uzUiDsGkTAe//bUPTBDNRF0DOXlQj0Vh6UVbRuKnh+qr75WyP5HpcDORMTuQWMIjnhpO7gjoP3s223hkeJs0hQ==","shasum":"ea226de4b12bed8d01b9ccd4e747ec8ebc369e39","tarball":"https://registry.npmjs.org/websocket-express/-/websocket-express-4.1.0.tgz","fileCount":6,"unpackedSize":48011,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC0sAVXA4bJYXBhdaeWtgMwCwzk/tjNgfzuiuxYm1as6wIgUQVSP5WISmiS8rlR5j5q4cByXeKgm2zoIgoHjHNefkc="}]},"_npmUser":{"name":"davidje13","email":"refacto.app@gmail.com"},"directories":{},"maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/websocket-express_4.1.0_1777462229111_0.6444574431010586"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-29T22:44:11.215Z","modified":"2026-04-29T11:30:29.356Z","1.3.13":"2020-08-29T22:44:11.359Z","1.4.0":"2021-03-28T22:35:20.357Z","2.0.0":"2021-09-22T23:00:36.234Z","2.0.1":"2021-09-25T13:02:51.107Z","3.0.0":"2023-04-03T22:30:52.263Z","3.1.0":"2023-07-08T14:41:27.089Z","3.1.1":"2024-09-24T07:25:11.506Z","3.1.2":"2024-10-25T17:53:20.288Z","3.1.3":"2025-06-12T17:21:12.090Z","4.0.0":"2025-07-10T08:36:29.299Z","4.0.1":"2025-07-22T07:44:25.670Z","4.1.0":"2026-04-29T11:30:29.249Z"},"bugs":{"url":"https://github.com/davidje13/websocket-express/issues"},"author":{"name":"David Evans"},"license":"MIT","homepage":"https://github.com/davidje13/websocket-express#readme","keywords":["express","ws","WebSocket","WebSockets"],"repository":{"type":"git","url":"git+https://github.com/davidje13/websocket-express.git"},"description":"express and ws combined","maintainers":[{"name":"davidje13","email":"refacto.app@gmail.com"}],"readme":"# WebSocket Express\n\nExtends [express](https://expressjs.com/) with WebSocket capabilities from\n[ws](https://github.com/websockets/ws). This allows an easy syntax for handling\nWebSockets as well as allowing a single server to handle both HTTP and WebSocket\nrequests.\n\nThis project is similar to (and takes some inspiration from\n[express-ws](https://github.com/HenningM/express-ws), but chooses to provide a\nseparate API rather than monkeypatching the express objects, and supports\nasynchronous operations in all locations.\n\n## Install dependency\n\n```bash\nnpm install --save websocket-express ws express @types/ws @types/express\n```\n\n`ws` and `express` are required as peer dependencies of `websocket-express`.\n`@types/ws` and `@types/express` must be added if you are using TypeScript in\nyour project)\n\n## Usage\n\n```javascript\nimport { WebSocketExpress, Router } from 'websocket-express';\n\nconst app = new WebSocketExpress();\nconst router = new Router();\n\n// Simple usage:\nrouter.ws('/path/foo', async (req, res) => {\n  const ws = await res.accept();\n  ws.on('message', (msg) => {\n    ws.send(`echo ${msg}`);\n  });\n  ws.send('hello');\n});\n\nrouter.ws('/path/bar', async (req, res) => {\n  const ws = await res.accept();\n\n  ws.send('who are you?');\n\n  const message = await ws.nextMessage({ timeout: 1000 });\n  ws.send(`hello, ${message.data}`);\n\n  ws.close();\n});\n\n// Asynchronous accept/reject:\nrouter.ws('/path/ws-async', async (req, res, next) => {\n  const acceptable = await myAsynchronousOperation();\n  if (acceptable) {\n    const ws = await res.accept();\n    ws.send('hello');\n  } else {\n    next();\n  }\n});\n\n// Transactions:\nrouter.ws('/path/transactional', async (req, res) => {\n  const ws = await res.accept();\n\n  try {\n    res.beginTransaction();\n    ws.send('hello');\n    ws.send('this is a long series of messages');\n    ws.send('and all messages will be sent');\n    ws.send('even if the server is asked to close()');\n    ws.send('although they may be stopped if the server crashes');\n\n    await myAsynchronousOperation();\n\n    ws.send('still included');\n  } finally {\n    res.endTransaction();\n  }\n\n  ws.send('this message might not be included');\n  ws.send('because the transaction has finished');\n});\n\n// Full Router API of express is supported too:\nrouter.get('/path/foo', (req, res) => {\n  res.end('response to a normal HTTP GET request');\n});\n\n// use sends both HTTP and WS requests to the middleware / router:\napp.use(router);\n\n// useHTTP allows attaching middleware only to HTTP requests:\napp.useHTTP(middleware);\n\n// the setting 'shutdown timeout' can be set to automatically close\n// WebSocket connections after a delay, even if they are in a\n// transaction\napp.set('shutdown timeout', 1000);\n\n// create and run a server:\nconst server = app.createServer();\nserver.listen(8080);\n\n// or attach to an existing server:\nconst server = http.createServer();\napp.attach(server);\nserver.listen(8080);\n```\n\nIf you have a vanilla express `Router` or middleware (e.g. from an external\nlibrary), it is recommended to use `useHTTP` rather than `use` to attach it, to\nensure it is not confused by WebSocket requests.\n\nThe `static`, `json` and `urlencoded` middleware is bundled by default and\nignores WebSocket requests, so `use` is fine:\n\n```javascript\nimport { WebSocketExpress } from 'websocket-express';\n\nconst app = new WebSocketExpress();\napp.use(WebSocketExpress.static(myDirectory));\n```\n\nExample integration with an external websocket server library (socket.io):\n\n```javascript\nimport { Server } from 'socket.io';\nimport { WebSocketExpress } from 'websocket-express';\n\nconst app = new WebSocketExpress();\napp.ws('/socket.io/*', (req, res) => res.abandon()); // /socket.io requests are handled by socketioServer\n// register other websocket and non-websocket endpoints as normal\n\nconst server = app.createServer();\nconst socketioServer = new Server(server);\n// configure socketioServer as normal\n\nserver.listen(8080);\n```\n\nNote that if you `abandon` a request which is _not_ handled by another library,\nthe connection will hang until the client eventually times out. This may be\nparticularly problematic when shutting down the server: `websocket-express` will\nnormally close all remaining websocket connections automatically when\n`server.close` is called, but it will not close abandoned connections. This may\ndelay the process termination, as NodeJS will remain active as long as any\nconnections are open.\n\n## API\n\nThe main method is `Router.ws`. This accepts a (possibly asynchronous) function\nwith 3 parameters: the request, the response, and a `next` callback to be\ninvoked if the request is rejected for any reason.\n\nIf the request is accepted, the function should call `accept` to get a\nWebSocket, attach `message` and `close` event listeners and can continue to\nhandle the WebSocket as normal.\n\nIf the request is rejected, `next` should be called (possibly with an error\ndescription), and the next possible handler, or the error handler, will be\ncalled (according to the standard express logic).\n\nIf no handlers are able to accept a WebSocket request, it will be closed (with\ncode 4404 by default). If you want another library to handle the request (e.g.\nsocket.io), you can call `abandon` to stop any further handling of the request.\n\nIf an exception is thrown, the socket will be closed with code 1011.\n\nAs with `get` / `post` / etc. it is possible to register a WebSocket handler\nunder the same URL as a non-websocket handler.\n\n- `Router.useHTTP` / `App.useHTTP` behaves like `Router.use` in express. It will\n  invoke the middleware or router for all non-WebSocket requests.\n\n- `Router.all` is similarly updated to apply only to non-WebSocket requests.\n\n- `Router.use` / `App.use` will invoke the middleware or router for _all_\n  requests.\n\n- `Router.ws` will invoke the middleware only for WebSocket requests.\n\n- `App.createServer` is a convenience method which creates a server and calls\n  `attach` (see below).\n\n- `App.attach` will attach the necessary event listeners to the given server\n  (e.g. if you want to use a https server, or a long-lived server with hot\n  reloading).\n\n- `App.detach` will remove all attached event listeners from the given server.\n\n- `App.set('shutdown timeout', millis)` configures a timeout (in milliseconds)\n  used by `close()`, after which connections will be forced to close even if\n  they are in a transaction.\n\nThe `response` parameter passed to websocket handlers has additional methods:\n\n- `res.accept()` accepts the protocol switch, establishing the websocket\n  connection. This returns a promise which resolves to the newly established\n  websocket.\n\n- `res.reject([httpStatus[, message]])` returns a HTTP error instead of\n  accepting the websocket connection. Defaults to HTTP 500.\n\n- `res.abandon()` stops all further processing of the connection. This should be\n  used if you want to delegate to another library which has also registered an\n  `upgrade` listener on the server. Note that this is provided as an escape\n  hatch; in general you should try to `accept` the connection and pass the\n  websocket to other libraries, as this will handle lifecycle events (such as\n  closing the server) more gracefully.\n\n- `res.sendError(httpStatus[, websocketErrorCode[, message]])` sends a HTTP or\n  websocket error and closes the connection. If no explicit websocket error code\n  is provided and the websocket connection has already been established, this\n  will default to `4000 + httpStatus` (e.g. HTTP 404 becomes websocket error\n  4404).\n\n- `res.send(message)` shorthand for accepting the connection, sending a message,\n  then closing the connection. Provided for compatibility with the `express`\n  API.\n\n- `res.beginTransaction()` / `res.endTransaction()` mark (nestable) transactions\n  on the websocket connection. While a transaction is active,\n  `websocket-express` will avoid closing the connection (e.g. during server\n  shutdown). These should be used to wrap short-lived sequences of messages\n  which need to be sent together. Do not use these for long-lived operations, as\n  it will delay server shutdown. To ensure `endTransaction` is called, it is\n  recommended that you use the pattern:\n\n  ```javascript\n  try {\n    res.beginTransaction();\n    // transaction code\n  } finally {\n    res.endTransaction();\n  }\n  ```\n\nThe WebSocket returned by `accept` has some additional helper methods:\n\n- `ws.nextMessage` will return a promise which resolves with the next message\n  received by the websocket. If the socket closes before a message arrives, the\n  promise will be rejected. You can also specify a timeout (with\n  `nextMessage({ timeout: millis })`) to reject if no message is received within\n  the requested time.\n\n  The object returned by `nextMessage` has a `data` element (a `String` if using\n  `ws` 7.x and the message is text, or a `Buffer` if the message is binary, or\n  if using `ws` 8.x), and an `isBinary` boolean. You can use\n  `String(message.data)` to convert the `Buffer` to a string using UTF8\n  encoding, matching `ws` 7.x's behaviour.\n\n## Breaking changes / migration guide\n\n- Version 4 fixes an issue with routing where websocket handlers would\n  incorrectly match sub-paths. To keep the previous behaviour, add an explicit\n  `/*rest` to the end of your websocket route.\n","readmeFilename":"README.md"}