{"_id":"kho","_rev":"44-6c0d38233e2edf3e8291cc4c06c03462","name":"kho","dist-tags":{"latest":"2.0.4"},"versions":{"0.1.0":{"name":"kho","version":"0.1.0","keywords":["state","state-management","reactive","effects","atoms","ecs","entity-component-system","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@0.1.0","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://github.com/giangm9/kho#readme","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"c59d4c935ed6cc79d282e8284165b3719775423c","tarball":"https://registry.npmjs.org/kho/-/kho-0.1.0.tgz","fileCount":27,"integrity":"sha512-AsYo6ELk9jZo05F70wp4AjvbQGYye6dOLRkpwtyM+mRRz5Gj8GKBxl9wRpBoQXbf90t4qo+dUa5DYVNrVAv0Gg==","signatures":[{"sig":"MEUCIHYkUmtyDUv/iIWxk0tB6Xf/2K1AY3uhCg7z/oPnw+5BAiEAvLng8gJk7iYwa+rfCZcckFR/rRIu5gNTQt0JPbHEYnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80374},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"3070120e89b6fe72cf1e7effbdb918597daea151","scripts":{"dev":"vite --config demos/vite.config.ts","build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"giangm9","email":"giangm9@gmail.com"},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"10.8.2","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"18.20.8","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_0.1.0_1768532457373_0.18289873454250194","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"kho","version":"1.3.0","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.3.0","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://github.com/giangm9/kho#readme","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"1722c99341dfa688a0f97cee2034d38c9ae94314","tarball":"https://registry.npmjs.org/kho/-/kho-1.3.0.tgz","fileCount":33,"integrity":"sha512-5hryhsTMgvivCdfyS80ugviWakghwweg7z6moKf7HZ4oAlmWFkSzIB7a80OKsIlCx6HQ19B2Q6qvbqv3cH31cw==","signatures":[{"sig":"MEYCIQCSGgSSzHprbOL1SB0PUz9ssIhip/+5Ta1JwPrMMiAR3QIhAJ6tsReFmS13GlEWyljeSHFSV6Xqckg+yiCj6h0dp1xc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228498},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"e67bf8cdb11ba2b83665585058ef786920106ea5","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"giangm9","email":"giangm9@gmail.com"},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.6.2","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.3.0_1768795323749_0.3419188516864602","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"kho","version":"1.3.2","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.3.2","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"e7c141c307aa9fef860da9e2e8566873b83d1735","tarball":"https://registry.npmjs.org/kho/-/kho-1.3.2.tgz","fileCount":33,"integrity":"sha512-Gw0yjueqa52RetUGlXObR2aZUyJpqsYnjMmvOCP37WFqutqd6gFOuGDz2U3/2FEu7UpnooVElNqP3pVKIgmodw==","signatures":[{"sig":"MEUCIQD0b7xqtGdIFiUC/PxiiJdFY3GsC48zErXOikl8QXdguAIgE1e/VboP2wVpWfVc0nEkxkaCg/bJUfSuRFIxWWK+TU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180705},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"21ccc4a936e641681926ff9d53eae7928ba57844","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"giangm9","email":"giangm9@gmail.com"},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.6.2","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.3.2_1768901271707_0.6359389552473702","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"kho","version":"1.3.3","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.3.3","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"9a616c265d0864ddf837e8f250c4ee8ad63ce535","tarball":"https://registry.npmjs.org/kho/-/kho-1.3.3.tgz","fileCount":33,"integrity":"sha512-wBfHjA+4Ces9LxA576WU5sJi++uRdQyj1n1G0M+ybtYuMkfITEsuMR1bR45cpkdJM8UegNoRe0SjZfC263Jx6w==","signatures":[{"sig":"MEUCIQDGuBFwEzTnGRwbyYM5Vkl5YKESgnExaDXfrrCxocneDgIgPiIcV7+ihvBex3lhRZIVSQci+aWgZGG1RyO7fYrngMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180572},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"21ccc4a936e641681926ff9d53eae7928ba57844","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"giangm9","email":"giangm9@gmail.com"},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.6.2","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.3.3_1768903074512_0.8733048528898526","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"kho","version":"1.3.4","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.3.4","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"ee4d963541392a35163a58950c7529ef2555e4f1","tarball":"https://registry.npmjs.org/kho/-/kho-1.3.4.tgz","fileCount":33,"integrity":"sha512-pSWBsj5X6S3xhKjGVZcg6Awfg+wiqTHxAk4GiGxCBtKUrFs2LNSPnmFGOSktc44yWDKbHA019+74bWa13fF/ng==","signatures":[{"sig":"MEQCIAHT2gdz2Vdr/xpbLhpD11fnrNDr2Bd47edgnUfCQCogAiBu05npqIdwsDZXl5G/XNSHxlWAbuKjjU621S/wMqoswQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180572},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"a021cce50653379456c3f6bc0a2596dd1db0b949","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"giangm9","email":"giangm9@gmail.com"},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.6.2","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.3.4_1768903149813_0.8732409802511356","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"kho","version":"1.4.6","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.4.6","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"6e676237fe7eafe385b0d4050683e667bd1d75c1","tarball":"https://registry.npmjs.org/kho/-/kho-1.4.6.tgz","fileCount":35,"integrity":"sha512-Hd+ikfbbC5u0tyIIFHvp2DzrHx14kTnJv6dfrlw3Mvb6Tf3S7rtnTzOmuplXzXgpOrI9j9QE6GwItc1zvR+2og==","signatures":[{"sig":"MEUCIBV4jtmfuRgCI8RvFG1BME8htCxqW8MwFD378zZlQYHVAiEAyQZ1BFZlg6NupnjwBZvSovDIWBFjI0JcdoL+BLnyln8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225026},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"cecd861e866c9c7dc77383bc61178af683f5ed33","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.4.6_1769151935886_0.14379537364405315","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"name":"kho","version":"1.4.7","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.4.7","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"8f219c03338dc86a5f05faad54940337c9f66e40","tarball":"https://registry.npmjs.org/kho/-/kho-1.4.7.tgz","fileCount":35,"integrity":"sha512-jmml568bi5IHnTE+zvO08cXMYolsjLz3MbqYNY9mEAwpLipALdAilLD941MW1fdB7GEvGsf4G+xRCkgAAOMn2w==","signatures":[{"sig":"MEYCIQCIHpfIBdDCcezRZgC3EGxnSKvvUx3BnOBSC2cQ8TyCowIhAJ3IxHyP1BhhDrWDUdn6Zov39jtLv7nJjvU9TIwArX6G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223744},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"25f6635dc3e4b213064116c69731f6f9c71a270d","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.4.7_1769157092785_0.6727742025651586","host":"s3://npm-registry-packages-npm-production"}},"1.4.8":{"name":"kho","version":"1.4.8","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.4.8","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"0d42e3b05cd8b43139bcba4b23aeb32395fb82fe","tarball":"https://registry.npmjs.org/kho/-/kho-1.4.8.tgz","fileCount":35,"integrity":"sha512-NKB3S2MtckkI+uSJXXYN2HJKXxe4YkXzUBqn5fuGZDEqQF21iJxeCe7iDHHhHAz9wtms16W9S435Gg6Q9l9McQ==","signatures":[{"sig":"MEUCIA9ETyw/TERhw9TXqLplcOqQ0yG/zf/iGN+ZQ6OoV14fAiEAl+6DCsr3QydZf12bIzQA9AjXaHA78Jropgcia2SRl14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223744},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"eb43fe5752ab17fc9a87487cdfa42907bd426e42","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.4.8_1769157643683_0.04405694532868698","host":"s3://npm-registry-packages-npm-production"}},"1.4.9":{"name":"kho","version":"1.4.9","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.4.9","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"d455a8648813d6ae6d581770005b845442583250","tarball":"https://registry.npmjs.org/kho/-/kho-1.4.9.tgz","fileCount":35,"integrity":"sha512-JuDZI2zndENHTHN8BLkEbYHlOaNDE6vJ9GSe7g4xgff9hY3h9om07DxVREdudOqm5EZxDuBiwAh8vgqpwYLKIA==","signatures":[{"sig":"MEYCIQD0X1KFWzQ3+7wJOlnwbjIXU7Q3HXxBvb2TnJrY8GZmkAIhAOsCZb54MzfUXp1/2m5SCxcqO8V2ZIIZOxJE29NOrJjZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.4.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223895},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"87f7ff1fe08e02befb5bea4c652ba7860e29bb32","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.4.9_1769232589699_0.17037612090811471","host":"s3://npm-registry-packages-npm-production"}},"1.4.10":{"name":"kho","version":"1.4.10","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.4.10","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"fddc9b1793af1986bfc4ab4c19f5c1e14c353e21","tarball":"https://registry.npmjs.org/kho/-/kho-1.4.10.tgz","fileCount":35,"integrity":"sha512-c7qIuPRLUnDubjheP10BHEpVqA0THF4UeSTHdTq7ZqRheH4b3qcpHaEwcAkH086c+yXxT52SL7xPUdejq9K4Mw==","signatures":[{"sig":"MEUCICSdpzeteQpuO/ZRv7Tg06dYJFxracPfM5JAuGwb95RjAiEA2w2B4aVHyrmEDaKY5pPEPqNG3XJZQdm25NE/NrN6z7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.4.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227487},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"2cfe618abe9f587a3538d977fcaca1600417bb52","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.4.10_1769236208292_0.5519316842045447","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"kho","version":"1.5.1","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.5.1","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"b58da692d7c5fcd946f501f66d2ea42813d65df8","tarball":"https://registry.npmjs.org/kho/-/kho-1.5.1.tgz","fileCount":35,"integrity":"sha512-+YPGkvfVU7QAAeXPher0AuG1eWY/guIG3FUc6+N1lXQ4UEVDdAyfumIs0u2BOKFxLHGVciNA+YhnXyuT8iHcyA==","signatures":[{"sig":"MEUCIANczcpTRP6UEJFGJZef3Y5wEcQ9Egov8yDL0DEcKPlTAiEA7IM7trMZbrDTnDSuV/4PIlHlRi/dXTn57hQ/f1X+bMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228137},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"81eba8c6b252b63285dc498ae73ac62460b9ad16","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.5.1_1769341848030_0.6904331719361332","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"kho","version":"1.5.2","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.5.2","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"fd189f5dd3538561f92919b077c1a1fd2ede6bff","tarball":"https://registry.npmjs.org/kho/-/kho-1.5.2.tgz","fileCount":35,"integrity":"sha512-dWeO0wGYAfdmY0aPfuGPTtziBIzIOmIQzNzyOqc+CmVvP+MCpp3FxvK9KbeGvVdoXUPn56sI9DGFVQTsYtFiBA==","signatures":[{"sig":"MEQCIAFEXN4mV+Y4oD2By/L7aI+3TEw86WXOhjx1Z0+0uSfAAiAGzgnotwe8KMwxAIOBWT6O96U+OEyI79VzYNc2bKJnwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230731},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"b530ad6fc0566ae086fcee119001747cc220fc83","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^18.2.0","esbuild":"^0.19.0","react-dom":"^18.2.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^18.2.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^18.2.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.5.2_1769361724292_0.8276920082567873","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"kho","version":"1.5.3","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.5.3","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"420284b5e0f4fdedb4d713246114d6ad770f2164","tarball":"https://registry.npmjs.org/kho/-/kho-1.5.3.tgz","fileCount":35,"integrity":"sha512-JWS08Y2cSnZYoQep9M0oOMevnBMdk91+sWlAi3STiNGzxZ7k+AMtPtcwbZJSGlgil4bx3ojYzl9j8IkRGeLLhw==","signatures":[{"sig":"MEUCIGLZ5wZJQEtAARYpwd5Def+AsUswVmfmi7+mnVNvNr7LAiEA3pkx16ZWSioTnXqCB7p2isJmTVvJlLp08GRrR3Yb1jQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230865},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"23a879e98830cdc1c03d0f79b1f00f610efac00f","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.5.3_1769504259986_0.341027996043088","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"kho","version":"1.6.1","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.1","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"da84d497878cb613ff91614464d0e2d018dd1b3d","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.1.tgz","fileCount":41,"integrity":"sha512-Z03fQqLPt0x58h1/xo1gliUTdq/pb+PumkjFWYqqYNgkYFwYAFnlJicP/Ic61zDMvzcMeJAqI4z8KAKZD7wHWA==","signatures":[{"sig":"MEUCIQDtvaTXOzM8p3KKZJMH8qF0vxcRdgKQ4IsqrHVR8k8P9wIgQZOM4Lobm9+q/USVcCO0H331PVKZyG9ljyRkEcjFTfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":335636},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"c477edc497d51c62d4fb920a878e4ec279a7c9d3","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.8.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.1_1769590522005_0.8189628387061554","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"kho","version":"1.6.2","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.2","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"6dfb58761dc32ea15e6fdb21723c6b23a0f09ab7","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.2.tgz","fileCount":41,"integrity":"sha512-3F1s+ksT29GNkbnwDOvOtS16RcQRsraK4Y6CnSeB8OV9FhGYTFZWW4VT4lKyQ1rrPB+ogVA0anBvAUOU6fTpEQ==","signatures":[{"sig":"MEYCIQCix50+cRGGL3l//yhmb9vAE0GF/P4/mXS7vLRsgJVbBAIhAMyfgKRdyhAbu3AmIhcPHmouR5mV7xzCseKKF3uFdFAZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":335610},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"89493dcac31e2f23a21e85bcb332b27d4f9a0129","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.9.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.2_1770240114401_0.2769714468061253","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"kho","version":"1.6.3","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.3","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"73ec4a860ff7bfbc89f382c8e4eba67659504cdc","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.3.tgz","fileCount":41,"integrity":"sha512-Tp/+TJuM1w7CDNOlUcBgzXOwfMWDru2+utbIwetyKETi4fsJ7d1QDMI8FIo3hjI2zFZYB5VkL56vxYtHIAlC+A==","signatures":[{"sig":"MEQCIAp0DXopnzDg5lJWRSC4FKFcsAE64UmWQwe+dHLmRv9GAiAzb80bp1ruephtgt/nbWjezeF4Kd6jjB8oiUy99miz5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337841},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"53b252867909fefee497117159c3e5dcd0a2dc44","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.9.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.3_1770240425506_0.6695028182379235","host":"s3://npm-registry-packages-npm-production"}},"1.6.4":{"name":"kho","version":"1.6.4","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.4","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"53cece7950a618c222283a77f8a9c57e6ef6249b","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.4.tgz","fileCount":41,"integrity":"sha512-hDtgtg+c9jiWtXqiVkXiT1h0q/yn2vVyrbRfp/Qfo888MVc5EZE6t3rdjJ4Rhb6Fm9NyhxI01YY0ras2MHb4rw==","signatures":[{"sig":"MEUCIQDn3pA0UrnvQHC6xOjUphNQr/9ftGCr/JSJCzErLr7jNQIgHPFhJC+Aq19bAoUytbSuAoDQyHfAr1oitlbSZ+E3XKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337841},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"7a504b9dd0b55ee95970d5225ae49f5593e0531e","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.11.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.4_1773373564814_0.05831749257156815","host":"s3://npm-registry-packages-npm-production"}},"1.6.5":{"name":"kho","version":"1.6.5","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.5","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"c3c8fc95bfed4dbdb63e6076da77bf05760cef64","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.5.tgz","fileCount":41,"integrity":"sha512-8iUOIIsqdDWVDRQ0fMmez0U6UcyyCyAR5kCNPPAVaxzcSDdx0+WZDC8AVcPzLHfRsfPv7grUQ09vMkKJ+agJsg==","signatures":[{"sig":"MEUCIQDWKRaQyJ7IJ50QgJhwvofdxFZSLXf+3rR2kTvktpFfUAIgfIHmv3zWso9x5NazXNnFhg0S6/diyzRyV/Edn1S36SE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337841},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"be9e525365ab6ceb197a1194835755afabb479b1","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.11.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.5_1773374215068_0.9506292629191047","host":"s3://npm-registry-packages-npm-production"}},"1.6.6":{"name":"kho","version":"1.6.6","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.6","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"49fbcd0d4de64dfcbe631444e1e6366b21220257","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.6.tgz","fileCount":41,"integrity":"sha512-Z6Wi5c0zhRGAEoUvxkBNH6KWo0um0ycpze3SHRYRDfpqSonm6TUkAN75jKxPQ7bzzd70Ili3xVkKNESw1QXpPw==","signatures":[{"sig":"MEQCIAX3nxbZMGJVuE6vDmPSJNelY3Y1CZBm2BwsFj+4DemAAiAKF0k4YEZTwnSYzEic4r0+QSQHpLUn/fD6InQp74ddbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337841},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"03f70451815604573109081415c4b7df5499b9a6","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.11.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.6_1773376401393_0.9150976169725651","host":"s3://npm-registry-packages-npm-production"}},"1.6.7":{"name":"kho","version":"1.6.7","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.7","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"72f59c8e3fc9bd29621a3da4022bb0acec7ce2b9","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.7.tgz","fileCount":41,"integrity":"sha512-W52qac2+Qy9MvYsmNMgie3br6ZpTYDL51RKCIQLnrAfdXwo6qImiVxygGsJmHaJ95+ULqkO3hwuwDq00clJRYQ==","signatures":[{"sig":"MEYCIQDZzi1hldHbBTH8K/jdjoJG1AP19csM24UTxRdp8Dgn8AIhAMWZIlNxAJ0t+0lRGdcjC3m5tSxpkYgMQ1mziFHq5Qqu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337841},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"36bd47fb62373cc3475736a171d5a6321d049ad5","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.11.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.7_1773381720460_0.5503358918179049","host":"s3://npm-registry-packages-npm-production"}},"1.6.8":{"name":"kho","version":"1.6.8","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.8","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"1b7bfeab8ce745a4f5ca2c3a5b6ca95a58c749ec","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.8.tgz","fileCount":41,"integrity":"sha512-ns1IcEjBV8vzLeVaIi/sIq39IpSk5txKwfXqbhtWR3xdQF4+exhZPaqyv4gW1DQJWA2pfPSG54nCrY+jdBAWZA==","signatures":[{"sig":"MEQCIE+a9L2nxwKKUeSKhr4+Ld3s6zFFwsOgi8MVMZ7Dg2ViAiARffF0nNiPH9pQpQe09B+dNFt6m7wzSwFRLrqkOiFpBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337841},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"fa55e6d2b5a5957555bf5017b4c63dcb1c571dc0","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.11.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.8_1773798519805_0.10902776592304075","host":"s3://npm-registry-packages-npm-production"}},"1.6.9":{"name":"kho","version":"1.6.9","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@1.6.9","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"778f445afbc7deddc6e6a0a81b22fa05771262eb","tarball":"https://registry.npmjs.org/kho/-/kho-1.6.9.tgz","fileCount":41,"integrity":"sha512-nIUaGjV0nwBTWv0vG1mm1lvQDAgyat67FjCyWEQnvDEenIgSZkWw7cnLHd5Y40fEtLYH3YDlrr5TO69fpMX09w==","signatures":[{"sig":"MEQCIAtxYBPaNkYpBGKHPyydOeTKvrtqM4yiDu3pxuprsYGiAiA1uVyQYXK5afboT9nEPHB6WprLrX7YuNrImqSBvFI9vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@1.6.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":338669},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"98cef2e97535e4a5e504eff24ba423cceaeebc85","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.12.0","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_1.6.9_1774544451546_0.32264922684164454","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"kho","version":"2.0.1","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@2.0.1","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"7cbdfc24eaa393ec8bc407cb056d5c1ad20fb772","tarball":"https://registry.npmjs.org/kho/-/kho-2.0.1.tgz","fileCount":41,"integrity":"sha512-5S7UcgEMbmdhrnROdGMI0yM8omx8LrUvwKOdovjNkIFGmQdf3wSfsmoPLarEK6jSmpMjQkPKya/bzhZLPJzS2A==","signatures":[{"sig":"MEYCIQDDlMyqO/v+K8Ba0JaC+6aQbtqvEWF6+bvPR44vfRKf1wIhAIfjly3ITX+f2N/4koREiUzuF40wmhIzLOHWgoh7E/YB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":337662},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"gitHead":"03d16977632975b67ae0ba1760ffda3abdd5b336","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.12.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_2.0.1_1774716864924_0.9064612467487725","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"kho","version":"2.0.2","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@2.0.2","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"3bc43a27239f0dbcac936062b160a2524884da4b","tarball":"https://registry.npmjs.org/kho/-/kho-2.0.2.tgz","fileCount":49,"integrity":"sha512-l6bg6Oml7HnqInl1pswLEguJNQCDQmgYLQ3BE8QJvUeUZCDCzc+yNeDjenR9mh82+287YvbwpiMOIZ55fACC0w==","signatures":[{"sig":"MEUCIENMHS76AGy/pL7sQ3BsrCZ+humFbDIDM9gfwFrPtFw4AiEA/iQ3Z3/sElF7AJua1o8PmUUr8T7IwDvr20SLXn7zP00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":386088},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"},"./systems":{"types":"./dist/systems/index.d.ts","import":"./dist/systems/index.js","require":"./dist/systems/index.cjs"}},"gitHead":"a3f66fd01490ea14e1d4d1c85e8c538c0a900c3f","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.12.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_2.0.2_1774806732897_0.15464437187891966","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"kho","version":"2.0.3","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","_id":"kho@2.0.3","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"homepage":"https://khojs.dev","bugs":{"url":"https://github.com/giangm9/kho/issues"},"dist":{"shasum":"c49053365315033f01bbb561eda091b8a851c265","tarball":"https://registry.npmjs.org/kho/-/kho-2.0.3.tgz","fileCount":49,"integrity":"sha512-8c4cVTT+Lv7/eiS4F+JCQ/awtiurwHQBSIwc9NB0EVOh5lcu4eOGmp7fVBQR3Ow6JVSeZ/vYbbbX+HfMstiGeQ==","signatures":[{"sig":"MEUCIQCRqE+Mq808hY2Zh3A1G6Tvoh+IsoY0sU0yl2HLw5jp4AIgW/OHNp9rIyF/PXh7j68RhWl9vEo256EohNEgF1YjzKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":386088},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.js","require":"./dist/vue/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"},"./systems":{"types":"./dist/systems/index.d.ts","import":"./dist/systems/index.js","require":"./dist/systems/index.cjs"}},"gitHead":"7c1740110e32823003700a49d32a5383a819387b","scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"repository":{"url":"git+https://github.com/giangm9/kho.git","type":"git"},"_npmVersion":"11.12.1","description":"Data-driven state management library with reactive effects","directories":{},"sideEffects":false,"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","vue":"^3.4.0","clsx":"^2.1.1","vite":"^5.0.0","geist":"^1.5.1","react":"^19.0.0","esbuild":"^0.19.0","react-dom":"^19.0.0","typescript":"^5.3.0","@types/node":"^20.0.0","@types/react":"^19.0.0","lucide-react":"^0.562.0","tailwind-merge":"^3.4.0","@types/react-dom":"^19.0.0","@monaco-editor/react":"^4.7.0","@vanilla-extract/css":"^1.18.0","@vitejs/plugin-react":"^4.2.0","react-resizable-panels":"^4.4.1","class-variance-authority":"^0.7.1","@fontsource/jetbrains-mono":"^5.2.8","@vanilla-extract/vite-plugin":"^5.1.4"},"peerDependencies":{"vue":"^3.0.0","react":"^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/kho_2.0.3_1774810550133_0.8032822813679141","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"kho","version":"2.0.4","description":"Data-driven state management library with reactive effects","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types":"./dist/index.d.ts"},"./react":{"import":"./dist/react/index.js","require":"./dist/react/index.cjs","types":"./dist/react/index.d.ts"},"./vue":{"import":"./dist/vue/index.js","require":"./dist/vue/index.cjs","types":"./dist/vue/index.d.ts"},"./systems":{"import":"./dist/systems/index.js","require":"./dist/systems/index.cjs","types":"./dist/systems/index.d.ts"}},"scripts":{"build":"tsx scripts/build.ts","deploy":"tsx scripts/deploy.ts"},"keywords":["state","state-management","reactive","effects","atoms","data-driven"],"author":{"name":"giangm9"},"license":"MIT","peerDependencies":{"react":"^19.0.0","vue":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"vue":{"optional":true}},"devDependencies":{"@fontsource/jetbrains-mono":"^5.2.8","@monaco-editor/react":"^4.7.0","@types/node":"^20.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vanilla-extract/css":"^1.18.0","@vanilla-extract/vite-plugin":"^5.1.4","@vitejs/plugin-react":"^4.2.0","class-variance-authority":"^0.7.1","clsx":"^2.1.1","esbuild":"^0.19.0","geist":"^1.5.1","lucide-react":"^0.562.0","react":"^19.0.0","react-dom":"^19.0.0","react-resizable-panels":"^4.4.1","tailwind-merge":"^3.4.0","tsx":"^4.0.0","typescript":"^5.3.0","vite":"^5.0.0","vue":"^3.4.0"},"engines":{"node":">=16"},"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/giangm9/kho.git"},"bugs":{"url":"https://github.com/giangm9/kho/issues"},"homepage":"https://khojs.dev","gitHead":"7b1229c101cd3d198e60520dda84c6684424bcaf","_id":"kho@2.0.4","_nodeVersion":"22.23.1","_npmVersion":"12.0.1","dist":{"integrity":"sha512-roYnyWJKDOdGB1gxnEUtGb3G4Hs0d0WxLalw9wXdZaB1m+VpxK6MujfJFIfVi9MGhYAeDtUuGx6zD6PKfnFEtw==","shasum":"12e35a9801d17bf1ae789f50252b6cc56c227b3e","tarball":"https://registry.npmjs.org/kho/-/kho-2.0.4.tgz","fileCount":49,"unpackedSize":386088,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/kho@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDIXySE1E9ahHewmHmSdSAc5cM5Jrjg1zSV2N9hCrYJmQIgHNzSQU3zmjfe11F3jFjez7fPF3RNEpghDA7D3kX0hs4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5144d40a-8a33-4137-a974-76d3b5a88430"}},"directories":{},"maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kho_2.0.4_1785045149575_0.16090174222719744"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-16T03:00:57.372Z","modified":"2026-07-26T05:52:29.984Z","0.0.1":"2020-09-24T09:23:04.835Z","0.2.0":"2020-09-28T08:00:50.144Z","0.2.1":"2020-09-29T05:41:04.436Z","0.3.0":"2020-09-29T09:29:17.998Z","0.3.1":"2020-10-05T08:30:15.958Z","0.4.0":"2020-10-07T09:38:04.016Z","0.4.1":"2020-10-08T02:48:36.267Z","1.0.0":"2020-10-19T03:49:09.072Z","1.0.1":"2020-10-21T02:46:44.176Z","1.0.2":"2020-10-21T03:45:11.641Z","1.0.3":"2020-10-21T03:54:52.514Z","1.1.0":"2020-10-26T03:22:41.763Z","1.1.1":"2020-10-26T15:10:53.974Z","1.1.2":"2020-10-27T01:17:27.051Z","1.1.3":"2020-10-30T02:57:29.770Z","1.1.4":"2020-10-30T03:21:51.297Z","1.2.0":"2020-11-10T07:40:23.536Z","0.1.0":"2026-01-16T03:00:57.510Z","1.3.0":"2026-01-19T04:02:03.913Z","1.3.2":"2026-01-20T09:27:51.845Z","1.3.3":"2026-01-20T09:57:54.667Z","1.3.4":"2026-01-20T09:59:09.967Z","1.4.6":"2026-01-23T07:05:36.041Z","1.4.7":"2026-01-23T08:31:32.941Z","1.4.8":"2026-01-23T08:40:43.870Z","1.4.9":"2026-01-24T05:29:49.838Z","1.4.10":"2026-01-24T06:30:08.455Z","1.5.1":"2026-01-25T11:50:48.266Z","1.5.2":"2026-01-25T17:22:04.434Z","1.5.3":"2026-01-27T08:57:40.156Z","1.6.1":"2026-01-28T08:55:22.199Z","1.6.2":"2026-02-04T21:21:54.571Z","1.6.3":"2026-02-04T21:27:05.668Z","1.6.4":"2026-03-13T03:46:04.980Z","1.6.5":"2026-03-13T03:56:55.236Z","1.6.6":"2026-03-13T04:33:21.569Z","1.6.7":"2026-03-13T06:02:00.611Z","1.6.8":"2026-03-18T01:48:39.970Z","1.6.9":"2026-03-26T17:00:51.768Z","2.0.1":"2026-03-28T16:54:25.159Z","2.0.2":"2026-03-29T17:52:13.040Z","2.0.3":"2026-03-29T18:55:50.311Z","2.0.4":"2026-07-26T05:52:29.703Z"},"bugs":{"url":"https://github.com/giangm9/kho/issues"},"author":{"name":"giangm9"},"license":"MIT","homepage":"https://khojs.dev","keywords":["state","state-management","reactive","effects","atoms","data-driven"],"repository":{"type":"git","url":"git+https://github.com/giangm9/kho.git"},"description":"Data-driven state management library with reactive effects","maintainers":[{"name":"giangm9","email":"giangm9@gmail.com"}],"readme":"# Kho\n\n> Data-driven state management with reactive effects and signals\n\n[![npm version](https://img.shields.io/npm/v/kho.svg)](https://www.npmjs.com/package/kho)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## What is Kho?\n\nKho is a state management library built on data-driven architecture principles:\n\n- **Data-Driven**: Logic reacts to state changes instead of imperative commands\n- **Separation of Concerns**: Clear split between data (CRUD) and reactions (effects)\n- **Type-Safe**: Full TypeScript support with strict type checking\n- **Minimal**: ~5KB bundle size with zero dependencies\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                         Kho                                 │\n├─────────────────────────┬───────────────────────────────────┤\n│     Data Layer          │      System Layer                 │\n│  (src/data/)            │   (src/system/)                   │\n├─────────────────────────┼───────────────────────────────────┤\n│  reactive(store)        │  effects(store)                   │\n│  ├─ atoms.get/set/notify│  ├─ effect()                      │\n│  ├─ sets.add/remove/has │  ├─ compute()                     │\n│  └─ maps.set/get/delete │  ├─ batch()                       │\n│                         │  ├─ debounce/throttle()           │\n│  signal/listen          │  └─ interval/timeout()            │\n│  entity/world (ECS)     │                                   │\n│  attribute (generic)    │  system() - auto dispose          │\n│                         │  ignite() - orchestration         │\n└─────────────────────────┴───────────────────────────────────┘\n```\n\n## Installation\n\n```bash\nnpm install kho\n```\n\n## Quick Start\n\n### Vanilla TypeScript\n\n```typescript\nimport { atom, createStore, reactive, effects } from 'kho';\n\n// Define atoms ($ prefix convention)\nconst $count = atom(0);\nconst $doubled = atom(0);\n\n// Create store\nconst store = createStore();\n\n// Data layer - destructure for cleaner code\nconst { atoms } = reactive(store);\n\n// System layer - reactions\nconst { effect, dispose } = effects(store);\n\n// React to changes\neffect([$count], () => {\n  const count = atoms.get($count)!;\n  atoms.set($doubled, count * 2);\n});\n\n// Update state\natoms.set($count, 5);\n// $doubled automatically becomes 10\n\n// Cleanup\ndispose();\n```\n\n### React\n\n```tsx\nimport { atom, createStore } from 'kho';\nimport { KhoProvider, useAtom } from 'kho/react';\n\nconst $count = atom(0);\nconst store = createStore();\n\nfunction Counter() {\n  const [count, setCount] = useAtom($count);\n\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={() => setCount(count + 1)}>+</button>\n    </div>\n  );\n}\n\nfunction App() {\n  return (\n    <KhoProvider store={store}>\n      <Counter />\n    </KhoProvider>\n  );\n}\n```\n\n### Vue\n\n```vue\n<!-- App.vue (root component) -->\n<script setup>\nimport { createStore } from 'kho';\nimport { provideStore } from 'kho/vue';\n\nconst store = createStore();\nprovideStore(store);\n</script>\n\n<template>\n  <Counter />\n</template>\n```\n\n```vue\n<!-- Counter.vue -->\n<script setup>\nimport { atom } from 'kho';\nimport { useAtom } from 'kho/vue';\n\nconst $count = atom(0);\nconst [count, setCount] = useAtom($count);\n</script>\n\n<template>\n  <div>\n    <p>Count: {{ count }}</p>\n    <button @click=\"setCount(count + 1)\">+</button>\n  </div>\n</template>\n```\n\n## Core Concepts\n\n### 1. Atoms - State Containers\n\n```typescript\nimport { atom, atomWithFactory } from 'kho';\n\n// Simple atoms\nconst $count = atom(0);\nconst $user = atom<User | null>(null);\nconst $items = atom<string[]>([]);\n\n// Lazy initialization\nconst $cache = atomWithFactory(() => new Map());\n```\n\n### 2. Reactive - Data Operations\n\nThe `reactive(store)` function returns namespaced operations for different data types:\n\n```typescript\nimport { createStore, reactive } from 'kho';\n\nconst store = createStore();\nconst { atoms, sets, maps, dispose } = reactive(store);\n\n// Atom operations\natoms.get($count);           // Get value\natoms.set($count, 10);       // Set value\natoms.notify($count);        // Notify listeners manually\n\n// Set operations (Atom<Set<T>>)\nconst $tags = atom(new Set<string>());\nsets.add($tags, 'new');      // Add item\nsets.remove($tags, 'old');   // Remove item\nsets.has($tags, 'new');      // Check existence\nsets.values($tags);          // Get as array\n\n// Map operations (Atom<Map<K, V>>)\nconst $cache = atom(new Map<string, number>());\nmaps.set($cache, 'key', 42); // Set entry\nmaps.get($cache, 'key');     // Get entry\nmaps.delete($cache, 'key');  // Delete entry\nmaps.has($cache, 'key');     // Check existence\nmaps.keys($cache);           // Get all keys\nmaps.values($cache);         // Get all values\nmaps.entries($cache);        // Get all entries\n\ndispose();                   // Cleanup\n```\n\n### 3. Effects - Reactions\n\nThe `effects(store)` function provides reactive primitives:\n\n```typescript\nimport { effects } from 'kho';\n\nconst { effect, compute, batch, debounce, throttle, interval, timeout, onDispose, dispose } = effects(store);\n\n// Basic effect - runs when dependencies change\neffect([$count], () => {\n  console.log('Count:', atoms.get($count));\n});\n\n// Computed - derived state\ncompute([$a, $b], $sum, (a, b) => a + b);\n\n// Batch - single notification for multiple updates\nbatch(() => {\n  atoms.set($a, 1);\n  atoms.set($b, 2);\n});\n\n// Timing utilities\ndebounce([$search], 300, () => { /* search API */ });\nthrottle([$scroll], 16, () => { /* update UI */ });\ninterval(1000, () => { /* tick */ });\ntimeout(5000, () => { /* delayed */ });\n\n// Custom cleanup\nonDispose(() => { /* cleanup */ });\n\ndispose();  // Cleanup all\n```\n\n### 4. Signals - Event Communication\n\nSignals enable loose coupling between systems:\n\n```typescript\nimport { signal, listen } from 'kho';\n\n// Define signals\nconst $playerDied = signal<{ playerId: string }>();\nconst $damage = signal<{ target: string; amount: number }>();\n\n// Listen to signals\nconst { on, emit, dispose } = listen(store);\n\non($damage, ({ target, amount }) => {\n  console.log(`${target} took ${amount} damage`);\n});\n\n// Emit signals\nemit($damage, { target: 'player', amount: 10 });\n```\n\n### 5. System - Encapsulated Logic\n\nUse `system()` to create self-contained units with automatic cleanup:\n\n```typescript\nimport { atom, system, reactive, effects, listen, signal } from 'kho';\n\nconst $health = atom(100);\nconst $gameOver = atom(false);\nconst $damage = signal<number>();\n\nconst gameSystem = system((scope) => {\n  // scope() injects store and tracks disposal\n  const { atoms } = scope(reactive);\n  const { effect } = scope(effects);\n  const { on, emit } = scope(listen);\n\n  // Listen to damage events\n  on($damage, (amount) => {\n    const health = atoms.get($health)! - amount;\n    atoms.set($health, Math.max(0, health));\n  });\n\n  // React to health changes\n  effect([$health], () => {\n    if (atoms.get($health)! <= 0) {\n      atoms.set($gameOver, true);\n    }\n  });\n\n  // Optional: return custom cleanup\n  return () => {\n    console.log('Game system stopped');\n  };\n});\n\n// Usage\nconst store = createStore();\nconst dispose = gameSystem(store);\n// ... later\ndispose();  // All cleanup handled automatically\n```\n\n## ECS (Entity Component System)\n\nFor game development and similar use cases. See [full ECS documentation](docs/ecs.md).\n\n```typescript\nimport { entities, component, query, system, effects, reactive, $systems } from 'kho';\nimport { ecsBind } from 'kho/systems';\n\n// Entity registry\nconst $units = entities();\n\n// Standalone components (not bound to any registry)\nconst $position = component({ x: 0, y: 0 });\nconst $velocity = component({ vx: 0, vy: 0 });\nconst $health = component(100);\n\n// Bind component cleanup to entity lifecycle\nconst unitsBind = ecsBind($units, [$position, $velocity, $health]);\n\n// Game system\nconst gameSystem = system((scope) => {\n  const { interval } = scope(effects);\n  const { add, set, get, select, remove } = scope(query($units));\n\n  add('player-1');\n  set('player-1', $position, { x: 0, y: 0 });\n  set('player-1', $velocity, { vx: 1, vy: 0 });\n  set('player-1', $health, 100);\n\n  add('enemy-1');\n  set('enemy-1', $position, { x: 100, y: 50 });\n  set('enemy-1', $health, 50);\n\n  // Game loop\n  interval(16, () => {\n    for (const id of select($position, $velocity)) {\n      const pos = get(id, $position)!;\n      const vel = get(id, $velocity)!;\n      set(id, $position, {\n        x: pos.x + vel.vx,\n        y: pos.y + vel.vy,\n      });\n    }\n  });\n\n  // remove() removes from entity set\n  // ecsBind handles component data cleanup automatically\n  remove('enemy-1');\n});\n\n// Start\nconst store = createStore();\nconst { sets } = reactive(store);\nsets.add($systems, unitsBind);\nsets.add($systems, gameSystem);\nconst dispose = ignite(store);\n```\n\n### World API\n\n```typescript\nconst { add, remove, has, all, get, set, delete: del, select, exclude, dispose } = scope(query($units));\n\n// Entity lifecycle\nadd(id)                      // Add entity to set\nremove(id)                   // Remove from set (ecsBind cleans components)\nhas(id)                      // Entity exists?\nhas(id, $comp)               // Entity has component?\nall()                        // All entity IDs\n\n// Component operations\nget(id, $comp)               // Get value (or default)\nset(id, $comp, value)        // Set value\ndel(id, $comp)               // Remove component from entity\n\n// Queries\nselect($a, $b)               // Entities with ALL components\nexclude($a)                  // Entities WITHOUT components\n\ndispose()                    // Cleanup\n```\n\n## System Orchestration\n\nUse `ignite()` to manage multiple systems:\n\n```typescript\nimport { createStore, reactive, ignite, $systems } from 'kho';\n\nconst store = createStore();\nconst { sets } = reactive(store);\n\n// Register systems\nsets.add($systems, gameSystem);\nsets.add($systems, audioSystem);\nsets.add($systems, uiSystem);\n\n// Start all systems\nconst dispose = ignite(store);\n\n// Dynamic system management\nsets.add($systems, debugSystem);     // Auto-starts\nsets.remove($systems, audioSystem);  // Auto-stops\n\n// Cleanup all\ndispose();\n```\n\n### With React/Vue\n\n```tsx\n// React - wrap your app\n<KhoProvider store={store} systems={[gameSystem, uiSystem]}>\n  <App />\n</KhoProvider>\n```\n\n```vue\n<!-- Vue - in root component setup -->\n<script setup>\nimport { createStore } from 'kho';\nimport { provideStore } from 'kho/vue';\n\nconst store = createStore();\nprovideStore(store, [gameSystem, uiSystem]);\n</script>\n```\n\n## Generic Attributes\n\nFor attaching data to non-entity objects:\n\n```typescript\nimport { registry, attribute, attributeWithFactory, attributes, system } from 'kho';\n\n// Define registry and attributes\nconst $nodes = registry<HTMLElement>();\nconst $draggable = attribute($nodes, false);           // With default\nconst $position = attributeWithFactory($nodes, () => ({ x: 0, y: 0 }));\n\nconst dragSystem = system((scope) => {\n  const attrOps = scope(attributes);\n\n  const element = document.getElementById('draggable')!;\n\n  // Register object\n  attrOps.add(element, $draggable);\n\n  // Get/set attributes\n  attrOps.set(element, $draggable, true);\n  attrOps.set(element, $position, { x: 100, y: 50 });\n\n  console.log(attrOps.get(element, $draggable));  // true\n  console.log(attrOps.get(element, $position));   // { x: 100, y: 50 }\n});\n```\n\n## API Reference\n\n### Data Layer\n\n| Function | Returns | Description |\n|----------|---------|-------------|\n| `atom(value)` | `Atom<T>` | Create atom with initial value |\n| `atomWithFactory(fn)` | `Atom<T>` | Create atom with factory |\n| `createStore(name?)` | `Store` | Create a store instance |\n| `reactive(store)` | `Reactive` | Get data operations |\n| `signal()` | `Signal<T>` | Create event signal |\n| `listen(store)` | `Listener` | Get signal operations |\n\n### Reactive Namespaces\n\n| Namespace | Methods |\n|-----------|---------|\n| `atoms` | `get`, `set`, `notify` |\n| `sets` | `add`, `remove`, `has`, `clear`, `size`, `values` |\n| `maps` | `set`, `get`, `delete`, `has`, `clear`, `size`, `keys`, `values`, `entries` |\n\n### System Layer\n\n| Function | Returns | Description |\n|----------|---------|-------------|\n| `effects(store)` | `Effects` | Get reaction primitives |\n| `system(setup)` | `System` | Create system with auto-dispose |\n| `ignite(store)` | `() => void` | Start system orchestrator |\n\n### Effects Methods\n\n| Method | Description |\n|--------|-------------|\n| `effect(atoms, fn)` | Reactive effect |\n| `compute(sources, target, fn)` | Derived state |\n| `batch(fn)` | Batch updates |\n| `debounce(atoms, ms, fn)` | Debounced effect |\n| `throttle(atoms, ms, fn)` | Throttled effect |\n| `interval(ms, fn)` | Auto-cleanup interval |\n| `timeout(ms, fn)` | Auto-cleanup timeout |\n| `onDispose(fn)` | Register cleanup |\n| `dispose()` | Cleanup all |\n\n### ECS\n\n| Function | Description |\n|----------|-------------|\n| `entities()` | Create entity registry `Atom<Set<string>>` |\n| `component(default?)` | Create standalone component |\n| `componentWithFactory(fn)` | Component with default factory |\n| `query($entities)` | Create World factory for scope() |\n\n### Built-in Systems (`kho/systems`)\n\n| Function | Description |\n|----------|-------------|\n| `ecsBind($entities, comps, opts?)` | Bind component cleanup to entity lifecycle |\n\n### Attributes\n\n| Function | Description |\n|----------|-------------|\n| `registry()` | Create object registry |\n| `attribute($reg, default)` | Create attribute with default |\n| `attributeWithFactory($reg, fn)` | Create attribute with factory |\n| `attributes(store)` | Get attribute operations |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}