{"_id":"@moq/qmux","_rev":"14-2408f7242fe993253cb9a1dd27dd5ab4","name":"@moq/qmux","dist-tags":{"latest":"0.3.3"},"versions":{"0.0.1":{"name":"@moq/qmux","version":"0.0.1","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.0.1","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"dd796e8e8baa972e1fbf606e6c5f4afcd3445db0","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.0.1.tgz","fileCount":14,"integrity":"sha512-t5HJYkxjM9DQY1BJ7KZY/Umu6cZU68SPPlup4/Oya9Kf2EWY8N+SlQmQKncCWeXXPxuzMT2XmN4Yn9W91QYB7Q==","signatures":[{"sig":"MEYCIQCdObhtCbfYNIvOqf17eo+AQZiy5dXXgAg8RSZUDmPEGQIhALHJYXqfyby3SiehzzCU0XW8DqMGpZtwX+BkRc+0/tC6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46535},"type":"module","_from":"file:moq-qmux-0.0.1.tgz","types":"./index.ts","exports":{".":"./index.js"},"_npmUser":{"name":"kixelated","email":"kixelated@gmail.com"},"_resolved":"/private/var/folders/56/n8qwl6ln723_w57s4syx7b6r0000gn/T/nix-shell.LTIWKd/0a687247bd630c235ca9627799e9d1c9/moq-qmux-0.0.1.tgz","_integrity":"sha512-t5HJYkxjM9DQY1BJ7KZY/Umu6cZU68SPPlup4/Oya9Kf2EWY8N+SlQmQKncCWeXXPxuzMT2XmN4Yn9W91QYB7Q==","repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"10.9.2","description":"QMux protocol (draft-ietf-quic-qmux-00) over WebSockets","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.0.1_1773361415557_0.86126104446548","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@moq/qmux","version":"0.0.3","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.0.3","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"db6de38715d80610ea20bf475302ea5195a5d21d","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.0.3.tgz","fileCount":2,"integrity":"sha512-uxAZF3hEzfy5/n8XW8mZou2WswZhbmPN4zEGCPJY7NDD4FB15ogseoJZmWO+RMGqsw5+Bq+IG2EVJPojhUI8OQ==","signatures":[{"sig":"MEYCIQDHMrBDMFg+ksNt2lF/ly8nbG8mdP9rIIs6X3D0PhFvYAIhAIzuwY+s868AeSfZW/APVPrDAyutaHN15dgiHh7XWSix","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2358},"type":"module","types":"./index.ts","exports":{".":"./index.js"},"gitHead":"c5605e54bd1d9af5c5982c7677ad99e2a1ec63f6","_npmUser":{"name":"kixelated","email":"kixelated@gmail.com"},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"10.9.2","description":"QMux protocol (draft-ietf-quic-qmux-00) over WebSockets","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.0.3_1773690456516_0.381611569002398","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@moq/qmux","version":"0.0.4","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.0.4","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"1d96cbb37ca87ff8e5e9f41ef023909c92727a6e","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.0.4.tgz","fileCount":2,"integrity":"sha512-849pSlfvy/Lk5rq9M49ZVSUrway/CIwLBsL50NYdxZS8TUW4QuMVQhKEwy5VzUL/oXLMulivQmKiLA6LM+6U/w==","signatures":[{"sig":"MEUCIQCkh9Cnq+X9rLDyqfsih9Q7VNHf36zZAH03NBVAAjZD7gIgQj2nPtC/9ec9vflDplnLvYZIa4SUOu+l43tXp1cCnIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687},"type":"module","types":"./index.ts","exports":{".":"./index.js"},"gitHead":"0e828572dfd02cd30f4a4ef50aa97f0ffbbc1bb2","_npmUser":{"name":"kixelated","email":"kixelated@gmail.com"},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"10.9.2","description":"QMux protocol (draft-ietf-quic-qmux-00) over WebSockets","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.0.4_1773775543654_0.7899099008900816","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@moq/qmux","version":"0.0.5","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.0.5","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"55e4aa0c6f3ba462704289bd004259a9481d7791","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.0.5.tgz","fileCount":2,"integrity":"sha512-KarSvu7rOQ9XVC5qmVel753BERSo+RovfvnY/An2NYeT05yELED0E44kunJG0PXwN/5SM6tdtEGBdlMKHQ/30w==","signatures":[{"sig":"MEUCIQCp2osc/+Hh7q/phX+tSxMSnpHTAAv+xlnWhay65/WCEAIgNeeC0Tyl+rjlmgYcYhgyJUz4gdqWSz/8IYYyQRGVk9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1745},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"690f28a64eef386c53b4f1bb0e59d706e807cae8","_npmUser":{"name":"kixelated","email":"kixelated@gmail.com"},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"10.9.2","description":"QMux protocol (draft-ietf-quic-qmux-00) over WebSockets","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.0.5_1773788366170_0.00957833220714055","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@moq/qmux","version":"0.0.6","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.0.6","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"fbef941c04567ae2a70758127477bcda31705126","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.0.6.tgz","fileCount":14,"integrity":"sha512-ISuGz05lUvf1hzHW3Aw3VnsGRJe1w9Qdog3LQ66KS+l+5mzQsPANvW8yOioEe1Z9dJO2G3sAHoGPnzwnsY9SIQ==","signatures":[{"sig":"MEUCIQD0I6XbML8784mimLVy4MdMDFs46EyOJwkWzlF2EElIKwIgBdqOoIV17aM+LsIkygNyY/B6ofV9qJaQszmxf7Py984=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63411},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"690f28a64eef386c53b4f1bb0e59d706e807cae8","_npmUser":{"name":"kixelated","email":"kixelated@gmail.com"},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"10.9.2","description":"QMux protocol (draft-ietf-quic-qmux-00) over WebSockets","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.0.6_1773789928915_0.5322802730852703","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@moq/qmux","version":"0.1.0","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.1.0","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"4308cf2d927b584574d0c876f166b767c5546d76","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.1.0.tgz","fileCount":18,"integrity":"sha512-9Iieb+iV4WmZew62KsOuVwvTwLNQV6by6DT76qDuU0i3yfOYrVs56LGEvxvAn+Da2rlLlA2z4Mjq9HdeuAkxfw==","signatures":[{"sig":"MEQCIFgaNcXk2jTRixu1dP0IiMHM3neZSdlDMqNIvmGjsUzDAiBhLeCMpYS9sOYwKA5qIj2kKeb0Gl4vpBRbNlwgT/ojiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90487},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"bbcf28a1908bbbc369d18a452a94ae490f8d57ac","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-01) over WebSockets","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.1.0_1779928490409_0.8250778659996132","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@moq/qmux","version":"0.1.1","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.1.1","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"01bc91a95fa0648f7b75011e4c07e32f9cd1efe8","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.1.1.tgz","fileCount":18,"integrity":"sha512-ljrQzBiKk3/yQ1+DCmI/F24CYzfePDSt/SUVWNjdtCsOn1CO/9EXHz8CLMlaA1ZFBviAJhWxc4B0CZw6x0E1Wg==","signatures":[{"sig":"MEUCICgjUpAFTodDVhTqC+s0OBj/2e2tVzybsQLHCTqP/3M6AiEA8zN4MFPdiWqjkwgEvKlTP9iDX9vx1L98hWXh4PG9uxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96379},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"c1ea02f9c5998e6315630bf5eb87762b3f7d8e00","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-01) over WebSockets","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.1.1_1780111327651_0.2523829682965857","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@moq/qmux","version":"0.1.2","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.1.2","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"bb5150f083850d665213671db989d125e9774106","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.1.2.tgz","fileCount":30,"integrity":"sha512-1M+b13xYtp7jwkvwjSu+SPNQmBUGFCu6YDhuR+TmdrbdM6ERott/xqSrX9I1XP8l0FivZZ+fmD/drghYkj0FIQ==","signatures":[{"sig":"MEYCIQCGcKGtEPrJbU+ceTkLofTVFPqAzr3IkHJoV4aLK/OrSAIhALj5pNpWMHARhYemltkUpDJf7Llk5nm00/fEVsT2frjY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":145351},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"3f71a137e2da1bf751ce644b1d50e863dec20b48","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-01) over WebSockets","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@moq/web-socket-stream":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.1.2_1780942825020_0.9871687718766584","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@moq/qmux","version":"0.1.3","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.1.3","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"ca61b1e1843fe68592fa522ac9ebca93506bb07d","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.1.3.tgz","fileCount":30,"integrity":"sha512-naGmMMOxCSMeLyEATrLiY9RGyeZENC4dHFVVNWNcA17LXE9NwM3aQrQY218xXypWahYIgIkl/ZCutIP2xHibgA==","signatures":[{"sig":"MEUCIDZkHo3rpUUKEGG5K6PedM+6fwMC/V94c/XLDhzbHtrmAiEA8MkOo7WFW/ejxQ5+lHCOUr2a3vpTIfvyRxTHaHu19Zg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":145351},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"dec136fe11dd95e5d4ca6d4754933af02087e4ad","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-01) over WebSockets","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@moq/web-socket-stream":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.1.3_1781539791424_0.7257933804793388","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@moq/qmux","version":"0.2.0","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.2.0","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"df86e2e495310b486a04ba66210a78d4122ce7a5","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.2.0.tgz","fileCount":30,"integrity":"sha512-ptvwL6weWNhdG8P4zusQkqj69n9LJwAdk6XfgyqwRNPDq/4eQ7mzlzTmL+VopzMei8RKQSMJclnZeBjoW1gsYw==","signatures":[{"sig":"MEUCIQCBZH+2/MdS1LsGLZA421O927qJi8yExSFusQrPfrE22gIgPh2GYEj5gUYA+yvHW6hkX6yvR7v6GpuPhCV1XJCjwmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":169921},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"c924bb07b6940d3d9a453524a01a904a7a90d344","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-01) over WebSockets","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@moq/web-socket-stream":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.2.0_1783108493671_0.05623320882355132","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@moq/qmux","version":"0.3.0","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.3.0","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"9fa7aa18b9cc5e9350288593c80eed6d461ba089","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.3.0.tgz","fileCount":34,"integrity":"sha512-0DchimaN2XaxdRhk5e+vVyTPAYxRZObNPqPWIwhesIiXCT9xJsZ5ltpQhXD/S3OPjrFk0aEH3rRmP0THdD0Ukw==","signatures":[{"sig":"MEYCIQCnMGPqMDQjlM72cXI9TAtPCzIsUHXhHzcXffXOymysxgIhAPN/YvZFQa5DxMmW23XFLSC1SZWmZRYEVwLF7FRSgkSX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":218032},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"209be798347fb811d3efe16c4b6ad511b3ff51b1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-02) over WebSockets","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@moq/web-socket-stream":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.3.0_1783972909220_0.10854338825685383","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@moq/qmux","version":"0.3.1","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.3.1","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"873c330ed6e2c535e9901c4ace1e06a8b7ac140d","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.3.1.tgz","fileCount":34,"integrity":"sha512-0bSa8S8Mpr6J/kM94MgPRCPefmLhFwMzkFpNsu873SuS5Jne4oYzXoud/5tyDDoS5JAXb1/KBOBrim55qSrViA==","signatures":[{"sig":"MEYCIQDy3TYsJkF/pWwnymdSG6NLIEpOCuPF4ba2oa87fOKxBwIhAMdUzbqZaaDPDZpfhLejiUOw99cObDjK1rNdzvaikFX9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":265999},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"9c1fa09d0d93cfdfeb7f43f1d44ab671945bb86a","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-02) over WebSockets","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@moq/web-socket-stream":"^0.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.3.1_1784607236622_0.727202071538664","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@moq/qmux","version":"0.3.2","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","_id":"@moq/qmux@0.3.2","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"homepage":"https://github.com/moq-dev/web-transport#readme","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"dist":{"shasum":"9af7bfbf197ad8288845805166098a7e135d26cf","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.3.2.tgz","fileCount":36,"integrity":"sha512-8ymBriVxvD5ISfnTJ3k07Zzt4pBOoh/JnulGCjenY2NrUdCr5PUOy42y/9drSXA3SfCfOdaw4A+BSrWN92qVvg==","signatures":[{"sig":"MEUCIDXOOy4NITiQntbEI1Fr8KVU8x8VCIiuT6gMjJQ5AwyBAiEAieQvXmGHT0Bd6hIfMrShcsIDxOnXPxkBgS+uA9bw0IQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":279863},"type":"module","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"gitHead":"0ce15eddd9fe155aebd6e94a2c892a25ef009648","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"repository":{"url":"git+https://github.com/moq-dev/web-transport.git","type":"git"},"_npmVersion":"11.6.2","description":"QMux protocol (draft-ietf-quic-qmux-02) over WebSockets","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@moq/web-socket-stream":"^0.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/qmux_0.3.2_1785181959077_0.9105295389434349","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@moq/qmux","author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"version":"0.3.3","description":"QMux protocol (draft-ietf-quic-qmux-02) over WebSockets","type":"module","license":"(MIT OR Apache-2.0)","repository":{"type":"git","url":"git+https://github.com/moq-dev/web-transport.git"},"exports":{".":{"types":"./index.d.ts","default":"./index.js"}},"types":"./index.d.ts","dependencies":{"@moq/web-socket-stream":"^0.1.1"},"keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"gitHead":"9c70649d0d88f08fe2dcaa53b033df0f56190670","_id":"@moq/qmux@0.3.3","bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"homepage":"https://github.com/moq-dev/web-transport#readme","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Ez1GCVwpyNGB0eWvhKIXOjXrfRlMdmO0lpJ7gqInZFzsOsYTyML0WRgh24Itczp9Kev0CXsUA/K+XrGs1dRKUA==","shasum":"4cd04d3a07c1a017d0758e70225b7e5b5396d4b9","tarball":"https://registry.npmjs.org/@moq/qmux/-/qmux-0.3.3.tgz","fileCount":36,"unpackedSize":297080,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@moq%2fqmux@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDE9YRGigmSrJ3aGlY0vAIX5tItbCa0Q+BL0Dlxw+g8vQIgIiPc3QzfrhY1wHVjN0Vp8ESjvAI/1fzB/WanAzIHIs8="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6ff83d5e-f305-4d32-9d40-f37a14965a4e"}},"directories":{},"maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/qmux_0.3.3_1785990875051_0.14566416076306443"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-13T00:23:35.446Z","modified":"2026-08-06T04:34:35.504Z","0.0.1":"2026-03-13T00:23:35.699Z","0.0.3":"2026-03-16T19:47:36.746Z","0.0.4":"2026-03-17T19:25:43.810Z","0.0.5":"2026-03-17T22:59:26.315Z","0.0.6":"2026-03-17T23:25:29.066Z","0.1.0":"2026-05-28T00:34:50.583Z","0.1.1":"2026-05-30T03:22:07.820Z","0.1.2":"2026-06-08T18:20:25.151Z","0.1.3":"2026-06-15T16:09:51.569Z","0.2.0":"2026-07-03T19:54:53.803Z","0.3.0":"2026-07-13T20:01:49.362Z","0.3.1":"2026-07-21T04:13:56.758Z","0.3.2":"2026-07-27T19:52:39.236Z","0.3.3":"2026-08-06T04:34:35.196Z"},"bugs":{"url":"https://github.com/moq-dev/web-transport/issues"},"author":{"name":"Luke Curley","email":"kixelated@gmail.com"},"license":"(MIT OR Apache-2.0)","homepage":"https://github.com/moq-dev/web-transport#readme","keywords":["qmux","webtransport","websocket","polyfill","quic","streams"],"repository":{"type":"git","url":"git+https://github.com/moq-dev/web-transport.git"},"description":"QMux protocol (draft-ietf-quic-qmux-02) over WebSockets","maintainers":[{"name":"kixelated","email":"kixelated@gmail.com"}],"readme":"# @moq/qmux\n\nA [WebTransport](https://developer.mozilla.org/en-US/docs/Web/API/WebTransport_API) implementation using WebSockets as the underlying transport with [QMux](https://www.ietf.org/archive/id/draft-ietf-quic-qmux-02.html) (draft-ietf-quic-qmux-02, negotiating down to draft-01 and draft-00) framing: a polyfill in browsers, and a server on any runtime that can accept a WebSocket.\n\nQMux brings QUIC's multiplexed streams and flow control to reliable, ordered byte-stream transports like WebSockets. This allows WebTransport applications to seamlessly fall back when QUIC/UDP is blocked by network middleboxes.\n\n## Install\n\n```bash\nnpm install @moq/qmux\n```\n\n## Usage\n\nUse as a drop-in `WebTransport` replacement:\n\n```ts\nimport Session from \"@moq/qmux\"\n\nconst transport = new Session(\"https://example.com/endpoint\")\nawait transport.ready\n\nconst stream = await transport.createBidirectionalStream()\n```\n\n### Servers\n\n`Session.accept` runs the other role, over a WebSocket your server has already accepted. The host\nperforms the upgrade, so it — not this library — chooses the subprotocol; `selectSubprotocol` picks\nthe value to accept from what the client offered, and the session reads the wire-format version back\noff the socket.\n\n```ts\nimport Session, { selectSubprotocol } from \"@moq/qmux\"\n\nDeno.serve((req) => {\n\tconst protocol = selectSubprotocol(req.headers.get(\"sec-websocket-protocol\"), {\n\t\tprotocols: [\"moq-lite-04\"],\n\t\tversions: { \"moq-lite-04\": null },\n\t})\n\tif (!protocol) return new Response(\"no supported protocol\", { status: 400 })\n\n\tconst { socket, response } = Deno.upgradeWebSocket(req, { protocol })\n\tconst session = Session.accept(socket)\n\thandle(session) // a WebTransport, same as the client side\n\treturn response\n})\n```\n\nAny already-accepted `WebSocket` works — `Deno.upgradeWebSocket`, Node's `ws`, or a\n`WebSocketStream`. Accepting the upgrade without a negotiated subprotocol falls back to the legacy\n`webtransport` wire format, so reject the request when `selectSubprotocol` returns `undefined`\nrather than accepting a socket the peer's framing won't match. If your host doesn't expose the\nnegotiated value on the socket, pass it explicitly as `{ protocol }`.\n\nThe result is an ordinary `WebTransport`: the only difference from a client session is which half of\nthe stream-id space each side owns.\n\n### Detecting a dropped session\n\n`closed` follows the WebTransport contract:\n\n- **Fulfills** with `{ closeCode, reason }` on a graceful end: either side called `close()`, which\n  puts an `APPLICATION_CLOSE` (`0x1d`) on the wire.\n- **Rejects** on an abnormal end: a `CONNECTION_CLOSE` (`0x1c`) arrived — the transport variant a\n  peer sends when *it* caught a protocol violation — or no close frame arrived at all, because the\n  socket dropped or the peer went idle. This endpoint rejects the same way when it catches the peer\n  violating the protocol, and sends a `CONNECTION_CLOSE` so the peer rejects too.\n\n```ts\ntry {\n\tconst info = await transport.closed\n\tconsole.log(\"closed gracefully\", info.closeCode, info.reason)\n} catch (err) {\n\t// err is a WebTransportError-shaped SessionError: err.source === \"session\"\n\tconsole.warn(\"session dropped, reconnecting\", err)\n}\n```\n\nDon't reach for `closeCode` to tell the two apart — close codes are application-defined, so a\ngraceful close may carry any value, including one that looks like a violation, and an app closing\nwith `1006` is indistinguishable from a dropped socket. Which frame arrived is the signal, and the\nsettled state is how you read it.\n\n### Stream reset codes\n\nA reset carries an application error code in both directions, like native WebTransport:\n\n```ts\nimport { StreamError } from \"@moq/qmux\"\n\n// Send RESET_STREAM with code 26.\nawait stream.writable.abort(new StreamError(26))\n\n// Receive one: the code is a field, not text buried in the message.\ntry {\n\tawait reader.read()\n} catch (err) {\n\t// err.source === \"stream\"\n\tconsole.warn(\"reset by peer with code\", err.streamErrorCode)\n}\n```\n\nThe outgoing code comes off the reason passed to `abort()` / `cancel()`, so any `WebTransportError`\n(native or the exported `StreamError`) sends its `streamErrorCode` and anything else sends 0.\n`STOP_SENDING` works the same way, erroring the sender's writable with the code the peer chose.\n\n### Polyfill\n\nInstall as a global `WebTransport` polyfill:\n\n```ts\nimport { install } from \"@moq/qmux\"\n\n// Only installs if native WebTransport is unavailable\ninstall()\n\n// Now use the standard WebTransport API\nconst transport = new WebTransport(\"https://example.com/endpoint\")\n```\n\n## License\n\nLicensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or [MIT license](LICENSE-MIT) at your option.\n","readmeFilename":"README.md"}