{"_id":"@clodocapeo/pulsar-client","_rev":"19-006b794e6adf1ea01c848c91533d33a4","name":"@clodocapeo/pulsar-client","dist-tags":{"latest":"3.0.1"},"versions":{"0.1.0":{"name":"@clodocapeo/pulsar-client","version":"0.1.0","license":"MIT","_id":"@clodocapeo/pulsar-client@0.1.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"745836206ed256e6c1d83032a2b51cd7d40f85df","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-0.1.0.tgz","fileCount":46,"integrity":"sha512-lQYAdmAC+fCZZKzDPB2K9ywrSwX9H5zvuF88Xi0cWQtS8oY+O063qsLqmXFT596ppzWVj2ahL0gGkPJi65DAww==","signatures":[{"sig":"MEQCICnHe6OxwONK1Ah8LcvW110iIj2w8kIfj//lahbVBsw2AiAs9WdFGj3hNQi4uIepzczXQjkGCCB++CG0crHCYI7Xsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63902},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9b3350b9e8f9a5ffb5b2f1083b2792b5b16b78b1","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_0.1.0_1777496471002_0.46267220140931564","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@clodocapeo/pulsar-client","version":"0.2.0","license":"MIT","_id":"@clodocapeo/pulsar-client@0.2.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"7ecea40f73bc5219ce394392c7fb6249249c8a30","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-0.2.0.tgz","fileCount":46,"integrity":"sha512-Ca9bn72ZrIty7kQ0elluEI2dryiSUbVSBgDw2aEL4wb9+JpMWw/61fvUNK9NBZnHZ1iiKtp8+xDEpQYVwTCHTw==","signatures":[{"sig":"MEYCIQCnNcILv3MQzjNEt74rVJl19LXlPIhmcX2wI/X/szV24wIhAO+8WNxrIu8mvwldjwk/gR0DgeXNRluipA3pWQXRIdWj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63902},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9a66ca67b0fc400dd60f6e6998f00333bdd7d8fa","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_0.2.0_1777500911548_0.12846230181413731","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@clodocapeo/pulsar-client","version":"0.2.1","license":"MIT","_id":"@clodocapeo/pulsar-client@0.2.1","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"0d39025ed85503fcfd9991fb5d9e123636324543","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-0.2.1.tgz","fileCount":47,"integrity":"sha512-TYtIwll669yK0V/nc7XDNWC/Mei6+B0UtqT7n2WuPi/Pre3q5np7DW2zXxqhuxwVjLJqMPUK0Dq+0EYv3EObWg==","signatures":[{"sig":"MEQCIGnDavi38XUejfeKpyvzQugZ62/QYXAP/yGiFjJXm1NiAiAjH8zR2P+7RqA/dnyu+hVW6ylBrwdXtJ65Hf2AMCEW+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65288},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f85b699cf89a61058d8b20114ec74262e3bd4e0a","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_0.2.1_1777507249197_0.027291289983357725","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@clodocapeo/pulsar-client","version":"1.0.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.0.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"62b234c685e07fb7daa89980b700ada60547cd5a","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.0.0.tgz","fileCount":47,"integrity":"sha512-Uwmd62XaZIeye0pkgiAN0VEoEinjty64276OUHsCcsSb316EsmJhYPM5WLx046vx36vCrrDLQ6kmWKgiLivTYw==","signatures":[{"sig":"MEYCIQD/mTTFXudx+227ymJtg01Gx7bQkiw5jlo6paXcDgUS7AIhAO8glU4Q5z0IjUfLByYqsDOcJwpAwf8CS8T6cRf21Xsd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65288},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4f2dabe35b712d08bf8a79c3994e093d68e72b1c","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.0.0_1777678179422_0.10146284432276231","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@clodocapeo/pulsar-client","version":"1.1.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.1.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"af0c8b9cc26269633f7a0bfa9e25f63aa02a3383","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.1.0.tgz","fileCount":47,"integrity":"sha512-RP+6Ea3kUbl1dRYvdWSdd7XiX9BdNSEFenNkAwcAmnh3nwabp4n273dDacx6qgaPpij3ajIn1Ra52jMEPrlKRg==","signatures":[{"sig":"MEYCIQCSrjMgnGz6kZnyTMv50UsdtXviapWOLvAkABB02S0LiwIhAPJPWoonLUhQ9K9aLuBZtLKGEfu6eF0iK4QVxgHGzQXv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81191},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"cae278e4b0c6c1692df394d287c6f4fa588fa950","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.1.0_1781206754272_0.19821412568096974","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@clodocapeo/pulsar-client","version":"1.2.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.2.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"e83ed8cd7729619d33a3fb0fed256c8d837480c2","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.2.0.tgz","fileCount":55,"integrity":"sha512-KZghcOjoE3ySxyFHRsXiPP4Ax8yNHaUBBcMSQXq2WK2dKMvym2zqwRzmmPbyDckI3u2mdCGavR+wOOS/hIyKpw==","signatures":[{"sig":"MEUCIFNNkWBqk6dhvIuUE+K5KIOTzO8ttiAPJwduIUFuM88hAiEAhs1twXxtzkqrn3v/JlIIxCoiAZwFPceK0g9OXUwq03s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8c6966076418860024f3262f04dc00e78312df0e","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.2.0_1783087312511_0.9681960138917804","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@clodocapeo/pulsar-client","version":"1.2.1","license":"MIT","_id":"@clodocapeo/pulsar-client@1.2.1","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"7cab4ebe686163bceedd6b8ac097bf6da10a6dc3","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.2.1.tgz","fileCount":55,"integrity":"sha512-GN2Nt2f7NeZweLuqDitKmf3/DMlnniGXA1gsVitE7+SAAqShTSE9zZHf3HJlBZCzRVlNFqOvSITPm0p+m7S6hA==","signatures":[{"sig":"MEUCIB5yN9RvDNnIx0hixGcmDWc9mOnQ19D5Ov0DxSJjx7pKAiEAngs/n3oICiHuu34IFXos3JACY4r7aI14JAnmJBF/wk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0b16155491897bbc71f80c394e1149f813ba4ced","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.2.1_1783263879155_0.8398787209194367","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@clodocapeo/pulsar-client","version":"1.2.2","license":"MIT","_id":"@clodocapeo/pulsar-client@1.2.2","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"fe01954902ccbcbfb9ef2b17cdfbdddf657b6e1e","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.2.2.tgz","fileCount":55,"integrity":"sha512-fzaznRpZ9ymypXRqZ1bDdSN8eBfhuYc8nREG6XgtbgbbS+TsSsDs69J0s8PQnh4N/r5lplAnGH/ZzVYnRFS+Sw==","signatures":[{"sig":"MEUCICWbgjPRM6t/OgvjYOhPQ7vaCSsVaYCuhLUgPBOdhLZxAiEAjcVcQWH+k9pbmv2E/c13u7RrYfusZFfzOtN836gRg3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"386389d1dc28670be071eb4c34821d844a5605c3","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.2.2_1785102518945_0.8403621684105762","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@clodocapeo/pulsar-client","version":"1.3.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.3.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"7351bce93ba05de6107ea5ebfb0ee15d8704db7a","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.3.0.tgz","fileCount":55,"integrity":"sha512-BU5ouv94sTOqeCqQ0fvw5+LP5hATrwzj5BXwzQSulfewOMmGUI4JKoArlqQsOiE0Lvba2H13jCfLgF5fbt24sw==","signatures":[{"sig":"MEQCIBNLBsUBtNuKChprRw9R2wy2bcCk+93nYogo8huRWXJmAiAOEIaEeWjkvS3aVvrfrb3ml3aazExvQSTEADOqkdu6Hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122915},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"55456553576263eb4ed0bc76ea74a76eb5730093","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.3.0_1785242890921_0.5112812897217152","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@clodocapeo/pulsar-client","version":"1.4.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.4.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"97fb81c47a3c56b61f6e603a97006816a6d20c29","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.4.0.tgz","fileCount":55,"integrity":"sha512-HAJsjxzZMJadOy4hOqCosvqSnYc6ZsOqqOifSZhvOngGU84tZ/05HxkLg3tQcfhSUJsY7WzV1mWe6vHaSlKEPA==","signatures":[{"sig":"MEUCIQDSaC/uEGfad1tluPucKkEQ+wxyVFJW6VDaF30Rde3argIgNyNm7froyyj4fryjG72KCX3BPYr4y/exW1OMbvSlPbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122915},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ceb203cae65a092e08c4d3053f47b473c27ef544","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.4.0_1785251185311_0.22361879668699558","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@clodocapeo/pulsar-client","version":"1.5.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.5.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"b96093496b6a8e2f5f89357e033ba171450389d8","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.5.0.tgz","fileCount":55,"integrity":"sha512-8ucoxSeJkymoOXRluBMcoERIJ16Y0DUuE0Z4l1ULacDD1OOAxhFkf4blHRC2jJ9xHHkt8eU0EXtdWyqYN6vXaQ==","signatures":[{"sig":"MEUCIEDnsPc27efL8qudDNYqXqXzLh0GX2W+vYxn+XuWLf2aAiEA+uWjqfhogdZEq6MTUlFKoDIS5ZGvnbaMC9rlZO3lIhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3bada3be69ac4ed39f312b301c9ea82bc23803af","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.5.0_1785268455859_0.3950996799644253","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@clodocapeo/pulsar-client","version":"1.6.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.6.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"dc75451ac2c26503555623c6183bfb7cfcf60df5","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.6.0.tgz","fileCount":55,"integrity":"sha512-KPz0Q+oSnXBwGMxWr1n91o9niaCSSf2Wh6MDjwJTjkwuitK2UpGfXiAM6r2NGpevB/vAmwRDLxPuSMf+GYlwcg==","signatures":[{"sig":"MEYCIQCk5i7k8npz9GHdQXZgSgXIPBUuprT1+u/9nwTBuf0tFgIhAIojbBSX8yMgJYijThtqwZiDK2ULWZBTlbWErwP+Mxz6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"428a1066c2951b1ed7f36c7e6c2e8cc5ca1eb71b","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.6.0_1785317834242_0.8541330381941721","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@clodocapeo/pulsar-client","version":"1.7.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.7.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"55f606ed881dcc11dca26c0ffc01b8f7086d7bfd","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.7.0.tgz","fileCount":55,"integrity":"sha512-OOzZu+Ln0lj1k1biU9VwKguSeC5D6JcliQc09RJ1EnuXLHrHHu+2CHRPV1jNIrSj7oHoMCxkpHnlczHWdYthpg==","signatures":[{"sig":"MEUCIAfm/Tc9LwfzyNUmgnZZASLN2f804O1LWjIN2HUw5Ft2AiEA+rKHBlBBeoR7sj8Ms1Ug0kKvmaycafU7eyg89X52J3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"886d49ae31ba22c2172b83199fdf96a0c2f72315","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.7.0_1785791372848_0.8220517867366886","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@clodocapeo/pulsar-client","version":"1.8.0","license":"MIT","_id":"@clodocapeo/pulsar-client@1.8.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"1de9b96a2ec052ead351c2f0728dda6305bd54fc","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.8.0.tgz","fileCount":55,"integrity":"sha512-tdnfVXYUm1KRBo1WJpEM1xWmoS8A+iDyKx3JKT8pzc/y437W0X9SSmBRFZVrY6tgqF0k+Jrr9uHYIHYUxo9NMw==","signatures":[{"sig":"MEYCIQDgmcn0pSB+08kSdGE8UEixW1CLvEJE8jt4Khd/20M9hgIhAK9ztE1MXViOu0H58d/8Sq/BhgXXvq4lzPHX7NEqXzVb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141784},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"47708fac9dbc6445d21f5ec24a5f6c9e31f42cdd","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.8.0_1786377723019_0.6701085838912753","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@clodocapeo/pulsar-client","version":"1.8.2","license":"MIT","_id":"@clodocapeo/pulsar-client@1.8.2","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"87bfc0cc2fc367604e8a2b030720b79d8928db34","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.8.2.tgz","fileCount":55,"integrity":"sha512-4cX8vCSSxfPZe3bibUtTVYqFU3YfY+6r15T99pR64T6SolRoeJUTwzvo/kSmKBgvEhYo9nc26bCHCPnvz3Nb8Q==","signatures":[{"sig":"MEUCIDfSx8SizGznPV7zpl44lo4q12Q5gtMGG7Yq2UtXnPY6AiEAtcjhjUfgqU+Q3FWfi7Si5pQHfNBWIrIrizs6NXD8Rlk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141784},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"23750bf89cab7989e29fee61e595b7a7b061eb64","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.8.2_1787124083987_0.8222291806347561","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@clodocapeo/pulsar-client","version":"1.8.3","license":"MIT","_id":"@clodocapeo/pulsar-client@1.8.3","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"bdedd5b82c85074c54373c37b1ebc3be72708f08","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-1.8.3.tgz","fileCount":55,"integrity":"sha512-skYyrKz9NH1ZvPZNlwq6FAicSWc9evGIpMJ1M7CVDJ+x+nUohz8X1KrFeSGL4HnjJ0eG4//joqH2zB9X67YuWw==","signatures":[{"sig":"MEUCIEgN6RAGwLXteCX+DFnVmvBZuM1nSt6c1rv9GXILhtjCAiEA7cxiGG1UbV0eIT8qbn2ulyM7dIGzF3B5lqzwVYkuRP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141784},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1ba32419fe5f43aa3e6f1f1b56fa7cb20052dbdc","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_1.8.3_1787608634351_0.7017087546400576","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@clodocapeo/pulsar-client","version":"2.0.0","license":"MIT","_id":"@clodocapeo/pulsar-client@2.0.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"331fda419d5251f1bbbc0644ef17dbfeec0230a8","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-2.0.0.tgz","fileCount":55,"integrity":"sha512-INfLGE9nSwe1pgoTfARFB0krBHRVve+TJnqpUDdVhhhMduQ9/NeoRuJwsWW7umbTa6SZh12Fj3SnhxcmeRDTDA==","signatures":[{"sig":"MEUCIQDVOpeGq3+ZZdQ31M48sOky1IfzYzeRrebDXufZg3ujuAIgV14LYe8LW0OVMFhmRizXU4ID/M0EUGgF5Bp2SO0qy4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141784},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"cddbf47f5d5dd3a0901c180b88a7640f6d7e14c7","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_2.0.0_1787662784273_0.6603987021703774","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@clodocapeo/pulsar-client","version":"3.0.0","license":"MIT","_id":"@clodocapeo/pulsar-client@3.0.0","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"dist":{"shasum":"5ef7d6bcd8e1fbc1df7a9ed0fd23eb0c83d5c2cb","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-3.0.0.tgz","fileCount":55,"integrity":"sha512-VaOldDcJ6wy7VzbSeGB5+eaHENYyAzeyobRqTOtwj745dS5OUaXM77ZZn+du81bZhuD4J3+Ljp3e2cHXS+Xt5A==","signatures":[{"sig":"MEUCIE6MOXAjja7NmAoO7GccFe4cizBI544QCoO1WmZOFETnAiEAqo/zr09gLzdY9Ln7XP0z8tZf2Sq7VFHWH9nse69hiCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180535},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9bb72e9d2373f0bef11128f19864ab223ec62042","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"repository":{"url":"git+https://github.com/ZabLaboratory/Pulsar.git","type":"git","directory":"packages/pulsar-client"},"_npmVersion":"10.8.2","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"obs-websocket-js":"^5.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.18.0","vitest":"^2.1.0","@types/ws":"^8.5.10","typescript":"^5.6.0","@types/node":"^22.0.0","@msgpack/msgpack":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/pulsar-client_3.0.0_1788821176628_0.9105530854444472","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@clodocapeo/pulsar-client","version":"3.0.1","description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/ZabLaboratory/Pulsar.git","directory":"packages/pulsar-client"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run","test:watch":"vitest","lint":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"dependencies":{"obs-websocket-js":"^5.0.6"},"devDependencies":{"@msgpack/msgpack":"^3.1.3","@types/node":"^22.0.0","@types/ws":"^8.5.10","typescript":"^5.6.0","vitest":"^2.1.0","ws":"^8.18.0"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@clodocapeo/pulsar-client@3.0.1","gitHead":"664d89402ebab0814a2ae89b5c7e3cd432ce05ce","bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"homepage":"https://github.com/ZabLaboratory/Pulsar#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ORXtg2c4Lv2RTkrBMydSuHnknh8+H4N5iyXuYPsg8kMY2eWQW/eV8ES18RaCUfIFbytJvuki/oOOrhkKsdZ6/w==","shasum":"c82caef2ef1e3beea685b76373cd3b2e4bc9c736","tarball":"https://registry.npmjs.org/@clodocapeo/pulsar-client/-/pulsar-client-3.0.1.tgz","fileCount":55,"unpackedSize":180535,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG1g4OLPYb8yyfWYcKkkFtOzb3DRgGmrpR10HFzeP6iOAiEA892mC/2PYy6F8K4sDCBkbUJ5P/UNZ+rPm3hqpAE6hps="}]},"_npmUser":{"name":"mathias.tock","email":"mathias.tock@epita.fr"},"directories":{},"maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pulsar-client_3.0.1_1788980080216_0.2413014313074806"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T21:01:10.832Z","modified":"2026-09-09T18:54:40.585Z","0.1.0":"2026-04-29T21:01:11.166Z","0.2.0":"2026-04-29T22:15:11.686Z","0.2.1":"2026-04-30T00:00:49.328Z","1.0.0":"2026-05-01T23:29:39.583Z","1.1.0":"2026-06-11T19:39:14.412Z","1.2.0":"2026-07-03T14:01:52.655Z","1.2.1":"2026-07-05T15:04:39.296Z","1.2.2":"2026-07-26T21:48:39.111Z","1.3.0":"2026-07-28T12:48:11.072Z","1.4.0":"2026-07-28T15:06:25.466Z","1.5.0":"2026-07-28T19:54:15.993Z","1.6.0":"2026-07-29T09:37:14.399Z","1.7.0":"2026-08-03T21:09:33.006Z","1.8.0":"2026-08-10T16:02:03.174Z","1.8.2":"2026-08-19T07:21:24.124Z","1.8.3":"2026-08-24T21:57:14.479Z","2.0.0":"2026-08-25T12:59:44.413Z","3.0.0":"2026-09-07T22:46:16.797Z","3.0.1":"2026-09-09T18:54:40.358Z"},"bugs":{"url":"https://github.com/ZabLaboratory/Pulsar/issues"},"license":"MIT","homepage":"https://github.com/ZabLaboratory/Pulsar#readme","repository":{"type":"git","url":"git+https://github.com/ZabLaboratory/Pulsar.git","directory":"packages/pulsar-client"},"description":"Typed TypeScript client for Pulsar -- the headless broadcast engine bundled in Prism.","maintainers":[{"name":"mathias.tock","email":"mathias.tock@epita.fr"}],"readme":"# @clodocapeo/pulsar-client\n\n[![npm](https://img.shields.io/npm/v/%40clodocapeo%2Fpulsar-client?logo=npm&color=cb3837)](https://www.npmjs.com/package/@clodocapeo/pulsar-client)\n[![Licence MIT](https://img.shields.io/badge/licence-MIT-blue)](./LICENSE)\n[![Node ≥ 18](https://img.shields.io/badge/node-%E2%89%A518-339933)](https://nodejs.org)\n\nTyped TypeScript client for [Pulsar](https://github.com/ZabLaboratory/Pulsar),\nthe headless broadcast engine forked from OBS Studio. Speaks\n**obs-websocket v5** + Pulsar's `pulsar:*` vendor namespace.\n\nThis package is the **client side only** — it wraps obs-websocket-js,\nadds typed namespaces over the vendor extensions, and exposes a\nstrongly-typed event surface. It does **not** ship the `pulsar.exe`\nbinary; for that, install [`@clodocapeo/pulsar-bundle`](https://www.npmjs.com/package/@clodocapeo/pulsar-bundle)\n(or [`@clodocapeo/pulsar-bundle-full`](https://www.npmjs.com/package/@clodocapeo/pulsar-bundle-full)\nfor browser sources / CEF / VLC support), which re-exports this entire\nclient surface and adds a `spawn()` API.\n\n## Table of contents\n\n- [When to use it](#when-to-use-it)\n- [Install](#install)\n- [Quick start](#quick-start)\n- [API reference](#api-reference)\n  - [`PulsarClient`](#pulsarclient)\n  - [`destinations` namespace](#destinations-namespace)\n  - [`video` namespace](#video-namespace)\n  - [`adaptive` namespace](#adaptive-namespace)\n  - [`record` namespace](#record-namespace)\n  - [`stream` namespace](#stream-namespace)\n  - [`audio` namespace](#audio-namespace)\n  - [`capabilities` namespace](#capabilities-namespace)\n  - [Deterministic scene switching](#deterministic-scene-switching)\n  - [v5 baseline passthrough](#v5-baseline-passthrough)\n- [Events](#events)\n- [Errors](#errors)\n- [Types](#types)\n- [Reconnect strategy](#reconnect-strategy)\n- [Wire format](#wire-format)\n- [Versioning](#versioning)\n- [Compatibility](#compatibility)\n- [Development](#development)\n- [Licence](#licence)\n\n## When to use it\n\nUse this package when you already have a Pulsar (or any obs-websocket\nv5 server, including OBS Studio with the obs-websocket plugin) running\nunder an authorized supervisor and want to talk to it. Pulsar binds loopback\nby default; remote/native-container deployment is not enabled by installing\nthis client.\n\nTypical scenarios:\n\n- A browser tool / Electron renderer that drives a Pulsar instance\n  spawned by another process.\n- A CLI utility that probes broadcast state, mutates bitrate, or\n  toggles destinations.\n- A test harness that talks to a fake / mocked v5 server.\n- Anything that doesn't need the native postinstall download from the\n  `pulsar-bundle*` packages.\n\nIf you want Node to spawn pulsar.exe and own its lifecycle, use\n`@clodocapeo/pulsar-bundle` instead — it depends on this package and\nre-exports everything below, plus a `spawn()` API.\n\n## Install\n\n```bash\nnpm install @clodocapeo/pulsar-client\n```\n\nESM-only, Node ≥ 18. Tree-shakeable. No native dependencies (the\nunderlying `obs-websocket-js` uses the platform `WebSocket` /\n`ws` package).\n\n## Quick start\n\nThis connects to an **already running, authenticated** runtime. The host supplies\nthe actual per-session URL/password; the client does not start Pulsar.\n\n```js\nimport { PulsarClient } from \"@clodocapeo/pulsar-client\";\n\nconst url = process.env.PULSAR_WS_URL;\nconst password = process.env.PULSAR_WS_PASSWORD;\nif (!url || !password) throw new Error(\"Set this session's URL and password\");\n\nconst pulsar = new PulsarClient();\ntry {\n  await pulsar.connect({ url, password });\n  console.log(await pulsar.video.get());\n  console.log(await pulsar.capabilities.get());\n} finally {\n  await pulsar.disconnect();\n}\n```\n\n`PULSAR_WS_URL` and `PULSAR_WS_PASSWORD` here are host application variables,\nnot native bootstrap option names. Native hosts obtain credentials from READY;\nthe bundle uses its child's idle marker and private config. Never read another\nsession's config or log the password.\n\nFor an owned runtime, use a bundle's `spawn()`; the returned client is already\nconnected. Disconnecting a client does not stop the native process or its outputs.\n\n## API reference\n\n### `PulsarClient`\n\n```ts\nclass PulsarClient extends TypedEventEmitter {\n  // Public namespaces\n  readonly obs:           OBSWebSocket;             // raw obs-websocket-js\n  readonly destinations:  DestinationsNamespace;\n  readonly video:         VideoNamespace;\n  readonly adaptive:      AdaptiveNamespace;\n  readonly record:        RecordNamespace;\n  readonly stream:        StreamNamespace;\n  readonly audio:         AudioNamespace;\n  readonly capabilities:  CapabilitiesNamespace;\n\n  // Lifecycle\n  connect(opts?: ConnectOptions): Promise<void>;\n  disconnect(): Promise<void>;\n  isConnected(): boolean;\n\n  // Typed events — see \"Events\" below\n  on<E extends PulsarEventName>(event: E, listener: (e: PulsarEventMap[E]) => void): this;\n  off<E extends PulsarEventName>(event: E, listener: (e: PulsarEventMap[E]) => void): this;\n\n  // Escape hatch for vendor calls not yet typed\n  callVendor<TReq, TRes extends { error?: string }>(\n    requestType: string,\n    requestData?: TReq,\n  ): Promise<TRes>;\n}\n```\n\n#### `connect(options?)`\n\n```ts\ninterface ConnectOptions {\n  /** Defaults to \"ws://127.0.0.1:4455\". */\n  url?: string;\n  /** obs-websocket auth password. Read from PULSAR_READY sentinel\n   *  or supplied by the owning bundle's private runtime configuration. */\n  password?: string;\n  /** Bitmask of obs-websocket EventSubscription flags. Defaults to\n   *  0x7FF (all baseline event categories). */\n  eventSubscriptions?: number;\n}\n```\n\nThrows on auth failure / network error / already-connected. Use the\nunderlying `obs-websocket-js` exception types if you need to branch\non the failure mode.\n\n#### `disconnect()`\n\nIdempotent. Resolves once the WebSocket close frame has landed.\n\n#### `isConnected()`\n\nSnapshot. Updates on `connect()` resolve and on the\n`ConnectionClosed` v5 event.\n\n#### `callVendor(requestType, requestData?)`\n\nLow-level escape hatch for the fixed **`pulsar`** vendor. It does not select\n`pulsar-scene` or `pulsar-scene-switch`; use `obs.call(\"CallVendorRequest\", ... )`\nwith an explicit vendor for those namespaces.\n\n```ts\nconst resp = await pulsar.callVendor<{ id: string }, { started?: boolean }>(\n  \"StartDestination\",\n  { id: \"abcd-1234\" },\n);\nconsole.log(resp.started); // true\n```\n\nThrows `PulsarNotConnectedError` if disconnected, `PulsarVendorError`\nif the server returns a non-empty `error` field, and lets the\nunderlying obs-websocket-js exceptions bubble up otherwise.\n\n### `destinations` namespace\n\nMulti-destination first-class. One encoder pair fans out to N outputs.\nEach destination is identified by a server-generated UUID.\n\n```ts\nclass DestinationsNamespace {\n  list(): Promise<Destination[]>;\n  create(input: CreateDestinationInput): Promise<Destination>;\n  remove(id: string): Promise<boolean>;\n  start(id: string): Promise<boolean>;\n  stop(id: string): Promise<boolean>;\n  startAll(): Promise<void>;\n  stopAll(): Promise<void>;\n}\n```\n\n```ts\ninterface Destination {\n  id: string;\n  name: string;\n  kind: \"rtmp_custom\" | \"vod_local\" | \"twitch\" | \"youtube\";\n  url: string;             // server-pinned for twitch/youtube\n  enabled: boolean;        // last user intent\n  active: boolean;         // obs_output_active(d.output)\n}\n```\n\n```ts\ninterface CreateDestinationInput {\n  kind: \"rtmp_custom\" | \"vod_local\" | \"twitch\" | \"youtube\";\n  name?: string;           // defaults to the generated id\n  url?: string;            // RTMP URL (rtmp_custom) or file path (vod_local)\n                           // ignored for twitch/youtube (server pins the ingest)\n  key?: string;            // required for remote kinds; unused for vod_local\n}\n```\n\n#### Examples\n\n```ts\n// Twitch: server pins its TLS ingest URL\nconst twitch = await pulsar.destinations.create({\n  name: \"Twitch\",\n  kind: \"twitch\",\n  key: process.env.TWITCH_KEY!,\n});\nconsole.log(twitch.url);\n// → rtmps://ingest.global-contribute.live-video.net/app/\n\n// Custom RTMP: e.g. a co-host's private ingest\nconst rtmp = await pulsar.destinations.create({\n  name: \"Co-host\",\n  kind: \"rtmp_custom\",\n  url: \"rtmps://my.private.cdn/live\",\n  key: \"stream-key\",\n});\n\n// Local MP4 archive (concurrent with streaming)\nconst archive = await pulsar.destinations.create({\n  name: \"VOD\",\n  kind: \"vod_local\",\n  url: \"C:/recordings/my-stream.mp4\",\n});\n\n// Start all three with one call (encode once, fan out)\nawait pulsar.destinations.startAll();\n\n// Or one at a time — start() returns false if RTMP refused\nconst started = await pulsar.destinations.start(twitch.id);\nif (!started) console.error(\"Twitch refused the connection\");\n\n// Always remove on shutdown — the server gracefully stops first\nawait pulsar.destinations.remove(twitch.id);\nawait pulsar.destinations.remove(rtmp.id);\nawait pulsar.destinations.remove(archive.id);\n```\n\n### `video` namespace\n\nSnapshot + live-mutate the encoder configuration.\n\n```ts\nclass VideoNamespace {\n  get(): Promise<VideoSettings>;\n  set(patch: VideoSettingsPatch): Promise<VideoSettingsPatchResult>;\n  setBitrate(videoKbps: number): Promise<VideoSettingsPatchResult>; // shortcut\n}\n```\n\n```ts\ninterface VideoSettings {\n  fps: number;\n  width: number;\n  height: number;\n  videoBitrate: number;        // kbps\n  videoRateControl: string;    // e.g. \"CBR\"\n  videoKeyintSec: number;\n  audioBitrate: number;        // kbps\n}\n\ninterface VideoSettingsPatch {\n  videoBitrate?: number;\n  audioBitrate?: number;\n}\n\ninterface VideoSettingsPatchResult {\n  changed: boolean;\n  videoBitrate?: number;\n  audioBitrate?: number;\n}\n```\n\n**Limitations**\n\n- `fps`, `width`, `height` are **not** mutable at runtime — they\n  require a libobs `obs_reset_video()` which would interrupt every\n  active output. Set them via `PULSAR_FPS` and `PULSAR_RESOLUTION`\n  env vars at spawn instead. Trying to set them via this API returns\n  a typed `PulsarVendorError`.\n- `audioBitrate` is only applied while the audio encoder is idle (no\n  active stream / record). The server returns `changed: false` if it\n  could not apply the value.\n\n### `adaptive` namespace\n\nSnapshot + control the adaptive bitrate worker. The worker samples\n`obs_output_get_frames_dropped` every 2 s, scales bitrate within\n`[floor, target]`, and emits `pulsar:BitrateAdjusted` events.\n\n```ts\nclass AdaptiveNamespace {\n  getState(): Promise<AdaptiveState>;\n  setEnabled(enabled: boolean): Promise<boolean>;\n  enable(): Promise<boolean>;   // shortcut\n  disable(): Promise<boolean>;  // shortcut\n}\n```\n\n```ts\ninterface AdaptiveState {\n  enabled: boolean;\n  targetKbps: number;        // bitrate the loop tries to maintain\n  currentKbps: number;       // encoder's currently configured bitrate\n  floorKbps: number;         // 30% of target by default; never drops below\n  stableTicks: number;       // ticks without drops since last adjust\n  adjustmentsTotal: number;  // cumulative adjustments since boot\n  lastDeltaTotal: number;    // frames produced last sample window\n  lastDeltaDropped: number;  // frames dropped last sample window\n  lastDropRatio: number;     // lastDeltaDropped / max(1, lastDeltaTotal)\n}\n```\n\nDisabling pauses the sampling loop; the encoder bitrate stays at\nwhatever value the worker last applied. Re-enabling resets\n`stableTicks` to 0 so the loop re-warms before any climb attempt.\n\n### `record` namespace\n\nWraps the **legacy frontend-stub recording output** — the singleton,\nenv-driven recorder pulsar-frontend-stub creates at boot. Distinct\nfrom the multi-destination API where `vod_local` destinations are\nalso MP4 files but client-named.\n\nThe path is auto-resolved to `<recordDir>/pulsar-<YYYYMMDD-HHMMSS>.<ext>`\nby the server. MP4 is default; `PULSAR_RECORD_CONTAINER=mkv` selects MKV at\nboot. `recordDir` defaults to the private runtime's recordings directory;\nuse `PULSAR_RECORD_DIR` for persistent storage.\n\n```ts\nclass RecordNamespace {\n  start(): Promise<void>;\n  stop(timeoutMs?: number): Promise<string>;   // resolves with the actual output path\n  pause(): Promise<void>;\n  resume(): Promise<void>;\n  isActive(): Promise<boolean>;\n}\n```\n\n`stop()` waits for the `RecordStateChanged` event reporting\n`STOPPED` (with `outputPath`) before resolving. Default timeout is\n10 s — adjust if your trailer-write needs longer (high-bitrate, slow\ndisk).\n\n### `stream` namespace\n\nWraps the **legacy frontend-stub streaming output** — the singleton\n`PulsarStream` rtmp_output that obeys the v5 `StartStream` /\n`StopStream` baseline. Stream Deck, Companion, and Streamer.bot all\nuse this path.\n\n```ts\nclass StreamNamespace {\n  start(): Promise<void>;\n  stop(): Promise<void>;\n  isActive(): Promise<boolean>;\n}\n```\n\n> Configure a service before starting the singleton output. Current Pulsar\n> verifies effective output state and reports declined/no-effect attempts;\n> the old “success with no stream” behavior is not the current contract.\n> Use v5 `SetStreamServiceSettings` for a supported service, **or**\n> use `pulsar.destinations.create({ kind: \"twitch\", … })` +\n> `pulsar.destinations.start(id)` instead. The multi-destination API\n> is the recommended path.\n>\n> ⛔ **Twitch is refused on this surface.**\n> `SetStreamServiceSettings` with `rtmp_common` + `service: \"Twitch\"`\n> answers `InvalidRequestField` (400): that service resolves its ingest\n> from a list downloaded at runtime and falls back to the **cleartext**\n> `rtmp://live.twitch.tv/app` when the list is absent, which would send\n> the stream key unencrypted. Use\n> `pulsar.destinations.create({ kind: \"twitch\", … })` — its `rtmps://`\n> ingest is pinned at compile time. The same request also requires an\n> `rtmp://`/`rtmps://` server and a non-empty key.\n\n### `audio` namespace\n\nMic / audio-input control. **Stream-level, not scene-level**: mute\nstate and device selection live on the OBS input itself, so they\nsurvive scene switches for free — no vendor plugin involved, this\nuses v5 `Input*` requests for input control and the `pulsar` vendor for\nmonitoring-device and common Program-route readback.\n\n```ts\nclass AudioNamespace {\n  specialInputs(): Promise<SpecialInputs>;              // mic1..mic4 slot names\n  listInputs(): Promise<AudioInput[]>;\n  isMuted(inputName: string): Promise<boolean>;\n  setMuted(inputName: string, muted: boolean): Promise<void>;\n  toggleMuted(inputName: string): Promise<boolean>;      // returns new state\n  listDevices(inputName: string): Promise<AudioDevice[]>; // wasapi device_id list\n  setDevice(inputName: string, deviceId: string): Promise<void>;\n  listMonitoringDevices(): Promise<MonitoringDeviceList>;\n  setMonitoringDevice(deviceId: string): Promise<MonitoringDevice>;\n  programRoute(): Promise<ProgramAudioRoute>;              // common r2 Program route + PTS evidence\n}\n```\n\n```ts\n// Resolve the mic slot, then flip mute + pick a device from the cockpit\nconst { mic1 } = await pulsar.audio.specialInputs();\nif (mic1) {\n  await pulsar.audio.setMuted(mic1, true);\n\n  const devices = await pulsar.audio.listDevices(mic1);\n  const usb = devices.find((d) => d.name.includes(\"USB\"));\n  if (usb) await pulsar.audio.setDevice(mic1, usb.id);\n}\n```\n\nMute changes from any connected control client broadcast as the\ntyped `inputMuteStateChanged` event — see \"Events\" below.\n\n`programRoute()` reads the explicit `program-common` / `ProgramAudio` route.\nIts `audioIdentity` and output read-back fields are stable across video Cuts;\nits `sources` entries are audio-capable source channels (channel 0, the mutable\nProgram video root, is excluded), and `tracks[].pts` reports actual\nencoder-fed audio PTS. r2 explicitly reports\n`previewAudioSupported=false` and `afvSupported=false`: Preview audio/AFV is\nnot inferred from the selected video scene.\n\n### `capabilities` namespace\n\n```ts\nconst capabilities = await pulsar.capabilities.get();\n```\n\nThe response is a typed `PulsarCapabilities` manifest. It describes the running\nengine's encoder families, audio, input/filter/transition inventories,\ngraphics adapters, output scales and mutation regimes. Presence is not\npermission to mutate every setting and is not proof that a selected device\nworks. Read back the actual runtime state after a write.\n\nMonitoring-device controls should be offered only when the manifest reports\nthe selectable capability. `audio.listInputs()` currently maps the baseline\ninput list; it does not itself filter every non-audio kind. Validate input\ncapability before presenting it as an audio device.\n\n### Deterministic scene switching\n\nThere is no typed `sceneSwitch` namespace in 3.0.0. Use the explicit vendor:\n\n```js\nconst state = await pulsar.obs.call(\"CallVendorRequest\", {\n  vendorName: \"pulsar-scene-switch\",\n  requestType: \"GetState\",\n  requestData: {},\n});\nconsole.log(state.responseData);\n```\n\nPrepare/Take/Abort require the complete\n[scene-switch v1 envelope](../../scripts/contracts/scene_switch_v1/README.md).\nObserve PreviewReady and TakeCommitted separately from request acceptance,\nrespect revisions and retain command IDs for idempotent retries.\nThe runtime's 4096-outcome cache refuses new IDs at capacity rather than\nevicting known outcomes. Raw `VendorEvent` listeners must filter vendor and\nevent type before interpreting a payload.\n\n### v5 baseline passthrough\n\nUse `pulsar.obs.call(...)` for baseline v5 requests. Availability and headless\nrefusals are defined by the running server and Pulsar's protocol, not by the\nclient having a method name:\n\n```ts\n// Scene CRUD\nawait pulsar.obs.call(\"CreateScene\", { sceneName: \"Live\" });\nconst scenes = await pulsar.obs.call(\"GetSceneList\");\n\n// Source / input CRUD\nawait pulsar.obs.call(\"CreateInput\", {\n  sceneName: \"Live\",\n  inputName: \"Webcam\",\n  inputKind: \"dshow_input\",\n  inputSettings: { device_id: \"...\" },\n});\n\n// Audio\nawait pulsar.obs.call(\"SetInputVolume\", {\n  inputName: \"Mic/Aux\",\n  inputVolumeDb: -3,\n});\n\n// Filters\nawait pulsar.obs.call(\"CreateSourceFilter\", {\n  sourceName: \"Webcam\",\n  filterName: \"Color Correction\",\n  filterKind: \"color_filter_v2\",\n});\n\n// Stats\nconst stats = await pulsar.obs.call(\"GetStats\");\nconsole.log(stats.cpuUsage, stats.activeFps, stats.outputSkippedFrames);\n```\n\nThe full v5 reference: <https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md>\n\n## Events\n\nThe client emits typed events translated from both the v5 baseline and\nthe `pulsar:*` vendor namespace.\n\n```ts\npulsar.on(\"bitrateAdjusted\", (e) => {\n  // Pulsar vendor event — the adaptive worker just changed bitrate.\n  console.log(e.bitrate, e.target, e.floor, e.reason, e.dropRatio);\n});\n\npulsar.on(\"recordStateChanged\", (e) => {\n  // v5 baseline event.\n  // e.state ∈ STARTING / STARTED / STOPPING / STOPPED / PAUSED / RESUMED / RECONNECTING / RECONNECTED\n  if (e.state === \"STOPPED\" && e.outputPath) console.log(\"recorded:\", e.outputPath);\n});\n\npulsar.on(\"streamStateChanged\", (e) => {\n  console.log(e.state);\n});\n\npulsar.on(\"studioModeStateChanged\", (e) => {\n  console.log(e.enabled);\n});\n\npulsar.on(\"inputMuteStateChanged\", (e) => {\n  // v5 baseline event -- fires for any input, not just the mic; filter by e.inputName.\n  console.log(e.inputName, e.inputMuted);\n});\n\npulsar.on(\"connectionClosed\", (e) => {\n  console.log(`connection closed: code=${e.code} reason=${e.reason}`);\n});\n```\n\nFor events not yet wrapped by this client, listen on the underlying\nobs-websocket-js client directly: `pulsar.obs.on(\"InputCreated\", …)`.\n\n### Event payload shapes\n\n| Event | Payload |\n|---|---|\n| `bitrateAdjusted` | `{ bitrate: number, target: number, floor: number, reason: \"drops\" \\| \"recovery\", dropRatio: number }` |\n| `recordStateChanged` | `{ state: OutputState, outputPath?: string }` |\n| `streamStateChanged` | `{ state: OutputState }` |\n| `studioModeStateChanged` | `{ enabled: boolean }` |\n| `inputMuteStateChanged` | `{ inputName: string, inputMuted: boolean }` |\n| `connectionClosed` | `{ code: number, reason: string }` |\n| `prismLog` | `PulsarPrismLogEvent`: structured severity/domain/source/code/message/context/details. |\n\n`OutputState = \"STARTING\" | \"STARTED\" | \"STOPPING\" | \"STOPPED\" | \"PAUSED\" | \"RESUMED\" | \"RECONNECTING\" | \"RECONNECTED\"`\n\n## Errors\n\nThree exported custom error classes plus underlying obs-websocket-js / OS\nerrors. The runtime class is also used by the bundle launcher.\n\n```ts\nimport { PulsarNotConnectedError, PulsarVendorError } from \"@clodocapeo/pulsar-client\";\n```\n\n| Class | When |\n|---|---|\n| `PulsarRuntimeError` | Structured process/bootstrap error from the bundle, with stable code/envelope. |\n| `PulsarNotConnectedError` | Method called before `connect()` resolves. |\n| `PulsarVendorError` | Server returned a typed `error` field on a vendor request (validation failure, unsupported kind, etc.). Carries `requestType` + `message`. |\n\n```ts\ntry {\n  await pulsar.destinations.create({\n    kind: \"twitch\",\n    key: \"\",      // empty key is rejected server-side\n  });\n} catch (err) {\n  if (err instanceof PulsarVendorError) {\n    console.error(`vendor request \"${err.requestType}\" failed: ${err.message}`);\n  } else {\n    throw err;\n  }\n}\n```\n\nOther failures (network drop, auth rejection, malformed payload) bubble\nup as the underlying `obs-websocket-js` exceptions — see its\n[error reference](https://github.com/obs-websocket-community-projects/obs-websocket-js#errors).\n\n## Types\n\nPublic types are exported from the package root; the selection below is not\nan exhaustive list. [src/index.ts](src/index.ts) is the complete export surface:\n\n```ts\nimport type {\n  AdaptiveState,\n  AudioDevice,\n  AudioInput,\n  BitrateAdjustedEvent,\n  ConnectOptions,\n  CreateDestinationInput,\n  Destination,\n  DestinationKind,\n  InputMuteStateChangedEvent,\n  OutputState,\n  PulsarEventMap,\n  PulsarEventName,\n  RecordStateChangedEvent,\n  SpecialInputs,\n  StreamStateChangedEvent,\n  StudioModeStateChangedEvent,\n  VideoSettings,\n  VideoSettingsPatch,\n  VideoSettingsPatchResult,\n} from \"@clodocapeo/pulsar-client\";\n```\n\n## Reconnect strategy\n\nThis client does **not** auto-reconnect. The `connectionClosed` event\nfires on every disconnect (clean or abrupt); your application decides\nwhether to reconnect, with what delay, and with what backoff.\n\nA host should distinguish intentional shutdown from unexpected disconnection,\nserialize reconnect attempts and use bounded backoff. A lost WebSocket does\nnot prove the native runtime died: it may still be on air. Reconnect and inspect\nstate before deciding to replace the process.\n\nFor a real restart, finalize outputs where possible, retain files, stop only\nthe owned runtime, attach handlers to the replacement client and reconstruct\nthe intended state. The client does not automatically restore destinations,\nscenes, pending Takes or command-cache history. Avoid an unguarded respawn\nhandler that restarts again when its own shutdown closes the connection.\n\n## Wire format\n\nPulsar's vendor handlers serialize `obs_data_t` fields with the\n**snake_case** names the libobs C API expects. This client maps to\n**camelCase** at its boundary (`src/wire.ts`). The mapping is the only\nplace to touch when the server adds a field.\n\nIf you call `pulsar.callVendor(...)` directly, you see snake_case in\nboth the request and response payloads.\n\n## Versioning\n\nTracks Pulsar's [`VERSION` file](https://github.com/ZabLaboratory/Pulsar/blob/main/VERSION)\nin lockstep — this package's `3.0.0` matches Pulsar `3.0.0`.\n\n- **Patch** — bug fixes, no surface change.\n- **Minor** — new typed wrapper over an additive `pulsar:*` request\n  or event. Existing code keeps compiling.\n- **Major** — rename / removal of an existing `pulsar:*` surface, or\n  a breaking change in the embedding contract.\n\n## Compatibility\n\n| | |\n|---|---|\n| Node | ≥ 18 |\n| Module system | ESM only (`\"type\": \"module\"`) |\n| Browser | Yes (with a bundler that resolves `obs-websocket-js`'s WebSocket import) |\n| TypeScript | ≥ 5.0 — strict mode supported |\n| obs-websocket | v5 (handles the v5.0–v5.7 wire format range) |\n\nThe client can connect to stock OBS's v5 server for supported baseline calls.\nPulsar-specific vendors are absent there, and unknown-vendor failures may be\nunderlying protocol errors rather than a vendor response with an `error` field.\nDo not promise identical headless/runtime behavior across servers.\n\n## Development\n\n```bash\ngit clone https://github.com/ZabLaboratory/Pulsar\ncd Pulsar/packages/pulsar-client\nnpm install\nnpm test            # vitest with mocked obs-websocket server\nnpm test -- --watch\nnpm run build       # tsc -> dist/\nnpm run lint        # tsc --noEmit\n```\n\nThe test suite uses vitest with a mock obs-websocket server — no\nreal `pulsar.exe` needed. The fixtures live under `tests/`.\n\n## Licence\n\n[MIT](./LICENSE).\n\nThis wrapper contains no libobs code and links nothing GPL — it speaks\nobs-websocket v5 over a WebSocket. The `pulsar.exe` engine it talks to\nis distributed separately under GPL-2.0-or-later. Host distribution must\nrespect the project's documented constraints and component notices; this\nREADME is not a blanket legal determination about an arbitrary integration.\n\nIf you bundle `pulsar.exe` alongside this client (via\n`@clodocapeo/pulsar-bundle` or your own packaging), read\n[`LICENSE-INVARIANTS.md`](https://github.com/ZabLaboratory/Pulsar/blob/main/LICENSE-INVARIANTS.md)\non the Pulsar repo first — there are four non-negotiable invariants\nyour application must evaluate and honour when distributing the runtime.\n","readmeFilename":"README.md"}