{"_id":"@borealise/pipeline","_rev":"11-5e2814fdef9fe4c6ef7c62761313073f","name":"@borealise/pipeline","dist-tags":{"latest":"2026.6.16-beta.3"},"versions":{"1.0.0-alpha.0":{"name":"@borealise/pipeline","version":"1.0.0-alpha.0","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.0","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"a162462c1c38dcb7b775a54e65fe061357f10590","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-28fjCQqqsbx2q1M31S2J8/gl2QwWqB4JbvAgXdEH4mzHURR2oWASSW43fjYrNlayYHPntBhIW0ItoQP3Q/1KXQ==","signatures":[{"sig":"MEUCICf3+d/3rM8TXr7O2ePPkvSppms3SdD0YJy9V1OLL+cWAiEAun8rKRgi5budA/YZss7YkemMrG90frnbNq97jh0aUbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51061},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"220b22422f7be51c243e57cf4c0bd03d4c4738cb","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.0_1773480559723_0.6211327978046268","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.1":{"name":"@borealise/pipeline","version":"1.0.0-alpha.1","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.1","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"82de2d746d59123a53e70a2ea2258cf869134956","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.1.tgz","fileCount":6,"integrity":"sha512-NPpsHnSGEpqg1Z3O/sX2Rc+Pqx5qahKOaozs0M2NDWR7qZ+MvAqsiYO756UmhRnPbKnzanIAOgE8onE3o9AiQg==","signatures":[{"sig":"MEUCIEwCDL3dQAgBwgOX2LiLiWDbvxkZt3i8Y8LE3oA+s5GjAiEA/6PEAFE4aUwAUqnn/Wu7+9ISBx1lCAuI5LWtTkpRoYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52069},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"963d5fb947fc9b7907fc995d5b87bd164c17ea23","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.1_1773481543491_0.5654491441128504","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.2":{"name":"@borealise/pipeline","version":"1.0.0-alpha.2","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.2","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"715d0edd34d40b0f7ff6bc68ffa77a54e6371f3b","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.2.tgz","fileCount":6,"integrity":"sha512-fT7sJNejsvfswa3v1Uq0Fpj+8t7jRjnbiMB2hu+7XJBd5DOT4tOmQXeEHRTlSX8l40+Ijf870wsZqgtBXMh8mw==","signatures":[{"sig":"MEUCIFMzTIbiz1Uvb8GOVvO8fr26uNpikOYoNoMtF2z96FyeAiEAlNhUOlBeHJ9ff4RX0s4CbyVt6O5C8OSIjyO2uSPnDL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40732},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"eee0563ce5f2482192efdad34b46a1e51bed000a","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.2_1773623894173_0.48307446293215084","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.3":{"name":"@borealise/pipeline","version":"1.0.0-alpha.3","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.3","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"ed163ad8ad95e3c7e38d908cb45f91b7704b804f","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.3.tgz","fileCount":6,"integrity":"sha512-EoYz6KbxV0yjg8BKvHweG7ZONWdVOYMU5OBzM/iqFbsqAwuzZph2xIZH1omEeVLCeeNqb5GW+RKznJjZR+nPTw==","signatures":[{"sig":"MEUCIA/6b1PdKEtdTVEPwbUnDnNtCFAsvwhQ/mtyLBulzJefAiEAvl5jIirQeC3+eYSK5+a69yG+SgHPBKa7Xy9TjlWhA4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40684},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"3a01a7c2a0dd1713956dce0ff3c74c4c4bbf75ab","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^1.0.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.3_1774233988613_0.9639087601578213","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.4":{"name":"@borealise/pipeline","version":"1.0.0-alpha.4","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.4","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"344031f023f105af2274473b1c7c9607faf635ff","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.4.tgz","fileCount":6,"integrity":"sha512-mv2+qUad6Gqgc8MpWG/fD7XISn+ilEDWLkSdfQialGN07xyGAoVW8OTWI0GAE4PWW7vtxAoo4M8aqk/VCNyJxQ==","signatures":[{"sig":"MEUCIGkbO8qjZ/nhel9Ri/kK3BFl3DbTCKmNGH8HxSjSItm1AiEAqM+obTR7iBq92bn/Cu21dBlzN1p6YGQr9ksrAPw/Yg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43294},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"67945d2ede6d1d89620bf2d6289285bb7c678b12","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.4_1774444876180_0.1486414325845653","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.5":{"name":"@borealise/pipeline","version":"1.0.0-alpha.5","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.5","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"06ec19abaded046a6ecaceb9e3f1549e6e581505","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.5.tgz","fileCount":6,"integrity":"sha512-v5PnhgLZPd04j49+SNzaultBJfKRTVOMVwWcCiVEK1usXnQ30Evl4dt3Fo5eVsF8S6hAS+mySgRTfpeGcKctYw==","signatures":[{"sig":"MEUCIB1pi+BNLXvUj7wIEGU4/haG2lrNu9uhixL42v+lJ0paAiEAnUn1cC4NYtpzkDT3O1ekaoQICnV2761f3SyqBHKfxHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41471},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"138188ee351ec44588a9306b621134cbf6d134c0","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.5_1775004370565_0.18929815739551925","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.6":{"name":"@borealise/pipeline","version":"1.0.0-alpha.6","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@1.0.0-alpha.6","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"f5b67a28e70a6eb636e4766618de6a2f743d12a4","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-1.0.0-alpha.6.tgz","fileCount":6,"integrity":"sha512-BwN6o4p5dE8tXonuPaJMkSHY+hpMIgT01C4G8xzxpUW+qSluybSjC9hiAgkiSFhEuHNNCSh3u4VaK2UX+/jYdw==","signatures":[{"sig":"MEYCIQDcCfNpNtT3vp9xXSwo9DgdsfyVN3QkZfWBso+nvJDq+wIhALeMHes9WC6D5n5WYz/VzkjX9n0Q9yP1CIHoGyTLTAx+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41423},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"80e5c0d2c5649a7806fb4b7ffab68606d9bb501c","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_1.0.0-alpha.6_1775130191183_0.029109023151362656","host":"s3://npm-registry-packages-npm-production"}},"2026.6.16-beta.0":{"name":"@borealise/pipeline","version":"2026.6.16-beta.0","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@2026.6.16-beta.0","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"a9706210ea0682c4d1fadd2167862fdd30875d5e","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-2026.6.16-beta.0.tgz","fileCount":6,"integrity":"sha512-gsgBxiUbbfaGHkR0psJuV/Ip0nFugdHMdRz1apD1qXVq/iadCXS3lPCVuXsQDbncQtr31kRS+qxUFc4Zh9s13g==","signatures":[{"sig":"MEYCIQC+HqOcToFxwkbPFt6JThKUdUU4rd9aoFvIk3WEElAcLAIhANIDksrwi+UYaDwBtSpIVplpoWmI/K14egDMqL/RT4x9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44664},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b6240d5152660027baca0d3dae4f4f9632de69e2","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^2026.6.11-beta.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_2026.6.16-beta.0_1781562486217_0.003087284218811437","host":"s3://npm-registry-packages-npm-production"}},"2026.6.16-beta.1":{"name":"@borealise/pipeline","version":"2026.6.16-beta.1","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@2026.6.16-beta.1","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"dff7d19c213655dbd890c267ea5ba01b4ced56da","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-2026.6.16-beta.1.tgz","fileCount":6,"integrity":"sha512-9bZghOIm0XTZh7WIW9a0jTdKiqOYkxwo6eNNR5QOZAlW/WoL13/jai4KiDsQZfJbq5PhJZCc9SuxmeXAaRmrnA==","signatures":[{"sig":"MEQCIH1eUpPxpIs9wPKjAxl9m5ivpawQHQLkKB/G1gdVNYx/AiBsghuSLnQTmGWYRvTnyK/wB6HF7UMR97gZB5AAwSmvfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44904},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2647c62f9366e6272755239cd834d3a223be3a99","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^2026.6.11-beta.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_2026.6.16-beta.1_1781563892821_0.4007350103707794","host":"s3://npm-registry-packages-npm-production"}},"2026.6.16-beta.2":{"name":"@borealise/pipeline","version":"2026.6.16-beta.2","keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","_id":"@borealise/pipeline@2026.6.16-beta.2","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"homepage":"https://borealise.com","bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"dist":{"shasum":"6c3aeb01ed9f2737bb9af93f2c405a1328c4f85c","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-2026.6.16-beta.2.tgz","fileCount":6,"integrity":"sha512-w9wYh50n7w0Yi0x1BeKLvX5ieb9mGtqzquH+zIKYP6sJlyovmdtBni/O7Vp95V2yVZEBwOgFFItuFo9dul79Mg==","signatures":[{"sig":"MEYCIQC5xUWIytWqwtB3iSpGzhI6rYpjycdCjF+ZboS5icQ84wIhALT+1M2h372G3vKhg8tg9DpZWEANx9pJlBySgiYXXtu7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45554},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"7f6c58084f45a29f86d31690635c7c036368e140","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","build":"tsup src/index.ts --format cjs,esm --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"repository":{"url":"git+https://github.com/Borealise-Platform/pipeline.git","type":"git"},"_npmVersion":"10.8.3","description":"Official realtime pipeline client for Borealise","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@borealise/shared":"^2026.6.11-beta.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/pipeline_2026.6.16-beta.2_1781565507261_0.7225594853280048","host":"s3://npm-registry-packages-npm-production"}},"2026.6.16-beta.3":{"name":"@borealise/pipeline","version":"2026.6.16-beta.3","description":"Official realtime pipeline client for Borealise","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean","dev":"tsup src/index.ts --format cjs,esm --dts --watch","lint":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["borealise","pipeline","websocket","realtime","client"],"author":{"name":"Borealise"},"license":"MIT","homepage":"https://borealise.com","repository":{"type":"git","url":"git+https://github.com/Borealise-Platform/pipeline.git"},"bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"dependencies":{"@borealise/shared":"^2026.6.11-beta.1"},"_id":"@borealise/pipeline@2026.6.16-beta.3","gitHead":"174a64aff2fb706531d2cfb990fcdc12828eeec0","_nodeVersion":"22.15.0","_npmVersion":"10.8.3","dist":{"integrity":"sha512-2Eo/yA3Jm8jg8tVablb1KOW+VEtqApSaodNzHA03deh6c5ftT0LyuLUG7BJUBTOQscYFYx6BaXsT2x+9z8FeoQ==","shasum":"1271de07d46d5693f8202d6429e22ce16574f363","tarball":"https://registry.npmjs.org/@borealise/pipeline/-/pipeline-2026.6.16-beta.3.tgz","fileCount":6,"unpackedSize":60079,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCHwgRgL5Gk63kQojAjAxuZ3/3PilQWoj33zfKgkEHOckCIQDsqFsES2rHQu3hzgVe+x9hFLb6vWVclmWoBMnYw2757g=="}]},"_npmUser":{"name":"norelock","email":"business.norelock@gmail.com"},"directories":{},"maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pipeline_2026.6.16-beta.3_1781634066459_0.32496110695828007"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T09:29:19.668Z","modified":"2026-06-16T18:21:06.750Z","1.0.0-alpha.0":"2026-03-14T09:29:19.881Z","1.0.0-alpha.1":"2026-03-14T09:45:43.644Z","1.0.0-alpha.2":"2026-03-16T01:18:14.305Z","1.0.0-alpha.3":"2026-03-23T02:46:28.759Z","1.0.0-alpha.4":"2026-03-25T13:21:16.346Z","1.0.0-alpha.5":"2026-04-01T00:46:10.833Z","1.0.0-alpha.6":"2026-04-02T11:43:11.323Z","2026.6.16-beta.0":"2026-06-15T22:28:06.365Z","2026.6.16-beta.1":"2026-06-15T22:51:32.945Z","2026.6.16-beta.2":"2026-06-15T23:18:27.420Z","2026.6.16-beta.3":"2026-06-16T18:21:06.614Z"},"bugs":{"url":"https://github.com/Borealise-Platform/pipeline/issues"},"author":{"name":"Borealise"},"license":"MIT","homepage":"https://borealise.com","keywords":["borealise","pipeline","websocket","realtime","client"],"repository":{"type":"git","url":"git+https://github.com/Borealise-Platform/pipeline.git"},"description":"Official realtime pipeline client for Borealise","maintainers":[{"name":"norelock","email":"business.norelock@gmail.com"}],"readme":"# @borealise/pipeline\n\nOfficial Borealise realtime pipeline client — a typed WebSocket client for Borealise's\ngateway protocol: identify/session bootstrap, heartbeats, dispatch event subscriptions,\nautomatic reconnect with backoff, and watch-together transport controls.\n\n## Runtime support\n\n- **Browser** — works out of the box using the native `WebSocket`.\n- **Node.js** — no global `WebSocket`; you must provide one via `webSocketFactory` (e.g. [`ws`](https://www.npmjs.com/package/ws)).\n\n## Installation\n\n```bash\nnpm install @borealise/pipeline\n```\n\n`@borealise/pipeline` depends on `@borealise/shared` but does **not** re-export it.\nIf you need protocol constants (`Opcodes`, `Events`, `Presence`, `CloseCodes`,\n`getEventName`, ...), install and import them from `@borealise/shared` directly:\n\n```bash\nnpm install @borealise/shared\n```\n\nIf you run this in Node.js, install `ws` too:\n\n```bash\nnpm install ws\n```\n\n## Quick start (browser)\n\n```ts\nimport { createPipeline } from '@borealise/pipeline'\nimport { Events } from '@borealise/shared'\n\nconst pipeline = createPipeline({\n  url: 'wss://prod.borealise.com/ws',\n  tokenProvider: () => localStorage.getItem('token'),\n  loggerEnabled: true,\n})\n\npipeline.onConnection('onReady', (ready) => {\n  console.log('ready session', ready.session_id)\n  pipeline.subscribe([Events.USER_UPDATE, Events.ROOM_CHAT_MESSAGE])\n})\n\npipeline.onConnection('onDisconnect', (code, reason) => {\n  console.log('disconnected', code, reason)\n})\n\npipeline.connect()\n```\n\n## Quick start (Node.js with ws)\n\nNode has no global `WebSocket` by default — inject one via `webSocketFactory`:\n\n```ts\nimport WebSocket from 'ws'\nimport { createPipeline } from '@borealise/pipeline'\nimport { Events } from '@borealise/shared'\n\nconst pipeline = createPipeline({\n  url: 'wss://prod.borealise.com/ws',\n  tokenProvider: () => process.env.BOREALISE_TOKEN,\n  webSocketFactory: (url) => new WebSocket(url) as unknown as WebSocket,\n})\n\npipeline.on(Events.USER_UPDATE, (payload) => {\n  console.log('user update', payload)\n})\n\npipeline.connect()\n```\n\n## `createPipeline` is a singleton\n\n`createPipeline(options)` builds the client on its **first** call and returns that\nsame instance on every later call, regardless of the options passed — there is one\npipeline client per process/app. Call it once near app startup and import the\nreturned value everywhere else; don't expect a second call with different `options`\nto produce a second, independent client.\n\nThe returned object is also `Object.freeze`d: you can call its methods and read its\ngetters, but you can't reassign them.\n\n## How the pipeline works\n\n### 1. Connect\n\n`pipeline.connect()` opens the WebSocket and moves `state` to `CONNECTING`. Calling it\nwhile already connecting/open is a no-op.\n\n### 2. HELLO handshake\n\nThe server sends `HELLO` with `session_id` and `heartbeat_interval`. The client starts\nits heartbeat timer (interval ± jitter) and, if `tokenProvider` returns a token, sends\n`IDENTIFY` automatically.\n\n### 3. Identify\n\nIf you don't supply `tokenProvider` (or it returns nothing), call `pipeline.identify(token)`\nyourself once you have a token.\n\n### 4. READY\n\nOn successful auth, the server sends `READY`. The client moves `state` to `IDENTIFIED`,\nstores `user`/session metadata, and resubscribes any event codes you'd previously passed\nto `subscribe()`.\n\n### 5. Dispatch\n\nThe server emits `DISPATCH` frames with an event code and payload. The client fans these\nout to:\n\n- event listeners registered via `pipeline.on(event, listener)`\n- the `onDispatch` connection listener\n- the optional dispatch bridge set via `setDispatchHandler` (see below)\n\n### 6. Reconnect behavior\n\nOn non-terminal disconnects, the client reconnects automatically with backoff:\n`1000ms → 2000ms → 5000ms → 10000ms → 30000ms` (repeating the last step), up to\n**10 attempts** before giving up and settling into `DISCONNECTED`.\n\nNo reconnect is attempted for normal or explicit-auth-failure close codes\n(`CloseCodes.NORMAL`, `AUTHENTICATION_FAILED`, `NOT_AUTHENTICATED`).\n\n## State model\n\n`pipeline.state` is a **numeric bitfield**, not a string. Exactly one phase is active\nat a time; `IDENTIFIED` also carries the `CONNECTED` bit, so \"connected or identified\"\nis a single bitwise test instead of two string comparisons:\n\n```ts\nimport { ConnectionFlags, isConnectionFlagSet } from '@borealise/pipeline'\n\nConnectionFlags.DISCONNECTED   // 0\nConnectionFlags.CONNECTING     // 1 << 0\nConnectionFlags.CONNECTED      // 1 << 1\nConnectionFlags.RECONNECTING   // 1 << 2\nConnectionFlags.IDENTIFIED     // CONNECTED | (1 << 3)\n\nisConnectionFlagSet(pipeline.state, ConnectionFlags.CONNECTED) // true while connected OR identified\n```\n\nDon't compare `pipeline.state` with `===` against another raw number you computed by\nhand — use `isConnectionFlagSet` (or `pipeline.isConnected`/`pipeline.isIdentified`,\nwhich already do this for you).\n\n> **Migrating from an older version:** `state`/`onStateChange` used to emit the strings\n> `'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'identified'`. Replace\n> `state === 'connected'` with `isConnectionFlagSet(state, ConnectionFlags.CONNECTED)`,\n> and similarly for the other phases.\n\nReactive getters:\n\n| Getter | Meaning |\n| --- | --- |\n| `pipeline.state` | Raw `ConnectionFlags` bitfield value |\n| `pipeline.user` | `ReadyPayload['user']` once identified, else `null` |\n| `pipeline.isConnected` | `true` while `CONNECTED` or `IDENTIFIED` |\n| `pipeline.isIdentified` | `true` once `IDENTIFIED` |\n\n## API surface\n\n### Connection\n\n- `connect()`\n- `disconnect()`\n\n### Authentication and presence\n\n- `identify(token)`\n- `updatePresence(status, activity?)`\n\n### Subscriptions\n\n- `subscribe(eventCodes)`\n- `unsubscribe(eventCodes)`\n\n### Chat\n\n- `sendChatMessage(roomSlug, content)` — returns `false` (no-op) if not identified yet\n\n### Watch-together transport\n\n- `sendWtSeek(roomSlug, position)`\n- `sendWtPause(roomSlug, position)`\n- `sendWtResume(roomSlug, position)`\n- `sendWtStateRequest(roomSlug)`\n- `sendWtHeartbeat(roomSlug, position)`\n- `sendWtStateResponse(roomSlug, targetSessionId, paused, position)`\n\nAll of the above (except `identify`) are no-ops until the session is identified.\n\n### Event listeners\n\n- `on(eventCode, listener)` / `off(eventCode, listener)` — dispatch events; `on` returns an unsubscribe function\n- `onConnection(eventName, listener)` / `offConnection(eventName, listener)` — connection lifecycle events; `onConnection` also returns an unsubscribe function\n\nConnection event names (`PipelineEvents`):\n\n- `onConnect`\n- `onDisconnect(code, reason)`\n- `onReconnect(attempt)`\n- `onStateChange(state)`\n- `onReady(payload)`\n- `onError(payload)`\n- `onDispatch(event, data)`\n\n## `createPipeline` options\n\n```ts\ninterface PipelineClientOptions {\n  url: string                                          // required pipeline endpoint\n  tokenProvider?: () => string | null | undefined       // resolves the auth token for IDENTIFY\n  loggerEnabled?: boolean                                // verbose console logging, default false\n  webSocketFactory?: (url: string) => WebSocket          // required in Node.js / non-browser runtimes\n}\n```\n\n## Typed constants and helpers (from `@borealise/shared`)\n\n`@borealise/pipeline` only exports `createPipeline`, `Pipeline`, the payload/event\ntypes in `src/types.ts`, and the `ConnectionFlags`/`isConnectionFlagSet` bitfield\nhelpers. Everything protocol-related — including error codes — comes from\n`@borealise/shared` directly:\n\n- `Opcodes`, `Events`, `Presence`, `Activity`, `Roles`, `CloseCodes`, `PipelineErrors`\n- `getEventName(code)`, `getPresenceName(code)`, `getActivityName(code)`, `getRoleName(code)`, `getPipelineErrorName(code)`\n\n```ts\nimport { PipelineErrors, getPipelineErrorName, type PipelineError } from '@borealise/shared'\n\npipeline.onConnection('onError', (error) => {\n  if (error.code === PipelineErrors.CHAT_USER_MUTED) { /* ... */ }\n  console.warn(getPipelineErrorName(error.code as PipelineError))\n})\n```\n\n## Dispatch bridge integration\n\nFor apps with a centralized store (Redux, Pinia, Vuex, ...), use `setDispatchHandler` to\nbridge the client's internal lifecycle/event actions into your store's dispatcher:\n\n```ts\npipeline.setDispatchHandler((action, payload) => {\n  store.dispatch(action, payload)\n})\n```\n\nActions emitted by the client:\n\n- `pipeline/setConnectionState`\n- `pipeline/setReady`\n- `pipeline/setInvalidSession`\n- `pipeline/handleDispatch`\n- `pipeline/handleServerError`\n\n`setStoreDispatch` is kept as a deprecated alias of `setDispatchHandler` for older\nPinia-store integrations; new code should call `setDispatchHandler` directly.\n\n## Error handling notes\n\n- Server-side protocol errors are emitted through `onError` with a numeric `code`/`message`.\n- Client parse/listener failures are logged, not thrown, so one bad listener or malformed\n  frame can't take down the connection.\n- All `send*`/`sendWt*` methods are safe no-ops if the socket isn't open or the session\n  isn't identified yet.\n\n## Production recommendations\n\n- Always use `wss://` in production.\n- Keep `tokenProvider` fast and side-effect free — it's called synchronously on every\n  `HELLO`.\n- Subscribe only to the event codes your UI or worker actually consumes.\n- Register listeners before `connect()` when you need a first-event guarantee.\n- Call `disconnect()` on app shutdown/teardown to cancel pending reconnects.\n\n## Package architecture (for contributors)\n\nThe client is implemented functionally — no `class`, no `this`. Each instance is a set\nof closures sharing one mutable state record, split by responsibility under `src/pipeline/`:\n\n| Module | Responsibility |\n| --- | --- |\n| `context.ts` | Shared state shape (`PipelineState`/`PipelineContext`) |\n| `events.ts` | Listener registries: `on`/`off`/`onConnection`/`offConnection` |\n| `heartbeat.ts` | Heartbeat scheduling (interval + jitter) |\n| `socket.ts` | WebSocket lifecycle, frame parsing/dispatch, reconnect backoff |\n| `commands.ts` | Outbound opcode frames (identify, subscribe, chat, watch-together) |\n| `client.ts` | Wires the above into the frozen `Pipeline` object |\n| `index.ts` | `createPipeline` singleton + barrel exports |\n\n`src/index.ts` (the package entry point) re-exports only the public surface\n(`createPipeline`, `Pipeline`, and the types in `src/types.ts`) — internal wiring types\nlike `PipelineContext`/`Socket`/`Commands` are intentionally not part of the public API.\n\n## Local development\n\nBuild the package:\n\n```bash\nnpm run build\n```\n\nWatch mode:\n\n```bash\nnpm run dev\n```\n\nTypecheck only:\n\n```bash\nnpm run lint\n```\n","readmeFilename":"README.md"}