{"_id":"@avasapp/rozenite-plugin-ably","_rev":"9-983a7d0a26b7dd2c4742e98d6d9818fb","name":"@avasapp/rozenite-plugin-ably","dist-tags":{"latest":"1.2.0"},"versions":{"0.1.0":{"name":"@avasapp/rozenite-plugin-ably","version":"0.1.0","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@0.1.0","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"c01e28f16b8a67e3ceaa06ce9893716b7cbf5620","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-0.1.0.tgz","fileCount":10,"integrity":"sha512-CBEh46kOLNQNpdpxeqNhMd2yL2xnH5SJG5X7dtLNyvBMSYwIMU9c9/1z8pasJmDbItUqPQhlOCxTIf2Q9G1BNw==","signatures":[{"sig":"MEUCIFU9xGg5sx01BeqFkNou1e0UqABp4emB48vJI7qx4jfqAiEAjw+6atYQH/ei7T00Tsff6VxzgKmY9WGxdBFM8O2E/94=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357305},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./package.json":"./package.json"},"gitHead":"65c38109b038dfaddbca83f583b3382ff9ad9d28","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"deprecated":"Superseded by 0.1.1; identical code, corrected README.","repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"26.5.0","dependencies":{"@rozenite/plugin-bridge":"^1.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","rozenite":"^1.13.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","@types/react":"~19.2.2","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@rozenite/vite-plugin":"^1.13.0"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_0.1.0_1784720335303_0.3615217212933042","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@avasapp/rozenite-plugin-ably","version":"0.1.1","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@0.1.1","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"b638fb532d32076bf9cafa2c3523ef8baaa587c7","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-0.1.1.tgz","fileCount":10,"integrity":"sha512-iDjuTnb+6C8d4D8h1865JVrudrHodktEi2z/JzKXZqncJnBUyu0tUepJ1HaVBFNpw5xOjiRw/33lQi5UTsWLIQ==","signatures":[{"sig":"MEUCIQDj9rrlFJYRG5rUZIiX8ozZG/s8BuiqYhiMq4hZfxUjiQIgexIgacNUdcUXyiYFCjoSS8ZYxXEvo6L0k3VWepXNKuw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":357319},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./package.json":"./package.json"},"gitHead":"4ac2529eb606241692c2479b65138b2981520304","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"26.5.0","dependencies":{"@rozenite/plugin-bridge":"^1.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","rozenite":"^1.13.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","@types/react":"~19.2.2","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@rozenite/vite-plugin":"^1.13.0"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_0.1.1_1785214851906_0.7461974249677563","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@avasapp/rozenite-plugin-ably","version":"0.2.0","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@0.2.0","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"5592de7ea0dd7dd43b3f628018e9f9c576e446bb","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-0.2.0.tgz","fileCount":10,"integrity":"sha512-buGoL5TtpLFkJ4Fqg6w6YZSiiFPKaWTwtzo5ttmxYWmBjy9B3jxIP5oCdBIwEkLvL3Njt7hwQULC5+e5iAMIeQ==","signatures":[{"sig":"MEUCIQCqvaaLyVsz1eIEUF+m4Hwnsbu7M4yTFiDEMznmrPVYNwIgT1xrUNLMhF05Y0y/ii8H7e6CqWfzN1QQjzyhdXQVU9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687000},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./package.json":"./package.json"},"gitHead":"26e3557d3d81f94453a9b49efbc7839c20b2b6f3","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@rozenite/plugin-bridge":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","postcss":"^8.5.6","rozenite":"^2.0.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","tailwindcss":"^4.2.2","@rozenite/ui":"^2.0.0","@types/react":"~19.2.2","lucide-react":"^0.263.1","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@tailwindcss/postcss":"^4.2.2","@rozenite/vite-plugin":"^2.0.0"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_0.2.0_1786253864029_0.1657836281643985","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@avasapp/rozenite-plugin-ably","version":"1.0.0","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@1.0.0","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"7108b9626df4c87edf17a39ad649d5ef0ae4aed2","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-1.0.0.tgz","fileCount":17,"integrity":"sha512-yn35fNMDZ4zwIuwY27jqFGBAPhg8F83J4wgxcgHkqAT1prgo/m9pb5cw5VOsHQcOBt11FfQjoOZ4P7WE9/wFhg==","signatures":[{"sig":"MEUCIQD5MIDeftjWwwHVw61+cc4TM/5MlVQVUAlhaHb+f3We7QIgShFLwVAyTgoKb9ISrtXeay388zcqG1A33vSlws6EOO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":770847},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs","development":"./sdk.ts"},"./package.json":"./package.json"},"gitHead":"f2985e257ae025b50933602040b9abea9e4e4d51","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@rozenite/agent-bridge":"^2.1.0","@rozenite/agent-shared":"^2.1.0","@rozenite/plugin-bridge":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","postcss":"^8.5.6","rozenite":"^2.1.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","tailwindcss":"^4.2.2","@rozenite/ui":"^2.1.0","@types/react":"~19.2.2","lucide-react":"^0.263.1","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@tailwindcss/postcss":"^4.2.2","@rozenite/vite-plugin":"^2.1.0"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_1.0.0_1787026445955_0.9173994285465019","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@avasapp/rozenite-plugin-ably","version":"1.0.1","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@1.0.1","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"e55c5f2f0e4a445a3604b92c26459454a3623456","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-1.0.1.tgz","fileCount":17,"integrity":"sha512-wcsivJ8L3RKvS8OKaDNaY75tiGjwuImwh6Ual/LCZIxU2/4XonzMcMUGRqi9E6ePnD8maBjohi0k5KvaDRqh7w==","signatures":[{"sig":"MEUCIDMOPMAjIo3L4/oquNPVL8WtEBwnILfXD1uR2BEe4ukIAiEAy7p6WUczqm583lV9IOVHUhFOe/DOwy/VRckx0NmXJ2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":772795},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs","development":"./sdk.ts"},"./package.json":"./package.json"},"gitHead":"aee78d2a9714c5a06f564321f4751a9297e44106","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@rozenite/agent-bridge":"^2.1.0","@rozenite/agent-shared":"^2.1.0","@rozenite/plugin-bridge":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","postcss":"^8.5.6","rozenite":"^2.1.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","tailwindcss":"^4.2.2","@rozenite/ui":"^2.1.0","@types/react":"~19.2.2","lucide-react":"^0.263.1","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@tailwindcss/postcss":"^4.2.2","@rozenite/vite-plugin":"^2.1.0"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_1.0.1_1787029693661_0.6131310477176468","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@avasapp/rozenite-plugin-ably","version":"1.0.2","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@1.0.2","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"c1a1e4a28b03447449517490e2c17225e5a30361","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-1.0.2.tgz","fileCount":17,"integrity":"sha512-JKS/FqiV9PK41mnicxqyT+bBpo8zcOHHYsydjvkuBy13Cc/dKl8Xy8NrxlRx2MYLdd8CPI/lshMf5Vd/2i2QnQ==","signatures":[{"sig":"MEUCIDtxm+fW89GowLQnqhG4OMuCUvpKgW5+FXBQ1yMJMoKlAiEAyTudXJhJ4HZCiOVHyeAwHyXTUT1A0UsYhaQFoZ0uKvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":772881},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs","development":"./sdk.ts"},"./package.json":"./package.json"},"gitHead":"7ba50ffe1dd98ddfa2260ebcc6bcb96f2b70efd8","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@rozenite/agent-bridge":"^2.1.0","@rozenite/agent-shared":"^2.1.0","@rozenite/plugin-bridge":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","postcss":"^8.5.6","rozenite":"^2.1.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","tailwindcss":"^4.2.2","@rozenite/ui":"^2.1.0","@types/react":"~19.2.2","lucide-react":"^0.263.1","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@tailwindcss/postcss":"^4.2.2","@rozenite/vite-plugin":"^2.1.0"},"peerDependencies":{"react":"*","react-native":"*"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_1.0.2_1787030327198_0.8153390237427369","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@avasapp/rozenite-plugin-ably","version":"1.1.0","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"license":"MIT","_id":"@avasapp/rozenite-plugin-ably@1.1.0","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"d463c04efa6fdc3b080fde3f2d360f5f793d4c87","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-1.1.0.tgz","fileCount":17,"integrity":"sha512-eS4uNRy34UBhJtERacKzquBOy4LGw9wbvsyIO5FI7qkfatNsC2C0U5z0KW+f6vUsgGCJMSP1ZytlUSFR2qrqeg==","signatures":[{"sig":"MEUCIQD44iR4QefzhwZojON+FQxjYCezfZhwpFYDWts9wTMvPwIgfY0zzgB6xr1rW+GC2aSJeDwmgfizH6qefG3uAUW/moM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":828947},"main":"./dist/react-native/index.cjs","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs","development":"./sdk.ts"},"./package.json":"./package.json"},"gitHead":"7ba50ffe1dd98ddfa2260ebcc6bcb96f2b70efd8","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.0","postcss":"^8.5.6","rozenite":"^2.2.0","react-dom":"19.2.0","@types/bun":"^1.3.14","typescript":"~5.9.3","tailwindcss":"^4.2.2","@rozenite/ui":"^2.2.0","@types/react":"~19.2.2","lucide-react":"^0.263.1","react-native":"0.83.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@tailwindcss/postcss":"^4.2.2","@rozenite/vite-plugin":"^2.2.0","@rozenite/agent-bridge":"^2.2.0","@rozenite/agent-shared":"^2.2.0","@rozenite/plugin-bridge":"^2.2.0"},"peerDependencies":{"react":"*","react-native":"*","@rozenite/agent-bridge":"^2.2.0","@rozenite/agent-shared":"^2.2.0","@rozenite/plugin-bridge":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/rozenite-plugin-ably_1.1.0_1787734530391_0.5724730545533099","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"_id":"@avasapp/rozenite-plugin-ably@1.2.0","bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"dist":{"shasum":"9add301168f23ecc62d673864e16d6aabaf29eb8","tarball":"https://registry.npmjs.org/@avasapp/rozenite-plugin-ably/-/rozenite-plugin-ably-1.2.0.tgz","fileCount":17,"integrity":"sha512-5ypXWpedRq7EoLFMNk7+xZMhdUItF1H1WyDCowbr1qADUBi1EFJfZqY/bWuVUfIlgsWKqo7z5er7FMjv8UMBNQ==","signatures":[{"sig":"MEYCIQCGrr7C/EMV3QW7fqquAirZ3iI074ZmXAByioKZ+HwHmgIhAIJ2RS5D3Oo7a1+aZ1R6wzviUEN+X2/JvHzoXr2HUiZ8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCl8EPIAsIfRQhCx8CbvcwzzOXyAhjJRqTVz6ytPw+TTgIhAM6BhNXHul+U4tTLe+hiOoTrkfG8fr2xUUK8tONVwmjs"}],"unpackedSize":862010},"main":"./dist/react-native/index.cjs","name":"@avasapp/rozenite-plugin-ably","type":"module","types":"./dist/react-native/index.d.ts","module":"./dist/react-native/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/react-native/index.d.ts","import":"./dist/react-native/index.js","require":"./dist/react-native/index.cjs"},"./sdk":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js","require":"./dist/sdk/index.cjs","development":"./sdk.ts"},"./package.json":"./package.json"},"license":"MIT","scripts":{"dev":"rozenite dev","test":"bun test src/","build":"rozenite build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"tsc -p tsconfig.json --noEmit && rozenite build"},"version":"1.2.0","_npmUser":{"name":"crockalet","email":"npm.drainage506@passmail.net"},"homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"_npmVersion":"11.17.0","description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","directories":{},"maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","react":"19.2.8","postcss":"^8.5.6","rozenite":"^2.2.0","react-dom":"19.2.8","@types/bun":"^1.3.14","typescript":"~5.9.3","tailwindcss":"^4.2.2","@rozenite/ui":"^2.2.0","@types/react":"~19.2.2","lucide-react":"^1.33.0","react-native":"0.87.1","@types/react-dom":"~19.1.7","react-native-web":"^0.21.2","@tailwindcss/postcss":"^4.2.2","@rozenite/vite-plugin":"^2.2.0","@rozenite/agent-bridge":"^2.2.0","@rozenite/agent-shared":"^2.2.0","@rozenite/plugin-bridge":"^2.2.0"},"peerDependencies":{"react":"*","react-native":"*","@rozenite/agent-bridge":"^2.2.0","@rozenite/agent-shared":"^2.2.0","@rozenite/plugin-bridge":"^2.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rozenite-plugin-ably_1.2.0_1790161163507_0.1764974901533547"}}},"time":{"created":"2026-07-22T11:38:55.186Z","modified":"2026-09-23T10:59:23.767Z","0.1.0":"2026-07-22T11:38:55.458Z","0.1.1":"2026-07-28T05:00:52.042Z","0.2.0":"2026-08-09T05:37:44.188Z","1.0.0":"2026-08-18T04:14:06.085Z","1.0.1":"2026-08-18T05:08:13.803Z","1.0.2":"2026-08-18T05:18:47.339Z","1.1.0":"2026-08-26T08:55:30.531Z","1.2.0":"2026-09-23T10:59:23.593Z"},"bugs":{"url":"https://github.com/avas-app/rozenite-plugin-ably/issues"},"license":"MIT","homepage":"https://github.com/avas-app/rozenite-plugin-ably#readme","keywords":["ably","react-native","devtools","rozenite","realtime","websocket","debugging"],"repository":{"url":"git+https://github.com/avas-app/rozenite-plugin-ably.git","type":"git"},"description":"Ably Realtime inspector for React Native DevTools — inspect channels, stream live events, and preview decoded payloads.","maintainers":[{"name":"crockalet","email":"npm.drainage506@passmail.net"},{"name":"athik.dev","email":"athik@avas.dev"}],"readme":"# @avasapp/rozenite-plugin-ably\n\n[![npm](https://img.shields.io/npm/v/@avasapp/rozenite-plugin-ably)](https://www.npmjs.com/package/@avasapp/rozenite-plugin-ably)\n\nAn [Ably](https://ably.com) Realtime inspector for React Native DevTools, built on\n[Rozenite](https://www.rozenite.dev).\n\nThe Network Activity panel already shows you websocket frames. This shows you\n**Ably**: which channels are attached right now, who is subscribed to them, what\nmessages actually arrived, and what was inside them.\n\n![The Ably panel in React Native DevTools: attached channels with labels and counters on the left, a filterable event stream in the middle, and the decoded payload of the selected message on the right.](docs/panel.jpeg)\n\n## Install\n\n```bash\nnpm install --save-dev @avasapp/rozenite-plugin-ably\n```\n\nRequires **Rozenite 2.2 or later**. Rozenite discovers the plugin\nautomatically — no `metro.config` change is needed beyond having Rozenite itself\nset up.\n\nThe plugin ships no runtime dependencies of its own. `@rozenite/plugin-bridge`,\n`@rozenite/agent-bridge` and `@rozenite/agent-shared` are peer dependencies, so\nthe plugin shares your app's copy of the bridge rather than resolving a second one\nalongside it — two bridge instances mean the panel never connects. Any Rozenite\n2.x works; only a Rozenite major needs a matching release here.\n\n## Usage\n\nCall the hook once, anywhere in your component tree, with your `Ably.Realtime`\nclient:\n\n```ts\nimport { useAblyDevTools } from '@avasapp/rozenite-plugin-ably'\n\nfunction DevTools() {\n  useAblyDevTools(ablyRealtimeClient)\n  return null\n}\n```\n\nIt is a no-op outside `__DEV__`, and a no-op while the client is `null`, so it is\nsafe to call before the client exists:\n\n```ts\nuseAblyDevTools(isLoggedIn ? client : null)\n```\n\n### Channel labels\n\nAbly channel names are often opaque (`device_7b41-…`). If your app knows which\nfeature subscribed to what, feed that in and the panel will show it on each\nchannel:\n\n```ts\nuseAblyDevTools(client, {\n  labels: {\n    getLabels: () => ({ 'device_7b41': ['telemetry-screen', 'chat'] }),\n    subscribe: (onChange) => registry.onChange(onChange), // optional\n  },\n})\n```\n\n<details>\n<summary>Example: deriving labels from a transport layer that already tracks them</summary>\n\n```ts\nuseAblyDevTools(getAblyJsClient(), {\n  labels: {\n    getLabels: () =>\n      Object.fromEntries(\n        getTransport()\n          .getChannels()\n          .map((c) => [\n            c.name,\n            c.listenerDetails\n              .map((l) => l.label)\n              .filter((l): l is string => Boolean(l)),\n          ]),\n      ),\n    subscribe: (onChange) => getTransport().onChannelsChange(onChange),\n  },\n})\n```\n\n</details>\n\n### Options\n\n| Option            | Default | Description                                                                   |\n| ----------------- | ------- | ----------------------------------------------------------------------------- |\n| `labels`          | —       | Maps channel names to human-readable labels.                                  |\n| `maxEvents`       | `1000`  | Ring-buffer size. Older events are dropped once exceeded.                     |\n| `captureProtocol` | `false` | Capture raw ably-js protocol frames. Verbose; also toggleable from the panel. |\n| `enabled`         | `true`  | Escape hatch. The plugin is already inert outside `__DEV__`.                  |\n\n## What you get\n\n**Channels** — every channel the client has touched, with its live attach state,\nsubscriber count, per-channel in/out counters, error reason, and time in state.\nDetached and released channels are retained behind a toggle, because \"the channel\nI expected isn't there\" is the bug you most often need to see.\n\n**Events** — a filterable stream of messages, presence, channel/connection state\ntransitions, and errors. Filter by kind, by channel, or by free text that\nsearches payload contents too.\n\n**Payloads** — Ably delivers most payloads as a JSON *string*. The plugin parses\nit and keeps the original, so you get a real collapsible tree by default and the\nexact bytes on demand. Searching expands the tree far enough to reveal matches\nrather than filtering them out of their surrounding structure.\n\n## Agent tools\n\nThe same session is exposed to [Rozenite for\nAgents](https://www.rozenite.dev) as the **`avasapp/ably`** domain, so a coding\nagent can inspect realtime traffic from the terminal with no DevTools window\nopen:\n\n```bash\nnpx rozenite agent session create\nnpx rozenite agent avasapp/ably call --tool list-channels \\\n  --args '{\"onlyErrored\":true}' --session <id>\n```\n\n| Tool | |\n| --- | --- |\n| `get-connection` | State, failure reason, `retryIn`, capabilities. |\n| `list-channels` | Paginated. Filters: `state`, `search`, `onlyErrored`, `includeReleased`. |\n| `read-channel` | One channel in full, including its listeners. |\n| `list-events` | Paginated. Filters: `channel`, `kind`, `dir`, `search`, `since`, `order`. |\n| `read-event` | One event with its decoded payload, clipped to `maxBytes` (8 KB default). |\n| `get-stats` | Counters, options, `retained` vs `dropped`. |\n| `set-options` | `paused`, `captureProtocol`, `maxEvents`. |\n| `clear` | Discard captured events. |\n| `channel-action` | `attach` / `detach` / `release`. |\n| `emit-event` | Deliver a synthetic message to the app's own subscribers, locally. |\n\n`list-events` deliberately omits payload bodies — a single message can carry\nhundreds of kilobytes, so a page of them would be unreadable. Find the id in a\nlisting, then `read-event` for the one that matters, which itself clips to 8 KB\nunless you raise `maxBytes`. `search` covers decoded payload contents, which is\nhow you answer \"which message carried this device id\".\n\nOnly `set-options`, `clear`, `channel-action` and `emit-event` change anything,\nand only `channel-action` touches Ably itself rather than what is recorded.\n\n### Firing an event without a backend\n\n`emit-event` makes a realtime event arrive in the running app with no server,\nno publish, and no network round trip:\n\n```bash\nnpx rozenite agent avasapp/ably call --tool emit-event --session <id> \\\n  --args '{\"channel\":\"bid-orders\",\"name\":\"ride_assignment\",\"data\":{\"rideId\":\"r_42\"}}'\n```\n\nIt hands a fabricated `Ably.Message` straight to the listeners the app itself\nregistered with `subscribe()`. **It never publishes.** A real publish would fan\nthe message out to every other client attached to that channel — another\ndeveloper's app, or a real device — and would need the network, so it could\nneither run offline nor complete deterministically. Local delivery is the only\nversion that is both safe on a shared channel and usable in a test.\n\nThat also bounds what it can do: the app must already have subscribed, or there\nis no listener to deliver to. `delivered: 0` says exactly that, with a `note`\nexplaining whether the channel had no listener at all or every listener filtered\nit out. Event-name and `MessageFilter` subscriptions are honoured as Ably would\nhonour them. The call returns once async listeners settle (up to 2s), so a\nrejected promise is reported in `failed`/`errors` like a synchronous throw.\n\nInjected events are recorded in the stream like any other, marked\n`injected: true` and with their summary prefixed, so a listing never passes a\nsynthetic event off as one Ably delivered. They are not counted in the inbound\ntraffic counters, which describe only what Ably delivered.\n\nMessages only — presence cannot be injected.\n\n#### The name and the three arguments are a contract\n\n`emit-event` is this plugin's implementation of a general capability — deliver an\ninbound message the app never asked for — and Ably is only one transport that\ncould provide it. Push notifications and SSE deep links could satisfy the same\nshape later.\n\nRozenite's `AgentToolTraits` has no capability field, so a wrapper that wants to\ntreat plugins as interchangeable providers has to discover them by convention:\nenumerate the domains, then probe each for a tool named exactly `emit-event`.\nThat makes the short name a discovery key rather than a label, so it is not\ndecorated and will not be renamed. `channel`, `name` and `data` are the generic\narguments; everything else the tool accepts is optional Ably message metadata\nthat another transport would simply not have.\n\nNothing application-specific belongs in the signature. An app's own event\nenvelope is carried inside `data`, whose shape the tool never inspects.\n\nFor Node scripts built on `@rozenite/agent-sdk`, typed descriptors keep tool\nnames and argument shapes checked:\n\n```ts\nimport { ablyTools } from '@avasapp/rozenite-plugin-ably/sdk'\n\nconst { items } = await session.callTool(ablyTools.listChannels, {\n  onlyErrored: true,\n})\n```\n\n### Agent skill\n\nRozenite serves its own agent docs from the CLI (`npx rozenite skills list`) and\ndoes not yet import skills from installed plugins, so this package ships one\ninstead — install it with `npx skills add avas-app/rozenite-plugin-ably`, or\npoint your agent at `skills/ably-devtools/SKILL.md`. It covers the tool surface\nplus the semantics the raw output does not convey, such as why a channel the app\nnever subscribed to shows no inbound messages, and what the payload truncation\nmarkers mean.\n\n## Protocol capture\n\nEnabling protocol capture calls `client.setLog({ level: 4 })`. That method is\npresent at runtime but is not in ably-js's public typings, so it is\nfeature-detected — if it is missing, the panel disables the toggle and says so.\nIt is off by default because level 4 is genuinely noisy and slows the SDK.\n\n## Example app\n\n`example/` is a runnable Expo app that exercises the plugin with **no Ably\naccount, no API key, and no login**. The Ably client is a fake that produces\nrealistic traffic; everything else is real — it goes through the actual\n`useAblyDevTools` hook and the actual Rozenite bridge, so the panel shows\nexactly what a production app produces.\n\n```bash\nbun install && bun run build   # in the repo root — the panel is served from dist/\ncd example\nbun install                    # symlinks the plugin (see scripts/link-plugin.mjs)\nbun start                      # then press `j`, and pick the \"Ably\" tab\n```\n\nThe app has buttons for the cases worth eyeballing: nested session events, a 25-message\nburst, an outgoing publish, presence churn, a non-JSON payload, an oversized\npayload that hits truncation, a channel failing with error `40160`, a full\ndisconnect/recover cycle, and a channel release.\n\nTwo wiring details worth knowing if you adapt this setup:\n\n- Rozenite discovers plugins from the project's **declared `package.json`\n  dependencies** — it does not crawl `node_modules`. Since the plugin lives one\n  directory up, `metro.config.js` names it via `include: ['@avasapp/rozenite-plugin-ably']`.\n- Metro resolves the bare specifier to the plugin's TypeScript **source**, so SDK\n  edits hot reload. Panel edits still need `bun run build` in the root, because\n  the panel is served from `dist/`.\n\n## Development\n\n```bash\nbun install\nbun test        # instrumentation test suite\nbun typecheck\nbun run build\n```\n\n`bun dev` starts Rozenite's browser dev host on\n[localhost:8888](http://localhost:8888) for quick panel iteration. Note that\n`rozenite.config.ts` **cannot import anything** — Rozenite evaluates it with\n`new Function('module','exports', code)` and no `require` in scope — so the dev\npresets there are literal payloads. Realistic traffic lives in `example/`\ninstead, where it can import the real SDK.\n\nTo iterate against a real app:\n\n```bash\nbun link                                   # in this repo\ncd ../your-app && bun link @avasapp/rozenite-plugin-ably\nROZENITE_DEV_MODE=@avasapp/rozenite-plugin-ably bun dev\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}