{"_id":"@asteby/metacore-websocket","_rev":"9-63abc52d42ae44bfe81c655e4b6596f6","name":"@asteby/metacore-websocket","dist-tags":{"latest":"6.0.0"},"versions":{"0.3.0":{"name":"@asteby/metacore-websocket","version":"0.3.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@0.3.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"homepage":"https://github.com/asteby/metacore-sdk#readme","bugs":{"url":"https://github.com/asteby/metacore-sdk/issues"},"dist":{"shasum":"07399140555362fa9b5704d90937d7602ef15faa","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-0.3.0.tgz","fileCount":19,"integrity":"sha512-35SiSQPw6VT40c20FOa4tTdAXwtFDwUqD36J6PLmb5XNArwrsTQO5S6KgFPEE6dgs3/MQLGdFRI8Ymvi0OVYkA==","signatures":[{"sig":"MEUCIQDSqAZafcY6Q1bbipMXlxMYFSGbuBMtS+dui1GM1qjPNQIgOm2aS0Liioo1a5j6F7jvD1gN19ge/Wm/8ZlCI79F+EU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45758},"main":"./dist/index.js","type":"module","_from":"file:asteby-metacore-websocket-0.3.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"_resolved":"/tmp/4169781c69eb0080251d7b4edc0f85cb/asteby-metacore-websocket-0.3.0.tgz","_integrity":"sha512-35SiSQPw6VT40c20FOa4tTdAXwtFDwUqD36J6PLmb5XNArwrsTQO5S6KgFPEE6dgs3/MQLGdFRI8Ymvi0OVYkA==","repository":{"url":"git+https://github.com/asteby/metacore-sdk.git","type":"git","directory":"packages/websocket"},"_npmVersion":"10.8.2","description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","typescript":"^5.6.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_0.3.0_1776716713654_0.41564160612002876","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@asteby/metacore-websocket","version":"0.4.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@0.4.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"2f93d49c0bb662a8d5c68d7eefaddf16867976ef","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-0.4.0.tgz","fileCount":27,"integrity":"sha512-2yw/wpyPyUbD3DnaGfLsyHWKLTBNRGRhpqsLmhva/8c2oZJO0A+KOa6QimyG3eoRdwQz3PQDXAstk4ubY6onxw==","signatures":[{"sig":"MEQCIDjeRSVRprfIkpJwy8kq/PgxIgto8moMTHiCjYbsS2kmAiA5QvsFi3GQj5pkLigPEPfpCw0I1TQK4g+fzhQsPjs+FA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53843},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_0.4.0_1779124290975_0.17429406785458035","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asteby/metacore-websocket","version":"0.5.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@0.5.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"3c4d6996c4253bdff9cdbc9aa680b33196080d70","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-0.5.0.tgz","fileCount":31,"integrity":"sha512-d3BjzsDaBIDXOvjLdmgfS0d/6kDzd+dbgbdJi7j7LvZ4RNHfIC9eNxXASYXKMA81k9Z5cJD75Ef0WeoB00atUA==","signatures":[{"sig":"MEUCIQDOLi+VYwkKS0YYRmGP4l4BE8vpo/cknVkAeLkrEJgQXgIgZ2PIz2WOLl9g8jd5Jtu2tJXOgewStMUBlTm/vYMyUow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71412},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":">=18","react-dom":">=18"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_0.5.0_1784657116074_0.9391465190928439","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@asteby/metacore-websocket","version":"1.0.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@1.0.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"1648737c986d169a5ff9099528aa3db0185a7b20","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-1.0.0.tgz","fileCount":39,"integrity":"sha512-k5oSmKbfTCVe6aTH+T1ZbiWvAPmj+V6tT1abBGX3DWoXlojmgqVAo8RX/3Lg8CSa4LkqQIxLy6a0f58VOrinFA==","signatures":[{"sig":"MEYCIQCQ0UUwLptFg2YKItJ/FJ4waWrsVRWJp+mvY7OheodsgwIhANMghHm5UoknxPQHf++a7f0LyWzptoHM3pNrJjX/Xu54","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^4.0.0","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@asteby/metacore-sdk":"3.7.0"},"peerDependencies":{"react":">=18","react-dom":">=18","@asteby/metacore-sdk":"^3.7.0"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_1.0.0_1788644306791_0.3458559287819809","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@asteby/metacore-websocket","version":"2.0.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@2.0.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"ca98d7bd5da20cf28cad589805cffb03262189ba","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-2.0.0.tgz","fileCount":39,"integrity":"sha512-voicTwtQUPpIsh7UZQwPs4g6VXQDJ5ZwUuG8pSgTb26M79kEZFU0yOWmxb/oan2MYmClE6BKtuM+h87i9hgO9Q==","signatures":[{"sig":"MEQCIEQzkMa+Xd0OfeHxlSv4SI2njrLX9aWQfFsB6OQREYq4AiBzIAjlQHtsfnygM6Gix+icssyxZrrDpoml1kJsYvA53g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICmhr1VipLYoG0SGJOVbpLMX41Gxz4u4q8fXcN0zS8STAiEAghxcOpgHW2C2X6mpPE5ClzUX5Z6YTNEM0EWCUOD3N8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^4.0.0","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@asteby/metacore-sdk":"3.8.0"},"peerDependencies":{"react":">=18","react-dom":">=18","@asteby/metacore-sdk":"^3.8.0"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_2.0.0_1789862780474_0.5100994430507995","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@asteby/metacore-websocket","version":"3.0.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@3.0.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"ae408a8ab91ec4f16e29bb2904bcb137a4431165","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-3.0.0.tgz","fileCount":39,"integrity":"sha512-jRIlHqG4OJyrdGDUa++e9O7PXSt0h7wguW7/9BBmSRD1VnbKUpKs3b/IMxowKoBS32hri6a+yqb5+e1CGHj5uQ==","signatures":[{"sig":"MEQCIFyXE2y8w2RSzgrdi8PhZh6McI1xUGfyNdxdJH3OTvdMAiBmgblgZVS6dYui4zeKPjRabPpz3PcYLye3l7MNZ5l32Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFxDJ8UQ2NbA+tBhFtK3QeP998Ib3/5tgpT1rTwiGaooAiBX5i3zMMI22HJc+oYeJeOF3DrdE1QdsY+K/NVOEhgwtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131825},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^4.0.0","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@asteby/metacore-sdk":"3.9.0"},"peerDependencies":{"react":">=18","react-dom":">=18","@asteby/metacore-sdk":"^3.9.0"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_3.0.0_1790654093758_0.41104085696964376","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@asteby/metacore-websocket","version":"4.0.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@4.0.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"36b6a1eedad381365775ea5f7dc5ba97ab482956","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-4.0.0.tgz","fileCount":39,"integrity":"sha512-xDeet/DhdsbijEVkP86iGQfUCzgO+XU6BlRrB480XsrI4oj9mj1ZPHKa8ngMP7EZtL6xQBBiRnmbqXIxghOSBg==","signatures":[{"sig":"MEUCIEo5zGz95MK0C4YIDORAme2zw6Kh0KtutNLqrOXAjmKWAiEA8k424HQ+X4MaS4SWXbiqsI5UKoF5z/tI2u9rqfoPAeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF+cKbzniSQCxYT4Ccyu+yYmxVwT8NRFfi/vx25Jzj7wAiEAnB+COwM3TzFFns6tGZp19A/LfgfmbuhbARmJHcEvt/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131827},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^4.0.0","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@asteby/metacore-sdk":"3.10.0"},"peerDependencies":{"react":">=18","react-dom":">=18","@asteby/metacore-sdk":"^3.10.0"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_4.0.0_1790723435114_0.6164481855638291","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@asteby/metacore-websocket","version":"5.0.0","license":"Apache-2.0","_id":"@asteby/metacore-websocket@5.0.0","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"dist":{"shasum":"65d8cdd18b82c998faaf7a4fbd04c805a0eac275","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-5.0.0.tgz","fileCount":39,"integrity":"sha512-1116wKXtAlCuJNWPP0mHNH0dsQHyxNt0PyFH87FhWYuIaEqX6oFmWO0/N4cxdkSB74BoCyU03trvpk1n0hA2Bw==","signatures":[{"sig":"MEQCIB9DAt9CMUfTOQwftOUC58lSqzdMR/b6+IcgKFRrAuKjAiBnqMYeeh3k4QJM31Hv1XitXD0sYt+Q8KUCHysGZZakeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBASZcV0HNdUz9L6Z4ktsvVFFcDWpl5SlLQrokd7coX9AiAQVhig6H60hm3fbKrMXoHsv7scLhPIO0PSp32/G02Gow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131827},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"scripts":{"dev":"tsc -w -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^4.0.0","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@asteby/metacore-sdk":"3.11.0"},"peerDependencies":{"react":">=18","react-dom":">=18","@asteby/metacore-sdk":"^3.11.0"},"_npmOperationalInternal":{"tmp":"tmp/metacore-websocket_5.0.0_1790728892502_0.2081655138272358","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"_id":"@asteby/metacore-websocket@6.0.0","dist":{"shasum":"863830cc88896d46dfdf415224f7a00901421f12","tarball":"https://registry.npmjs.org/@asteby/metacore-websocket/-/metacore-websocket-6.0.0.tgz","fileCount":39,"integrity":"sha512-5Iwjhjcy3kgF3odMDvhcFtZth09AWZRIfM9zZaGUFuLLdseEJ0Kp2Xf/f5iKqDDVMqz1GXQLBezos3fnkMIj9A==","signatures":[{"sig":"MEYCIQCw8FKzc5jCjYeDo20+LWYC9oddk9mjvp/ngq2IqAg3CAIhAN2ZbXWOH/YcR9uNiwyDEZ3M+gp7MzyZ3rinfmCpCpE6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDY2GhVyhsEfVRGfHcKROCZgIxvdu51+g4AgYSV8w2j0wIgcgq2pT+vuWrGWJJLdRXKMTKVoULWr2j5pnYp3eFl4fU="}],"unpackedSize":131827},"main":"./dist/index.js","name":"@asteby/metacore-websocket","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./hooks":{"types":"./dist/hooks.d.ts","import":"./dist/hooks.js"},"./native":{"types":"./dist/native.d.ts","import":"./dist/native.js"},"./provider":{"types":"./dist/provider.d.ts","import":"./dist/provider.js"}},"license":"Apache-2.0","scripts":{"dev":"tsc -w -p tsconfig.json","test":"vitest run","build":"tsc -p tsconfig.json","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"version":"6.0.0","_npmUser":{"name":"asteby-hq","email":"dannyjp49@gmail.com"},"repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","directories":{},"maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^4.0.0","react-dom":"^19.2.4","typescript":"^6.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@asteby/metacore-sdk":"3.12.0"},"peerDependencies":{"react":">=18","react-dom":">=18","@asteby/metacore-sdk":"^3.12.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/metacore-websocket_6.0.0_1790748035039_0.8471554338864902"}}},"time":{"created":"2026-04-20T20:25:13.578Z","modified":"2026-09-30T06:00:35.281Z","0.3.0":"2026-04-20T20:25:13.801Z","0.4.0":"2026-05-18T17:11:31.129Z","0.5.0":"2026-07-21T18:05:16.214Z","1.0.0":"2026-09-05T21:38:26.923Z","2.0.0":"2026-09-20T00:06:20.558Z","3.0.0":"2026-09-29T03:54:53.877Z","4.0.0":"2026-09-29T23:10:35.190Z","5.0.0":"2026-09-30T00:41:32.664Z","6.0.0":"2026-09-30T06:00:35.124Z"},"license":"Apache-2.0","repository":{"url":"https://github.com/asteby/metacore-sdk","type":"git","directory":"packages/websocket"},"description":"Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions","maintainers":[{"name":"asteby-hq","email":"dannyjp49@gmail.com"}],"readme":"# @asteby/metacore-websocket\n\nTyped WebSocket provider for React 18/19 apps in the Metacore ecosystem.\n\n- Native `WebSocket` — no `react-use-websocket` dependency\n- Auto-reconnect with exponential backoff (capped at 30s)\n- Optional heartbeat (`{ type: 'ping' }` by default)\n- Typed messages with a pub/sub registry (`useWebSocketMessage`)\n- Token-aware: pass a `getToken` callback; token is appended as `?token=`\n  (or customize with `buildUrl`)\n\n## Install\n\n```sh\npnpm add @asteby/metacore-websocket\n```\n\n## Usage\n\n```tsx\nimport {\n  WebSocketProvider,\n  useWebSocket,\n  useWebSocketMessage,\n  type WebSocketMessage,\n} from '@asteby/metacore-websocket'\nimport { useAuthStore } from '@/stores/auth-store'\n\ntype AppMessage =\n  | WebSocketMessage<'NOTIFICATION', { title: string; body: string }>\n  | WebSocketMessage<'STATUS_UPDATE', { device_id: string; status: string }>\n\nexport function Root({ children }: { children: React.ReactNode }) {\n  return (\n    <WebSocketProvider<AppMessage>\n      url={import.meta.env.VITE_WS_URL}\n      getToken={() => useAuthStore.getState().auth.accessToken}\n      reconnectInterval={3000}\n      maxReconnectAttempts={10}\n      heartbeatInterval={30000}\n    >\n      {children}\n    </WebSocketProvider>\n  )\n}\n\nfunction MyComponent() {\n  const { status, isConnected, send } = useWebSocket<AppMessage>()\n\n  useWebSocketMessage<AppMessage>('NOTIFICATION', (msg) => {\n    // msg.payload is typed as { title, body }\n    console.log(msg.payload?.title)\n  })\n\n  return (\n    <button onClick={() => send({ type: 'SUBSCRIBE', conversation_id: '1' })}>\n      {isConnected ? 'Connected' : `Status: ${status}`}\n    </button>\n  )\n}\n```\n\n## Props\n\n| Prop | Type | Default | Notes |\n| --- | --- | --- | --- |\n| `url` | `string \\| null` | — | Base WebSocket URL. `null` disconnects. |\n| `getToken` | `() => string \\| Promise<string>` | — | Optional token getter. Token appended as `?token=` unless `buildUrl` is used. |\n| `buildUrl` | `(url, token) => string \\| null` | — | Custom URL builder. Return `null` to skip. |\n| `reconnectInterval` | `number` | `3000` | Base delay in ms. |\n| `maxReconnectAttempts` | `number` | `10` | — |\n| `exponentialBackoff` | `boolean` | `true` | `base * 2^attempt` capped at 30s. |\n| `heartbeatInterval` | `number` | `0` | `0` disables heartbeat. |\n| `heartbeatMessage` | `SendPayload` | `{ type: 'ping' }` | — |\n| `onOpen` / `onClose` / `onError` / `onMessage` | handlers | — | — |\n\n## Hooks\n\n- `useWebSocket<TMessage>()` — returns `{ status, isConnected, lastMessage, lastEvent, send, disconnect, reconnect, subscribe }`.\n- `useWebSocketMessage<TMessage>(type, handler)` — typed subscription; auto-unsubscribes on unmount.\n\n## Realtime data events (`createRealtimeClient`)\n\nThe wire protocol behind `host.realtime` / `api.realtime` (contract:\n`RealtimeAPI` in `@asteby/metacore-sdk`). The host bridges the kernel's\ncanonical CRUD events into lean, **org-scoped, value-free** `DATA_EVENT`\nframes; addons subscribe by model and refetch what they show. Nothing flows\nuntil somebody subscribes.\n\n```\nclient → server  {\"type\":\"SUBSCRIBE\",\"models\":[\"SalesOrder\",\"work_orders\"]}\n                 {\"type\":\"UNSUBSCRIBE\",\"models\":[\"SalesOrder\"]}\nserver → client  {\"type\":\"DATA_SUBSCRIBED\",\"payload\":{\"models\":[...]}}\n                 {\"type\":\"DATA_EVENT\",\"payload\":{org_id,addon,model,table,action,id,\n                                                 stage_from?,stage_to?,actor_id?,at,fields?,coalesced?}}\n                 {\"type\":\"DATA_EVENTS_DROPPED\",\"payload\":{\"dropped\":N,\"models\":[...]}}\n```\n\nA subscription token matches a frame when it equals (case-insensitively) the\nmodel key, the table name or `addon.Model`; `\"*\"` matches everything. The\nserver coalesces bursts on the same `(model, id)` (~150 ms) and rate-limits\neach connection; when frames are dropped the client synthesises one `resync`\nevent per subscribed model so consumers refetch instead of trusting a stream\nwith a hole in it. The same happens after a reconnect.\n\n### Own socket (a standalone addon or a non-React host)\n\n```ts\nimport { createRealtimeClient } from '@asteby/metacore-websocket'\n\n// GET /api/realtime/info → { enabled, ws_url, channels: ['org:<id>'], ... }\nconst info = await api.get('/realtime/info').then((r) => r.data.data)\n\nconst realtime = createRealtimeClient({\n  wsUrl: info.ws_url,\n  channel: info.channels[0],\n  getToken: () => useAuthStore.getState().auth.accessToken,\n})\n\nconst off = realtime.subscribe({ models: ['SalesOrder'] }, (e) => {\n  if (e.action === 'resync' || e.id === currentId) refetch()\n})\n// later\noff()\nrealtime.close()\n```\n\n### Host socket (what ops does — one socket for chat, presence, calls AND data)\n\n```ts\nimport { createRealtimeClient, transportFromHostSocket } from '@asteby/metacore-websocket'\n\nconst realtime = createRealtimeClient({\n  transport: transportFromHostSocket({\n    subscribe: ws.subscribe, // (type, handler) => unsubscribe\n    send: (frame) => ws.sendMessage(JSON.stringify(frame)),\n    isConnected: () => ws.isConnected,\n    onConnected: (listener) => ws.onConnected(listener),\n  }),\n})\n// hand `realtime` to addons: <Mounted host={{ ..., realtime }} /> or api.realtime\n```\n\n`RealtimeClient` also exposes `onStatus(listener)`, `subscribedModels()`,\n`serverModels()` (last `DATA_SUBSCRIBED` ack) and `close()`. `subscribe` never\nthrows and may be called before the socket is open — the `SUBSCRIBE` frame is\nsent on the next open. React consumers should use `useRealtime` /\n`useRealtimeInvalidate` from `@asteby/metacore-runtime-react` instead of\ncalling the client directly.\n","readmeFilename":""}