{"_id":"woby","_rev":"38-11cb6090f3f6c9dfdb6ac1ea3778c39a","name":"woby","dist-tags":{"latest":"1.58.40"},"versions":{"0.46.2":{"name":"woby","version":"0.46.2","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.46.2","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/fabiospampinato/woby#readme","bugs":{"url":"https://github.com/fabiospampinato/woby/issues"},"dist":{"shasum":"440e634a4dcf14a3bee74364427a2909d9e00645","tarball":"https://registry.npmjs.org/woby/-/woby-0.46.2.tgz","fileCount":255,"integrity":"sha512-CS0GhRaGpk8I6WGcKgMPVjSMse9G89xOuWzc6YUHF83Wov+MhOCubHWVxvMg8iyHqiu7UHylytGJhtt9V6IT8g==","signatures":[{"sig":"MEUCIQDhqAfkGhsgx0RyfubW4utho110GO/k8Lfzc0MhrEmmvQIgEDQMXAGioE+l3VJp7egN7jVbwwDD+DCEV7UpUvyRB+I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":593905},"main":"./dist/index.cjs.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"gitHead":"09e1acd39748c8916e7be4e9d241f45ec3cf5a3b","scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prepublishOnly":"tsex prepare","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"//browser":"./dist/index.umd.js","repository":{"url":"git+https://github.com/fabiospampinato/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"workspace:../oby","pnpm":"^8.8.0","vhtml":"workspace:../vhtml","viajs":"workspace:../via"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.4.11","csstype":"^3.1.2","typescript":"^5.2.2","@types/node":"^18.18.3","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.46.2_1698901191702_0.0808225685559163","host":"s3://npm-registry-packages"}},"0.46.3":{"name":"woby","version":"0.46.3","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.46.3","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"8905ffa1e2440c9fb3f87f89c98a0f73edfda3f3","tarball":"https://registry.npmjs.org/woby/-/woby-0.46.3.tgz","fileCount":255,"integrity":"sha512-oxOpz62YLsCMeXFG40g2yeYrQuGwVRzKcTY5OSgm2gz7af5SpFGdTj7dO5rVap09mRXUaBMT/6iA8rkVS4K9KQ==","signatures":[{"sig":"MEQCIHsy5swOwnBp92DN1eJwiNJmtmcLalK+H2PwWp0ygKyKAiAAv3CEQqxnD1r2s0thWoBkJY2Cdo01AD/H0n5hwX7dxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":593900},"main":"./dist/index.cjs.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"gitHead":"09e1acd39748c8916e7be4e9d241f45ec3cf5a3b","scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prepublishOnly":"tsex prepare","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"workspace:../oby","pnpm":"^8.8.0","vhtml":"workspace:../vhtml","viajs":"workspace:../via"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.4.11","csstype":"^3.1.2","typescript":"^5.2.2","@types/node":"^18.18.3","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.46.3_1701919376642_0.04555602803810532","host":"s3://npm-registry-packages"}},"0.57.1":{"name":"woby","version":"0.57.1","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.57.1","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"8411b2a0ea728289042fbaedd37098097c7c710a","tarball":"https://registry.npmjs.org/woby/-/woby-0.57.1.tgz","fileCount":255,"integrity":"sha512-sQNc/Qt2sToq4k390OuNmuqFFGNKV322PYcMD3aavykC+3AmFiWOj6ZxsQKlRwGlbpob+PWsEruZ2tPVda3Jmw==","signatures":[{"sig":"MEQCIFvuMSl4qieAs2CmcOIE94xB5EI0OvgmJ8evxNt5XSZsAiBrVUT420Dr1TNcFVT1lsbs/AbRSaWNmnGiKe+CQ8J/+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":593925},"main":"./dist/index.cjs.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"gitHead":"c31e86fa092da1da237ff2b1ad9fc20483901b16","scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prepublishOnly":"tsex prepare","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.0","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.4.11","csstype":"^3.1.2","typescript":"^5.2.2","@types/node":"^18.18.3","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.57.1_1701922404475_0.2569195166752596","host":"s3://npm-registry-packages"}},"0.57.10":{"name":"woby","version":"0.57.10","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.57.10","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"30a143d750ce8f2fc08ae586e6a1d64472a6e0ec","tarball":"https://registry.npmjs.org/woby/-/woby-0.57.10.tgz","fileCount":255,"integrity":"sha512-7IxkXy4aqU2DJFqYkaAdLfWpfu7q2lNZZ2Ni7oYxnv5r2Vy0vdLbeefFFWlKEaSTcHTrqvo0a7yP6IfV8ejT2g==","signatures":[{"sig":"MEQCIEECniIYIaDXGCHQoudXOik0I20GWfVFrIVASh/7qbc1AiBYV4JnJnC+s3SgR7CvVqGd9sijP7hMhIFHVeEsCIwGmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":593926},"main":"./dist/index.cjs.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"gitHead":"7c6ceb1a6284968e14f443e7fdffd49b8bcd66b2","scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prepublishOnly":"tsex prepare","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.0","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.4.11","csstype":"^3.1.2","typescript":"^5.2.2","@types/node":"^18.18.3","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.57.10_1702001991795_0.1409948330561004","host":"s3://npm-registry-packages"}},"0.57.11":{"name":"woby","version":"0.57.11","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.57.11","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"b0ac69496caeeeb209b74b6cb4013c4d6d89562f","tarball":"https://registry.npmjs.org/woby/-/woby-0.57.11.tgz","fileCount":185,"integrity":"sha512-2sfEfUG1jxmTRKcrmEJK/ObnmSWhdi6YfIpHqQCYmFwVO1ihl9WfaG3NfJu2zSwX2YZE6d770Mn3MJjdinDBsg==","signatures":[{"sig":"MEUCIQCeHlXEZ5n82gvzDE9gFy1HXtngj60qTwgvY3rh2pvj1QIgF4dklr2mbrcMdQ0I8BrkQwYNMU99FEBA/ZLz+oSpsMo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1588040},"main":"./dist/index.cjs.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"gitHead":"a418b4e866f77b3e3574fb3139279513b705eb66","scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.0","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.4.11","csstype":"^3.1.2","typescript":"^5.2.2","@types/node":"^18.18.3","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.57.11_1702002568074_0.3525920280926782","host":"s3://npm-registry-packages"}},"0.57.12":{"name":"woby","version":"0.57.12","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.57.12","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"2f6f54d24a569c44d1722d618967612fb3c98bd8","tarball":"https://registry.npmjs.org/woby/-/woby-0.57.12.tgz","fileCount":185,"integrity":"sha512-bunnp+X5ccI+LwJDTNllreHbnssMP/Q1Xt5vJbIBeany8urNutJj+1d74EMtFLDyqmZoDDjMoAhEslKCqMFeTQ==","signatures":[{"sig":"MEQCICDHjxKgmuUz9noYomZRXAiSYiyWaF0EPrsv2ODz8OjKAiAUdvADybXmjTPIQkMR+Es03HznFeVoo9hC1BHRYr1s3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587415},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.57.12.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\496b3d59e0fa83b99eeede7ce8c669b5\\woby-0.57.12.tgz","_integrity":"sha512-bunnp+X5ccI+LwJDTNllreHbnssMP/Q1Xt5vJbIBeany8urNutJj+1d74EMtFLDyqmZoDDjMoAhEslKCqMFeTQ==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.0","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.5.2","csstype":"^3.1.3","typescript":"^5.3.3","@types/node":"^18.19.14","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.57.12_1707186296524_0.7239249662229472","host":"s3://npm-registry-packages"}},"0.57.13":{"name":"woby","version":"0.57.13","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.57.13","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"164b72df37ca9c98d2d6993097990d25a04ff00c","tarball":"https://registry.npmjs.org/woby/-/woby-0.57.13.tgz","fileCount":188,"integrity":"sha512-E2Ho+wYfZcfsAKBm43P8srZ0PWA0asm6Eh1moFuAzlJcYsmHVnY4DOY97rLSMJ4fJFy3/eDY5OF3cnFixxv/RA==","signatures":[{"sig":"MEYCIQDSsB/Fol747oz1YuWltNGpKc/4GSic+f8gKm7cG0BwqQIhAIYq9+l6itjfrZZCeZun7nfQpRuGyLGE7NfYKrPQIEa4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587748},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.57.13.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\7060a73a37e3787b9d28a5184d50ea8b\\woby-0.57.13.tgz","_integrity":"sha512-E2Ho+wYfZcfsAKBm43P8srZ0PWA0asm6Eh1moFuAzlJcYsmHVnY4DOY97rLSMJ4fJFy3/eDY5OF3cnFixxv/RA==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.0","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.5.2","csstype":"^3.1.3","typescript":"^5.3.3","@types/node":"^18.19.14","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.57.13_1707190787512_0.38567755078848576","host":"s3://npm-registry-packages"}},"0.57.14":{"name":"woby","version":"0.57.14","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.57.14","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"059c1229cc62e7e547a023b9de61a380dc1f830e","tarball":"https://registry.npmjs.org/woby/-/woby-0.57.14.tgz","fileCount":189,"integrity":"sha512-luDp43SE1TTnIPAtrdT7d2Z32zyStOyMej0azimyYDQeeR+zJlL7RWHAffLGASIJfYBqyjpFBhEXqnkn17XnXQ==","signatures":[{"sig":"MEUCIQDBR8C9VEOaGVzsiSrxYA0sqzikReyfDC+bLVia+X+IJQIgLja9sVRpQhRDbmxGHum5Y44gVJkPkwH9J26FwFjX3Xk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587840},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.57.14.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\eb3a138a0d6d7a389c61194f90472260\\woby-0.57.14.tgz","_integrity":"sha512-luDp43SE1TTnIPAtrdT7d2Z32zyStOyMej0azimyYDQeeR+zJlL7RWHAffLGASIJfYBqyjpFBhEXqnkn17XnXQ==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.3.1","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"18.14.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.0","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^2.2.2","vite":"^4.5.2","csstype":"^3.1.3","typescript":"^5.3.3","@types/node":"^18.19.14","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.57.14_1707191051387_0.13616406445273221","host":"s3://npm-registry-packages"}},"0.58.0":{"name":"woby","version":"0.58.0","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.0","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"cf9179020769550ab2641c1d5e36cd5a06711fbe","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.0.tgz","fileCount":189,"integrity":"sha512-snIbi0jbhWI5op7OqnUv5qVJx1dd8gRTb0KO/4pMSvpkrjEeFvh7dCd0FnKM4Vo0UMgDd5ehTdRWlm3rJDNNbQ==","signatures":[{"sig":"MEUCIQDko1LJxbLtB2DwoV8RdWOlT8BD0n7E4SxO/TOh5W4wgAIgS7WKlpISpr1bRKyKGGmgl43z89qCq85dQFbQAY6FBKs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1598015},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.0.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly","release":"git add . && git commit -m \"Bump version\" git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\0d6b446b3ea24ab636b6c3553482908b\\woby-0.58.0.tgz","_integrity":"sha512-snIbi0jbhWI5op7OqnUv5qVJx1dd8gRTb0KO/4pMSvpkrjEeFvh7dCd0FnKM4Vo0UMgDd5ehTdRWlm3rJDNNbQ==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.6.6","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"19.9.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.1","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^3.2.1","vite":"^4.5.2","csstype":"^3.1.3","typescript":"^5.4.3","@types/node":"^18.19.28","vite-plugin-dts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.0_1712549031214_0.08873011533429365","host":"s3://npm-registry-packages"}},"0.58.4":{"name":"woby","version":"0.58.4","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.4","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"714b349450b838be88b65276be4674a00d290e61","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.4.tgz","fileCount":323,"integrity":"sha512-M/ezATj+Uns0KP/3fnXQD1jeuVdYeoQfUE5tXvM9JoaN1fDZpFkc446Vh5+RC7oWObE6r3O1gCjic5SAGyQ0pg==","signatures":[{"sig":"MEUCIQDopiIqqbT2i3YKgJgTkfRkrCmiXfZa4z/zNPJIbJGQIQIgNEganKISYpAiJahyNWoBoQpKrG332JbWfrczn2AgRy0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1794520},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.4.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","prod":"npm run prod:playground","build":"vite build && tsc --declaration --emitDeclarationOnly --declarationMap","clean":"tsex clean","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"git add . && git commit -m \"Bump version\" && git push && pnpm version patch","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\8f6189a492dfe82cf2fd516c7ec1b59c\\woby-0.58.4.tgz","_integrity":"sha512-M/ezATj+Uns0KP/3fnXQD1jeuVdYeoQfUE5tXvM9JoaN1fDZpFkc446Vh5+RC7oWObE6r3O1gCjic5SAGyQ0pg==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.6.6","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"19.9.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.1","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^3.2.1","vite":"^5.2.8","csstype":"^3.1.3","typescript":"^5.4.4","@types/node":"^20.12.7"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.4_1713160068266_0.6919716316576856","host":"s3://npm-registry-packages"}},"0.58.5":{"name":"woby","version":"0.58.5","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.5","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"5802c5a52b5a70899499a4fa3eecbee1d7018ac3","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.5.tgz","fileCount":323,"integrity":"sha512-dTHp3gLh4k8MmcRtWhMJGMWMeqagHYVuq35VyPI2Gw70O52TH1edub/vZt30rvD6BBfZr3TJJZd1+oA63uqelQ==","signatures":[{"sig":"MEUCID6bO04l5RU2lNjLT+GvJ9tVRwD9+UpS6STAZoEBZ7smAiEAtMBNUqAeM+C3A8zxtpTaS9qwByHdyOOI23egWloKv2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1794663},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.5.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/jsx-runtime/index.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"vite build && tsc --declaration --emitDeclarationOnly --declarationMap","clean":"tsex clean","npmjs":"pnpm publish","watch":"tsc --declaration --watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\4feb88c8c1cfcb700236b075acbd5eba\\woby-0.58.5.tgz","_integrity":"sha512-dTHp3gLh4k8MmcRtWhMJGMWMeqagHYVuq35VyPI2Gw70O52TH1edub/vZt30rvD6BBfZr3TJJZd1+oA63uqelQ==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.6.6","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"19.9.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.1","vhtml":"^2.2.0","via.js":"^1.0.0"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^3.2.1","vite":"^5.2.8","csstype":"^3.1.3","typescript":"^5.4.5","@types/node":"^20.12.7"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.5_1713171085566_0.8083524647800389","host":"s3://npm-registry-packages"}},"0.58.6":{"name":"woby","version":"0.58.6","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.6","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"76f215200d35b5159975372cb17a38630b29a0a4","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.6.tgz","fileCount":323,"integrity":"sha512-OUGWSAcTprWlrlciDgl42tORjGW743pdZuCuFfrTiQYCYusFHEZtCLTGMkr55JLGMLeVCcrPNSEjUIkzI5MJcQ==","signatures":[{"sig":"MEQCIHJ1rr2dVUPV4SIKPkRRr3zY2AqIm+Jnk7nWo59WHHYuAiAcQXad9PlCzivNgebH5wha0kzJcQJmLlTiCCo7axyS9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1794592},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.6.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\Wong\\AppData\\Local\\Temp\\3b058f31387ce5d2d96ad088be3b99fa\\woby-0.58.6.tgz","_integrity":"sha512-OUGWSAcTprWlrlciDgl42tORjGW743pdZuCuFfrTiQYCYusFHEZtCLTGMkr55JLGMLeVCcrPNSEjUIkzI5MJcQ==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"9.6.6","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"19.9.0","dependencies":{"htm":"^3.1.1","oby":"^15.1.1","vhtml":"^2.2.0","via.js":"1.0.4"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^3.2.1","vite":"^5.2.11","csstype":"^3.1.3","typescript":"^5.4.5","@types/node":"^20.12.12"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.6_1715760499016_0.026548755310743077","host":"s3://npm-registry-packages"}},"0.58.7":{"name":"woby","version":"0.58.7","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.7","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"c87db914b323433433228838677461e1a5ff9107","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.7.tgz","fileCount":325,"integrity":"sha512-TJWSKKEOnuKN4zxrQuVEzK0WgoNMjnd/8iAZ/x8gr5BxqDNR1jmAdS1kKeY0XSO2U/ZoxrDsGZeU8/qU/7ygLw==","signatures":[{"sig":"MEQCIGxQUVU3RzAl9aghr4VQ1tTJYi5lE3iny6LQc9OQ62yRAiBZz6rLHEElmtQEH9fGPnnzCst6JMFgstYOPTNLQ2e3UA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1808561},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.7.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\97bba42256bb107f3d1c7ab9499aece4\\woby-0.58.7.tgz","_integrity":"sha512-TJWSKKEOnuKN4zxrQuVEzK0WgoNMjnd/8iAZ/x8gr5BxqDNR1jmAdS1kKeY0XSO2U/ZoxrDsGZeU8/qU/7ygLw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.5.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"20.13.1","dependencies":{"htm":"^3.1.1","oby":"15.1.2","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.7_1731659531043_0.4993837014213971","host":"s3://npm-registry-packages"}},"0.58.10":{"name":"woby","version":"0.58.10","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.10","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"4ee3f77ef0c902bdae5436a453668146f478c3d0","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.10.tgz","fileCount":325,"integrity":"sha512-mKc1GttGbS7TvuqWKra0s83Me10vhp/dVSHnD30CBJfqfo6dEenrirlu6SC5EPXCDiYpNI5M/tN2RvR+iJmwNA==","signatures":[{"sig":"MEUCID3htEBJPnHDoc7irPLsLyqCj5VTVAw+hCpJPmx4mzlQAiEAn8wIOlFFuTzOulpHNPbn1kyRfelHgBm/kH0DB3iXAu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1859540},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.10.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","actor":{"name":"wongchichong","type":"user","email":"wongchichong@gmail.com"},"email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\6e433d137207a6a7000e982abef65d9c\\woby-0.58.10.tgz","_integrity":"sha512-mKc1GttGbS7TvuqWKra0s83Me10vhp/dVSHnD30CBJfqfo6dEenrirlu6SC5EPXCDiYpNI5M/tN2RvR+iJmwNA==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"htm":"^3.1.1","oby":"15.1.5","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.10_1750470443158_0.7823592297843767","host":"s3://npm-registry-packages-npm-production"}},"0.58.11":{"name":"woby","version":"0.58.11","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.11","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"dcb86b248568ca63d0d52ca2e3ba4f97d6034ab1","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.11.tgz","fileCount":325,"integrity":"sha512-SJHwJPpAHZ/sgKjxpGGEZvauQMXw4FOfDdri7v5erEUBmcryFk3kVVPUcLTXy3++BU9X+wDrcOba76BS5KlQxw==","signatures":[{"sig":"MEQCIDcTpG9gkqMwNYBPGCXH8vxuNCMqHoSGgUMazjLZb6EOAiBrBO/yiknrXbZQZnRDg1js19MacWdLKW/CnlPaa1KLJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1858881},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.11.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","actor":{"name":"wongchichong","type":"user","email":"wongchichong@gmail.com"},"email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\f52991f98557c8b52ad5ec1648f748da\\woby-0.58.11.tgz","_integrity":"sha512-SJHwJPpAHZ/sgKjxpGGEZvauQMXw4FOfDdri7v5erEUBmcryFk3kVVPUcLTXy3++BU9X+wDrcOba76BS5KlQxw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","dependencies":{"htm":"^3.1.1","soby":"15.1.7","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.11_1750493351277_0.3135051200364867","host":"s3://npm-registry-packages-npm-production"}},"0.58.12":{"name":"woby","version":"0.58.12","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.12","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"8b68c6c5069cc253d1159ef0dce7346accf85e3c","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.12.tgz","fileCount":327,"integrity":"sha512-JM3RhBYV29aFbGyvgs55sUOi2f1c2exINRlaaTajIRig0VpyY2RxWDIt0GdZnWpQ+H3/EBA9e4byqQWZT8i3rw==","signatures":[{"sig":"MEUCIGeABbPIj54PfJ2mF1J+NiHV0+iiypiji2OUDwTCKzzeAiEAsnPoLy/O3M/p4rPAVEaOrn3Bt05RoJL6j5X3EfEor5w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1844891},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.12.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/jsx-runtime.es.js","require":"./dist/jsx-runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\c4a805df9a3f9265a65e5babd8fddcf4\\woby-0.58.12.tgz","_integrity":"sha512-JM3RhBYV29aFbGyvgs55sUOi2f1c2exINRlaaTajIRig0VpyY2RxWDIt0GdZnWpQ+H3/EBA9e4byqQWZT8i3rw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"htm":"^3.1.1","soby":"15.1.7","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.12_1752478835904_0.22616637281536067","host":"s3://npm-registry-packages-npm-production"}},"0.58.14":{"name":"woby","version":"0.58.14","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.14","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"741fc12b09a643b019b01ce28a1892c3ac153fbb","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.14.tgz","fileCount":327,"integrity":"sha512-l9rcAs4rmCqXtB7oh72yN4hi++fCVet68fjOC4zAbAI6ATgLU+YX4uA5FkIVKEPZouLGdBf0A8BHlZwgmGDE7w==","signatures":[{"sig":"MEYCIQCncKAZUlBQuJgJAwwWSDozVC63rUWOF3l4mbexbOon7gIhANZcEzAgw8nTyMMDmdzoCstWKzGPBh6G+MgP+BdRcBtV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1844875},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.14.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\73e80889bcf3b2083b89dc74d0c3b0f1\\woby-0.58.14.tgz","_integrity":"sha512-l9rcAs4rmCqXtB7oh72yN4hi++fCVet68fjOC4zAbAI6ATgLU+YX4uA5FkIVKEPZouLGdBf0A8BHlZwgmGDE7w==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"htm":"^3.1.1","soby":"15.1.7","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.14_1752543722401_0.4312227575578227","host":"s3://npm-registry-packages-npm-production"}},"0.58.16":{"name":"woby","version":"0.58.16","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.16","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"96ba48edaf1a3c7ccc171a83dfd85d584e4a7552","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.16.tgz","fileCount":327,"integrity":"sha512-7aR1Oy9QgSNgTHUIZ3bQlOJctYGIuIs+5G2wxvmYsTHxcPkpoXmWO6fw+60tP7D+7IOdYP7qELs2nsahlsn5Sg==","signatures":[{"sig":"MEQCIEQiuAFhEKe/VXIMdjrJovztDEsnFr84Mek9XNrXa/HGAiB882DlpSsekz7JohMCwmy+j8t0rRvr0IhbFVLLi/VcAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1863414},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.16.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\5fb28bee6814cebc4addb428f3cf2f04\\woby-0.58.16.tgz","_integrity":"sha512-7aR1Oy9QgSNgTHUIZ3bQlOJctYGIuIs+5G2wxvmYsTHxcPkpoXmWO6fw+60tP7D+7IOdYP7qELs2nsahlsn5Sg==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.16_1754297461881_0.9399748430667407","host":"s3://npm-registry-packages-npm-production"}},"0.58.17":{"name":"woby","version":"0.58.17","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.17","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"39c1932635265df67411f97579b671aa05e170ff","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.17.tgz","fileCount":329,"integrity":"sha512-EEkwgUvgrA1g/2fupZo0An0xVIfyDwdUnUnNazeNdTqxkNNvNnnKxw1z0O8OK3febD5xUPtpnDXGEWbkdUNeIw==","signatures":[{"sig":"MEYCIQDhNwg39/ZfTDyn0fSOV7IT6tXXmZpNNqcGQ+aw/5Z6ogIhAKWRRwHrKIAudEfPjw5rAe8FawniVUCaqqNUTp1v6sLH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1954509},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.17.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\7ab345e1e6db74440c3dd5674935b13e\\woby-0.58.17.tgz","_integrity":"sha512-EEkwgUvgrA1g/2fupZo0An0xVIfyDwdUnUnNazeNdTqxkNNvNnnKxw1z0O8OK3febD5xUPtpnDXGEWbkdUNeIw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.17_1755163667847_0.6101413776968221","host":"s3://npm-registry-packages-npm-production"}},"0.58.18":{"name":"woby","version":"0.58.18","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.18","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"d46b7826efed7d187b7cf7332568f5d2a2c4ca17","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.18.tgz","fileCount":329,"integrity":"sha512-qJFKanbyD2O0Ss6WbHnkJGJA5/jhWF4ghCv8g0Uazls9lJMhhf9ILbWjv0Sst77pNQqsGouOYkhlfA9RnMr4vw==","signatures":[{"sig":"MEQCIFAaeaKKks40mZAUrEzn3MtyhW2cTYDxM4duuLUBpTmlAiBPrjP7tFzKLis8bpV8S8n1BWAOoREIdzMXkT6k3LE0nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1891822},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.18.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\f98fca7fa794863ebc11081c67b38da5\\woby-0.58.18.tgz","_integrity":"sha512-qJFKanbyD2O0Ss6WbHnkJGJA5/jhWF4ghCv8g0Uazls9lJMhhf9ILbWjv0Sst77pNQqsGouOYkhlfA9RnMr4vw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.2","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.18_1755226583047_0.39492735678099167","host":"s3://npm-registry-packages-npm-production"}},"0.58.19":{"name":"woby","version":"0.58.19","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@0.58.19","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"5f4385014b0dd996642d50d98b4127bb989a49a0","tarball":"https://registry.npmjs.org/woby/-/woby-0.58.19.tgz","fileCount":329,"integrity":"sha512-FwmSJFqp1MFOUgZyletLhIVmlIc+mVJhEwaJg+tGRpFpFW8Q9JQMzpQJo72g42Op5G8EWNHbvk9P0fK1EYz3KA==","signatures":[{"sig":"MEYCIQCDtEjcbgZrikyHYX4YtrTtOlVlBoysARE8e+FwkQ1orQIhAPOC/iXIj1lhylJH4R2LWxEt2cgTJ6pyKG/qGclEe8eL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1893198},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-0.58.19.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\183b3ba131cf1eacddc5587a6a659a58\\woby-0.58.19.tgz","_integrity":"sha512-FwmSJFqp1MFOUgZyletLhIVmlIc+mVJhEwaJg+tGRpFpFW8Q9JQMzpQJo72g42Op5G8EWNHbvk9P0fK1EYz3KA==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_0.58.19_1756291311049_0.8805787628511106","host":"s3://npm-registry-packages-npm-production"}},"1.58.21":{"name":"woby","version":"1.58.21","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.21","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"e818a2072cab941ab650681eb0cd6a4f23ce90d5","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.21.tgz","fileCount":329,"integrity":"sha512-+SDrP+Cz5C8SE69x5g+9IhHrdOvVQF/YYN+suzqf7gO2urSRP2OBMBBILedD7vbYx0ejZR4hrYbQ/kBT2r5LhA==","signatures":[{"sig":"MEUCIQC5+/XW3opIeX6WnJnsGQAcxOrXr3SsRKDXp4ZMF2xLdAIgO0e2ALhaqQHl3pZQB4Wys/huAi+KN265k1ncOyrdLYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1893219},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.21.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\03e98b2c06cd36a050b4b2d41e6454e9\\woby-1.58.21.tgz","_integrity":"sha512-+SDrP+Cz5C8SE69x5g+9IhHrdOvVQF/YYN+suzqf7gO2urSRP2OBMBBILedD7vbYx0ejZR4hrYbQ/kBT2r5LhA==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","woby":"link:","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.21_1756353274600_0.22740453531960592","host":"s3://npm-registry-packages-npm-production"}},"1.58.22":{"name":"woby","version":"1.58.22","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.22","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"8dd1a50fd9c2c187610eeb9b38914dc3e292233c","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.22.tgz","fileCount":329,"integrity":"sha512-/2445ProDy89C8T2FRqbE6yqQjIMFQoo239mL1KJa5V/jG263WSqeS2ZhU2upCuK6uwV1GdzFKgHloeyRXaRnw==","signatures":[{"sig":"MEQCIHzI41H2tKVKBbK/pM1O5YoUzpsFsr5JlkCGSedcQuZEAiAV9ymgrVAFhSAttw84nDvFc40qVeD6dgmxsCr3ZaaqNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1893110},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.22.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\f8563c1fcbad79289d2823a2036404d2\\woby-1.58.22.tgz","_integrity":"sha512-/2445ProDy89C8T2FRqbE6yqQjIMFQoo239mL1KJa5V/jG263WSqeS2ZhU2upCuK6uwV1GdzFKgHloeyRXaRnw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","woby":"link:","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.22_1756880198139_0.3302963827710441","host":"s3://npm-registry-packages-npm-production"}},"1.58.23":{"name":"woby","version":"1.58.23","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.23","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"b8455ba0d892b23edf77ae4bf8fab6fb74432773","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.23.tgz","fileCount":329,"integrity":"sha512-PWWtWAeloNyZN6HxbX21dGJbuz8o2yqTZasdLh1OBsrAtxWbV7OZHFhSKS/zdWs983eMDlTjC4TbwrTpu476Xg==","signatures":[{"sig":"MEQCICL/LcOpwSNmxbK9HFDlKBZHWEEkeIEShJI649UdL98mAiBmaXC6BqMDNnEIZzskaKEz6TsAN3131u2rmJGJfH8D4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1893083},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.23.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\dd7565b3ae6af192bb97de0631ea5fe9\\woby-1.58.23.tgz","_integrity":"sha512-PWWtWAeloNyZN6HxbX21dGJbuz8o2yqTZasdLh1OBsrAtxWbV7OZHFhSKS/zdWs983eMDlTjC4TbwrTpu476Xg==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","woby":"link:","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.23_1756881309659_0.8184295393649144","host":"s3://npm-registry-packages-npm-production"}},"1.58.24":{"name":"woby","version":"1.58.24","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.24","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"0f2a8b13a10642fc661435f3a561767d3b8d7bc8","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.24.tgz","fileCount":329,"integrity":"sha512-ulEZPSfum4d5Dra5lLsue+Ch3gajhVSDLqLGzz7pV3vDj1KC/GQEoOeRy77bE6GFK7WUhRjrmbVAWiMHrvZtBA==","signatures":[{"sig":"MEUCIA39E/+Ij9/quw1m2LJYGf1wujUi2/nO1FCW++UHVqLvAiEAzyEfG2+DnQ0SlLs/99k3Avy3gpM1PxKHAN7sB+HDE0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1897426},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.24.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/ssr/jsx-runtime/index.d.ts","import":"./dist/ssr-runtime.es.js","require":"./dist/ssr-runtime.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\3c7292eb1f58f8e9acfc9d304887ecfc\\woby-1.58.24.tgz","_integrity":"sha512-ulEZPSfum4d5Dra5lLsue+Ch3gajhVSDLqLGzz7pV3vDj1KC/GQEoOeRy77bE6GFK7WUhRjrmbVAWiMHrvZtBA==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","soby":"15.1.8","woby":"link:","vhtml":"^2.2.0","via.js":"1.0.3"},"_hasShrinkwrap":false,"//typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/jsx/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/jsx/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/ssr-runtime.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","csstype":"^3.1.3","typescript":"^5.6.3","@types/node":"^22.8.1"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.24_1756953696817_0.8026135801889589","host":"s3://npm-registry-packages-npm-production"}},"1.58.25":{"name":"woby","version":"1.58.25","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.25","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"399c29a59bfd4b2150b9b969027794130c593b13","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.25.tgz","fileCount":356,"integrity":"sha512-ZpHy7lsptKeqr4xrQfCcy4Gd7u+IUSN/M/4wUZ1LgW07/1hsA1xtWsxVmvnqsTNGuIhFLImHinzv1oVRzOoa1A==","signatures":[{"sig":"MEYCIQD8b5OylUeJxDqeBB/MoSBa9vOggVrjz0kX/VOL9kUXsAIhAMx4oNtZJPJ8sJJl6TGMQSBKU0iJXcNrwN2jTerwy4/N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19891148},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.25.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\2c4c5ab79a4f702bd2b8f7cbecaf60a6\\woby-1.58.25.tgz","_integrity":"sha512-ZpHy7lsptKeqr4xrQfCcy4Gd7u+IUSN/M/4wUZ1LgW07/1hsA1xtWsxVmvnqsTNGuIhFLImHinzv1oVRzOoa1A==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.8","util":"^0.12.5","via.js":"1.0.3","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.25_1757573897810_0.7834160429673729","host":"s3://npm-registry-packages-npm-production"}},"1.58.26":{"name":"woby","version":"1.58.26","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.26","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"05b04093a93d09600624ff501c315c1ec4e503c0","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.26.tgz","fileCount":356,"integrity":"sha512-r19URYNt0OVSFYHiweJBDwEh44dt5sbLqJII5PFmif0b43DSuvFAQCsShdwzdJ7rwXorHIi6/injnBFu6OgKzA==","signatures":[{"sig":"MEUCIQDYslLF8gKVSEG1zozZ3Hr95quEAuvEjuLm2FIvFSdZvAIgWdIooP7VbVGp+C3d3hyd5yGhYWvwMa/1MdG1pgdWGXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19891623},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.26.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\9c5733f9d638bf521eeb7706b24da6ad\\woby-1.58.26.tgz","_integrity":"sha512-r19URYNt0OVSFYHiweJBDwEh44dt5sbLqJII5PFmif0b43DSuvFAQCsShdwzdJ7rwXorHIi6/injnBFu6OgKzA==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.8","util":"^0.12.5","via.js":"1.0.3","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.26_1757574870818_0.26787839271736114","host":"s3://npm-registry-packages-npm-production"}},"1.58.27":{"name":"woby","version":"1.58.27","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.27","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"039c388f7bd96e258da810ec2e2310ad823c6860","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.27.tgz","fileCount":356,"integrity":"sha512-FMdGBmIfEAZF1XdL44ZQ0LlNa6qT4B37vRpnaxw7kExmwXO+n/NHZQ0u3AO8KmwMD06WT8YFMC4/rU94k+70iw==","signatures":[{"sig":"MEQCIACg/zq5ddr65wHuPRii8Qkn8g0UOKoDINvZFnASfCsrAiBQOlRJnlt4IwfnfFfQrkLgIUDSsQbypgGh/86Zo6e99g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19895072},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.27.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\70219e17a246f5c7c057febcdf1ad0b0\\woby-1.58.27.tgz","_integrity":"sha512-FMdGBmIfEAZF1XdL44ZQ0LlNa6qT4B37vRpnaxw7kExmwXO+n/NHZQ0u3AO8KmwMD06WT8YFMC4/rU94k+70iw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.8","util":"^0.12.5","via.js":"1.0.3","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.27_1757581125288_0.8790045801561248","host":"s3://npm-registry-packages-npm-production"}},"1.58.29":{"name":"woby","version":"1.58.29","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.29","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"e134bc4f01e81a3e6b1357b9f20e90d280aa9480","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.29.tgz","fileCount":360,"integrity":"sha512-dfFS0I84juk4lRu4wjOFdV0laLf5+fRa3+7m73RG6XWfu5KaizS2slflF0uOfkcWjciMenaIvBhutbxy7ivi1g==","signatures":[{"sig":"MEYCIQDRhs+AnXw0Y76Bdow/dWANoj3JdZHr+5tZPga4TTlqhQIhAMiSv71CaIXAGK3+nJg8sAxl7lDoJ8CX/SjtT2+sv8qx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19917490},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.29.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\0391a888e9cd94ab838959e4c7d75f6b\\woby-1.58.29.tgz","_integrity":"sha512-dfFS0I84juk4lRu4wjOFdV0laLf5+fRa3+7m73RG6XWfu5KaizS2slflF0uOfkcWjciMenaIvBhutbxy7ivi1g==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.8","util":"^0.12.5","via.js":"1.0.3","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.29_1757658093136_0.7826306956470521","host":"s3://npm-registry-packages-npm-production"}},"1.58.30":{"name":"woby","version":"1.58.30","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.30","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"63565c88314dc04ec0a78c46ce85f14faf5d1fd4","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.30.tgz","fileCount":360,"integrity":"sha512-fxv5lTEvf2h+lgK8khRp/32SHjZKaU40B91VzAka/2mCot/WKWxG45L/4rVHSd9Wb1QtdnLmkTkHP7YAc+DdMQ==","signatures":[{"sig":"MEUCIE7XsBd0dYOoEU2PibVAW+zqR5Kk95Q6mIxpIJgRKQsKAiEAtWgrrT12MxuoEIjvrI2xfDedplxAAOA7NorQ38UV4mk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19917453},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.30.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\98b28fe43d0f1668b7e63598e07a3266\\woby-1.58.30.tgz","_integrity":"sha512-fxv5lTEvf2h+lgK8khRp/32SHjZKaU40B91VzAka/2mCot/WKWxG45L/4rVHSd9Wb1QtdnLmkTkHP7YAc+DdMQ==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.9","util":"^0.12.5","via.js":"1.0.4","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.30_1757669846495_0.40221762591234445","host":"s3://npm-registry-packages-npm-production"}},"1.58.31":{"name":"woby","version":"1.58.31","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.31","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"99db659753e14b49a774788f1bf8edc69088e060","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.31.tgz","fileCount":360,"integrity":"sha512-xkZNOawo9Qgm0OMA2dmP6D5xATLCtEcJl7xO0nnKgDTwBLsKXdyeSrJRN+PrfAc+dBPc4QwQkMaigrbZ2iMkqw==","signatures":[{"sig":"MEYCIQCXhT4y7MK+q/bxp1GWgty0HrdCxjcI8B7XxxrlfL5GGAIhANxdVKTgs8T6MVmNBfvZciWR0sUwzPV+z/4aJNyqMyPo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19917336},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.31.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\8916cce9744d146d50dfd627e6df02ea\\woby-1.58.31.tgz","_integrity":"sha512-xkZNOawo9Qgm0OMA2dmP6D5xATLCtEcJl7xO0nnKgDTwBLsKXdyeSrJRN+PrfAc+dBPc4QwQkMaigrbZ2iMkqw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.11","util":"^0.12.5","via.js":"1.0.5","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.31_1757726984291_0.48779772257194054","host":"s3://npm-registry-packages-npm-production"}},"1.58.32":{"name":"woby","version":"1.58.32","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.32","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"5bb2fb1aa2567c30b499fd133bd0111590442950","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.32.tgz","fileCount":360,"integrity":"sha512-RJ2M1fCmRELwPHe7wjCeFJWUP/FTBqZH2/eAdLYXpN1z+DhPM2Uvr1Pgh/WX6BLt7lhb70M230vcBKehBabSlg==","signatures":[{"sig":"MEYCIQDOhtt5wXlsiZQ/CP7ZN2MhBigE7Cx3aOdEWoZBQaYruAIhAPLdWWlmePDtxqcIT+EHNY5IlWxIZydVfMEWTtPkRmTc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19917336},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.32.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git add . && git commit -m \"Bump version\" && git push","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\46c19c66397476d369c09e51fa59de7f\\woby-1.58.32.tgz","_integrity":"sha512-RJ2M1fCmRELwPHe7wjCeFJWUP/FTBqZH2/eAdLYXpN1z+DhPM2Uvr1Pgh/WX6BLt7lhb70M230vcBKehBabSlg==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.12","util":"^0.12.5","via.js":"1.0.6","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.32_1757727993903_0.08855508219569241","host":"s3://npm-registry-packages-npm-production"}},"1.58.33":{"name":"woby","version":"1.58.33","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.33","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wobyjs/woby#readme","bugs":{"url":"https://github.com/wobyjs/woby/issues"},"dist":{"shasum":"65abca5b9e3289f83045f8a2a84383ec5cf945d8","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.33.tgz","fileCount":360,"integrity":"sha512-aeK9KLncGV5B+T4JOukIdVQVdjlpEGBaOVyIm99h5GJ8itmhjMnPU6n9j426Q4hLVVLiOmp99RjMXTnsZm8KEQ==","signatures":[{"sig":"MEUCIAklknOGKUDsF6Z57KgMXtkPnCKEqNTvglWUFwnbLb6cAiEA3PXJJYGXQPqtA3aQVPZqLwkRav9tfSXCBaoZbtHlZRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19917777},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.33.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git-cliff > CHANGELOG.md && git-commit-m","bump":"pnpm version patch","prod":"npm run prod:playground","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish","watch":"run-s watch:only declaration:watch","commit":"cz","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git bump npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","changelog":"git-cliff -o CHANGELOG.md","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","changelog1":"auto-changelog --commit-limit false --output CHANGELOG.md","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","commit:help":"echo 'Usage: pnpm run commit' && echo 'This will start the commitizen wizard to create a conventional commit.' && echo 'Follow the prompts to enter commit type, scope, and message.'","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","release:automatic":"semantic-release --extends ../semantic-release.config.js","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\d172cf84ae22e23b652f1a2882d817c5\\woby-1.58.33.tgz","_integrity":"sha512-aeK9KLncGV5B+T4JOukIdVQVdjlpEGBaOVyIm99h5GJ8itmhjMnPU6n9j426Q4hLVVLiOmp99RjMXTnsZm8KEQ==","repository":{"url":"git+https://github.com/wobyjs/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.12","util":"^0.12.5","via.js":"1.0.6","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","auto-changelog":"^2.5.0","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.33_1758517948769_0.7266958893200748","host":"s3://npm-registry-packages-npm-production"}},"1.58.36":{"name":"woby","version":"1.58.36","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.36","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"43f4081d8e6bcf7f939c4a3f05c6254fd2b6cf66","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.36.tgz","fileCount":369,"integrity":"sha512-iKTILt6CTDN+vgjzdv6b4TYD85XYxhGVvhc92XiI5queMTVyRHlbRaDXPtX4yZqt/tW9eOGZ+GM5U1Xi3lhqfw==","signatures":[{"sig":"MEUCIHv4V5HhSTXJJZJNYMYtw4H07k76IbA5wj3BxGIe2J38AiEAzPUn1j0e9YadJMhVEaNn84t/afI5QlDVAX9FCivgfyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2868185},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.36.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":"git-cliff > CHANGELOG.md && git-commit-m","bump":"pnpm version patch","prod":"npm run prod:playground","push":"git push && git push --tags","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish --access public","watch":"run-s watch:only declaration:watch","commit":"pnpm git && pnpm bump && pnpm push","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c git commit npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\ba92f71b5fb137a7cf263c17c8d22af9\\woby-1.58.36.tgz","_integrity":"sha512-iKTILt6CTDN+vgjzdv6b4TYD85XYxhGVvhc92XiI5queMTVyRHlbRaDXPtX4yZqt/tW9eOGZ+GM5U1Xi3lhqfw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.14","util":"^0.12.5","via.js":"1.0.6","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.36_1761285573169_0.4780330290841246","host":"s3://npm-registry-packages-npm-production"}},"1.58.37":{"name":"woby","version":"1.58.37","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.37","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"3a2fa36f216a788bb6aae731fc2bf069a9ef076b","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.37.tgz","fileCount":369,"integrity":"sha512-R4auMtD0KL1vmQu5kyFQSjEPi7FGSnJTAe3lHNwcPd9NtUIKyLebBsYo6QLvOVY6ZwZObw/WF+XfkERq2wohuw==","signatures":[{"sig":"MEQCIBe6TOlz/5LXdUolcXXC0nDhjwDb7OqP/dsFSr8RdJYvAiB9gwHkQBBT7UJELqgg/S1cMwhqr2IOlJYm7OXPagMtDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2868190},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.37.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":" git-changelog -a -o CHANGELOG.md && git-commit-m","bump":"pnpm version patch","prod":"npm run prod:playground","push":"git push && git push --tags","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish --access public","watch":"run-s watch:only declaration:watch","commit":"pnpm git && pnpm bump && pnpm push","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c commit npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\ff23eb8a7d374c2f0d301e6f89d0f9a8\\woby-1.58.37.tgz","_integrity":"sha512-R4auMtD0KL1vmQu5kyFQSjEPi7FGSnJTAe3lHNwcPd9NtUIKyLebBsYo6QLvOVY6ZwZObw/WF+XfkERq2wohuw==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.15","util":"^0.12.5","via.js":"1.0.6","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.37_1761286928354_0.4673170741288102","host":"s3://npm-registry-packages-npm-production"}},"1.58.39":{"name":"woby","version":"1.58.39","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"_id":"woby@1.58.39","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"homepage":"https://github.com/wongchichong/woby#readme","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"dist":{"shasum":"7f7cf6c5cd2c3baf0a6028cd1c1f890d487387a3","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.39.tgz","fileCount":394,"integrity":"sha512-Ee3goiKv3UgEMI8ZJ/Of+fQmSY6IM1NepDo9MRS+INwbedh4mtB2G42BIUi2JQtHA29I2iwYOrnYY63M6od4qg==","signatures":[{"sig":"MEYCIQCFnrZI49fmbMEm023DU9MD35EhmJgiADch7KAmfyVqEwIhALrxtBk6aka/3wRJZzkjDSQRQ2FG5QDTXTEO5YSj5iFn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2850165},"main":"./dist/index.cjs.js","type":"module","_from":"file:woby-1.58.39.tgz","types":"./dist/types/index.d.ts","module":"./dist/index.es.js","browser":"./dist/index.umd.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.cjs.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","import":"./dist/ssr.es.js","require":"./dist/ssr.cjs.js"},"./via":{"types":"./dist/types/via.d.ts","import":"./dist/via.es.js","require":"./dist/via.cjs.js"},"./testing":{"types":"./dist/types/testing.d.ts","import":"./dist/testing.es.js","require":"./dist/testing.cjs.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","import":"./dist/runtime.es.js","require":"./dist/runtime.cjs.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","import":"./dist/via-runtime.es.js","require":"./dist/via-runtime.cjs.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","import":"./dist/jsx-runtime-ssr.es.js","require":"./dist/jsx-runtime-ssr.cjs.js"}},"scripts":{"dev":"npm run dev:playground","git":" git-changelog -l 30 -a -o CHANGELOG.md && git-commit-m","bump":"pnpm version patch","prod":"npm run prod:playground","push":"git push && git push --tags","build":"run-s clean build:only declaration","clean":"tsex clean","npmjs":"pnpm publish --access public","watch":"run-s watch:only declaration:watch","commit":"pnpm git && pnpm bump && pnpm push","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","release":"run-s -c commit npmjs","dev:html":"cd demo/html && npm i && npm update && npm run dev","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","build:only":"vite build","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","watch:only":"vite build --watch","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","dev:standalone":"cd demo/standalone && open index.html","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","prod:standalone":"cd demo/standalone && open index.html","//prepublishOnly":"tsex prepare","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod"},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\edc56fe1fef9f2621dec5489b90371db\\woby-1.58.39.tgz","_integrity":"sha512-Ee3goiKv3UgEMI8ZJ/Of+fQmSY6IM1NepDo9MRS+INwbedh4mtB2G42BIUi2JQtHA29I2iwYOrnYY63M6od4qg==","repository":{"url":"git+https://github.com/wongchichong/woby.git","type":"git"},"_npmVersion":"10.9.3","description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"htm":"^3.1.1","net":"^1.0.2","soby":"15.1.15","util":"^0.12.5","via.js":"1.0.6","happy-dom":"^18.0.1","perf_hooks":"^0.0.1","vm-browserify":"^1.1.2","browserify-zlib":"^0.2.0","http-browserify":"^1.7.0","path-browserify":"^1.0.1","https-browserify":"^1.0.0","crypto-browserify":"^3.12.1","stream-browserify":"^3.0.0"},"typesVersions":{"*":{"via":["./dist/index.via.d.ts"],"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"tsex":"^4.0.2","vite":"^5.4.10","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","typescript":"^5.6.3","@types/node":"^22.8.1","node-stdlib-browser":"^1.3.1","web-streams-polyfill":"^4.2.0","vite-plugin-node-polyfills":"^0.24.0","@rollup/plugin-node-resolve":"^16.0.1","@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/woby_1.58.39_1761558345040_0.0910868225631618","host":"s3://npm-registry-packages-npm-production"}},"1.58.40":{"name":"woby","repository":{"type":"git","url":"git+https://github.com/wongchichong/woby.git"},"description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","version":"1.58.40","type":"module","sideEffects":false,"main":"./dist/index.cjs.js","module":"./dist/index.es.js","browser":"./dist/index.umd.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","require":"./dist/index.cjs.js","import":"./dist/index.es.js"},"./via":{"types":"./dist/types/via.d.ts","require":"./dist/via.cjs.js","import":"./dist/via.es.js"},"./ssr":{"types":"./dist/types/ssr.d.ts","require":"./dist/ssr.cjs.js","import":"./dist/ssr.es.js"},"./testing":{"types":"./dist/types/testing.d.ts","require":"./dist/testing.cjs.js","import":"./dist/testing.es.js"},"./jsx-runtime":{"types":"./dist/types/jsx-runtime.d.ts","require":"./dist/runtime.cjs.js","import":"./dist/runtime.es.js"},"./jsx-dev-runtime":{"types":"./dist/types/jsx-runtime.d.ts","require":"./dist/runtime.cjs.js","import":"./dist/runtime.es.js"},"./via/jsx-runtime":{"types":"./dist/via/via-runtime.d.ts","require":"./dist/via-runtime.cjs.js","import":"./dist/via-runtime.es.js"},"./ssr/jsx-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","require":"./dist/jsx-runtime-ssr.cjs.js","import":"./dist/jsx-runtime-ssr.es.js"},"./ssr/jsx-dev-runtime":{"types":"./dist/types/ssr/jsx-runtime/index.d.ts","require":"./dist/jsx-runtime-ssr.cjs.js","import":"./dist/jsx-runtime-ssr.es.js"}},"typesVersions":{"*":{"jsx-runtime":["./dist/types/jsx-runtime.d.ts"],"jsx-dev-runtime":["./dist/types/jsx-runtime.d.ts"],"via":["./dist/index.via.d.ts"],"via/jsx-runtime":["./dist/via/via-runtime.d.ts"],"ssr/jsx-runtime":["./dist/ssr/jsx-runtime/index.d.ts"]}},"keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"dependencies":{"browserify-zlib":"^0.2.0","crypto-browserify":"^3.12.1","happy-dom":"^18.0.1","htm":"^3.1.1","http-browserify":"^1.7.0","https-browserify":"^1.0.0","net":"^1.0.2","path-browserify":"^1.0.1","perf_hooks":"^0.0.1","stream-browserify":"^3.0.0","util":"^0.12.5","vm-browserify":"^1.1.2","soby":"15.1.15","via.js":"1.0.6"},"devDependencies":{"@esbuild-plugins/node-globals-polyfill":"^0.2.3","@esbuild-plugins/node-modules-polyfill":"^0.2.2","@rollup/plugin-node-resolve":"^16.0.1","@types/node":"^22.8.1","buffer":"^6.0.3","csstype":"^3.1.3","native-url":"^0.3.4","node-stdlib-browser":"^1.3.1","tsex":"^4.0.2","typescript":"^5.6.3","vite":"^5.4.10","vite-plugin-node-polyfills":"^0.24.0","web-streams-polyfill":"^4.2.0"},"scripts":{"git":" git-changelog -l 30 -a -o CHANGELOG.md && git-commit-m","bump":"pnpm version patch","push":"git push && git push --tags","npmjs":"pnpm publish --access public","commit":"pnpm git && pnpm bump && pnpm push","release":"run-s -c commit npmjs","declaration":"tsc --declaration --emitDeclarationOnly --declarationMap","declaration:watch":"tsc --declaration --emitDeclarationOnly  --declarationMap--watch","build:only":"vite build","watch:only":"vite build --watch","watch":"run-s watch:only declaration:watch","build":"run-s clean build:only declaration","clean":"tsex clean","compile":"tsex compile && tsc --declaration --emitDeclarationOnly --declarationMap","compile:watch":"tsex compile --watch","dev:benchmark":"cd demo/benchmark && npm i && npm update && npm run dev","prod:benchmark":"cd demo/benchmark && npm i && npm update && npm run prod","dev:boxes":"cd demo/boxes && npm i && npm update && npm run dev","prod:boxes":"cd demo/boxes && npm i && npm update && npm run prod","dev:clock":"cd demo/clock && npm i && npm update && npm run dev","prod:clock":"cd demo/clock && npm i && npm update && npm run prod","dev:counter":"cd demo/counter && npm i && npm update && npm run dev","prod:counter":"cd demo/counter && npm i && npm update && npm run prod","dev:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run dev","prod:emoji_counter":"cd demo/emoji_counter && npm i && npm update && npm run prod","dev:html":"cd demo/html && npm i && npm update && npm run dev","prod:html":"cd demo/html && npm i && npm update && npm run prod","dev:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run dev","prod:hyperscript":"cd demo/hyperscript && npm i && npm update && npm run prod","dev:playground":"cd demo/playground && npm i && npm update && npm run dev","prod:playground":"cd demo/playground && npm i && npm update && npm run prod","dev:spiral":"cd demo/spiral && npm i && npm update && npm run dev","prod:spiral":"cd demo/spiral && npm i && npm update && npm run prod","dev:standalone":"cd demo/standalone && open index.html","prod:standalone":"cd demo/standalone && open index.html","dev:store_counter":"cd demo/store_counter && npm i && npm update && npm run dev","prod:store_counter":"cd demo/store_counter && npm i && npm update && npm run prod","dev:triangle":"cd demo/triangle && npm i && npm update && npm run dev","prod:triangle":"cd demo/triangle && npm i && npm update && npm run prod","dev:uibench":"cd demo/uibench && npm i && npm update && npm run dev","prod:uibench":"cd demo/uibench && npm i && npm update && npm run prod","dev":"npm run dev:playground","prod":"npm run prod:playground","//prepublishOnly":"tsex prepare"},"_id":"woby@1.58.40","bugs":{"url":"https://github.com/wongchichong/woby/issues"},"homepage":"https://github.com/wongchichong/woby#readme","_integrity":"sha512-W5AyBO/CpRUsNb3UgZsQr29uSulm0pYn9ijlVT694UlED0lH/6v3OsBQ+WMuToRpIN0ku6e1G13jDkZYtrx4/A==","_resolved":"C:\\Users\\wongc\\AppData\\Local\\Temp\\bca2552afca935f67247ce21011980d1\\woby-1.58.40.tgz","_from":"file:woby-1.58.40.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-W5AyBO/CpRUsNb3UgZsQr29uSulm0pYn9ijlVT694UlED0lH/6v3OsBQ+WMuToRpIN0ku6e1G13jDkZYtrx4/A==","shasum":"1558800111e82c6664fa4218a3917ca5e7c9da0c","tarball":"https://registry.npmjs.org/woby/-/woby-1.58.40.tgz","fileCount":326,"unpackedSize":3336136,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICnEguJl0I7z4N9g0G0MB9Kwg0h0Lb8gBNLIFvyz0qY5AiEAzEnoM12fAXrWwzbVamF23T+tswX77O6hYgASYI4i5EQ="}]},"_npmUser":{"name":"wongchichong","email":"wongchichong@gmail.com"},"directories":{},"maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/woby_1.58.40_1764736672406_0.14128765705602064"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-02T04:59:51.702Z","modified":"2025-12-03T04:37:52.902Z","0.46.2":"2023-11-02T04:59:51.969Z","0.46.3":"2023-12-07T03:22:56.993Z","0.57.1":"2023-12-07T04:13:24.759Z","0.57.10":"2023-12-08T02:19:51.965Z","0.57.11":"2023-12-08T02:29:28.397Z","0.57.12":"2024-02-06T02:24:56.805Z","0.57.13":"2024-02-06T03:39:47.762Z","0.57.14":"2024-02-06T03:44:11.612Z","0.58.0":"2024-04-08T04:03:51.408Z","0.58.4":"2024-04-15T05:47:48.510Z","0.58.5":"2024-04-15T08:51:25.844Z","0.58.6":"2024-05-15T08:08:19.273Z","0.58.7":"2024-11-15T08:32:11.275Z","0.58.10":"2025-06-21T01:47:23.357Z","0.58.11":"2025-06-21T08:09:11.502Z","0.58.12":"2025-07-14T07:40:36.262Z","0.58.14":"2025-07-15T01:42:02.588Z","0.58.16":"2025-08-04T08:51:02.105Z","0.58.17":"2025-08-14T09:27:48.091Z","0.58.18":"2025-08-15T02:56:23.261Z","0.58.19":"2025-08-27T10:41:51.257Z","1.58.21":"2025-08-28T03:54:34.815Z","1.58.22":"2025-09-03T06:16:38.352Z","1.58.23":"2025-09-03T06:35:10.012Z","1.58.24":"2025-09-04T02:41:37.088Z","1.58.25":"2025-09-11T06:58:18.102Z","1.58.26":"2025-09-11T07:14:31.095Z","1.58.27":"2025-09-11T08:58:45.518Z","1.58.29":"2025-09-12T06:21:33.440Z","1.58.30":"2025-09-12T09:37:27.047Z","1.58.31":"2025-09-13T01:29:44.603Z","1.58.32":"2025-09-13T01:46:34.166Z","1.58.33":"2025-09-22T05:12:29.080Z","1.58.36":"2025-10-24T05:59:33.430Z","1.58.37":"2025-10-24T06:22:08.626Z","1.58.39":"2025-10-27T09:45:45.284Z","1.58.40":"2025-12-03T04:37:52.681Z"},"bugs":{"url":"https://github.com/wongchichong/woby/issues"},"homepage":"https://github.com/wongchichong/woby#readme","keywords":["ui","framework","reactive","observable","fast","performant","performance","small","fine-grained","updates"],"repository":{"type":"git","url":"git+https://github.com/wongchichong/woby.git"},"description":"A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.","maintainers":[{"name":"wongchichong","email":"wongchichong@gmail.com"},{"name":"sl1241","email":"tanjeehan@hotmail.com"}],"readme":"<p align=\"center\">\r\n  <a href=\"https://github.com/wobyjs/woby\">\r\n    <img src=\"./resources/banner/png/banner-light-rounded.png\" alt=\"Woby's Banner\" width=\"640px\" height=\"320px\">\r\n  </a>\r\n</p>\r\n\r\n# Woby\r\n\r\nA high-performance framework with fine-grained observable-based reactivity for building rich applications. Woby is built upon the [Soby](https://github.com/wobyjs/soby) reactive core, providing an enhanced API for component-based development.\r\n\r\n## Features\r\n\r\nThis works similarly to [Solid](https://www.solidjs.com), but without a custom Babel transform and with a different API.\r\n\r\n- **No VDOM**: there's no VDOM overhead, the framework deals with raw DOM nodes directly.\r\n- **No stale closures**: functions are always executed afresh, no need to worry about previous potential executions of the current function, ever.\r\n- **No rules of hooks**: hooks are regular functions that can be nested indefinitely, called conditionally, and used outside components, providing maximum flexibility for developers.\r\n- **No dependencies arrays**: the framework is able to detect what depends on what else automatically, no need to specify dependencies manually.\r\n- **No props diffing**: updates are fine grained, there's no props diffing, whenever an attribute/property/class/handler/etc. should be updated it's updated directly and immediately.\r\n- **No key prop**: developers can map over arrays directly or use the `For` component with an array of unique values, eliminating the need to specify keys explicitly.\r\n- **No Babel**: this framework works with plain JavaScript (plus JSX support), eliminating the need for Babel transforms. As a result, there are zero transform function bugs since no code transformation is required.\r\n- **No magic**: Woby follows a transparent approach where your code behaves exactly as written, with no hidden transformations or unexpected behavior.\r\n- **Client-focused**: this framework is currently focused on client-side rich applications. Server-related features such as hydration, server components, SSR, and streaming are not implemented at this time.\r\n- **Observable-based**: observables are at the core of the reactivity system. While the approach differs significantly from React-like systems and may require an initial learning investment, it provides substantial benefits in terms of performance and developer experience.\r\n- **Minimal dependencies**: Woby is designed with a focus on minimal third-party dependencies, providing a streamlined API for developers who prefer a lightweight solution. The framework draws inspiration from [Solid](https://www.solidjs.com) while offering its own unique approach to reactive programming.\r\n- **Built-in Class Management**: Woby includes powerful built-in class management that supports complex class expressions similar to `classnames` and `clsx` libraries, with full reactive observable support.\r\n- **Web Components Support**: First-class support for creating and using custom elements with reactive properties.\r\n- **Advanced Context API**: Powerful context system that works seamlessly with both JSX components and custom elements.\r\n- **Advanced Nested Property Support**: Unique feature allowing deeply nested properties to be set directly through HTML attributes using both `$` and `.` notation - a capability not available in React or SolidJS.\r\n\r\n## 📚 Documentation\r\n\r\n**[📖 Complete Documentation Wiki](./docs/README.md)** - Comprehensive guides, tutorials, and API reference\r\n\r\n### Quick Links\r\n- **[Installation Guide](./docs/Installation.md)** - Get started with Woby\r\n- **[Quick Start Tutorial](./docs/Quick-Start.md)** - Build your first app\r\n- **[API Reference](./docs/Core-Methods.md)** - Complete API documentation\r\n- **[Reactive Utilities](./docs/Reactive-Utilities.md)** - Working with observables and the `$$` function\r\n- **[Reactivity System](./docs/Reactivity-System.md)** - Understanding Woby's reactivity model\r\n- **[Examples Gallery](./docs/Examples.md)** - Practical examples and patterns\r\n- **[Class Management](./docs/Class-Management.md)** - Advanced class handling with reactive support\r\n- **[Best Practices](./docs/Best-Practices.md)** - Recommended patterns and practices\r\n- **[Woby vs React](./docs/Woby-vs-React.md)** - API differences and migration guide\r\n- **[FAQ](./docs/FAQ.md)** - Common questions and answers\r\n- **[Type Synchronization](./docs/Type-Synchronization.md)** - How HTML attributes sync with component props\r\n- **[Simple Type Synchronization](./docs/Type-Sync-Simple.md)** - Straightforward approach to type sync\r\n\r\n### Specialized Documentation\r\n- **[Context API](./docs/CONTEXT_API.md)** - Advanced context management for components and custom elements\r\n- **[Custom Elements](./docs/CUSTOM_ELEMENTS.md)** - Creating and using Web Components with Woby\r\n\r\n## Key Features\r\n\r\n### Context API\r\n\r\nWoby provides a powerful Context API that works seamlessly with both JSX components and custom elements:\r\n\r\n```tsx\r\n// Create a context\r\nconst ThemeContext = createContext('light')\r\n\r\n// Use in JSX components\r\nconst ThemedButton = () => {\r\n  const theme = useContext(ThemeContext)\r\n  return <button className={theme}>Themed Button</button>\r\n}\r\n\r\n// Use in custom elements\r\nconst ThemedElement = defaults(() => ({}), () => {\r\n  const [theme, mount] = useMountedContext(ThemeContext)\r\n  return <div>{mount}Theme: {theme}</div>\r\n})\r\n\r\ncustomElement('themed-element', ThemedElement)\r\n```\r\n\r\n[Learn more about the Context API](./docs/CONTEXT_API.md)\r\n\r\n### Custom Elements\r\n\r\nWoby provides first-class support for creating custom HTML elements with reactive properties:\r\n\r\n```tsx\r\n// Define a component with default props\r\nconst Counter = defaults(() => ({\r\n  value: $(0, { type: 'number' } as const),\r\n  title: $('Counter')\r\n}), ({ value, title }) => (\r\n  <div>\r\n    <h1>{title}</h1>\r\n    <p>Count: {value}</p>\r\n    <button onClick={() => value(prev => prev + 1)}>+</button>\r\n  </div>\r\n))\r\n\r\n// Register as a custom element\r\ncustomElement('counter-element', Counter)\r\n\r\n// Use in JSX or HTML\r\n// JSX: <counter-element value={5} title=\"My Counter\" />\r\n// HTML: <counter-element value=\"5\" title=\"My Counter\"></counter-element>\r\n```\r\n\r\n### Advanced Nested Property Support\r\n\r\nOne of Woby's unique features is its advanced nested property support, allowing you to set deeply nested properties directly through HTML attributes:\r\n\r\n```html\r\n<!-- Set nested properties using $ notation (works in both HTML and JSX) -->\r\n<user-card \r\n  user$name=\"John Doe\"\r\n  user$details$age=\"30\"\r\n  style$font-size=\"1.2em\"\r\n  style$color=\"blue\">\r\n</user-card>\r\n\r\n<!-- Set nested properties using . notation (HTML only) -->\r\n<user-card \r\n  user.name=\"John Doe\"\r\n  user.details.age=\"30\"\r\n  style.font-size=\"1.2em\"\r\n  style.color=\"blue\">\r\n</user-card>\r\n```\r\n\r\nThis feature is not available in React or SolidJS, making Woby a more powerful choice for creating highly configurable custom elements that can be used directly in HTML.\r\n\r\n[Learn more about Custom Elements](./docs/CUSTOM_ELEMENTS.md)\r\n\r\n## Demos\r\n\r\nYou can find some demos and benchmarks below, more demos are contained inside the repository.\r\n\r\n- Playground: https://codesandbox.io/s/playground-7w2pxg\r\n- Benchmark: https://krausest.github.io/js-framework-benchmark/current.html\r\n- Counter: https://codesandbox.io/s/demo-counter-23fv5\r\n- Clock: https://codesandbox.io/s/demo-clock-w1e7yb\r\n- Emoji Counter: https://codesandbox.io/s/demo-emoji-counter-j91iz2\r\n- HyperScript: https://codesandbox.io/s/demo-hyperscript-h4rf38\r\n- HTML Template Literal: https://codesandbox.io/s/demo-html-lvfeyo\r\n- Single-file HTML: https://codesandbox.io/s/demo-html-dueygt?file=/public/index.html\r\n- Spiral: https://codesandbox.io/s/demo-spiral-ux33p6\r\n- Store Counter: https://codesandbox.io/s/demo-store-counter-kvoqrw\r\n- Triangle: https://codesandbox.io/s/demo-triangle-l837v0\r\n- Boxes: https://codesandbox.io/s/demo-boxes-wx6rqb\r\n\r\n## AI Assistant Instructions\r\n\r\n### For AI Coding Assistants\r\n\r\nWhen using AI coding assistants to help with Woby development, please provide these explicit instructions to ensure proper understanding of Woby patterns:\r\n\r\n1.  **Framework Specific Instructions**: \"Use Woby patterns, NOT React patterns. Woby uses observables with `$()` and `$()` functions, not React hooks like useState, useEffect with dependency arrays, or useCallback.\"\r\n\r\n2.  **Observable-Based Reactivity**: \"In Woby, declare reactive variables with `$()`, and access their values with `$()` in reactive contexts. Woby automatically tracks dependencies when you use `$()`.\"\r\n\r\n3.  **No Dependency Arrays**: \"Woby hooks like `useEffect` and `useMemo` do not require dependency arrays. Dependencies are automatically tracked when accessed with `$()`.\"\r\n\r\n4.  **Reactive Patterns**: \"Direct observable passing (`{userName}`) is preferred for simple reactive content. For complex expressions, use function expressions (`{() => $(userName)}`) which are automatically tracked.\"\r\n\r\n### Common Anti-Patterns to Avoid\r\n\r\n``tsx\r\n// ❌ Anti-pattern: React-style useState\r\nconst [count, setCount] = useState(0)\r\n\r\n// ✅ Woby pattern\r\nconst count = $(0)\r\n\r\n// ❌ Anti-pattern: React useEffect with dependency array\r\nuseEffect(() => {\r\n  console.log(count)\r\n}, [count])\r\n\r\n// ✅ Woby pattern\r\nuseEffect(() => {\r\n  console.log($(count))\r\n})\r\n\r\n// ❌ Anti-pattern: Non-reactive content\r\n<div>Hello {$(userName)}</div>\r\n\r\n// ✅ Woby pattern\r\n<div>Hello {userName}</div>\r\n\r\n// ❌ Anti-pattern: React-style array mapping\r\n{todos.map(todo => <div>{todo.text}</div>)}\r\n\r\n// ✅ Woby pattern\r\n<For values={todos}>{(todo) => <div>{todo.text}</div>}</For>\r\n```\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please read our [contributing guidelines](./docs/Contributing.md) before submitting pull requests.\r\n\r\n## Thanks\r\n\r\n- **[S](https://github.com/adamhaile/S)**: for pioneering reactive programming approaches that inspired this framework.\r\n- **[sinuous/observable](https://github.com/luwes/sinuous/tree/master/packages/sinuous/observable)**: for providing an excellent Observable implementation that served as the foundation for this library.\r\n- **[solid](https://www.solidjs.com)**: for serving as a reference implementation, popularizing signal-based reactivity, and building a strong community.\r\n- **[solid](https://www.solidjs.com)**: for serving as a reference implementation, popularizing signal-based reactivity, and building a strong community.\r\n- **[trkl](https://github.com/jbreckmckye/trkl)**: for demonstrating the power of minimal, focused implementations.\r\n\r\n## License\r\n\r\nMIT\r\n    }\r\n    return currentTodos\r\n  })\r\n\r\n  const activeCount = useMemo(() => {\r\n    return $(todos).filter(todo => !todo.completed).length\r\n  })\r\n\r\n  return (\r\n    <div class=\"todo-app max-w-md mx-auto p-4\">\r\n      <h1 class=\"text-2xl font-bold mb-4 text-center\">My Todo App</h1>\r\n      \r\n      {/* Add new todo */}\r\n      <div class=\"flex gap-2 mb-4\">\r\n        <input\r\n          type=\"text\"\r\n          value={input}\r\n          onInput={(e) => input(e.target.value)}\r\n          placeholder=\"Add a new todo...\"\r\n          onKeyPress={(e) => e.key === 'Enter' && addTodo()}\r\n          class=\"flex-1 p-2 border border-gray-300 rounded\"\r\n        />\r\n        <button \r\n          onClick={addTodo}\r\n          class=\"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600\"\r\n        >\r\n          Add\r\n        </button>\r\n      </div>\r\n\r\n      {/* Filter buttons */}\r\n      <div class=\"flex justify-center gap-2 mb-4\">\r\n        {['all', 'active', 'completed'].map((filterName) => (\r\n          <button\r\n            key={filterName}\r\n            onClick={() => setFilter(filterName)}\r\n            class={[\r\n              'px-3 py-1 rounded',\r\n              () => $(filter) === filterName \r\n                ? 'bg-blue-500 text-white' \r\n                : 'bg-gray-200 hover:bg-gray-300'\r\n            ]}\r\n          >\r\n            {filterName.charAt(0).toUpperCase() + filterName.slice(1)}\r\n          </button>\r\n        ))}\r\n      </div>\r\n\r\n      {/* Todo list */}\r\n      <ul class=\"list-none p-0\">\r\n        <For values={filteredTodos}>\r\n          {(todo) => (\r\n            <li class={[\r\n              'flex items-center p-2 border-b border-gray-200 gap-2',\r\n              { \r\n                'line-through text-gray-500': todo.completed,\r\n                'bg-yellow-50': () => todo.id % 2 === 0  // Alternate row styling\r\n              }\r\n            ]}>\r\n              <input\r\n                type=\"checkbox\"\r\n                checked={todo.completed}\r\n                onChange={() => toggleTodo(todo.id)}\r\n                class=\"w-4 h-4\"\r\n              />\r\n              <span class=\"flex-1\">{todo.text}</span>\r\n              <button \r\n                class=\"w-6 h-6 flex items-center justify-center bg-red-500 text-white rounded-full hover:bg-red-600 text-xs\"\r\n                onClick={() => removeTodo(todo.id)}\r\n              >\r\n                ✕\r\n              </button>\r\n            </li>\r\n          )}\r\n        </For>\r\n      </ul>\r\n\r\n      {/* Stats */}\r\n      <div class=\"mt-4 p-2 bg-gray-100 rounded text-sm\">\r\n        Total: {() => $(todos).length} | \r\n        Active: {activeCount} |\r\n        Completed: {() => $(todos).filter(t => t.completed).length}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\n// Render the application\r\nrender(<TodoApp />, document.getElementById('app')!)\r\n```\r\n\r\n## React Compatibility Guide\r\n\r\n### useState → Observable\r\n\r\n```tsx\r\n// React\r\nconst [count, setCount] = useState(0)\r\n\r\n// Woby\r\nconst count = $(0)\r\n// To update: count(1) or count(prev => prev + 1)\r\n```\r\n\r\n### useEffect → useEffect (but different)\r\n\r\n```tsx\r\n// React\r\nuseEffect(() => {\r\n  console.log(count)\r\n}, [count])\r\n\r\n// Woby\r\nuseEffect(() => {\r\n  console.log($(count))\r\n})\r\n// No dependency array needed!\r\n```\r\n\r\n### useMemo → useMemo (but different)\r\n\r\n```tsx\r\n// React\r\nconst doubled = useMemo(() => count * 2, [count])\r\n\r\n// Woby\r\nconst doubled = useMemo(() => $(count) * 2)\r\n// No dependency array needed!\r\n```\r\n\r\n### Conditional Rendering\r\n\r\n```tsx\r\n// React\r\n{isLoggedIn && <div>Welcome!</div>}\r\n\r\n// Woby\r\n<If when={isLoggedIn}>\r\n  <div>Welcome!</div>\r\n</If>\r\n```\r\n\r\n### List Rendering\r\n\r\n```tsx\r\n// React\r\n{todos.map(todo => <div key={todo.id}>{todo.text}</div>)}\r\n\r\n// Woby\r\n<For values={todos}>\r\n  {(todo) => <div>{todo.text}</div>}\r\n</For>\r\n```\r\n\r\n### React to Woby Type Conversions\r\n\r\n| React Type | Woby Equivalent | Description |\r\n|------------|-----------------|-------------|\r\n| `React.ReactNode` | `JSX.Child` | Represents any renderable content |\r\n| `React.FC<Props>` | `JSX.ComponentFunction<Props>` | Function component type |\r\n| `React.ComponentType<Props>` | `JSX.Component<Props>` | Union of function components and intrinsic elements |\r\n| `React.PropsWithChildren<Props>` | `Props & { children?: JSX.Child }` | Props interface with children |\r\n| `React.Ref<T>` | `JSX.Ref<T>` | Ref type definition |\r\n| `React.MutableRefObject<T>` | Direct DOM access or observable refs | Ref object equivalent |\r\n| `React.Context<T>` | `Woby.Context<T>` | Context object (see createContext) |\r\n| `React.Dispatch<React.SetStateAction<T>>` | Observable setter pattern | State update function |\r\n| `React.HTMLProps<T>` | `JSX.HTMLAttributes<T>` | HTML element props |\r\n| `React.CSSProperties` | `JSX.CSSProperties` | CSS properties object |\r\n\r\nFor a comprehensive guide on React to Woby type conversions, see our [React to Woby Type Conversion Guide](./docs/React-to-Woby-Type-Conversion.md).\r\n\r\n## HTML Utility Types\r\n\r\nWoby provides a set of HTML utility types that make it easier to work with common HTML attribute patterns in custom elements. These utilities implement the `ObservableOptions` interface and provide consistent conversion between JavaScript values and HTML attributes.\r\n\r\n### Available HTML Utilities\r\n\r\n| Woby Utility | Description |\r\n|--------------|-------------|\r\n| `HtmlBoolean` | Handles boolean values with automatic conversion |\r\n| `HtmlNumber` | Handles numeric values with automatic conversion |\r\n| `HtmlDate` | Handles Date values with ISO string serialization |\r\n| `HtmlBigInt` | Handles BigInt values with automatic conversion |\r\n| `HtmlObject` | Handles Object values with JSON serialization |\r\n| `HtmlLength` | Handles CSS length values (px, em, rem, %, etc.) |\r\n| `HtmlBox` | Handles CSS box values (margin, padding, border, etc.) |\r\n| `HtmlColor` | Handles CSS color values (hex, rgb, etc.) |\r\n| `HtmlStyle` | Handles CSS style values (objects and strings) |\r\n\r\n### Usage Example\r\n\r\n``tsx\r\nimport { $, defaults, customElement, HtmlBoolean, HtmlNumber, HtmlColor, HtmlStyle } from 'woby'\r\n\r\ninterface CounterProps {\r\n  count?: number\r\n  enabled?: boolean\r\n  color?: string\r\n  styles?: Record<string, string | number>\r\n}\r\n\r\nconst def = () => ({\r\n  count: $(0, HtmlNumber),\r\n  enabled: $(true, HtmlBoolean),\r\n  color: $('#000000', HtmlColor),\r\n  styles: $({} as Record<string, string | number>, HtmlStyle)\r\n})\r\n\r\nconst Counter = defaults(def, (props: CounterProps) => {\r\n  const { count, enabled, color, styles } = props\r\n  return (\r\n    <div style={() => ({ color: $(color), ...$$(styles) })}>\r\n      <span>Count: {count}</span>\r\n      <span>Status: {enabled ? 'Enabled' : 'Disabled'}</span>\r\n    </div>\r\n  )\r\n})\r\n\r\n// Register as custom element\r\ncustomElement('styled-counter', Counter)\r\n```\r\n\r\n### Benefits of HTML Utility Types\r\n\r\n1. **Type Safety**: Each utility provides proper type conversion between HTML attributes and JavaScript values\r\n2. **Consistency**: All utilities follow the same pattern and behavior\r\n3. **Automatic Serialization**: Complex values are automatically serialized to/from HTML attributes\r\n4. **Error Handling**: Utilities handle edge cases and invalid values gracefully\r\n5. **Empty String Handling**: All utilities treat empty strings as `undefined` for consistent behavior\r\n6. **Equality Checking**: Each utility implements proper equality checking for value comparison\r\n\r\n## Performance Tips\r\n\r\n1.  **Use Direct Observable Passing**: For simple reactive content, pass observables directly rather than using `$()` in functions\r\n2.  **Group Related Effects**: Separate unrelated concerns into individual effects for better performance\r\n3.  **Use Early Returns**: Skip unnecessary work in effects when dependencies haven't changed meaningfully\r\n4.  **Choose the Right List Component**: Use `For` for objects, `ForValue` for primitives, `ForIndex` for fixed-size lists\r\n5.  **Avoid Unnecessary useMemo**: Simple expressions with `() =>` are automatically tracked and often don't need `useMemo`\r\n\r\n## APIs\r\n\r\n| Core Methods                        | Components                | Hooks                             | Types & Utilities                  | Miscellaneous            |\r\n|------------------------------------|---------------------------|-----------------------------------|------------------------------------|--------------------------|\r\n| [`](#methods)                    | [`Dynamic`](#dynamic)     | [`useAbortController`](#useabortcontroller) | [`Context`](#context)             | [`Contributing`](#contributing) |\r\n| [`batch`](#batch)                  | [`ErrorBoundary`](#errorboundary) | [`useAbortSignal`](#useabortsignal) | [`Directive`](#directive)         | [`Globals`](#globals)   |\r\n| [`createContext`](#createcontext) | [`For`](#for)             | [`useAnimationFrame`](#useanimationframe) | [`DirectiveOptions`](#directiveoptions) | [`JSX`](#jsx)           |\r\n| [`createDirective`](#createdirective) | [`ForIndex`](#forindex) | [`useAnimationLoop`](#useanimationloop) | [`FunctionMaybe`](#functionmaybe) | [`Tree Shaking`](#tree-shaking) |\r\n| [`customElement`](#customelement) | [`ForValue`](#forvalue)   | [`useBoolean`](#useboolean)       | [`Observable`](#observable)       | [`TypeScript`](#typescript) |\r\n| [`createElement`](#createelement) | [`Fragment`](#fragment)   | [`useCleanup`](#usecleanup)       | [`ObservableReadonly`](#observablereadonly) |                          |\r\n| [`h`](#h)                          | [`If`](#if)               | [`useContext`](#usecontext)       | [`ObservableMaybe`](#observablemaybe) |                          |\r\n| [`html`](#html)                    | [`Portal`](#portal)       | [`useDisposed`](#usedisposed)     | [`ObservableOptions`](#observableoptions) |                          |\r\n| [`isBatching`](#isbatching)       | [`Suspense`](#suspense)   | [`useEffect`](#useeffect)         | [`Resource`](#resource)           |                          |\r\n| [`isObservable`](#isobservable)   | [`Switch`](#switch)       | [`useError`](#useerror)           | [`StoreOptions`](#storeoptions)   |                          |\r\n| [`isServer`](#isserver)           | [`Tary`](#ternary)     | [`useEventListener`](#useeventlistener) |                                |                          |\r\n| [`isStore`](#isstore)             |                           | [`useFetch`](#usefetch)           |                                    |                          |\r\n| [`lazy`](#lazy)                   |                           | [`useIdleCallback`](#useidlecallback) |                                |                          |\r\n| [`render`](#render)               |                           | [`useIdleLoop`](#useidleloop)     |                                    |                          |\r\n| [`renderToString`](#rendertostring) |                         | [`useInterval`](#useinterval)     |                                    |                          |\r\n| [`resolve`](#resolve)             |                           | [`useMemo`](#usememo)             |                                    |                          |\r\n| [`store`](#store)                 |                           | [`useMicrotask`](#usemicrotask)   |                                    |                          |\r\n| [`template`](#template)           |                           | [`usePromise`](#usepromise)       |                                    |                          |\r\n| [`untrack`](#untrack)             |                           | [`useReaction`](#usereaction)     |                                    |                          |\r\n                                    |                           | [`useReadonly`](#usereadonly)     |                                    |                          |\r\n                                    |                           | [`useResolved`](#useresolved)     |                                    |                          |\r\n                                    |                           | [`useResource`](#useresource)     |                                    |                          |\r\n                                    |                           | [`useRoot`](#useroot)             |                                    |                          |\r\n                                    |                           | [`useSelector`](#useselector)     |                                    |                          |\r\n                                    |                           | [`useTimeout`](#usetimeout)       |                                    |                          |\r\n## Usage\r\n\r\nWoby serves as a view layer built on top of the Observable library [`soby`](https://github.com/wobyjs/soby). Understanding how soby works is essential for effectively using Woby.\r\n\r\nWoby re-exports all soby functionality with interfaces adjusted for component and hook usage, along with additional framework-specific functions.\r\n\r\n### Counter Example\r\n\r\nHere's a complete counter example that demonstrates Woby's reactive capabilities:\r\n\r\n**Source:** [@woby/demo](https://github.com/wobyjs/demo) ⭐\r\n\r\n```tsx\r\nimport { $, $, useMemo, render, Observable, customElement, ElementAttributes } from 'woby'\r\n\r\nconst Counter = ({ increment, decrement, value, ...props }: { \r\n  increment: () => number, \r\n  decrement: () => number, \r\n  value: Observable<number> \r\n}): JSX.Element => {\r\n  const v = $('abc')\r\n  const m = useMemo(() => {\r\n    return $(value) + $(v)\r\n  })\r\n  return <div {...props}>\r\n    <h1>Counter</h1>\r\n    <p>{value}</p>\r\n    <p>{m}</p>\r\n    <button onClick={increment}>+</button>\r\n    <button onClick={decrement}>-</button>\r\n  </div>\r\n}\r\n\r\n// Register as custom element\r\ncustomElement('counter-element', Counter, 'value', 'class', 'style-*')\r\n\r\ndeclare module 'woby' {\r\n    namespace JSX {\r\n        interface IntrinsicElements {\r\n            'counter-element': ElementAttributes<typeof Counter>\r\n        }\r\n    }\r\n}\r\n\r\n\r\nconst App = () => {\r\n  const value = $(0)\r\n  const increment = () => value(prev => prev + 1)\r\n  const decrement = () => value(prev => prev - 1)\r\n\r\n  return <counter-element \r\n    value={value} \r\n    increment={increment} \r\n    decrement={decrement} \r\n    class=\"border-2 border-black border-solid bg-amber-400\" \r\n  />\r\n}\r\n\r\nrender(<App />, document.getElementById('app'))\r\n```\r\n\r\n**Output:**\r\n```\r\n<counter-element value=\"0\" class=\"border-2 border-black border-solid bg-amber-400\">\r\n  <div class=\"border-2 border-black border-solid bg-amber-400\">\r\n    <h1>Counter</h1>\r\n    <p>0</p>\r\n    <p>0abc</p>\r\n    <button>+</button>\r\n    <button>-</button>\r\n  </div>\r\n</counter-element>\r\n```\r\n\r\nModifying the value attribute on <counter-element value=\"0\"> triggers an immediate update to its associated observable.\r\n\r\n### Advanced Class Management\r\n\r\nWoby provides powerful built-in class management that supports complex class expressions with full reactive observable support, similar to popular libraries like `classnames` and `clsx`.\r\n\r\n#### Class Array Support\r\n\r\nWoby supports complex class expressions including arrays, objects, and functions:\r\n\r\n```tsx\r\n// Array of classes\r\n<div class={['red', 'bold']}>Text</div>\r\n\r\n// Nested arrays\r\n<div class={['red', ['bold', ['italic']]]}>Text</div>\r\n\r\n// Mixed types\r\n<div class={[\r\n  \"red\",\r\n  () => ($(value) % 2 === 0 ? \"bold\" : \"\"),\r\n  { hidden: true, italic: false },\r\n  ['hello', ['world']]\r\n]}>Complex classes</div>\r\n```\r\n\r\n#### Reactive Classes\r\n\r\nAll class expressions support reactive observables that automatically update when values change:\r\n\r\n```tsx\r\nconst isActive = $(false)\r\nconst theme = $('dark')\r\n\r\n// Reactive boolean\r\n<div class={{ active: isActive }}>Toggle me</div>\r\n\r\n// Reactive string\r\n<div class={() => `btn btn-${theme()}`}>Themed button</div>\r\n\r\n// Complex reactive expression\r\n<div class={[\r\n  'base-class',\r\n  () => isActive() ? 'active' : 'inactive',\r\n  { 'loading': loadingState() }\r\n]}>Dynamic element</div>\r\n```\r\n\r\n#### Class Object Syntax\r\n\r\nWoby supports object syntax for conditional classes where keys are class names and values are boolean conditions:\r\n\r\n```tsx\r\nconst error = $(false)\r\nconst warning = $(false)\r\n\r\n<div class={{\r\n  'base': true,           // Always applied\r\n  'error': error,         // Applied when error is truthy\r\n  'warning': warning,     // Applied when warning is truthy\r\n  'success': !error && !warning  // Applied when neither error nor warning\r\n}}>Status element</div>\r\n```\r\n\r\n#### Function-based Classes\r\n\r\nClasses can be computed using functions that return class strings or other class expressions:\r\n\r\n```tsx\r\nconst count = $(0)\r\n\r\n<div class={() => count() > 5 ? 'high-count' : 'low-count'}>\r\n  Count: {count}\r\n</div>\r\n\r\n// Function returning complex expression\r\n<div class={() => [\r\n  'base',\r\n  count() > 10 ? 'large' : 'small',\r\n  { 'even': count() % 2 === 0 }\r\n]}>\r\n  Dynamic element\r\n</div>\r\n```\r\n\r\n### Built-in Classnames/CLSX/Tailwind-Merge Support\r\n\r\nWoby's class system provides built-in functionality equivalent to popular libraries:\r\n\r\n- **Classnames/CLSX-like syntax**: Supports all the same patterns as the popular `classnames` and `clsx` libraries\r\n- **Tailwind CSS ready**: Works seamlessly with Tailwind CSS class patterns\r\n- **No external dependencies**: Built-in implementation eliminates the need for external libraries\r\n- **Reactive by default**: All class expressions automatically update when observables change\r\n- **Performance optimized**: Efficient implementation that minimizes DOM updates\r\n\r\n#### Migration from CLSX\r\n\r\nIf you're familiar with `clsx`, Woby's class system works similarly:\r\n\r\n```tsx\r\n// Instead of: clsx('foo', true && 'bar', 'baz')\r\n<div class={['foo', true && 'bar', 'baz']}>Content</div>\r\n\r\n// Instead of: clsx({ foo:true, bar:false, baz:isTrue() })\r\n<div class={{ foo:true, bar:false, baz:isTrue() }}>Content</div>\r\n\r\n// Instead of: clsx(['foo', 0, false, 'bar'])\r\n<div class={['foo', 0, false, 'bar']}>Content</div>\r\n```\r\n\r\n#### Integration with Tailwind Merge\r\n\r\nFor advanced Tailwind CSS class merging, you can wrap your expressions with a custom merge function:\r\n\r\n```tsx\r\nimport { twMerge } from 'tailwind-merge'\r\n\r\nconst mergedClass = useMemo(() => twMerge(\r\n  'px-4 py-2 bg-blue-500',\r\n  isActive() ? 'bg-blue-700' : 'bg-blue-500'\r\n))\r\n\r\n<div class={mergedClass}>Merged classes</div>\r\n```\r\n\r\nAll reactive elements in class expressions should be wrapped in `useMemo` or arrow functions `() =>` to ensure proper reactivity:\r\n\r\n```tsx\r\n// Correct - wrapped in useMemo\r\nconst dynamicClass = useMemo(() => ({\r\n  'active': isActive(),\r\n  'disabled': isDisabled()\r\n}))\r\n\r\n<div class={dynamicClass}>Content</div>\r\n\r\n// Correct - wrapped in arrow function\r\n<div class={() => isActive() ? 'active' : 'inactive'}>Content</div>\r\n\r\n// Correct - observables automatically handled\r\n<div class={{ 'active': isActive }}>Content</div>\r\n```\r\n\r\n### Methods\r\n\r\nThe following top-level functions are provided.\r\n\r\n#### `\r\n\r\nThis function is just the default export of `soby`, it can be used to wrap a value in an observable.\r\n\r\nNo additional methods are attached to this function. Everything that `soby` attaches to it is instead exported as components and hooks.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#core).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction $ <T> (): Observable<T | undefined>;\r\nfunction $ <T> ( value: undefined, options?: ObservableOptions<T | undefined> ): Observable<T | undefined>;\r\nfunction $ <T> ( value: T, options?: ObservableOptions<T> ): Observable<T>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {$} from 'woby';\r\n\r\n// Create an observable without an initial value\r\n\r\n$<number> ();\r\n\r\n// Create an observable with an initial value\r\n\r\n$(1);\r\n\r\n// Create an observable with an initial value and a custom equality function\r\n\r\nconst equals = ( value, valuePrev ) => Object.is ( value, valuePrev );\r\n\r\nconst o = $( 1, { equals } );\r\n\r\n// Create an observable with an initial value and a special \"false\" equality function, which is a shorthand for `() => false`, which causes the observable to always emit when its setter is called\r\n\r\nconst oFalse = $( 1, { equals: false } );\r\n\r\n// Getter\r\n\r\no (); // => 1\r\n\r\n// Setter\r\n\r\no ( 2 ); // => 2\r\n\r\n// Setter via a function, which gets called with the current value\r\n\r\no ( value => value + 1 ); // => 3\r\n\r\n// Setter that sets a function, it has to be wrapped in another function because the above form exists\r\n\r\nconst noop = () => {};\r\n\r\no ( () => noop );\r\n```\r\n\r\n#### `\r\n\r\nThis function unwraps a potentially observable value.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#get).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction $ <T> ( value: T ): (T extends ObservableReadonly<infer U> ? U : T);\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {$} from 'woby';\r\n\r\n// Getting the value out of an observable\r\n\r\nconst o = $(123);\r\n\r\n$ ( o ); // => 123\r\n\r\n// Getting the value out of a function\r\n\r\n$ ( () => 123 ); // => 123\r\n\r\n// Getting the value out of an observable but not out of a function\r\n\r\n$ ( o, false ); // => 123\r\n$ ( () => 123, false ); // => () => 123\r\n\r\n// Getting the value out of a non-observable and non-function\r\n\r\n$ ( 123 ); // => 123\r\n```\r\n\r\n#### `$$`\r\n\r\nThis function unwraps a potentially observable value. Recent enhancements to Soby (which Woby uses as its reactive core) have added automatic `valueOf()` and `toString()` methods to observable functions, making them behave more naturally in JavaScript contexts where primitives are expected.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#get).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction $$ <T> ( value: T ): (T extends ObservableReadonly<infer U> ? U : T);\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {$$} from 'woby';\r\n\r\n// Getting the value out of an observable\r\n\r\nconst o = $(123);\r\n\r\n$$ ( o ); // => 123\r\n\r\n// Getting the value out of a function\r\n\r\n$$ ( () => 123 ); // => 123\r\n\r\n// Getting the value out of an observable but not out of a function\r\n\r\n$$ ( o, false ); // => 123\r\n$$ ( () => 123, false ); // => () => 123\r\n\r\n// Getting the value out of a non-observable and non-function\r\n\r\n$$ ( 123 ); // => 123\r\n```\r\n\r\n##### Enhanced Observable Functions\r\n\r\nRecent enhancements to Soby have added automatic `valueOf()` and `toString()` methods to observable functions. These methods use `deepResolve()` to automatically resolve observables to their current values in various contexts.\r\n\r\n###### Technical Implementation\r\n\r\nThe enhancement was implemented in Soby's `src/objects/callable.ts` by adding the following lines to both `readable` and `writable` observable function generators:\r\n\r\n```typescript\r\nfn.valueOf = () => deepResolve(fn)\r\nfn.toString = () => fn.valueOf().toString()\r\n```\r\n\r\nThis change affects the creation of observable functions, making them behave more naturally in JavaScript contexts where primitives are expected.\r\n\r\n###### Automatic String Conversion\r\n\r\nObservables now automatically resolve to their values in string contexts:\r\n\r\n```typescript\r\nimport {$} from 'woby'\r\n\r\n// In template literals\r\nconst name = $('John')\r\nconsole.log(`Hello, ${name}!`) // Outputs: \"Hello, John!\"\r\n\r\n// In JSX expressions\r\nconst App = () => {\r\n  const count = $(5)\r\n  return <div>Count: {count}</div> // Renders: \"Count: 5\"\r\n}\r\n```\r\n\r\n###### Mathematical Operations\r\n\r\nObservables automatically resolve in mathematical operations:\r\n\r\n```typescript\r\nimport {$} from 'woby'\r\n\r\nconst count = $(5)\r\nconst result = count + 10 // Results in 15 automatically\r\n\r\nconst price = $(19.99)\r\nconst tax = $(0.08)\r\nconst total = price * (1 + tax) // Automatically calculates with current values\r\n```\r\n\r\n###### DOM Attribute Binding\r\n\r\nWhen binding observables to DOM attributes, they automatically convert to appropriate string representations:\r\n\r\n```typescript\r\nimport {$} from 'woby'\r\n\r\nconst isVisible = $(true)\r\nconst opacity = $(0.5)\r\n\r\n// These will automatically convert to appropriate string values\r\nconst element = <div hidden={isVisible} style={{ opacity }}>Content</div>\r\n```\r\n\r\n###### Performance Considerations\r\n\r\nThe `deepResolve` function recursively resolves observables, which means for deeply nested structures there could be performance implications in hot paths. The resolution happens every time `valueOf()` or `toString()` is called.\r\n\r\nFor performance-critical applications with deeply nested structures, explicit unwrapping with `$$()` may be preferred:\r\n\r\n```typescript\r\n// This maintains reactivity by directly passing the observable\r\nconst reactive = <div>{deeplyNestedObject}</div>\r\n\r\n// This unwraps the observable to get its static value, losing reactivity\r\nconst staticValue = <div>{$$(deeplyNestedObject)}</div>\r\n\r\n// With the valueOf enhancement, mathematical operations are simplified\r\nconst price = $(19.99);\r\nconst quantity = $(3);\r\nconst total = <div>Total: {() => price * quantity}</div>; // Automatically computes 59.97\r\n```\r\n\r\n###### Backward Compatibility\r\n\r\nThis enhancement improves rather than breaks existing functionality:\r\n\r\n1. All existing code continues to work as before\r\n2. Explicit unwrapping with `$$()` still works and may be preferred in performance-critical situations\r\n3. The enhancement provides additional convenience without removing any capabilities\r\n\r\n#### `batch`\r\n\r\nThis function holds onto updates within its scope and flushes them out once it exits.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#batch).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction batch <T> ( fn: () => T ): T;\r\nfunction batch <T> ( value: T ): T;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {batch} from 'woby';\r\n\r\nbatch // => Same as require ( 'soby' ).batch\r\n```\r\n\r\n#### `createContext`\r\n\r\nThis function creates a context object, optionally with a default value, which can later be used to provide a new value for the context or to read the current value.\r\n\r\nA context's `Provider` will register the context with its children, which is always what you want, but it can lead to messy code due to nesting.\r\n\r\nA context's `register` function will register the context with the current parent observer, which is usually only safe to do at the root level, but it will lead to very readable code.\r\n\r\nInterface:\r\n\r\n```ts\r\ntype ContextProvider<T> = ( props: { value: T, children: JSX.Element } ) => JSX.Element;\r\ntype ContextRegister<T> = ( value: T ) => void;\r\ntype Context<T> = { Provider: ContextProvider<T>, register: ContextRegister<T> };\r\n\r\nfunction createContext <T> ( defaultValue?: T ): Context<T>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {createContext, useContext} from 'woby';\r\n\r\nconst App = () => {\r\n  const Context = createContext ( 123 );\r\n  return (\r\n    <>\r\n      {() => {\r\n        const value = useContext ( Context );\r\n        return <p>{value}</p>;\r\n      }}\r\n      <Context.Provider value={312}>\r\n        {() => {\r\n          const value = useContext ( Context );\r\n          return <p>{value}</p>;\r\n        }}\r\n      </Context.Provider>\r\n    </>\r\n  );\r\n};\r\n```\r\n\r\n#### `createDirective`\r\n\r\nThis function creates a directive provider, which can be used to register a directive with its children.\r\n\r\nA directive is a function that always receives an `Element` as its first argument, which is basically a ref to the target element, and arbitrary user-provided arguments after that.\r\n\r\nEach directive has a unique name and it can be called by simply writing `use:directivename={[arg1, arg2, ...argN]]}` in the JSX.\r\n\r\nDirectives internally are registered using context providers, so you can also override directives for a particular scope just by registering another directive with the same name closer to where you are reading it.\r\n\r\nA directive's `Provider` will register the directive with its children, which is always what you want, but it can lead to messy code due to nesting.\r\n\r\nA directive's `register` function will register the directive with the current parent observer, which is usually only safe to do at the root level, but it will lead to very readable code.\r\n\r\nInterface:\r\n\r\n```ts\r\ntype DirectiveFunction = <T extends unknown[]> ( ref: Element, ...args: T ) => void;\r\ntype DirectiveProvider = ( props: { children: JSX.Element } ) => JSX.Element;\r\ntype DirectiveRef<T extends unknown[]> = ( ...args: T ) => (( ref: Element ) => void);\r\ntype DirectiveRegister = () => void;\r\ntype Directive = { Provider: DirectiveProvider, ref: DirectiveRef, register: DirectiveRegister };\r\n\r\nfunction createDirective <T extends unknown[] = []> ( name: string, fn: DirectiveFunction<T>, options?: DirectiveOptions ): Directive;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {createDirective, useEffect} from 'woby';\r\n\r\n// First of all if you are using TypeScript you should extend the \"JSX.Directives\" interface, so that TypeScript will know about your new directive\r\n\r\nnamespace JSX {\r\n  interface Directives {\r\n    tooltip: [title: string] // Mapping the name of the directive to the array of arguments it accepts\r\n  }\r\n}\r\n\r\n// Then you should create a directive provider\r\n\r\nconst TooltipDirective = createDirective ( 'tooltip', ( ref, title: string ) => {\r\n\r\n  useEffect ( () => {\r\n\r\n    if ( !ref () ) return; // The element may not be available yet, or it might have been unmounted\r\n\r\n    // Code that implements a tooltip for the given element here...\r\n\r\n  });\r\n\r\n});\r\n\r\n// Then you can use the new \"tooltip\" directive anywhere inside the \"TooltipDirective.Provider\"\r\n\r\nconst App = () => {\r\n  return (\r\n    <TooltipDirective.Provider>\r\n      <input value=\"Placeholder...\" use:tooltip={['This is a tooltip!']} />\r\n    </TooltipDirective.Provider>\r\n  );\r\n};\r\n\r\n// You can also use directives directly by padding them along as refs\r\n\r\nconst App = () => {\r\n  return <input ref={TooltipDirective.ref ( 'This is a tooltip!' )} value=\"Placeholder...\" />;\r\n};\r\n```\r\n\r\n#### `createElement`\r\n\r\nThis is the internal function that will make DOM nodes and call/instantiate components, it will be called for you automatically via JSX.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction createElement <P = {}> ( component: JSX.Component<P>, props: P | null, ...children: JSX.Element[] ): () => JSX.Element);\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {createElement} from 'woby';\r\n\r\nconst element = createElement ( 'div', { class: 'foo' }, 'child' ); // => () => HTMLDivElement\r\n```\r\n\r\n#### `h`\r\n\r\nThis function is just an alias for the `createElement` function, it's more convenient to use if you want to use Woby in hyperscript mode just because it has a much shorter name.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction h <P = {}> ( component: JSX.Component<P>, props: P | null, ...children: JSX.Element[] ): () => JSX.Element);\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {h} from 'woby';\r\n\r\nconst element = h ( 'div', { class: 'foo' }, 'child' ); // => () => HTMLDivElement\r\n```\r\n\r\n#### `html`\r\n\r\nThis function provides an alternative way to use the framework, without writing JSX or using the `h` function manually, it instead allows you to write your markup as tagged template literals.\r\n\r\n[`htm`](https://github.com/developit/htm) is used under the hood, read its documentation.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction html ( strings: TemplateStringsArray, ...values: any[] ): JSX.Element;```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {html, If} from 'woby';\r\n\r\nconst Counter = (): JSX.Element => {\r\n  const value = $(0);\r\n  const increment = () => value ( prev => prev + 1 );\r\n  const decrement = () => value ( prev => prev - 1 );\r\n  return html`\r\n    <h1>Counter</h1>\r\n    <p>${value}</p>\r\n    <button onClick=${increment}>+</button>\r\n    <button onClick=${decrement}>-</button>\r\n  `;\r\n};\r\n\r\n// Using a custom component without registering it\r\n\r\nconst NoRegistration = (): JSX.Element => {\r\n  return html`\r\n    <${If} when=${true}>\r\n      <p>content</p>\r\n    </${If}>\r\n  `;\r\n};\r\n\r\n// Using a custom component after registering it, so you won't need to interpolate it anymore\r\n\r\nhtml.register ({ If });\r\n\r\nconst NoRegistration = (): JSX.Element => {\r\n  return html`\r\n    <If when=${true}>\r\n      <p>content</p>\r\n    </If>\r\n  `;\r\n};\r\n```\r\n\r\n#### `isBatching`\r\n\r\nThis function tells you if batching is currently active or not.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction isBatching (): boolean;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {batch, isBatching} from 'woby';\r\n\r\n// Checking if currently batching\r\n\r\nisBatching (); // => false\r\n\r\nbatch ( () => {\r\n\r\n  isBatching (); // => true\r\n\r\n});\r\n\r\nisBatching (); // => false\r\n```\r\n\r\n#### `isObservable`\r\n\r\nThis function tells you if a variable is an observable or not.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction isObservable <T = unknown> ( value: unknown ): value is Observable<T> | ObservableReadonly<T>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {$, isObservable} from 'woby';\r\n\r\nisObservable ( 123 ); // => false\r\nisObservable ( $(123) ); // => true\r\n```\r\n\r\n#### `isServer`\r\n\r\nThis function tells you if your code is executing in a browser environment or not.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction isServer (): boolean;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {isServer} from 'woby';\r\n\r\nisServer (); // => true or false\r\n```\r\n\r\n#### `isStore`\r\n\r\nThis function tells you if a variable is a store or not.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction isStore ( value: unknown ): boolean;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {store, isStore} from 'woby';\r\n\r\nisStore ( {} ); // => false\r\nisStore ( store ( {} ) ); // => true\r\n```\r\n\r\n#### `lazy`\r\n\r\nThis function creates a lazy component, which is loaded via the provided function only when/if needed.\r\n\r\nThis function uses `useResource` internally, so it's significant for `Suspense` too.\r\n\r\nInterface:\r\n\r\n```ts\r\ntype LazyComponent<P = {}> = ( props: P ) => ObservableReadonly<Child>;\r\ntype LazyFetcher<P = {}> = () => Promise<{ default: JSX.Component<P> } | JSX.Component<P>>;\r\ntype LazyResult<P = {}> = LazyComponent<P> & ({ preload: () => Promise<void> });\r\n\r\nfunction lazy <P = {}> ( fetcher: LazyFetcher<P> ): LazyResult<P>;\r\n```\r\n\r\nUsage:\r\n\r\n```ts\r\nimport {lazy} from 'woby';\r\n\r\nconst LazyComponent = lazy ( () => import ( './component' ) );\r\n```\r\n\r\n#### `render`\r\n\r\nThis function mounts a component inside a provided DOM element and returns a disposer function for unmounting it and stopping all reactivity inside it.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction render ( child: JSX.Element, parent?: HTMLElement | null ): Disposer;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {render} from 'woby';\r\n\r\nconst App = () => <p>Hello, World!</p>;\r\n\r\nconst dispose = render ( <App />, document.body );\r\n\r\ndispose (); // Unmounted and all reactivity inside it stopped\r\n```\r\n\r\n#### `renderToString`\r\n\r\nThis function operates similarly to `render`, but returns a Promise that resolves to the HTML representation of the rendered component.\r\n\r\nThe current implementation works within browser-like environments. For server-side usage, [JSDOM](https://github.com/jsdom/jsdom) or similar solutions are required.\r\n\r\nThis function automatically waits for all `Suspense` boundaries to resolve before returning the HTML.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction renderToString ( child: JSX.Element ): Promise<string>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {renderToString} from 'woby';\r\n\r\nconst App = () => <p>Hello, World!</p>;\r\n\r\nconst html = await renderToString ( <App /> );\r\n```\r\n\r\n#### `resolve`\r\n\r\nThis function resolves all reactivity within the provided argument, replacing each function with a memo that captures the function's value.\r\n\r\nWhile developers may not need to use this function directly, it is internally necessary to ensure proper tracking of child values by their parent computations.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#resolve).\r\n\r\nInterface:\r\n\r\n```ts\r\ntype ResolvablePrimitive = null | undefined | boolean | number | bigint | string | symbol;\r\ntype ResolvableArray = Resolvable[];\r\ntype ResolvableObject = { [Key in string | number | symbol]?: Resolvable };\r\ntype ResolvableFunction = () => Resolvable;\r\ntype Resolvable = ResolvablePrimitive | ResolvableObject | ResolvableArray | ResolvableFunction;\r\n\r\nfunction resolve <T> ( value: T ): T extends Resolvable ? T : never;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {resolve} from 'woby';\r\n\r\nresolve // => Same as require ( 'soby' ).resolve\r\n```\r\n\r\n#### `store`\r\n\r\nThis function returns a deeply reactive version of the passed object, where property accesses and writes are automatically interpreted as Observables reads and writes for you.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#store).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction store <T> ( value: T, options?: StoreOptions ): T;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {store} from 'woby';\r\n\r\nstore // => Same as require ( 'soby' ).store\r\n```\r\n\r\n#### `template`\r\n\r\nThis function enables constructing elements with [Solid](https://www.solidjs.com)-level performance without using the Babel transform, but also without the convenience of that.\r\n\r\nThis function works similarly to [sinuous](https://github.com/luwes/sinuous/tree/master)'s template function but provides a cleaner API, as props are accessed identically inside and outside the template.\r\n\r\nThis function can be used to wrap components that do not directly create observables or call hooks, significantly improving performance during component instantiation.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction template <P = {}> ( fn: (( props: P ) => JSX.Element) ): (( props: P ) => () => Element);\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {template} from 'woby';\r\n\r\nconst Row = template ( ({ id, cls, label, onSelect, onRemove }) => { // Now Row is super fast to instantiate\r\n  return (\r\n    <tr class={cls}>\r\n      <td class=\"col-md-1\">{id}</td>\r\n      <td class=\"col-md-4\">\r\n        <a onClick={onSelect}>{label}</a>\r\n      </td>\r\n      <td class=\"col-md-1\">\r\n        <a onClick={onRemove}>\r\n          <span class=\"glyphicon glyphicon-remove\" ariaHidden={true}></span>\r\n        </a>\r\n      </td>\r\n      <td class=\"col-md-6\"></td>\r\n    </tr>\r\n  );\r\n});\r\n\r\nconst Table = () => {\r\n  const rows = [ /* props for all your rows here */ ];\r\n  return rows.map ( row => <Row {...row}> );\r\n};\r\n```\r\n\r\n#### `untrack`\r\n\r\nThis function executes the provided function without creating dependencies on observables retrieved inside it.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#untrack).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction untrack <T> ( fn: () => T ): T;\r\nfunction untrack <T> ( value: T ): T;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {untrack} from 'woby';\r\n\r\nuntrack // => Same as require ( 'soby' ).untrack\r\n```\r\n\r\n### Components\r\n\r\nThe following components are provided.\r\n\r\nCrucially some components are provided for control flow, since regular JavaScript control flow primitives are not reactive, and we need to have reactive alternatives to them to have great performance.\r\n\r\n#### `Dynamic`\r\n\r\nThis component is just an alternative to `createElement` that can be used in JSX, it's useful to create a new element dynamically.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction Dynamic <P = {}> ( props: { component: ObservableMaybe<JSX.Component<P>, props?: FunctionMaybe<P | null>, children?: JSX.Element }): JSX. Element;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {Dynamic} from 'woby';\r\n\r\nconst App = () => {\r\n  const heading = 'h2';\r\n  return (\r\n    <Dynamic component={heading}>\r\n      Some content\r\n    </Dynamic>\r\n  );\r\n};\r\n```\r\n\r\n#### `ErrorBoundary`\r\n\r\nThe error boundary catches errors thrown inside it, and renders a fallback component when that happens.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction ErrorBoundary ( props: { fallback: JSX.Element | (( props: { error: Error, reset: Callback } ) => JSX.Element), children: JSX.Element }): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {ErrorBoundary} from 'woby';\r\n\r\nconst Fallback = ({ reset, error }: { reset: () => void, error: Error }) => {\r\n  return (\r\n    <>\r\n      <p>Error: {error.message}</p>\r\n      <button onClick={reset}>Recover</button>\r\n    </>\r\n  );\r\n};\r\n\r\nconst SomeComponentThatThrows = () => {\r\n  throw new Error('whatever');\r\n};\r\n\r\nconst App = () => {\r\n  return (\r\n    <ErrorBoundary fallback={Fallback}>\r\n      <SomeComponentThatThrows />\r\n    </ErrorBoundary>\r\n  );\r\n};\r\n```\r\n\r\n#### `For`\r\n\r\nThis component is the reactive alternative to natively mapping over an array.\r\n\r\nIt must be called with an array, or a function that returns an array, of _unique_ values, and each of them are passed to the child function to render something.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction For <T> ( props: { values: FunctionMaybe<readonly T[]>, fallback?: JSX.Element, children: (( value: T, index: FunctionMaybe<number> ) => JSX.Element) }): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {For} from 'woby';\r\n\r\nconst App = () => {\r\n  const numbers = [1, 2, 3, 4, 5];\r\n  return (\r\n    <For values={numbers}>\r\n      {( value ) => {\r\n        return <p>Value: {value}</p>\r\n      }}\r\n    </For>\r\n  );\r\n};\r\n```\r\n\r\n#### `ForIndex`\r\n\r\nThis component is a reactive alternative to natively mapping over an array, but it takes the index as the unique key instead of the value.\r\n\r\nThis is an alternative to `For` that uses the index of the value in the array for caching, rather than the value itself.\r\n\r\nIt's recommended to use `ForIndex` for arrays containing duplicate values and/or arrays containing primitive values, and `For` for everything else.\r\n\r\nThe passed function will always be called with a read-only observable containing the current value at the index being mapped.\r\n\r\nInterface:\r\n\r\n```ts\r\ntype Value<T = unknown> = T extends ObservableReadonly<infer U> ? ObservableReadonly<U> : ObservableReadonly<T>;\r\n\r\nfunction ForIndex <T> ( props: { values: FunctionMaybe<readonly T[]>, fallback?: JSX.Element, children: (( value: Value<T>, index: number ) => JSX.Element) }): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {ForIndex} from 'woby';\r\n\r\nconst App = () => {\r\n  const numbers = [1, 2, 3, 4, 5];\r\n  return (\r\n    <ForIndex values={numbers}>\r\n      {( value ) => {\r\n        return <p>Double value: {() => value () ** 2}</p>\r\n      }}\r\n    </ForIndex>\r\n  );\r\n};\r\n```\r\n\r\n#### `ForValue`\r\n\r\nThis component is a reactive alternative to natively mapping over an array, but it caches results for values that didn't change, _and_ repurposes results for items that got discarded for new items that need to be rendered.\r\n\r\nThis is an alternative to `For` and `ForIndex` that enables reusing the same result for different items, when possible. Reusing the same result means also reusing everything in it, including DOM nodes.\r\n\r\nBasically `Array.prototype.map` doesn't wrap the value nor the index in an observable, `For` wraps the index only in an observable, `ForIndex` wraps the value only in an observable, and `ForValue` wraps both the value and the index in observables.\r\n\r\nThis is useful for use cases like virtualized rendering, where `For` would cause some nodes to be discarded and others to be created, `ForIndex` would cause _all_ nodes to be repurposed, but `ForValue` allows you to only repurpose the nodes that would have been discareded by `For`, not all of them.\r\n\r\nThis is a more advanced component, it's recommended to simply use `For` or `ForIndex`, until you really understand how to squeeze extra performance with this, and you actually need that performance.\r\n\r\nInterface:\r\n\r\n```ts\r\ntype Value<T = unknown> = T extends ObservableReadonly<infer U> ? ObservableReadonly<U> : ObservableReadonly<T>;\r\n\r\nfunction ForValue <T> ( props: { values: FunctionMaybe<readonly T[]>, fallback?: JSX.Element, children: (( value: Value<T>, index: ObservableReadonly<number> ) => JSX.Element) }): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {ForValue} from 'woby';\r\n\r\nconst App = () => {\r\n  const numbers = [1, 2, 3, 4, 5];\r\n  return (\r\n    <ForValue values={numbers}>\r\n      {( value ) => {\r\n        return <p>Double value: {() => value () ** 2}</p>\r\n      }}\r\n    </ForValue>\r\n  );\r\n};```\r\n\r\n#### `Fragment`\r\n\r\nThis is just the internal component used for rendering fragments: `<></>`, you probably would never use this directly even if you are not using JSX, since you can return plain arrays from your components anyway.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction Fragment ( props: { children: JSX.Element }): JSX.Element;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {Fragment} from 'woby';\r\n\r\nconst App = () => {\r\n  return (\r\n    <Fragment>\r\n      <p>child 1</p>\r\n      <p>child 2</p>\r\n    </Fragment>\r\n  );\r\n};\r\n```\r\n\r\n#### `If`\r\n\r\nThis component is the reactive alternative to the native `if`.\r\n\r\nIf a function is passed as the children then it will be called with a read-only observable that contains the current, always truthy, value of the \"when\" condition.\r\n\r\nInterface:\r\n\r\n```ts\r\ntype Truthy<T = unknown> = Extract<T, number | bigint | string | true | object | symbol | Function>;\r\n\r\nfunction If <T> ( props: { when: FunctionMaybe<T>, fallback?: JSX.Element, children: JSX.Element | (( value: (() => Truthy<T>) ) => JSX.Element) }): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {If} from 'woby';\r\n\r\nconst App = () => {\r\n  const visible = $(false);\r\n  const toggle = () => visible ( !visible () );\r\n  return (\r\n    <>\r\n      <button onClick={toggle}>Toggle</button>\r\n      <If when={visible}>\r\n        <p>Hello!</p>\r\n      </If>\r\n    </>\r\n  );\r\n};\r\n```\r\n\r\n#### `Portal`\r\n\r\nThis component mounts its children inside a provided DOM element, or inside `document.body` otherwise.\r\n\r\nThe `mount` prop can also be an observable, if its value changes the portal is reparented.\r\n\r\nThe `when` prop can be used to apply the portal conditionally, if it explicitly resolves to false then children are mounted normally, as if they weren't wrapped in a portal.\r\n\r\nEvents will propagate natively, according to the resulting DOM hierarchy, not the components hierarchy.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction Portal ( props: { when: boolean, mount?: JSX.Element, wrapper?: JSX.Element, children: JSX.Element }): (() => JSX.Element | null) & ({ metadata: { portal: HTMLDivElement } });\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport Portal from 'woby';\r\n\r\nconst Modal = () => {\r\n  // Some modal component maybe...\r\n};\r\n\r\nconst App = () => {\r\n  return (\r\n    <Portal mount={document.body}>\r\n      <Modal />\r\n    </Portal>\r\n  );\r\n};\r\n```\r\n\r\n#### `Suspense`\r\n\r\nThis component is like `If`, the reactive alternative to the native `if`, but the fallback branch is shown automatically while there are some resources loading in the main branch, and the main branch is kept alive under the hood.\r\n\r\nSo this can be used to show some fallback content while the actual content is loading in the background.\r\n\r\nThis component relies on `useResource` to understand if there's a resource loading or not.\r\n\r\nThis component also supports a manual \"when\" prop for manually deciding whether the fallback branch should be rendered or not.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction Suspense ( props: { when?: FunctionMaybe<unknown>, fallback?: JSX.Element, children: JSX.Element }): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {Suspense} from 'woby';\r\n\r\nconst App = () => {\r\n  const Content = () => {\r\n    const resource = useResource ( () => makeSomePromise () );\r\n    return (\r\n      <If when={() => !resource ().pending && !resource ().error}>\r\n        {resource ().value}\r\n      </If>\r\n    );\r\n  };\r\n  const Spinner = () => {\r\n    return <p>Loading...</p>;\r\n  };\r\n  return (\r\n    <Suspense fallback={<Spinner />}>\r\n      <Content />\r\n    </Suspense>\r\n  );\r\n};\r\n```\r\n\r\n#### `Switch`\r\n\r\nThis component is the reactive alternative to the native `switch`.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction Switch <T> ( props: { when: FunctionMaybe<T>, fallback?: JSX.Element, children: JSX.Element }): ObservableReadonly<JSX.Element>;\r\n\r\nSwitch.Case = function <T> ( props: { when: T, children: JSX.Element } ): (() => JSX.Element) & ({ metadata: [T, JSX.Element] });\r\nSwitch.Default = function ( props: { children: JSX.Element } ): (() => JSX.Element) & ({ metadata: [JSX.Element] });\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {Switch} from 'woby';\r\n\r\nconst App = () => {\r\n  const value = $(0);\r\n  const increment = () => value ( value () + 1 );\r\n  const decrement = () => value ( value () - 1 );\r\n  return (\r\n    <>\r\n      <Switch when={value}>\r\n        <Switch.Case when={0}>\r\n          <p>0, the boundary between positives and negatives! (?)</p>\r\n        </Switch.Case>\r\n        <Switch.Case when={1}>\r\n          <p>1, the multiplicative identity!</p>\r\n        </Switch.Case>\r\n        <Switch.Default>\r\n          <p>{value}, I don't have anything interesting to say about that :(</p>\r\n        </Switch.Default>\r\n      </Switch>\r\n      <button onClick={increment}>+</button>\r\n      <button onClick={decrement}>-</button>\r\n    </>\r\n  );\r\n};\r\n```\r\n\r\n#### `Ternary`\r\n\r\nThis component is the reactive alternative to the native ternary operator.\r\n\r\nThe first child will be rendered when the condition is truthy, otherwise the second child will be rendered.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction Ternary ( props: { when: FunctionMaybe<unknown>, children: [JSX.Element, JSX.Element] } ): ObservableReadonly<JSX.Element>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {Ternary} from 'woby';\r\n\r\nconst App = () => {\r\n  const visible = $(false);\r\n  const toggle = () => visible ( !visible () );\r\n  return (\r\n    <>\r\n      <button onClick={toggle}>Toggle</button>\r\n      <Ternary when={visible}>\r\n        <p>Visible :)</p>\r\n        <p>Invisible :(</p>\r\n      </Ternary>\r\n    </>\r\n  );\r\n};\r\n```\r\n\r\n### Hooks\r\n\r\nThe following hooks are provided.\r\n\r\nMany of these are just functions that `soby` provides, re-exported as `use*` functions, the rest are largely just alternatives to web built-ins that can also accept observables as arguments and can dispose of themselves automatically when the parent computation is disposed.\r\n\r\nHooks are just regular functions, if their name starts with `use` then we call them hooks just because.\r\n\r\n#### `useAbortController`\r\n\r\nThis hook is just an alternative to `new AbortController ()` that automatically aborts itself when the parent computation is disposed.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useAbortController ( signals?: ArrayMaybe<AbortSignal> ): AbortController;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useAbortController} from 'woby';\r\n\r\nconst controller = useAbortController ();\r\n```\r\n\r\n#### `useAbortSignal`\r\n\r\nThis hook is just a convenient alternative to `useAbortController`, if you are only interested in its signal, which is automatically aborted when the parent computation is disposed.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useAbortSignal ( signals?: ArrayMaybe<AbortSignal> ): AbortSignal;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useAbortSignal} from 'woby';\r\n\r\nconst signal = useAbortSignal ();\r\n```\r\n\r\n#### `useAnimationFrame`\r\n\r\nThis hook is just an alternative to `requestAnimationFrame` that automatically clears itself when the parent computation is disposed.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useAnimationFrame ( callback: ObservableMaybe<FrameRequestCallback> ): Disposer;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useAnimationFrame} from 'woby';\r\n\r\nuseAnimationFrame ( () => console.log ( 'called' ) );\r\n```\r\n\r\n#### `useAnimationLoop`\r\n\r\nThis hook is just a version of `useAnimationFrame` that loops until the parent computation is disposed.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useAnimationLoop ( callback: ObservableMaybe<FrameRequestCallback> ): Disposer;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useAnimationLoop} from 'woby';\r\n\r\nuseAnimationLoop ( () => console.log ( 'called' ) );\r\n```\r\n\r\n#### `useBoolean`\r\n\r\nThis hook is like the reactive equivalent of the `!!` operator, it returns you a boolean, or a function to a boolean, depending on the input that you give it.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#boolean).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useBoolean ( value: FunctionMaybe<unknown> ): FunctionMaybe<boolean>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useBoolean} from 'woby';\r\n\r\nuseBoolean // => Same as require ( 'soby' ).boolean\r\n```\r\n\r\n#### `useCleanup`\r\n\r\nThis hook registers a function to be called when the parent computation is disposed.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#cleanup).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useCleanup ( fn: () => void ): void;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useCleanup} from 'woby';\r\n\r\nuseCleanup // => Same as require ( 'soby' ).cleanup\r\n```\r\n\r\n#### `useContext`\r\n\r\nThis hook retrieves the value out of a context object.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useContext <T> ( context: Context<T> ): T | undefined;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {createContext, useContext} from 'woby';\r\n\r\nconst App = () => {\r\n  const ctx = createContext ( 123 );\r\n  const value = useContext ( ctx );\r\n  return <p>{value}</p>;\r\n};\r\n```\r\n\r\n#### `useDisposed`\r\n\r\nThis hook returns a boolean read-only observable that is set to `true` when the parent computation gets disposed of.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#disposed).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useDisposed (): ObservableReadonly<boolean>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useDisposed} from 'woby';\r\n\r\nuseDisposed // => Same as require ( 'soby' ).disposed\r\n```\r\n\r\n#### `useEffect`\r\n\r\nThis hook registers a function to be called when any of its dependencies change. If a function is returned it's automatically registered as a cleanup function.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#effect).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useEffect ( fn: () => (() => void) | void ): (() => void);\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useEffect} from 'woby';\r\n\r\nuseEffect // => Same as require ( 'soby' ).effect\r\n```\r\n\r\n#### `useError`\r\n\r\nThis hook registers a function to be called when the parent computation throws.\r\n\r\n[Read upstream documentation](https://github.com/wobyjs/soby#error).\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useError ( fn: ( error: Error ) => void ): void;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useError} from 'woby';\r\n\r\nuseError // => Same as require ( 'soby' ).error\r\n```\r\n\r\n#### `useEventListener`\r\n\r\nThis hook is just an alternative to `addEventListener` that automatically clears itself when the parent computation is disposed.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useEventListener ( target: FunctionMaybe<EventTarget>, event: FunctionMaybe<string>, handler: ObservableMaybe<( event: Event ) => void>, options?: FunctionMaybe<true | AddEventListenerOptions> ): Disposer;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useEventListener} from 'woby';\r\n\r\nuseEventListener ( document, 'click', console.log );\r\n```\r\n\r\n#### `useFetch`\r\n\r\nThis hook wraps the output of a fetch request in an observable, so that you can be notified when it resolves or rejects. The request is also aborted automatically when the parent computation gets disposed of.\r\n\r\nThis hook uses `useResource` internally, so it's significant for `Suspense` too.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useFetch ( request: FunctionMaybe<RequestInfo>, init?: FunctionMaybe<RequestInit> ): ObservableReadonly<Resource<Response>>;\r\n```\r\n\r\nUsage:\r\n\r\n```tsx\r\nimport {useFetch} from 'woby';\r\n\r\nconst App = () => {\r\n  const state = useFetch ( 'https://my.api' );\r\n  return state.on ( state => {\r\n    if ( state.pending ) return <p>pending...</p>;\r\n    if ( state.error ) return <p>{state.error.message}</p>;\r\n    return <p>Status: {state.value.status}</p>\r\n  });\r\n};```\r\n\r\n#### `useIdleCallback`\r\n\r\nThis hook is just an alternative to `requestIdleCallback` that automatically clears itself when the parent computation is disposed.\r\n\r\nInterface:\r\n\r\n```ts\r\nfunction useIdleCallback ( callback: Ob","readmeFilename":"readme.md"}