{"_id":"@emmanuel-nike/ark-notify-js","_rev":"13-faae1366e718a45339323380184fe34c","name":"@emmanuel-nike/ark-notify-js","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.0","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.0","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"2b9672feec00b80abdfeb6e124e6fa8310314445","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.0.tgz","fileCount":17,"integrity":"sha512-JopGqf7q72imCDhWJcAcyby+rrMVCGb+I1aoTyohK7dk/A5urpto6rgG59w3GaMxAjYD8rHNyAAWWpKvXAzmcQ==","signatures":[{"sig":"MEUCIQDIfxk67yW7p8u0aXdoR3YYDt/cAqiSs5Xr16UgbcNIPwIgTY3JfaHH716QWRlkSQ6HBiwlusGku/VmFa48C0cntbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381908},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"require":{"types":"./dist/react/index.d.cts","default":"./dist/react/index.cjs"}}},"gitHead":"bba5cda179eb7f87a1624f117fac60baae4aba1f","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{"ms":"^2.1.3","mz":"^2.7.0","cac":"^6.7.14","ufo":"^1.6.4","fdir":"^6.5.0","mlly":"^1.8.2","acorn":"^8.17.0","debug":"^4.4.3","pathe":"^2.0.3","joycon":"^3.1.1","rollup":"^4.62.0","confbox":"^0.1.8","consola":"^3.4.2","csstype":"^3.2.3","esbuild":"^0.27.7","pirates":"^4.0.7","sucrase":"^3.35.1","thenify":"^3.3.1","chokidar":"^4.0.3","readdirp":"^4.1.2","tinyexec":"^0.3.2","commander":"^4.1.1","lilconfig":"^3.1.3","picomatch":"^4.0.4","pkg-types":"^1.3.1","tree-kill":"^1.2.2","picocolors":"^1.1.1","source-map":"^0.7.6","tinyglobby":"^0.2.17","any-promise":"^1.3.0","thenify-all":"^1.6.0","magic-string":"^0.30.21","resolve-from":"^5.0.0","load-tsconfig":"^0.2.5","object-assign":"^4.1.1","bundle-require":"^5.1.0","lines-and-columns":"^1.2.4","postcss-load-config":"^6.0.1","ts-interface-checker":"^0.1.13","fix-dts-default-cjs-exports":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.0_1781453963502_0.15131580412317813","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.1","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.1","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"044466dc6c3e9c7cd0961713d499d489c5bf3391","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.1.tgz","fileCount":17,"integrity":"sha512-5F8IhyYWDyCPhxDgW/b5RDzIBEG8yHU7cF7hSpcFkXdPjhQOQL5vpj5XqJgl8UFu2BnCAewvdM6mXyMoPWvPPA==","signatures":[{"sig":"MEUCIFzPmVYHxbWWH03LviHqkaTZWXX/oagJpduEsooUG7ZyAiEAl9QACUq5JMTLTpsje+BB50+mnF+oCQGNLCWIE7N0omU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":397176},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"require":{"types":"./dist/react/index.d.cts","default":"./dist/react/index.cjs"}}},"gitHead":"b330dacfedfa901c0001663c566561e90b92eb97","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{"ms":"^2.1.3","mz":"^2.7.0","cac":"^6.7.14","ufo":"^1.6.4","fdir":"^6.5.0","mlly":"^1.8.2","acorn":"^8.17.0","debug":"^4.4.3","pathe":"^2.0.3","joycon":"^3.1.1","rollup":"^4.62.0","confbox":"^0.1.8","consola":"^3.4.2","csstype":"^3.2.3","esbuild":"^0.27.7","pirates":"^4.0.7","sucrase":"^3.35.1","thenify":"^3.3.1","chokidar":"^4.0.3","readdirp":"^4.1.2","tinyexec":"^0.3.2","commander":"^4.1.1","lilconfig":"^3.1.3","picomatch":"^4.0.4","pkg-types":"^1.3.1","tree-kill":"^1.2.2","picocolors":"^1.1.1","source-map":"^0.7.6","tinyglobby":"^0.2.17","any-promise":"^1.3.0","thenify-all":"^1.6.0","magic-string":"^0.30.21","resolve-from":"^5.0.0","load-tsconfig":"^0.2.5","object-assign":"^4.1.1","bundle-require":"^5.1.0","lines-and-columns":"^1.2.4","postcss-load-config":"^6.0.1","ts-interface-checker":"^0.1.13","fix-dts-default-cjs-exports":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.1_1781464812657_0.8272679559601506","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.2","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.2","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"fe75c12b63d6051457c06a497eaccd57c9dffefa","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.2.tgz","fileCount":25,"integrity":"sha512-PeBWjB8oiMkd3UhVWyOPZoqq0s9dPwykslwwS/gGhghTD40ti6hBnqhLeJn9Qs+O5FiO8rcLfDJc2fqPiQjjDA==","signatures":[{"sig":"MEUCICpYfyCOEFZqyiSo36dMKVKXvEM5r9I4Fe41kJksCFqcAiEAwSDLAYxvIliG5V9eL+2BqEAA/sGy2fivapyXzK2q+r8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424116},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"require":{"types":"./dist/react/index.d.cts","default":"./dist/react/index.cjs"}},"./server":{"import":{"types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"require":{"types":"./dist/server/index.d.cts","default":"./dist/server/index.cjs"}}},"gitHead":"99823a342bc4f6cf9bb947fc470670c6a1ccc889","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","dependencies":{"ms":"^2.1.3","mz":"^2.7.0","cac":"^6.7.14","ufo":"^1.6.4","fdir":"^6.5.0","mlly":"^1.8.2","acorn":"^8.17.0","debug":"^4.4.3","pathe":"^2.0.3","joycon":"^3.1.1","rollup":"^4.62.0","confbox":"^0.1.8","consola":"^3.4.2","csstype":"^3.2.3","esbuild":"^0.27.7","pirates":"^4.0.7","sucrase":"^3.35.1","thenify":"^3.3.1","chokidar":"^4.0.3","readdirp":"^4.1.2","tinyexec":"^0.3.2","commander":"^4.1.1","lilconfig":"^3.1.3","picomatch":"^4.0.4","pkg-types":"^1.3.1","tree-kill":"^1.2.2","picocolors":"^1.1.1","source-map":"^0.7.6","tinyglobby":"^0.2.17","any-promise":"^1.3.0","thenify-all":"^1.6.0","magic-string":"^0.30.21","resolve-from":"^5.0.0","load-tsconfig":"^0.2.5","object-assign":"^4.1.1","bundle-require":"^5.1.0","lines-and-columns":"^1.2.4","postcss-load-config":"^6.0.1","ts-interface-checker":"^0.1.13","fix-dts-default-cjs-exports":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.2_1781476747028_0.14562480627595775","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.3","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.3","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"dbc2db03c3f1cb3df92e7f9eba2cc18b5e890634","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.3.tgz","fileCount":25,"integrity":"sha512-Zms5YvEwBkII0cyEJn8WAYH3AWgGWkdeaWKbv/mWq5yz9dPodnjXpID8OeJLPxMF+ENTnF1GMtLgRX74VBmH8A==","signatures":[{"sig":"MEYCIQCJQvtZJZ1e/FIiYtpG0Ms8dRqNEpZX2K5ZTcHGPN5j5AIhAM+o2JLoHj7lSkUQnB1uJ7dXe/SijgVDRRbU3rXbfobl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423738},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"0ba7507152900bd08e9a8946a2b8d00c48237312","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.3_1781494159203_0.07797769571702617","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.4","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.4","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"d196f2d934758d7c72ed699fceca5d33af6d8105","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.4.tgz","fileCount":25,"integrity":"sha512-8FZbMgjgXMJ+XA6WWvKDEBz68+Mwyo5inHIJPR8/sjscC7WlRp8Rh7Vf3XWBt6hk+ALNJbH6l8FSHkQ6QHeBvQ==","signatures":[{"sig":"MEUCIQCrTivYB9ZFoOIw0IkxmRXDv6nHwtpkToMF4+vsRN8rhQIgbDG4Yz9t6st+urYmseMEo88gpKpdABPg9y4nPJYHM7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423734},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"8018a5337b8fe5872bed530dde29ce280cb8e9a0","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.4_1781495708867_0.9308102267566176","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.5","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.5","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"3ac4e060adb71e43e95cb7cccfd5d81ab83e0de6","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.5.tgz","fileCount":25,"integrity":"sha512-QmAWILnDPj9DV+GKuIFlvhPjWrLh9ztmjMW+lCf5t7uFIpSB+GUSVUm8uZgsoK9x8+TbI6aecpo8iEHNBk6iNg==","signatures":[{"sig":"MEYCIQCy+bgNXcdm7oeMXl7sALGSUbPFcBxKdRbYIijaeFRKwwIhAKiyvBPuONSvkPzUSHzSw63N89yqeh2pLPS/iFjF33WB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423994},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"6c2fee267bfa31e20ad01acdf656a27683b8bfda","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.5_1781528310655_0.48482871022783547","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.6","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.6","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"d924dca28700fab24bcce46c942e9537595a8e70","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.6.tgz","fileCount":25,"integrity":"sha512-FEOolI8iqZdl6C4GvGB7rX+5WlkCj3HVBWNLdga/Kdm/x1kIEjEOOH66ttxuyzxUSCVsobludMvWb8thfKCA8A==","signatures":[{"sig":"MEUCIBLEs6SvICkRVw8We/SAzesUZ5fgRMWAEoOFR34RjutlAiEA9uufNsAganZYxTdqz38MmN/7E7phYA6OvVdSC2WXd1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":423806},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"38025d91ed25fb53f361f48cf9c6859232aa8d97","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.6_1781565161037_0.7152187262824115","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.7","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.7","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"9b96959e5dd64a93a393d20edee8029136e43126","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.7.tgz","fileCount":25,"integrity":"sha512-tzK23ouFuD2PJecg52x7yJdx3bBLYlr2tT1Y3qXUiO0cgsdm4kKHlIccmR++jBe/N7WX6ny3w98aCoWkrMuCgQ==","signatures":[{"sig":"MEUCIQCvgmkNyBWl8DFJo3O1WVhfEsoOYjUb/pcaYMHClyEa1AIgabdPQxqnFN/m3oEQUCFa+hVVdU+a9+ZKgRogJnoLzrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429982},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"5013148ef2f5cda5118affd58b527436e6e07d79","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.7_1781567186402_0.7895670201184917","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@emmanuel-nike/ark-notify-js","version":"0.1.8","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.1.8","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"59c1dbbd3a0dbcd73ae3afe17b738578357ade30","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.1.8.tgz","fileCount":25,"integrity":"sha512-C3AssOrR4fLbPZWht+EVRiC+rYObY8WYCiX5LnY0z6nEOswPaBW+2rVlHxzQpGwtrKbEYw4+fiTVqdy3Qka3pQ==","signatures":[{"sig":"MEQCIB7KLPh23gAwNOCwwyq0fkpcJN60QHKMgLgZNKNvkpr5AiApCNeQmKw3eMt/c+i+Usu+H1pFItBEpwoS5DuF4/gk2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429992},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"6b02d6aa5a6aa1842f4615d1c2fa23eded1f561c","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.1.8_1781654910734_0.426128094916427","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@emmanuel-nike/ark-notify-js","version":"0.2.0","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.2.0","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"49d5a44892f1b571002f57cd4ad65b22fd1141b4","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.2.0.tgz","fileCount":27,"integrity":"sha512-AtI0F8B6lZu4BopyQYvv5bjBAATxYiCZFwi/Df1PG6dfC6WVW3lqlM1VfGl+Y1MdW/8zaxKAEuLbCKsTUmWaRQ==","signatures":[{"sig":"MEUCIF3Hcfp26mBw89xw0wnoBEv/xcRI2JxIO+eVh71cYxNUAiEAzK0uVypNb+V6jQI5F7asHMfSpwhX0B1m/YVdRQO/U6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":525433},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"88fd7fbc70db55ce8f4b5ffeb7a434818a8e9dae","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.2.0_1781823016837_0.5629968327106762","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@emmanuel-nike/ark-notify-js","version":"0.2.1","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.2.1","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"dd364aae3b02d970df634dca649c3601d873c3dd","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.2.1.tgz","fileCount":27,"integrity":"sha512-+tgMtf2kV2MZg5T+cf0C949JHx2tBzJSbiw6Tb2BTMrMZKP0SUUNgNRf6VWX4Sm9Uoq88tMzvQdf8jGa9sYUGQ==","signatures":[{"sig":"MEUCIB8R3yCgEIgAFw7XMRzvnFMzsaJCXjKNuWNn6hPkjv9gAiEAjlInrTeQAUSUTEnJ4hoK/YKP92e0vcxkFlI7CAqd3fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527273},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"9c050f28fc2355ac5f41ade51b818665761319fc","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.2.1_1781824586097_0.8288964153687837","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@emmanuel-nike/ark-notify-js","version":"0.2.2","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","_id":"@emmanuel-nike/ark-notify-js@0.2.2","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"homepage":"https://github.com/ark-notify/ark-notify-js#readme","bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"dist":{"shasum":"d02a54a7e8b3c68d6ee419b527e4e70b90138584","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.2.2.tgz","fileCount":27,"integrity":"sha512-975RtA1fgyJSBEdy1vyMOX0YmDmxfcqXTY5PNnNs238vVNr5yNlWLhdw5pSYC7miMRJ9HdlNqnwOdFvnrqUM3A==","signatures":[{"sig":"MEUCIAIHti+PkLEzBJPKdBFaIa9rn6/TABQUS2d7PcIQgHuWAiEAyHWnWNro4C0v4JMWKJ2n4nC/nNmWng6pGj4o8jBhaxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":557576},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.cjs","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","default":"./dist/react/index.cjs","require":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","default":"./dist/server/index.cjs","require":"./dist/server/index.cjs"},"./package.json":"./package.json"},"gitHead":"9481b35f632cb535c86f9dab617470a48c8ac7e3","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"repository":{"url":"git+https://github.com/ark-notify/ark-notify-js.git","type":"git"},"_npmVersion":"10.8.2","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","directories":{},"sideEffects":false,"_nodeVersion":"20.18.3","typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.1.0","typescript":"^5.8.3","@types/node":"^25.9.3","@types/react":"^19.1.8"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ark-notify-js_0.2.2_1781834020874_0.7781172816300117","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@emmanuel-nike/ark-notify-js","version":"0.2.3","description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs","default":"./dist/react/index.cjs"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js","require":"./dist/server/index.cjs","default":"./dist/server/index.cjs"},"./package.json":"./package.json"},"typesVersions":{"*":{"react":["./dist/react/index.d.ts"],"server":["./dist/server/index.d.ts"]}},"sideEffects":false,"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"peerDependencies":{"react":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"devDependencies":{"@types/node":"^25.9.3","@types/react":"^19.1.8","react":"^19.1.0","tsup":"^8.5.0","typescript":"^5.8.3"},"keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"repository":{"type":"git","url":"git+https://github.com/ark-notify/ark-notify-js.git"},"engines":{"node":">=18"},"author":{"name":"Emmanuel Nwankwo"},"bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"homepage":"https://github.com/ark-notify/ark-notify-js#readme","_id":"@emmanuel-nike/ark-notify-js@0.2.3","gitHead":"3d4bd66a9ea1f39b92e9bdbcc192489b0829b6f3","_nodeVersion":"20.18.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ZXOW0mYPr8TFj5jCCZbO30x2NIKzaQBzlSgVbkf3T3KNmUv6tyarANMPjistqHWyoyOc84Meve1Wyx8n3eES4A==","shasum":"cfc439d8c7df1658168344f840b5f5089ce46a19","tarball":"https://registry.npmjs.org/@emmanuel-nike/ark-notify-js/-/ark-notify-js-0.2.3.tgz","fileCount":27,"unpackedSize":625658,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID/s/TCx79nxTHnkLw3Dre3cFTExQDLVW9B3V+gXoDQQAiAazKiTSIVztgHI7uQufonGIGdVxVSVPnF3zPPaDQuSuQ=="}]},"_npmUser":{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"},"directories":{},"maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ark-notify-js_0.2.3_1783889658451_0.4713938446948347"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-14T16:19:23.408Z","modified":"2026-07-12T20:54:18.737Z","0.1.0":"2026-06-14T16:19:23.671Z","0.1.1":"2026-06-14T19:20:12.830Z","0.1.2":"2026-06-14T22:39:07.171Z","0.1.3":"2026-06-15T03:29:19.335Z","0.1.4":"2026-06-15T03:55:09.009Z","0.1.5":"2026-06-15T12:58:30.844Z","0.1.6":"2026-06-15T23:12:41.171Z","0.1.7":"2026-06-15T23:46:26.544Z","0.1.8":"2026-06-17T00:08:30.969Z","0.2.0":"2026-06-18T22:50:16.996Z","0.2.1":"2026-06-18T23:16:26.288Z","0.2.2":"2026-06-19T01:53:41.020Z","0.2.3":"2026-07-12T20:54:18.615Z"},"bugs":{"url":"https://github.com/ark-notify/ark-notify-js/issues"},"author":{"name":"Emmanuel Nwankwo"},"license":"MIT","homepage":"https://github.com/ark-notify/ark-notify-js#readme","keywords":["ark-notify-js","realtime","websocket","sse","pubsub","presence","react"],"repository":{"type":"git","url":"git+https://github.com/ark-notify/ark-notify-js.git"},"description":"JavaScript SDK for Ark Notify — real-time pub/sub, presence, and platform management","maintainers":[{"name":"emmanuel-nike","email":"free2liveb4u@gmail.com"}],"readme":"# ark-notify-js\n\nJavaScript SDK for [Ark Notify](https://github.com/ark-notify/ark-notify) — real-time pub/sub, presence, SSE streaming, and platform management.\n\n- **Core API** (`ark-notify-js`) — imperative client, WebSocket, SSE, and server-side stream classes for any JavaScript environment\n- **React bindings** (`ark-notify-js/react`) — hooks and provider for React 18+ applications\n\n## Install\n\n```bash\nnpm install @emmanuel-nike/ark-notify-js\n```\n\nFor React apps, `react` 18+ is a peer dependency.\n\n### Node.js / AdonisJS (server)\n\nUse the `/server` subpath for `serverAuthUrl` webhook helpers and the server-side event stream:\n\n```ts\nimport {\n  handleServerAuth,\n  parseServerAuthRequest,\n  ArkNotifyServerStream,\n} from '@emmanuel-nike/ark-notify-js/server'\nimport { ArkNotifyClient, fetchConnectionToken } from '@emmanuel-nike/ark-notify-js'\n```\n\nIf you see `Cannot find module '@emmanuel-nike/ark-notify-js'`:\n\n1. Confirm the dependency is in your app's `package.json` (not only in this repo).\n2. Run `npm install` locally and rebuild your Docker image so `node_modules` includes the package.\n3. Use the scoped name exactly: `@emmanuel-nike/ark-notify-js` (not `ark-notify-js`).\n\n## Quick start (React)\n\nWrap your app with the provider, connect a WebSocket client, and subscribe to a channel:\n\n```tsx\nimport {\n  configureArkNotify,\n  ArkNotifyProvider,\n  useConnection,\n  useChannel,\n} from 'ark-notify-js/react'\n\nconfigureArkNotify({ baseUrl: 'https://my-instance.ark-notify.com' })\n\nfunction App() {\n  return (\n    <ArkNotifyProvider>\n      <Chat />\n    </ArkNotifyProvider>\n  )\n}\n\nfunction Chat() {\n  const { connection, state } = useConnection({\n    appKey: 'app_abc',\n    clientId: 'user-42',\n    // Recommended: fetch a connection token from your backend\n    // token: () => fetchTokenFromYourApi(),\n  })\n\n  const { publish, bind } = useChannel(connection, 'room-1', {\n    onEvent: (event, data) => console.log(event, data),\n  })\n\n  return (\n    <div>\n      <p>Status: {state}</p>\n      <button onClick={() => publish('message', { text: 'Hello!' })}>Send</button>\n    </div>\n  )\n}\n```\n\n## Architecture\n\nArk Notify has two API planes:\n\n\n| Plane       | Purpose                                    | Auth                                                                  |\n| ----------- | ------------------------------------------ | --------------------------------------------------------------------- |\n| **Control** | Login, manage applications                 | JWT (`Authorization: Bearer`)                                         |\n| **Data**    | WebSocket/SSE clients, server-side publish | `clientId` / connection token (clients) or app key + secret (servers) |\n\n\n**Never expose your app `secret` in browser code.** Issue connection tokens and private-channel auth from your backend.\n\n## Provider\n\n`baseUrl` is optional. Omit it to use the built-in default, or set a custom default once with `configureArkNotify()`:\n\n```tsx\nimport { configureArkNotify, ArkNotifyProvider } from 'ark-notify-js/react'\n\nconfigureArkNotify({ baseUrl: 'https://my-instance.ark-notify.com' })\n\n<ArkNotifyProvider token={platformJwt}>\n  {children}\n</ArkNotifyProvider>\n```\n\nYou can still pass `baseUrl` on the provider to override the default for that subtree.\n\n## Platform auth (control plane)\n\nFor admin dashboards that manage applications:\n\n```tsx\nimport { usePlatformAuth, useApplications } from 'ark-notify-js/react'\n\nfunction Dashboard() {\n  const { user, login, logout, isAuthenticated } = usePlatformAuth()\n  const { apps, create, remove } = useApplications()\n\n  if (!isAuthenticated) {\n    return <button onClick={() => login({ email: '...', password: '...' })}>Log in</button>\n  }\n\n  return (\n    <div>\n      <p>Hello, {user?.firstName}</p>\n      <button onClick={() => create({ name: 'My App' })}>New app</button>\n      {apps.map((app) => (\n        <div key={app.id}>\n          {app.name} — {app.appKey}\n        </div>\n      ))}\n    </div>\n  )\n}\n```\n\n## WebSocket connection\n\n### `useConnection`\n\n```tsx\nimport { useConnection } from 'ark-notify-js/react'\n\nconst {\n  connection,\n  state, // 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'failed'\n  connectionId,\n  clientId,\n  authenticated,\n  connect,\n  disconnect,\n} = useConnection({\n  appKey: 'app_abc',\n  clientId: 'user-42', // when requireClientAuth is false\n  token: 'app_abc.payload.sig', // recommended — from your backend\n  autoReconnect: true,\n  onPrivateChannelAuth: async (channel, connectionId) => {\n    const res = await fetch('/api/channel-auth', {\n      method: 'POST',\n      body: JSON.stringify({ channel, connectionId }),\n    })\n    const { auth } = await res.json()\n    return auth\n  },\n})\n```\n\n### `useChannel`\n\nAuto-subscribes on mount and unsubscribes on unmount:\n\n```tsx\nimport { useChannel } from 'ark-notify-js/react'\n\nconst { subscribed, publish, unsubscribe } = useChannel(connection, 'room-1', {\n  history: true,\n  presence: true,\n  presence_data: { name: 'Alice' },\n})\n\npublish('typing', { typing: true })\n```\n\n### `usePresence`\n\nTrack channel presence members:\n\n```tsx\nimport { usePresence } from 'ark-notify-js/react'\n\nconst { members, update, leave } = usePresence(connection, 'room-1', {\n  initialData: { status: 'online' },\n})\n\n// members: [{ clientId, connectionId, data, updatedAt }, ...]\nupdate({ status: 'away' })\n```\n\n## SSE (subscribe-only)\n\nFor read-only event streams without WebSocket:\n\n```tsx\nimport { useSSE } from 'ark-notify-js/react'\n\nconst { connected, bind } = useSSE({\n  appKey: 'app_abc',\n  channels: ['room-1', 'room-2'],\n  clientId: 'user-42',\n  history: true,\n  onEvent: (event, data) => console.log(event, data),\n})\n```\n\n## Imperative API\n\nUse core classes directly outside React or in server code:\n\n```ts\nimport {\n  ArkNotifyClient,\n  ArkNotifyConnection,\n  ArkNotifySSE,\n  fetchConnectionToken,\n} from 'ark-notify-js'\n\n// REST client\nconst client = new ArkNotifyClient()\nawait client.login({ email, password })\nconst { app } = await client.createApplication({ name: 'My App' })\n\n// Server-side publish (use app credentials — never in browser)\nawait client.publishEvent(\n  app.appKey,\n  { appKey, secret },\n  {\n    channel: 'room-1',\n    event: 'order.created',\n    data: { id: 123 },\n  }\n)\n\n// Fetch a connection token (backend — requires app secret when no serverAuthUrl)\nconst { token } = await fetchConnectionToken({\n  appKey: app.appKey,\n  credentials: { appKey: app.appKey, secret: app.secret! },\n  client_id: 'user-42',\n  user_data: { name: 'Alice' },\n})\n\n// Frontend — when the application has a serverAuthUrl configured\nconst { token: frontendToken } = await fetchConnectionToken({\n  appKey: 'app_abc',\n  client_id: 'user-42',\n  user_data: { name: 'Alice' },\n})\n\n// WebSocket — pass token directly\nconst conn = new ArkNotifyConnection({\n  appKey: 'app_abc',\n  token,\n})\nawait conn.connect()\n\n// WebSocket — auto-fetch token when credentials + clientId are provided (server-side)\nconst autoConn = new ArkNotifyConnection({\n  appKey: app.appKey,\n  clientId: 'user-42',\n  credentials: { appKey: app.appKey, secret: app.secret! },\n  user_data: { name: 'Alice' },\n})\nawait autoConn.connect()\n\nautoConn.on('event', (msg) => console.log(msg))\nawait autoConn.subscribe('private-room-1', { auth: 'app_abc:...' })\nautoConn.publish('room-1', 'message', { text: 'hi' })\n```\n\nWhen `token` is omitted, `ArkNotifyConnection` automatically calls `POST /api/v1/apps/:appKey/connection-token` when `clientId` is set. Pass `credentials` for backend-only apps, or omit them when the application has a `serverAuthUrl` (frontend-safe). On reconnect, a fresh token is fetched.\n\n## Server auth URL webhook\n\nWhen your application has a `serverAuthUrl`, Ark Notify POSTs to it before issuing a connection token. Use `@emmanuel-nike/ark-notify-js/server` in your backend handler:\n\n```ts\nimport {\n  handleServerAuth,\n  parseServerAuthRequest,\n} from '@emmanuel-nike/ark-notify-js/server'\n\napp.post('/api/ark/connection-auth', async (req, res) => {\n  const request = parseServerAuthRequest(req.body)\n  if (!request) {\n    return res.status(400).json({ allowed: false })\n  }\n\n  const user = await getUserFromSession(req)\n  if (!user) {\n    return res.status(401).json({ allowed: false })\n  }\n\n  const response = await handleServerAuth({\n    request,\n    isAuthorized: () => ({\n      clientId: user.id,\n      capabilities: { publish: false },\n    }),\n  })\n\n  if ('token' in response || response.allowed === true) {\n    return res.json(response)\n  }\n\n  return res.status(403).json(response)\n})\n```\n\nTo return a pre-signed token instead (option B), pass app credentials:\n\n```ts\nconst response = await handleServerAuth({\n  request,\n  isAuthorized: () => true,\n  credentials: { appKey: process.env.ARK_APP_KEY!, secret: process.env.ARK_APP_SECRET! },\n})\n// => { token: \"app_abc.<payload>.<signature>\" }\n```\n\nOr build a response directly with `createAuthorizedServerAuthResponse()`.\n\n## Server stream (backend)\n\nSubscribe to channel events from your application backend over SSE. Unlike client SSE (`ArkNotifySSE`), the server stream uses app credentials (`X-App-Key` / `X-App-Secret`) — not connection tokens — and does not require per-channel HMAC tokens for private channels.\n\nUse this when a backend service needs to react to realtime events (webhooks, workers, sync jobs) without maintaining a WebSocket client.\n\nEach subscription entry can be an exact channel name, a prefix pattern, or a wildcard:\n\n| Value | Matches |\n|-------|---------|\n| `room-1` | Exact channel name |\n| `business-*` | Any channel whose name starts with `business-` |\n| `*` | All channels for this application |\n\nYou can combine exact names and patterns (max 32 entries). Overlapping subscriptions may deliver the same event more than once. Message history replay applies to **exact channel names only** — not patterns or `*`.\n\n```ts\nimport { ArkNotifyServerStream } from '@emmanuel-nike/ark-notify-js/server'\n\nconst stream = new ArkNotifyServerStream({\n  appKey: process.env.ARK_APP_KEY!,\n  credentials: {\n    appKey: process.env.ARK_APP_KEY!,\n    secret: process.env.ARK_APP_SECRET!,\n  },\n  subscriptions: ['room-1', 'business-*', 'users-*'],\n  history: true, // replays stored messages for exact names only (e.g. room-1)\n})\n\n// Subscribe to every channel in the app\nconst allChannels = new ArkNotifyServerStream({\n  appKey: process.env.ARK_APP_KEY!,\n  credentials: { appKey: process.env.ARK_APP_KEY!, secret: process.env.ARK_APP_SECRET! },\n  subscriptions: ['*'],\n})\n\nstream.on('connected', (msg) => {\n  console.log('Exact channels', msg.channels)\n  console.log('Patterns', msg.patterns)\n  console.log('All subscriptions', msg.subscriptions)\n})\n\nstream.on('event', (msg) => {\n  console.log(msg.channel, msg.event, msg.data)\n})\n\nstream.bind('orders', 'order.created', (data) => {\n  console.log('New order', data)\n})\n\nstream.bindMatching('business-*', 'order.created', (data, msg) => {\n  console.log('Business order on', msg.channel, data)\n})\n\nawait stream.connect()\n\n// later\nstream.disconnect()\n```\n\n**Notes:**\n\n- Backend-only — never use app credentials in browser code.\n- Uses `fetch` with a streaming SSE parser (not `EventSource`), so custom auth headers are supported.\n- Failed auth before the stream opens throws `ArkNotifyError` (same as other REST calls).\n- Stream lifecycle events: `connected`, `event`, `presence`, `message`, `error`, `close`.\n- Use `bind()` / `bindAll()` for exact channel names; use `bindMatching()` / `bindAllMatching()` to filter events by prefix pattern or `*`.\n\n## API coverage\n\n\n| Feature                   | Hook / Class                              | Method                                              |\n| ------------------------- | ----------------------------------------- | --------------------------------------------------- |\n| Health                    | `ArkNotifyClient`                         | `.health()`                                         |\n| Login / me                | `usePlatformAuth`, `ArkNotifyClient`      | `.login()`, `.me()`                                 |\n| Application CRUD          | `useApplications`, `ArkNotifyClient`      | `.listApplications()`, `.createApplication()`, …    |\n| Regenerate secret         | `useApplications`                         | `.regenerateSecret()`                               |\n| Publish (server)          | `ArkNotifyClient`                         | `.publishEvent()`                                   |\n| Channel auth (server)     | `ArkNotifyClient`                         | `.authorizeChannel()`                               |\n| Connection token (server) | `ArkNotifyClient`, `fetchConnectionToken` | `.issueConnectionToken()`, `fetchConnectionToken()` |\n| WebSocket connect         | `useConnection`, `ArkNotifyConnection`    | `.connect()`                                        |\n| Subscribe / unsubscribe   | `useChannel`, `ArkNotifyConnection`       | `.subscribe()`, `.unsubscribe()`                    |\n| Publish (client)          | `useChannel`, `ArkNotifyConnection`       | `.publish()`                                        |\n| Presence                  | `usePresence`, `ArkNotifyConnection`      | `.presenceEnter()`, `.presenceUpdate()`, …          |\n| SSE stream                | `useSSE`, `ArkNotifySSE`                  | `.connect()`                                        |\n| Server stream (backend)   | `ArkNotifyServerStream`                   | `.connect()`, `.bind()`, `.bindMatching()`, …       |\n| Private channels          | `onPrivateChannelAuth` callback           | —                                                   |\n| Auto-reconnect            | `useConnection`                           | `autoReconnect: true`                               |\n| Heartbeat                 | `ArkNotifyConnection`                     | Server ping auto-replied                            |\n\n\n## Error handling\n\nAll REST errors throw `ArkNotifyError` with `status`, `code`, and `message`:\n\n```ts\nimport { ArkNotifyError } from 'ark-notify-js'\n\ntry {\n  await client.login({ email, password })\n} catch (err) {\n  if (err instanceof ArkNotifyError) {\n    console.log(err.code, err.status, err.retryAfterSec)\n  }\n}\n```\n\nWebSocket errors are emitted via `connection.on('error', …)` or the `useConnection` state. Server stream connection errors are emitted via `stream.on('error', …)`; failed auth before the stream opens throws `ArkNotifyError`.\n\n## License\n\nMIT","readmeFilename":"README.md"}