{"_id":"wohoox","_rev":"29-ef9ace4df82acfb0f8b611f7ef4270ca","name":"wohoox","dist-tags":{"latest":"1.7.1","rc":"2.0.0-rc.8"},"versions":{"1.0.0":{"name":"wohoox","version":"1.0.0","description":"Reactive store by react hooks","main":"dist/react-hook-store.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/woohoox.git"},"homepage":"https://github.com/pzxie/woohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"db6867b073dd84f209162307e4b4a70f53b88041","bugs":{"url":"https://github.com/pzxie/woohoox/issues"},"_id":"wohoox@1.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5lota3Qa/4KOfyU2ezcZ7DkUW7x3zyoEgYGawae+aJ+40/LaDkb1aPVMjm9GgMGtcqJy8Usm5R18CSdMMBW5zQ==","shasum":"e21513c24b0d51ad5b731a67d292d57bc61aa8fc","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.0.0.tgz","fileCount":10,"unpackedSize":18080,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoMo/cWOpLKUkzGPYk4bTznhCRcFhRmjUOKKZeWN3aFgIhAL9pzJjqLpoSK3+ybF6QH2CGeeBtXOCG1egsPIHurP+q"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjThEdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqeiw/+K7gO7d4Oa8+7b6sgF4Fka4fBJluS/5CHpbVD6XKsLiu/0X5u\r\n3o0iee+Ie0MiUGW1qb4BrTF1Q2LY2vitpFvfAhQHbPZjFuqSSmAXxmQEhEe5\r\nw7o2IN6vVnAt4r7eVo753uUnGYEFthUlP+PK/GxL9XRXCfh1RMditT75tMkp\r\nc5Ousr1CELFEhZ06iuy8Q0d7ovgkw5GNGOwoKH04H+xjHJ4YATq1+PwcA2O+\r\n0qKWdRdM+aFT3rG74dPLPv3OQE2LEp6CQTPD81INpYPoguOtyKDrCytBqJU9\r\n6MLtQMRoHTE5FC3miBcSlWd9P+phBzkydSZMR7bBMNhKbMh2Y5W1kVLDnhvo\r\njXuBEoyHrhRULkNljOAaUIJzdIcMSScsVgkNgvOLx/hYna/w1u+hmh/reBdI\r\nI2IT3mTKcZxE0gzdEkWkc7uyiZ/Mw/W/Jx4jyIEnmDR+WkWgCE4XuzUXb6Nv\r\nl9yjelTGIiHuC4c1X7/ji7y4rUmFHw7tQrVlDhlnn6z2U8IqD3I44SB3WYIp\r\n8bUBvLTMjneMnq9Nd2+MmmAYmCl10MZFI3/IjEOj7JIfelOG4vBnvF3G46pF\r\npFDvqlAHBy7RmoLJ80Vw/TikMGboaWiuV53m4bh6fFyAHkUv/p5L2F98ZXEn\r\nPz+B+s4B9KtB15px+umAhTAtz2xWg295so0=\r\n=B/J3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.0.0_1666060573679_0.3011431268701654"},"_hasShrinkwrap":false},"1.0.1":{"name":"wohoox","version":"1.0.1","description":"Reactive store by react hooks","main":"dist/react-hook-store.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/woohox.git"},"homepage":"https://github.com/pzxie/woohox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"0ccd2459e1cb41a8afd71541e9475abf58bc8a29","bugs":{"url":"https://github.com/pzxie/woohox/issues"},"_id":"wohoox@1.0.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-w3Bz3Umi6TLY6Ibi5fzF7xuwiSXyAg+vk+crMXc8PWC+B3tL8BNoWnIEsUhzNf3s5rdnMNloUt8W6s4Kgs9nVQ==","shasum":"064f3c52d442b4907323215348674c4f9e078eb8","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.0.1.tgz","fileCount":10,"unpackedSize":18086,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJ+rsj5oyxS/8Lpqs5bV0kzhUd8ZnFYbP1IZzA25GKoAiBK1QWSwqwOiZ+9DZRj50Zlv+LMz0DnEPMgak+IMgQ2Hg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjThSXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5IxAAlPLV3lakygHp0ojY4Umhw/xwgLbeXB/RkeztmpXRszXpG0PV\r\nlaKy6zIOX/5Jd6lTodDhiQH/g0BKOYDHz07oe4kbhPysqm8KCKmWMgcP64p5\r\nHTuIix7WIKQVU1oObrIapoJ3+54+7T/gNoT2EvVXJ3uThOEp78rxlqC3wEmY\r\nT7CfhM8fiyphW0ABn9iSCjGfeX+WOfcwQUzGyYlQ1HppnZF+BlMqE7JIG/fH\r\nC/KtHKRy5SdccdDyY8OLhv5gYdwaSQ68i96eiQ+pVQjLFJ0QpTenO8KyyLbA\r\nwV6Sbi4O/aWb/W8o2KcKxjexhrD/CSLq7ACSNeuKu6lGvaD0WMwMlW5YWODZ\r\nEsepo0FInLOv2PI63rJVl0Y3u6/f/G0gS6Pi9HGRLXF+wOHwwQl81PMysfWG\r\n6tdbvYI0AuxdRBQU+/AL6XsdhsRbiK42tEtSXXp2WYk+Ajm9gbUGkEZDerlH\r\nq8XUZ+d6FluWUroEFmLb9oPflAdLz/iI/tHpgb/6vKlsKLxRccJVtch9sUeX\r\n2WqGqAxVnieMMq72hqhpPU6R8ke2T2rGOkfDZ1MjclcfdwRDtpAm5Ozpvh05\r\nc6bZZ9BGZetuhSgRB/2j3z8NDRo4uOfhU33RfXRPbrvCaftxn/CFJAoNJNTG\r\nVWUJ5bMSiElekPK6tImcfByDyKk/hYL6gc0=\r\n=LKo2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.0.1_1666061463454_0.06231166338517791"},"_hasShrinkwrap":false},"1.0.2":{"name":"wohoox","version":"1.0.2","description":"Reactive store by react hooks","main":"dist/react-hook-store.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"304b44fcaccefb2762dfd59ab316cec9ff810f20","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.0.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DxUmYzHsL2d5zyfociW1A+OrRzxWSJpMGmlvHKzTLMqRGXBy+FUFdvCL3sRSK0VbPpem8NmjpasM9QtRc2clTg==","shasum":"a04e897d8354414aa1c401c5c21623b1bebceb53","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.0.2.tgz","fileCount":10,"unpackedSize":18086,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKmci041w+IyFISRZmwRVlpar5/rPtF7JawPp2lxVwFgIgcg9sw1XjCuEFtTGJDJGg311cTpwxjBGOjFyx2e2LUBs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjThULACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqang/9EHsuJ+NBwTyh/74+8Q/FSdyNHGr/smtzYBpOPnPDTslIgKfR\r\nbXbcbciQhTgb5Fp1yOvCmGP31TRL2rl6XAGEi5wuDdb9IbHHcZgeWOd/Bw7R\r\nPe+FIJ2wvwi4AV4o8+joYUL8IkDIQiUzYlTPWaF7S1s1G51lCW2P5Vg/agpJ\r\nMf3okkmAuNxU76xdCAXYgfkUJF/qNO+bX92GsR96xK5FEWzh+Lb3nd21Un9R\r\nmwEZvX1vRca9RhS/OcGXysLPeVuIAUunSle1UEK1bh0v9yCwlQ6aVsqYWPA5\r\ntZHT/i6bE64QDMg4unaf1CJC9bx/TLCfJhgZgAr/m/8gXDziwwlrMzJ80mRl\r\n51FBPfGzUSHgF1iKjXsuCx3bhmsLZi2XNW98KA9VQ3a5XPOPgVY3UkzmXbPK\r\npcH4AGZNo1+gH+6g2NlhzU7hx04fwXncoOjxxcZyW7mlAHhF+fN+ad9IRzDv\r\ngSZKqU/mFrLUubqPZJng6mSs/q9lzHY/+yWHsnz7yYpE5eCmyuUHvfj+4DCP\r\nfJDscfeMVE1bvbgoA95MqnfHIoLXEEQTbChm0tYIvh5YF3TzkyJwXTjbT9EI\r\naCmPA8NmY0ZPBCQxw0KqA4totvAZyKq/zInKSoOwzpqifYTIWEySepwatHZi\r\niow7m5aWiDpniXYaw/k1KUFYcihWK7xtV74=\r\n=0+nW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.0.2_1666061579607_0.7765652571469059"},"_hasShrinkwrap":false},"1.0.3":{"name":"wohoox","version":"1.0.3","description":"Reactive store by react hooks","main":"dist/react-hook-store.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"da33ec5e5978c700db65f38b6f70c2fa36e8fe3b","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.0.3","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r16UEKKuiaq31QH3BdBGVWN5kVed8FOOEusQUp6reDOrzw3eaSLn3eEnKwmlZPrQ+l/xyOB3aMpBTjqbWHNCow==","shasum":"e7b022745d675f4ebe01bbce3b8dfa0eb63e6c8d","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.0.3.tgz","fileCount":10,"unpackedSize":18054,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCH0cH+9x+cYqzkHu3FC/DRBXeSwSsG8gFta6ZLZbuCo0CIDpG/4bp23ZZI683DdvlKKOfS/cApNTyneCVGeVvM8R5"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTnSiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIXBAAkQuNl1No4NBkVVEXfAEoziuDKgYtuBQJqxhUtPfFbwWA4tpv\r\nAWVxcrIhwJotpUetts0aM0HRD/3GdnhkVzi4kpPjmjSZByuoZdy3k56/e6dw\r\numUqgzx3T8ymafWpyB1DJUIZgH4KqDNSSksiNubUtWTCTweCbUc2XWfNFdn6\r\nrMUioWw/NTeWetqje8K6g1AVGTwNSF0//TgmsT/LnN/p1iKLnWiPiP6mei4T\r\nd2lrseGOYVeK/9RSn/U5Dp+53HDKB4CBfMU6pRCuSq1aFTfPsahTS5cLQjwR\r\nmLYJfGI0Ep00XOWKn+aWlF3wB7ed49yHuWj3+DHnaWJR7xvgp5TyJuLCF6D4\r\n9/duRWEP7zqkqJFT5jA5HW9nU0g6FrUpEkRuvPPrBj3S8n1hvXDOOXeCvuPb\r\nGelM2GH5wAhBuOVmeVkmAUgl6vso0ltwUbufDB6KdTzZzWk/Ti2gxv3cDJYw\r\nZtwFwrbFq4xTuV5lKTgNismlwULnzwevIQazM7XW4ePeZNl3B/IIN4R3TrBt\r\nXVH7AGu0VPQZiguLLLL/jsKY/ktGYJkr5BgJ/3M1CsV1u0VPZr0BnFAN3/6q\r\nG69xVf6+zL/Xklfo6du51rvQCoQzBa2BUX8TxbwEzBg80lvEyRVrfAtGjmdd\r\nz44EwPML1hMQw6/gwdr45rMhEce5q1qh1IQ=\r\n=SBIC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.0.3_1666086050332_0.9616374298668064"},"_hasShrinkwrap":false},"1.0.4":{"name":"wohoox","version":"1.0.4","description":"Reactive store by react hooks","main":"dist/react-hook-store.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"a034337443a5d62a7dcb33e5f7309db176f33ada","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.0.4","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pbZ354+ZZd+6Q95d7PUlyqSDRYkuzSNBLovw7GRjTLDDF/UM523HC7WDl39jDiI2xN0kQXma5uZozHpLR5N5hw==","shasum":"0203c48320c7520936fd18a085ef9c0d35104183","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.0.4.tgz","fileCount":10,"unpackedSize":26448,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoCM9qqZXDxvnNwBtPQyaQXVvr7enG0L6p2YW4ziom/AiB0r47+p3tf+XW3mg6dqI/Tn0N6sC84hASIPDMtrPvNmA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjT6tiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmowQA//UTTK+3STJvKh/YGSWpR/2bzT0oTTIKxINFoMDPDhaUhRnZCt\r\nc7ZExY4MGk8wtzt4GrSrjc77f/DDBrxhQZ3wAmJnn04JPZ2H+FtVJ2AyXsAy\r\nS9NEBiJ5+JKSvzf5K0wTpAEgl+Qs89GTIi2kfrcEoiXQA3f6QilVMtTUDBpb\r\nxcNdTgF8bkPDi/ko2D7lrp6YtYVreL4S7lCeHymSx4abPi3sJg0ywhor6KoQ\r\n/MhFycd2wvQ5MbqDUdmR3deN4M6Q+bBuOUX4DvLRn0K1CRsv/cPgAOOCZRfY\r\nGhaedem5qdi5F7Ae5jv1URmvsIJQTLZPgKyu7oXyT3QUgOkM+Tqs9V8Kn+t3\r\nUmVnV9Om5Gaal6jDoSY8qJPNJePSLUwSkAgLGrCsylajnfEo7QKn9uN2j6LU\r\n3Ao+MCMPrrT4zplYQ6BetFbwOgvoNodNh6+QUJ9v35MhfmNcVT0Sz2lm/YDr\r\ndsbHhNu4RCvYNc/lR/mzQcZevMCxJkGdD2edEE/zr6vTSMOuEl8Ut/wUCToy\r\nG4e53NOgfvgeP8wtgZv5YHUKCXu0plN8UKINzax3Vox+V2DD63GVtfqnPCou\r\nTBNIIRURLtAjBT5WuLn7ub037FZ2NZsvq1ElZCKoX6QQ+S6FzM+IopIgsJut\r\nMvrXdKNA+atxTBMs9ARRWkfdLCFpPxYcr1Q=\r\n=YYyd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.0.4_1666165602400_0.07052310564521602"},"_hasShrinkwrap":false},"1.1.0":{"name":"wohoox","version":"1.1.0","description":"Reactive store by react hooks","main":"dist/react-hook-store.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"b09e576117746f395fbd31e15197128ca36d63ed","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.1.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-618zT9yKZCOhHRMoIaY8fnczhTT8kbeZgvBor3/VR/0V8HCS0jFS9ugM3lYxfLvEz9Jr8nTdANyuWM0zBEs5vg==","shasum":"56d0e596d248ab025d26b8c6c77f68c8028ff9e0","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.1.0.tgz","fileCount":26,"unpackedSize":1122842,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWVkVOeeDC2/RtqZgzi167gcNLI6ke2BexHELPMJdiZAIgEhunZ1bW6nBjMWBDk2JcUEdhR4DI+rOqFESiIqwLEok="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUPNgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqsWw//QCKaP1/oU3yQQt1Fn9fSTLzjyWnTc4IhulJb0gBEOmmyDJUZ\r\nj9FFAxShh6x7p+g0npc0qEgjdqGuZm6fsFm7HcKvpcs99Cl/NYRaGwu4EWLU\r\nRnfc232mHuWXthQoc9D07/rJj0C39KX4DMOpHujiAX5asZ0h26//vwUTSzS1\r\nh2/SZOkSRGwawoI5gFyqW90GlWyj64upV8NwL9piCC3ku81elGudV/oI6bwH\r\n/emL5BTy/yUK0YV03pZsXvXLDogU73lYTFvbSKZ+GJoHBzCmY68xTzGiI9vw\r\n1sDAXseWlhNRzO4eAxgCPVmzJQogIsRvWAkDjUWJG/w9X4pPQ3Uefi9gLWmb\r\nkQ78jSJCEyPNfdSTwepkaCUveorXY93qsOFMsICFxWnCbpOr14aIDAhldsuO\r\nTmoZdkrIN80HGASZUKjkH9EA2ueKCfrlplamyKh9CO3l5bnY9u3bUoSELCbf\r\nLcYUrbGLhNoiYK/s6KEJRwhm8ZeAvQeo+6ofwnyO93kL/g3uTGKcYe7L4hV/\r\noyAG/c204IXUzAweL4lXu6mJn6fpX5BrZ6upIdd8j5DFvqsG429dgbUvviAz\r\n0W11/+SwOlE8OZTZVT06oUQBUUxe6HTFuUQpU3a8FRCkhLU6k0zdkpOzlDlN\r\nqa0U8iz4VEpTdOAFmnGSczJxC82LvJC0LoQ=\r\n=e3iI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.1.0_1666249568584_0.3169979986925564"},"_hasShrinkwrap":false},"1.1.1":{"name":"wohoox","version":"1.1.1","description":"Reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","babel-loader":"^8.2.5","fork-ts-checker-webpack-plugin":"^7.2.13","react":"^17.0.2","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"db194531c605b0bb9e9924bcafcee9b4aa77b0e2","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.1.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-U8F5GjE+USkf2g79InTgWZPj2z8uEP7ky3J1T+LHEmx/RDfZMCw9KHDUUsqZtRMD+1MP5+DYy507Bi1v0VL6Wg==","shasum":"b2558b0bbecdc3aa68b39206d8e83817eee9d551","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.1.1.tgz","fileCount":26,"unpackedSize":1105301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBaKXnyMCTuDVmxyWUXr7oVLu7RKGVLbUN8NWbWzqzT5AiEA29hamreFo6Pyh9tVgmh4N+P9isABI2nNxWCPYiUXhxM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjWkjLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrk/w/+Mjq/yqABk1p2TxEOfSvczcp+6UwF9MoKE0x+d6bl1tGTvHNy\r\n1dpd1PkA/5LH583yowCONEV1VC/JLhdIgPjmkYwkAcmGI3x0FwcCknPHeG1R\r\nbHhA+qk4fzSWZAfO/LIEC3cicOYRdM6+UE43y+qTYNYViO13pRpykhm6osXI\r\nRIBCVcovWR+iN+C960LKtB64/y/CK07bSt+cmWfO0hhaGncFlfAshx5S+hK9\r\n6BtJiLAgWgUWHGAJfHfqK6dj5U/2aTbWnLyLZPqqTeyy/ms5D9rATUdmv9f6\r\nBDSb9MVCPqPeEFlRRtR8XAUghom1N2jQhoDosObIS4+/K0KTkpg5JlAsAXN4\r\n0t0765m+LGPljBE2D6hUMIpIPTOm/MoP9Qi1AhqnkXH+3n6yfNhBsF2IdpQf\r\nxUT130PfCG9zda+i3c52wyPpjydQ59WmpW7EHnqJM0RNz1gM4D4xdBguM9ck\r\nCXMomhRQkBRSnNKct11p3ET1iAkKJmdmIs/mYppfSGxQQoc7fBzY/Z0HAQ8e\r\ndfdSzblk4Sshq1fy3kBPzlJFlotMwvKYU1s8u95xqNCz5cQOv1TQeZJve0ZT\r\nwK3MKFUIg0SFB24G2C8vE3GElk2UcIaHdp578QeowjH+xnStufiwjvyl0/5C\r\nohtDMNGJ5GuVVZbN99y0XERIhuwi4NpbmJM=\r\n=J4Ni\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.1.1_1666861259354_0.014438570957958419"},"_hasShrinkwrap":false},"1.2.0":{"name":"wohoox","version":"1.2.0","description":"Reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"b2b6e684f87827f0adae72adcfd72e135e1cbc58","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.2.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DL3veyq+NCp7q5kuJVVKchylfI+tYollbJwX4jn2/v6iwzRnOYYDiGxXPwe4izvJcwZkJ35sKR2qOO0guXJcxw==","shasum":"5869b0bae9a3906de1b532e4a9dc8f78650d7ee8","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.2.0.tgz","fileCount":28,"unpackedSize":1106704,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqOWEjOYCFjIisAuzuEZBZlqDx+FpgtKJwB8rjeF0qVAiEAu+FTimffUW3gq4gDYARXgC4OEtCxtb0+y6CmOC0iEeg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZPLuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAAg//YLR4w8wzSQQGtxeD54tifCGGq7BiEigZhkB65IzEA8/mQ0MU\r\nFjBdzK6zUf1j4TYG16vwLe/JzYCuo6PfSRlwzgOQEe9Luu3fQCelxPfkESRY\r\nmjv9bmCZb9hiEAE2Mq8S/23YJ6nFMQ0o10vMT1VqXK6MkYjewnkQ7ufFmvlg\r\nxxkK9oiZR6jnXrYxxbN6sx8eq3+lG9eyBLS194I3HerBtgyULgI8xh0x9Dc9\r\nKHlMxjGJC99vK0rvOTrkFfFeOElvW5yiml2ZajTEYzDPrFxkW1c6Qoi/BsGg\r\nm3v7UT6m8r8mquNQHS0fISFOQcdyQ+BS24LTh0Iyju7Ashc0nW3/5agLh74J\r\n3vH4ZnGwCaA7hvsri9Gzsl2tv/oCN34pIXMggeKTkso7U5BOZ+gMwFqTh8KQ\r\n17PgJS8ji858PmpqRZ1gAQ7eeowhLM0PN0PPIF7PFO+JI/dz9241F+Ib89qx\r\nJ3iMw2nPcM+Rs4VP/RNhEwkrkAYqzlVArWx4DRsRlvv8BCTW6cxL9WHff4e2\r\nvoie4xkOWexgl3cTvGyiEuOjtTo2P0d+mLzoyxFWhtT95HZHqHOmAUeHw1aY\r\nLq8lCuC0Xj2bTaNn/+fWVMh8K1AgU4iLl7bDXRnVVB2FYuAUpeqbW2hra4Tz\r\nQ/3oygw8HU0X/5PlwzFiQwSor2iWZh1SWEI=\r\n=+VlI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.2.0_1667560174266_0.9158286194735401"},"_hasShrinkwrap":false},"1.2.1":{"name":"wohoox","version":"1.2.1","description":"Reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"f99e8105cdcf44aebf32566ac25c19c4eee40029","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.2.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Z83Dxj/K2Xkdyj1+chyzk286Om34HT8vAK48nImeSvHZqel1KrdbJDO09MHIeBK+5/8rPB2hYZAKGgyYm1voOA==","shasum":"f06f6e7d50567849d073fb7b3e3dbc8a4b88e5e5","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.2.1.tgz","fileCount":28,"unpackedSize":1106680,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhJ2o8m9Pc42IDUenM+NDp8p/LMTTtyppEM+4NSVbuZAiEA0DFn7CgV2dH8sgOT+OOkAdttKjUajHR9HXzh1O6W9/M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZPWSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjpA//bjgOx3n7qSTgmshNgCFS3mrdF+lXGi1mQKRle1Wh6EYIRyYy\r\n/L13DsI8gbZbxMHN4RfZi6aHBcF3O2l5lSP0TpH/7iYr5XA/wRDswPPwyU7O\r\nn94S3HnGF5CNmA/r2F7sWdRvudiWa7/r2sP98QExjIYPGi/hazsf9030CapV\r\nlMBnz2+xgcTpd1zKNozOE57ZhdExFkoCJfrp5yS5ImBO5x3vVbhkDX/jnZLL\r\nq0eXVGZUQmehSFQwThJX0wo8k611DUHNE4/4IqP/DxMH7wzYYvQeUgIir0p7\r\nNWuUz0D23Hmlg47WiNPE7tyuEvQbFXsMeufXi+CjKhmyxL0GEwl53KPynpT2\r\nElpSwLr1HQgccuyiqHXTqxRib9M9fnygFyCo6DjWKYjmnbIRD8V9NH1cvRwu\r\nMWSysO4m5Ka2n1G9Z5FkoNDeMOs3Tlj1M5VaOxluTB8AvpvknlLeTbBf86bJ\r\nYHnSf8BO4TkvBwdGa0CDONFWVoBwA9hYKtaofwf3W28lTqJks2Q/SpBPj4y3\r\nJrrOMo2IuVzdMvBFsw5+8DHzuRgE/wdcI2tdX7hYGSYxIzRC6siUBhsgFBzb\r\nP+V9LepLoQYc4XJndF66+pM/pkvmoY0VrfCJCrbSi4VFdgJgPZBAvBGhXQ2s\r\nx6CH6t00gOwK+KMf7/A5m4n9Knka+B5jpd4=\r\n=CMTQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.2.1_1667560850284_0.5769771054648671"},"_hasShrinkwrap":false},"1.2.2":{"name":"wohoox","version":"1.2.2","description":"Reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"f719563f38f671101da35edd56e80dc6dd680d67","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.2.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Q1WwFJ+tHD8jcFD1f9gOUlDlfUegJMwI+bXQSaee92wos0CKGMEXLix4EAdDmgaOMD7vXKq/on2XsU3fR3a1XA==","shasum":"811bf36b3a37a560431f0df13687499fa50019c8","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.2.2.tgz","fileCount":29,"unpackedSize":1115981,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUyFgWopsQzSawCI8i1PF5mY7qE01tq+ipqunLGpTukwIgDLNe86s7ekS+TYyNcSlPgdLFiKZcH6nSyof8gKVvnnQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjaideACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1Jg/8DQ2mxPJzrww6qkOwyDjS3QeUFmHcL1ChFMNxza2wgWIbLsH8\r\ncutLV6TJ4GP1gflYZAFMyGPIyll20lsbBugu1tcGBp9/Pgx8IoB5/h+cbc83\r\nr96gLQzjeNE1XgReg0qTpw3APaH2cvt2np7cRWNKvLztd9Z4RoqMGUGHoETQ\r\nKijv4UX2ASsSNvH8nr8o0R8Z5gMTtS17sKZXSToI/jrkQSFEWKrbjA7tROV5\r\nBQbdgF9okS+uRQanbkmvHw7MCoITuW+gSGMlJ3OpLyqeZwcrfUWElsNeCyu7\r\nd3iq+P+1w/qCYB3u8S5u15E3aivK8oibDNK/rwbXUWQj3yyG02bPpjx/DUCf\r\ntVo0l2rcaq3RQnX+gnkK9+KZ9tN+Ja/V2v3kWzg+BWIFv0593QviR9aq0kaM\r\nC83YKHezMD/zpxb7ZPWCLnSG9YUcGQvcNWrIJiOui90qAHndzbZi4MunDLY8\r\nnr+zl/1s0Xf8BOta1rtM3mpXXPvTqRbPG+7VYnxoDena5gWVmsbMHTRSGOmA\r\ntgTUGkjM0ZMUKV4GTFGZw34RxdMNw7nMZPFzNDopRU+hXsr4b8zRTd6XRYK7\r\nUj7eQlzACy7STkb63Dev82XJ15RzCDVnKZjaFMRS2ev5WYLPIH33bPiDoqYn\r\nTQUXpjXfoPf8ZaGSR6B27ysiDB6DC8Xc9Qw=\r\n=w4yD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.2.2_1667901278345_0.7167544479468315"},"_hasShrinkwrap":false},"1.3.0":{"name":"wohoox","version":"1.3.0","description":"Reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"1f4ee0f2c8c20f42ca3eba8aed56ed760816022c","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.3.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XqQU6d3LsD002SgtVrqkR0+v1DAZjAMwPMlFD94SiGSn5mhw81/ShaylXtx/gM42k6ty0NWYi5JtFsNHua9btw==","shasum":"0b1eb5af55d710564bfbe32725c4c53da29024ff","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.3.0.tgz","fileCount":55,"unpackedSize":2364378,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ9HGjjSf1FIlkaeY7HjLWp6ZdSLvm73R8owN+J0PPmAIhAPOzilDrLRnetPuM+VGnienwgR2/iG+kp70bR+X5uFjZ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjb6niACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrmJg/+JHqbYCY/JVybhh0cjvxLbQqDeu8uZhzA6R7najCNQUiQxIBn\r\nuMZwqWo+nXW5hitf0ixirZChUUlgrl+jqoGaahjB55dpJBYym1ZJLeQX1zny\r\nELbBuR015epV0h0OGDTkJh6dsRnwqq1tUDGwEbYfUb8MutJYe6AQWHfuYx2w\r\nRCz0P3Y1/5e1nSzIHAMyMyu2cZRgwAQLaOn9LqyIvk/PJAjuKLZti969UmBV\r\nqeAFP+EqitA2tg3c1hffJVK7OlYSWAZoEFGWBZ1yU4r9eXjFNxYwUj1lkeTO\r\nRtioE2yMVmi29wbOpucBX+egPZJwNgWXaVMiJIS0mJm6uj3bV+SAf8LNF89N\r\n/4+zssLm/pj6/onpTPx0Qi+EiNEYaMgiIiH5OAykzYHBrqv4A+Ky+NBbqOzn\r\nOm7r4+aPJAlZxOkxsRB//cFFIgypYlkyB9P61zHvrRQofGLyU3pi1mNyfrdm\r\nvChTztfXuZKg6RPqf3b6QrPJ+NaZwsyAbL8to6nN/qgxWpJr64IdonKgmfBo\r\n8ZMClPeGNTLaaKX/YfB2NqCjBuI4BsqMP/pU9Lxhb/vwO7FYuUkxYRl3ZiP3\r\nU22v4Oa6ENFw2kqwrXAqKLkKzh4V0MIIPv6e4Xria1WHwSck23Q3C9mnxzI5\r\n2jZ20U1lnrs/psBsZp8uUpLvi/1fsRsrqP0=\r\n=zpDr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.3.0_1668262370609_0.657480438364523"},"_hasShrinkwrap":false},"1.3.1":{"name":"wohoox","version":"1.3.1","description":"Reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"3f8690570f5ca4547bde469f25e5040ee244608a","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.3.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fzxD/PUomO+WPt0Q99y3cFn1p/gCyVnpyBgtAv1Sj5CLb75TtZn3LpCyczAelb9WQFpCbMikCZX08UM67GfWog==","shasum":"f9eaf548f9eeeeb9f1f9350135797ac973c2eb5c","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.3.1.tgz","fileCount":40,"unpackedSize":1134410,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxUVNazFOrIFXHDrvoezpEyenp5k5heosuen9pZx1hZwIgWos+cSiAMDLCNs7tuLY7lGtwhfKOV/qKvrkbbpc6860="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdKIQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoGuA//dS7mJ11BOy9McRpnEabCpqux6NoQ/V6SAZnYf/FCVCDT6qEC\r\njG+j2Uip/xO0Vv6k0+c1epFuTdsdhW3Ec8bsB51Dsmy6PIxHLelz6mhAOac3\r\nIU30k5AkDKAAR0exd5bwMkF3+O//BqFhh46RM5SGssgHjcDlH1//A8i0JXI8\r\nlRFpHfMqB6qZG7d5n+tM1OUEpXkUkYUXo95qmbNdso8+WucZW/V3t0mV62II\r\nC+fFgJJGynMoE6gyAsaDARlscNbfuTRule1BfnEf+v88CgX1Hg/ERkuniDBf\r\nuzX0rfQDKN+JTpGBBv8q+673MLxMlRjuG08bZgiJiPcsKn0ChQKiZctuGDZ7\r\nxW1Uf1e3B1GM/+Uo4LdAOHJAqSjGO0rRb2LgE8JyxKmwBFhMxrebIJM0PKph\r\nM3FrO0fwbVVH4NxywuOCeAKFqBGpF9RwqC4qPkPB1cGXXnG+7F3UkaPvo3s6\r\nd3yTcirrAlTEm+IlsEgZsMgokA/eFn7w6ru5mfezJoExydmfEhlCZjfF7xN3\r\nG4E2NSrK+xb69E8tjFUUslvqY1d5D9xkf/e9pGMEb0Xp1h/LMQRR0sVKhlou\r\ngft2Xa8vBSbRo0WAzlnOWu4QRkdQkpHO68NQwTLlxCuMJ+85NbUTIND1m69p\r\nRicAgOXxunWwW64EzEa3vGQ7e7mXZX0dbu4=\r\n=Dt2G\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.3.1_1668588048352_0.013853990187665088"},"_hasShrinkwrap":false},"1.4.0":{"name":"wohoox","version":"1.4.0","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"2046cfc58376640a3ee3ed248c4b7d6d80f6dbf0","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.4.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yJ007glrsSKpDxfnI2a2ca8hq8+jL++v4rMcAXVkXgM6bfDOW/nii/q6sBgAjzu91CzYPlUOMNDZ4k44YmecdQ==","shasum":"0b298cc537f8dd245515106cfd339509235c8b44","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.4.0.tgz","fileCount":45,"unpackedSize":1144988,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWpOE+UCO28Qz6Xzu6Z0wCiFvZNf/9BDdZzQy+q7bPJgIgfZULgVUk5WoGtmAixi+2YRsE/jaYosMiCTZUckKz9BY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJje4TuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYIQ//fEPAMvGU4NsG9jdIC/5KgXBaY52I1dmbV8NQwheu2QghhaMR\r\neMNZF8p7L7ueI4yhsP0kbMPMXBciqfTRCQdwVDSgB1MnqsGDD6mXymtCQ/5G\r\nwxO87qYjaofngQycbFOD8WBMiY4zfuXXUXZkLFqCUYdsi3ojc9bmCEvmdbyR\r\n6q9LuoVEZDfy0PkzDpm04HuSbGhV82aTdSg9otGluY/voCe7NI2fmTRA35sO\r\nRR8a8/2QNlh2srjC+BYRCbNuyNuNNxyQBU4VrFIObzG2NHbj8Qp2f0yBx0CD\r\nkHIWU5YLqfBVH75IU7SNRaE+B5Ivu1MfDH5r9hG5X4NwL2W9+EdPat+yulHp\r\n6DD2Pav58HPup6typzzJ3P+8eKK0DJv5cit3Gv067+B6u/e0gQ0FlNOilR6R\r\nAX/SF0HCWvFAAxLGxBoJks2MKHI+851fiHS0D7AIYbrwkQsuu/UczaQu4t/D\r\nmf0wRo0PCWhff7wljgtneBlUM9bbatPDal4NAoVd0m6VfU4b5SUo3Vx4S2Ol\r\nd3tH1nQpFofjRwCYMayEPzejxAEqkfUEQANyZe4EpP7uVJBkIl+2imYpQXaR\r\nQSKr+nIFfVXHvNj0V/gwEoEjr3cHwRC/94hDwaqhDQw44vwiqAdN8YpgEocI\r\nttlD5hNlAVDLBhQiT0gPT2klR4qUzT/pVMU=\r\n=y+TT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.4.0_1669039341744_0.5343943559786601"},"_hasShrinkwrap":false},"1.5.0":{"name":"wohoox","version":"1.5.0","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"f9877490af52ad45eb860faa97e36b59b0d42db7","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.5.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7Nq5MatoKXZPViiz4zK0V8dOpOoTmkriYU0ytovaZoqA8agb5bsDVRTYOI2TwrNl2uM6MyiIcCoMDko3Bq07Mg==","shasum":"0383c595297c191d80cebef0f9165ae43792de1a","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.5.0.tgz","fileCount":47,"unpackedSize":1192896,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDMy5B4gEfBlvkjO97RdLhDh1mcbV/vX0rc6obZLVNFjAiEAzCiUYzqCcEZVoZA50fs80upVPh61i+7Cr0SwxrCGMWY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjgi3wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTdQ/+IPDQjNpwY/HUhujlBha2fn/JMmvG8BuoXmagy9rbpfX0J0y+\r\nK13k+xHQ17zZcOxK31sz18PiNfNHUjL1W4UIO6wFRyYLFJrJJfbAUlP7kOJJ\r\njzDyCPSA59TDdhHARtAckOv45yaROJD1w7dq+y08WzAuqr0DQiom7sapBBlq\r\ntNlLDH1VMsgQQjFBXfkokv3BZpoghA+8k88qdTTseWqIe8JsdV8Jngd13JmO\r\nwgZz6wd1ePbaJRG2tjTevX2EC/F2xIfxf3SMsiWirr33VX8ASIGZHZgGC/JV\r\nqhl5eJrY8qHCxK2bI5eMs/jTsFkWQveNoVTq3kJC4pQAM0DkcxWwgFUFW5XW\r\nm5V9p0uMJzpoBtdK3GkL9UqwdKTydElhlnJayVntPviwbveihLi9fmTfh+eQ\r\nOvWExSOl+4XVL3YTvU7gcmmNbsY/UgXispP0z2beYWjSGL3m1apaK+r2hiAE\r\noTy0UU0pdyORzb3QmIUq23KzJrkDVl9zKvlUU4WLBsE/aIEg4pLtjHeDQobl\r\nDqURk3VQjvNRputdI66wy60vLnhju1WRQs2C9LuD2LW+1/2Z5VgfqiZdKb0p\r\n9ky9Vs0QbDxY9UdQlkS9W7SD5My3fo2YNNHCwqEnbsfhPQdgcRZDc7T4BPZ5\r\nl40Rgb0GyvIDzTLkjLzidz9jkJ3zyhTRAYA=\r\n=DdfQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.5.0_1669475823877_0.4975340805965671"},"_hasShrinkwrap":false},"1.5.1":{"name":"wohoox","version":"1.5.1","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"f66b1f9ddc372db14d31c26e9f1b567580e73c62","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.5.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IptihKvKli5+do/2hA+sHGhPOccxZjETCTl52LA94ZG+J5NRjVi6rY9vLJG0gbPnqzBc1t68WgdmaV3sAeSiPg==","shasum":"497f5547cdf8b6e5423c364052416684ef2bf3fb","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.5.1.tgz","fileCount":47,"unpackedSize":1155782,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCQcu4mHh8fYOe3MjbElE37N/quUlJoixWQ4osDMzOZQIhAJDXGMjV6KHo/aRrQ3mpCqX7dlK8rGs8ko1CHYturf5N"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjgyw0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrY1A/8CXwNYV6mpmsAYgC0Hw7PDdZ4Ew7XTjdE0BucIhb2LvXI4Gui\r\n+glcdD7D0wKx4KWNT7g4JhDjk+nP3Zm5tpHQuib3soSnLIP+UnFgGYy6MprO\r\n/n3rBNLEwa7V166oH/spNjtEETSYaqpIrnGRIi0DcMPAqRU5hKIu6vRICO7j\r\nNNuzr30JQ32jKDamnPcTzBX6aH2qgvDug8VHSWWTiR96TeX8xlDx0ymrcd9h\r\n+k/i8KPBJXRNxe6ptcQOeA9ibHkR9xP/oWK81D429w7QpNQw5Lt3A4bA0rpQ\r\n3LRKSCj5PsYPxX49xUzGihTwvPeuPN+F8lfKXJCsd9T7u84JTysomOIskrQJ\r\nRPhcy+nhGfRtgwCoqufPYUDrgfFySSvBD0nqGWNZOpyjtHXh60iNaWo5jnDT\r\nKEttJ4NSkBoGWX+RtkQeDYTBi6vTbcix8qVZ/V8mUj6L3oAUWLsjrBBrivDk\r\nzUqiCkaZWmIEs+6g35MUs1fSkg1dCy3bhkcHrUPckNEQNgLZIlUU9hF/6oTr\r\nN2l5LBArPugpKaFWGUy80KTVeQz/M7JJQ7n9Ny0E7dbfU3ySAY7a25LWqWJn\r\nuNr/Dqa1MrUZQeYxWwdAX1RUHmPLGZw64fHD8ePM3ofCPcpix6/vEj7993qw\r\nShexjnzMOGZOWBjksgAxN2a6JFjbsMCRA+0=\r\n=YrWU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.5.1_1669540915692_0.6666832719534053"},"_hasShrinkwrap":false},"1.5.2":{"name":"wohoox","version":"1.5.2","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react":"^18.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"a540b69b0cc0750724f52574919ebfbb1fb94303","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.5.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3piXUOR6pEdhEF4bSWwjbjr1SEb+sOWJNPOw5r246Ey/IBvr6ZbhmhuDFa5fMRWr2VwBXaAkhHkYjvJZ0EDDNQ==","shasum":"8ffd4a31c60989585480d16e142b53160deefc68","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.5.2.tgz","fileCount":47,"unpackedSize":1154677,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBN4IIKz7rqzVVsoztbqOKHgohBNmuFAafKxqePQYZbfAiEAuPhojMnsOReGeh/jG2QSrQc2OUktLjqLZbpCKKpoxCI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjje0lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozIA/+K7tzb8mX/WpHnD2rkmre65UldYXK2I7VEnFPqi+Ogfw7W3Ky\r\nkCLGZFtuXQQRcfrxW8bJm3lrTCS6PE1139fTGViF3EKQ5fCHfONm1KkZuIkO\r\nJJdp629kFSNehJdH3l0PpCF3nPoEyhyTb4bXI9D07qu6Rr4NUzmbMdphIUN2\r\nVkbYgQArpj/MG3UX6RQtMRxe+Axr/iMAvlfhgWHj9nQsxrLOlSpIXP1EvZR4\r\n2jriBx4Fj2fnI1k7TxcfdhAEfgMtpH5evQ8ZxB2uo6XXM++Cz1CH7VNdF24b\r\nbQLnxRD5kPbyNY+T/qkw596jM6hs2ACDOATIKnlKaSxw9os2TNxyrNAssLzB\r\nn08tZCaozo165gQ4OF3fB46WtqxBAU1Wl9e40wXTPvKrOBhFwcYqWkhdrbCk\r\n/Cu85npELjQfzvKg/eCeyoVH807FBJKDaS1Kiro9U9gjG1D1eZNmAJYA3IA1\r\nKqZQk7fKc/DlYaUOQnEomkWWJxgbqhXuvOM25uhC8dbLHZZhtY8yCJvhU3VP\r\nHIWK4vrnAknsGT9vdLv1FU57KSyStgIdzGGJEIFAHL73f+uXaDMwbwe401Tq\r\nACfKzIXjpgETX+rs6o6j7HbFLhpx2h6hwfaE3no7Q6cPL4LKnhDW7JjoVZ8b\r\niCV4j00Kgj7GHe2mkHesP1BVRJtTLzbGVwI=\r\n=Cy+Y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.5.2_1670245668839_0.8012481155550923"},"_hasShrinkwrap":false},"1.6.0":{"name":"wohoox","version":"1.6.0","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"05764a0df9b2cefa780419e556c0d001f1571e64","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.6.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OVoJDCIR2KvYhNWdnhfqhCs2GnJd6Or3BCQts2wN3PXII9Fwgo3b96DXfNlY25ZJsMsklbAC1C/8cVCkKyfRjQ==","shasum":"d14c703375ba51b7de3f012c8a88d91aa43b015b","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.6.0.tgz","fileCount":38,"unpackedSize":1137393,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsX1YvsT/YtNu6Hu2HmcKlSaKaxUrbR77xrQtMxyKdjAiB/yvA+gkRrmNunRpXBLaeXvkSYlRplVjvhW/cgAFchHg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpCrwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYZg/5AcXG9+Sv4kmhunw77wInkELdCZIX+7VI0oM4oKrdiKwywy81\r\n4zFD42bCE8z6jm7PQo7NR3CPAQPN4kxT+rymOtAjeHoGataVnIdIPKtEiBsK\r\nfQ8bRXjLGMbzWMzumbUw1k6Et5wle13gCBk22zv0ofKDzXHqhqe3XOabwuYf\r\nZ+Io9BUTPgqEdXeVAFZfrkktz2RD+O/C6M2bdJvkieL8Z2YlfgAap6JFK1nH\r\nLUQ9K7CAhyrAK0SFiHZuVx4+tSYjxvzbgZZ0lP3qQhgjy/cY51J7vSrkJ6sn\r\nlv+D/hoITpPD1wSB2bWFQsD5DHtVLJiQMerIgdxRZm5OSsJd3/EuiHXp9ipE\r\ne5cz8SDInlqr7p0qDsFKyyi/Cusu96OC6HMFHxSe3W+LglAYKSIZA5UjnxRT\r\ntqziUN1vTgPvhRwVqIfmMrwP2rd5F4ndJw/TIze3fcvdaNReTz2ugs7Gvp/j\r\nrXkJ+5Wdb1SnOG1H8yY3Kl0mCAZgxLa+PTKsqzQ6JNhqXb1DpPSTQeYYqGfx\r\nPwugUZpXgy7EwmoPtBspTlyTKM+rmLXHcQdtVE8XiPEIR8hXENYuuPSUip1/\r\nS9A3DXRGwfZ5eksITYOxv8dEPXuj/6tzPY1FoIH2wxlWIK+L5QzAA/HIzLUB\r\nNGvyL3T74ywTzDERJLPA8mnJMOxFuuJyP7s=\r\n=dXBC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.6.0_1671703279987_0.5990428812760458"},"_hasShrinkwrap":false},"1.6.1":{"name":"wohoox","version":"1.6.1","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"c93e23f6174df88054a640a635b4e5dd74664d02","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.6.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GT2qtx+OQqlK9/Hek9h01wY/8lwo4qflBVR/e+OLhttIUfU1cEYgR78mdm13aV2pp+GAh2twMLVe5jxyLqQu3w==","shasum":"c6fd916dfa06dfcf724b358f79f964cdbc426211","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.6.1.tgz","fileCount":38,"unpackedSize":1139016,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBQ7SGW+VcDEx9qZuHZyz0o2rndlnyr0J73Hhx0WQzv3AiAdaZfKkdOCZDIyvUpRSDj4LToQQ1tNtDneko5aH+4wVw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjqB0bACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqs2Q//dtlqqQglFYbvZPiirtfvahkZAJ5CfnUt2Q8qy+9vJLHyOf7t\r\nrwuQ5nkDm8VuwfmGkndqFCnYzrrZOBg/+itJKmLHylSz/RlSXT40NuxYS9JB\r\nuVqHYwPhXHlfqbcFZ4j5EKBoZNoyDbqBNd6DOFDt5Vaa8Ix3iFB1CpJYXy3K\r\n2UbXb1+Apif9Avegfad0G1nN6X3uOTE7Jh1xtkC4CHA2cB0EbA28boXAEtFG\r\nz6Mx00/vb/xvmIkylZ0r8VGNolGhlyUqBf/9hpn/4HFrsmpGMylTQztAMjE3\r\nvz4tkKvlsYjF61o9eDVnZrbOdDQs/USRdgNHF4FmGnbWyBPvD5DWGKG/uBGk\r\nf2967QKE5erTvz41SxU2SWDAjS56copC57Evi9WMGp0fAIam/AS4MA9oV+7J\r\nG63DueZR8aJBQnOIKwvmGUN1pjIlOnULurG0zdVWiTJXiBn2hJZIQRMPYMyO\r\nRIvc/Eo9YC8zrQlMAQ1l6mMajMH9IlosEXmgcbIq4P84GM/gcCv8H+oMdd8m\r\ncVOL7P+0uAG4lMHPjtTWlY1HP33hv4C/he6H25h0Gf3bH4i5j45eciyoFUNM\r\nMYYo/zM3/2IOcaLAeac678hxFuv15KGCW+4qAI/OlbOLc3pIv2MnaVwyJBYo\r\n3Q3X4X8LqpPxMMVZfTTUWXaDzInCgDmLELI=\r\n=ordi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.6.1_1671961882825_0.3351327169812308"},"_hasShrinkwrap":false},"1.7.0":{"name":"wohoox","version":"1.7.0","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"d2dcf998aefd5e8d7f32c1ca05c6b821d4032c03","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.7.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NTxkHPiIeyd7jQG1WYv6gwCSw4i+vAR67Sk9QWShpSp2XviJUqCjHbzMXEAHS32YHXv/y/CmPTa77D023zwf9Q==","shasum":"f372dd15338d0e20fe2bff033f34a576873ffca2","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.7.0.tgz","fileCount":40,"unpackedSize":1144211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDYz0luhrhyWT4QlAzBbQ0f9bRsZ7hBBccuF9HBDyzpNAiB6MeLXb9o2wIhurEE/xjhL9d3lhtFWNBTv089yDrDVYg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrC2NACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+Cw//YBBhCFc3Ha9zCy4ll7hKQyPMXhXnv/PXxiQVh+m0v7fexa4I\r\nps5/K1/DIB8xbQttmZJ4sWUEVD7eq5DU7DxK30XgcDmWQ62fa0YuuySXowpv\r\nGY5Owl5/J4VOkekjWSFwyr6uo6FVmeQ7T1uKtjvLfHEPdWyFqcoH8tviy1CB\r\ndeh6Yxg53f31boPcC+Tjic0EZTaVqfApV42ZaIxYP47NnzJ9kMuL8m6Ti9tI\r\n1ZYbQKQKtLOAnhb6q81y3Nw419se7orWWIG890sYmTlXv69mSX/nLg1Inxkd\r\nckSbmZvwAaGW6sGNE7aImL+to6kizxNTSFVzCVvGcMC/XJSRxCXKGJQo+Q36\r\nKstQr4YIkPt9dwt6SxT6Mfg4MBaGrXjQNUHOE9eTHDrOKYGmycFa9jfVlxwO\r\n9oLpXHLsbyBKxQQpyiyzpepDlVZMl6NuBV1pduMqoAuEXfxukdNoRBHmhta0\r\njlAWJtofHFpCSrB+KxqWgJt0lDCgoOlO7Y6rhWRAglpTwoNESda8NZZ04x0W\r\nfdPTxUbwDC6FeyWfLWdS/aunBRPz4AtjAv4N25x7eLyi2IgZltKFh48aHTAT\r\nRhH4cH+JqiTk/K42/neJzUMUeNUY+TZFXhrmRm0MRN6YTC+YdcgInJucxCTd\r\nxB7SSkg9Dyf9cWDGSQIRoSxYidkSTIBYHqE=\r\n=MrtC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.7.0_1672228237114_0.8829710311110466"},"_hasShrinkwrap":false},"1.7.1":{"name":"wohoox","version":"1.7.1","description":"Easy,lightweight and reactive store by react hooks","main":"dist/wohoox.min.js","scripts":{"build:dts":"webpack --config webpack.config.dts.js ","build":"webpack","test":"cross-env jest --passWithNoTests","test:coverage":"cross-env jest --passWithNoTests --coverage","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests"},"keywords":["react","store","hooks","reactive","observer"],"types":"dist/index.d.ts","typings":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","author":{"name":"pzxie@outlook.com"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@babel/cli":"^7.19.3","@babel/core":"^7.19.3","@babel/preset-env":"^7.19.4","@babel/preset-react":"^7.18.6","@babel/preset-typescript":"^7.18.6","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^13.4.0","@types/jest":"^29.2.1","babel-loader":"^8.2.5","cross-env":"^7.0.3","fork-ts-checker-webpack-plugin":"^7.2.13","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","jest-watch-typeahead":"^2.2.0","react-dom":"^18.2.0","ts-jest":"^29.0.3","ts-loader":"^9.4.1","typescript":"^4.8.4","webpack":"^5.74.0","webpack-cli":"^4.10.0"},"license":"MIT","gitHead":"baccf7c73f5639e16f9da0edebc003db4568694b","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@1.7.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hmK0qYtsgMn9K8YFjcOpZGuAP6Cvrm0s+2rHBn07VFA4ZuvDnHY0F5HhZkLZZ+fsEOpkaaau6tJU7iZevHTWGg==","shasum":"99c73e39379c4500fa9b9c01b383915bdd256a43","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-1.7.1.tgz","fileCount":40,"unpackedSize":1144612,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxIKOtsHC0Vjf1YYbHSlpF94Ki2cITwk6pjIdqAA73iwIhAKdbbwruwoxObeFsm52cn9y36R2f5FQUoWxwuLR/C+2n"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrTTtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpr3BAAlX/ZbREjc/UiO4+Dpoi+fmP2DgSr3u+SY8cpMcf402fXWqi2\r\nCeMh2Es039e3hGxPf31vZQr9eF+QArKsf9MCCcqyUQ/FZBBr8DCuU1BqXlE2\r\nJN3CdOEhw+3KYDcAdTGqMPH9oQO6e/WCibO7kDOpBbRypiCCe6dMf6iQT+kH\r\nHTg+RnInNPKiuHV8/rD6XwFDYnIj+NAiCIqAS2fFusFgoYXFe1SnQYbjCCNx\r\n+0XUPB1TnxDvQGR5ZUUP/NGMZCtsQj9SvDNEek7TL1dADWZ7RNDVXyKXn74f\r\nkfVJLWjmiWNinqxHOsrtdH0OHgSAQ9Sl6d4X1iJoETkzEm2dgSYsrUUjQizv\r\n1pNv0hD9hgt151eIr3C4zRwI0TAWau0WFmNlwz5UKhIOOKZKHH0ud3Qg5VUT\r\nzavIw4o7P+l+8uCUWPaTNq48CjpjqeKrOjcx9bs6hx+XiyBu8sQLeyhcm9rk\r\nmSd/PdowhaHBAsjr+iE0fpmgi8fDP/uiG51CTOaviL1f+RNSZi+UYiXVpm/N\r\nhztDgzyEGuBPGPqOWVNIiWraleQYRyDZKJuMNEeFan5Eb51MF3Jau0Rlz7HE\r\nO0jDAellisvp+Be6hsZi5FKPUv1FlMlO7Ea06s5LUNrNnPyDq98SN7bTGiGA\r\nWmk4oKt5YHLmkeEJpP1MS78wuZRi66Q1QX0=\r\n=PAc+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_1.7.1_1672295660950_0.6750544310033308"},"_hasShrinkwrap":false},"2.0.0-rc.0":{"name":"wohoox","version":"2.0.0-rc.0","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.0"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"_resolved":"","_integrity":"","_from":"file:wohoox-2.0.0-rc.0.tgz","readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. create a store\n\n```typescript\n/**\n * src/store.ts\n */\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n})\n\nexport default store\n```\n\n2. use state\n\n```jsx\n/**\n * src/pages/example.tsx\n */\nimport store from 'src/store.ts'\n\nfunction Example() {\n  return (\n    <div>\n      <h2>Version: {store.state.version}</h2>\n\n      <button\n        onClick={() => {\n          store.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n    </div>\n  )\n}\n```\n\n3. typescript support\n\nwohoox is support typescript completely\n\n## Advance\n\n### Multi Store\n\n> If you want to use multi store by module, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst userStore = createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n\nexport const userActions = userStore.actions\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst devInitState = {\n  name: 'developer',\n  address: {\n    province: 'sc',\n    city: 'cd',\n  },\n}\n\nconst devStore = createStore({\n  name: 'department',\n  initState: devInitState,\n  actions: {\n    updateAddress(state, address: typeof devInitState['address']) {\n      state.address = address\n    },\n  },\n})\n\nexport const devActions = devStore.actions\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/multiStore.ts\n */\nimport defaultStore from './store'\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```jsx\n/**\n * src/pages/multiExample.tsx\n */\nimport { store } from 'src/multiStore.ts'\n\nfunction example() {\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {store.default.state.version}\n\n      <h2>User Name</h2>\n      {store.user.state.name}\n\n      <h2>Dev address</h2>\n      {store.department.address.province}\n      {store.department.address.city}\n\n      <button\n        onClick={() => {\n          store.default.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n      <button\n        onClick={() => {\n          store.user.actions.updateName(userState + '_1')\n        }}\n      >\n        click to update name\n      </button>\n      <button\n        onClick={() => {\n          store.department.actions.updateAddress({\n            ...devState,\n            city: devState.city + '_1',\n          })\n        }}\n      >\n        click to update address\n      </button>\n    </div>\n  )\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\nModify data by actions\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression + dispatch\n\n```typescript\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n### Used in js/ts code\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // use state in other js/ts file\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  actions.updateVersion(version)\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tIMIJJnSyy+eFMMbPRMZ+OYoe8okug8CweNvW/ldXX2MBCgJZdJTnJgHuwam7Pwc8mlwLdm5MNzHyJMpsEdOHA==","shasum":"05ac19a58376c1984f38b84b0754046863c826d5","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.0.tgz","fileCount":49,"unpackedSize":444480,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBo4QcrLAjM8ImT3sSZdAE23NlQ8q/EQriwuiwyUfnYmAiA6O6aX/fEJ0bbSxT4dG4HN65UR2uJUEigqyEfnEjLkqw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkL335ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmollBAAjTvmN3AKordHU6c5uFNDwpXkd3eb/LUoW7oWNhM4XtRwzodh\r\nECYAOO5pDCCbXVd0HnnMjTpNMYCZ5zpHHtk7hjLgQ0xfC0TNd92Z+KMNPlKY\r\n6boxdINVzpQDX/JK9CKbcqsf7RaL3eCPMdE5byKjE7Uwzm3Hx3+5lzMk+7j/\r\nuKwtiK9CIZvo6MeRdYyvKbz9xLqJI4JkXs/m5DuxINn+8IYM1MwHGGhbfNk5\r\nHgtcMB1ww+JZYqC5DU3QpZfKtmr1qvQSnr86vBzmNVcwO+XJsaOtLyOohnf4\r\nkmztk2rzIL9x5ISdL60wai8bkLrvoJTcuM0dC4oo+RawaKZySquGpcjcqUkZ\r\n7JR9RVbBIPkI4qHq102d2bK96RDWddT4nF28nHBeuzH2ueRVtaEKbs7Vvcum\r\ngd2HeDNUziaLAYdA23YqBpUKXuT4O8+jdESPyGoR+Bkm7EO+zKqn9EKkhXKN\r\nCKwr4WpJOUm4mvv6DdnjO42ZVGXLdW7A6Z5BWj3X2QFG7/JqhkOoiiXE7M4V\r\ncJPoxqlcR2i+gxGgF2Ig7OFVZzziEo/6S9EWyP6xljsyvzUDg9XiSO4Vag+q\r\n6tmF0+tOJTH581y+OeHBSjOMF8hknpqL/bI46ne0LKFBRTxalgqhr4YqzFbi\r\nkTOB2ZG732yyB+NYsx70GYo2D0OTFBZvoSc=\r\n=nuNf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.0_1680834040877_0.6279320208048744"},"_hasShrinkwrap":false},"2.0.0-rc.1":{"name":"wohoox","version":"2.0.0-rc.1","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.1"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"_resolved":"","_integrity":"","_from":"file:wohoox-2.0.0-rc.1.tgz","readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. create a store\n\n```typescript\n/**\n * src/store.ts\n */\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n})\n\nexport default store\n```\n\n2. use state\n\n```jsx\n/**\n * src/pages/example.tsx\n */\nimport store from 'src/store.ts'\n\nfunction Example() {\n  return (\n    <div>\n      <h2>Version: {store.state.version}</h2>\n\n      <button\n        onClick={() => {\n          store.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n    </div>\n  )\n}\n```\n\n3. typescript support\n\nwohoox is support typescript completely\n\n## Advance\n\n### Multi Store\n\n> If you want to use multi store by module, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst userStore = createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n\nexport const userActions = userStore.actions\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst devInitState = {\n  name: 'developer',\n  address: {\n    province: 'sc',\n    city: 'cd',\n  },\n}\n\nconst devStore = createStore({\n  name: 'department',\n  initState: devInitState,\n  actions: {\n    updateAddress(state, address: typeof devInitState['address']) {\n      state.address = address\n    },\n  },\n})\n\nexport const devActions = devStore.actions\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/multiStore.ts\n */\nimport defaultStore from './store'\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```jsx\n/**\n * src/pages/multiExample.tsx\n */\nimport { store } from 'src/multiStore.ts'\n\nfunction example() {\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {store.default.state.version}\n\n      <h2>User Name</h2>\n      {store.user.state.name}\n\n      <h2>Dev address</h2>\n      {store.department.address.province}\n      {store.department.address.city}\n\n      <button\n        onClick={() => {\n          store.default.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n      <button\n        onClick={() => {\n          store.user.actions.updateName(userState + '_1')\n        }}\n      >\n        click to update name\n      </button>\n      <button\n        onClick={() => {\n          store.department.actions.updateAddress({\n            ...devState,\n            city: devState.city + '_1',\n          })\n        }}\n      >\n        click to update address\n      </button>\n    </div>\n  )\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\nModify data by actions\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression + dispatch\n\n```typescript\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n### Used in js/ts code\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // use state in other js/ts file\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  actions.updateVersion(version)\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport createStore from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yioC5Vw2TfaGJ9mODU8PQGTnUoxSWn21mzWpKD7sl293xQ4D3CHtkT8m5joaH5ATWmPaJ3oBn5QU50xEib1vCA==","shasum":"365f802b7eea76371e737ce4958d342fac34aa51","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.1.tgz","fileCount":49,"unpackedSize":444587,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDimZ/CCoD9/h0XCLRq7kn9baoFWSbquXpCzMFOkrRGSgIhAKH7TeBuxvXmc6yYdqnbBGMzGwSJNTPGJCZ6lLJgAs/u"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNUYaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqnqg//XkUKyQHl7xaoHdC6ETiti4d8VZrbb/WifxY1Cfl0gsYK+Zn/\r\nnxwjCCSYbqqCWLgChlqNd9i7Rjj9jC9RYeCaXi6TKlEuJxGOeCbuaLgbpOQ8\r\no86VXQccI8vkGxgucJRSUDtgL72+79YezdqDdLVon6hNdbROt/MG5nJHW2QY\r\nvfd4EjFuzuCwdqsdZd4y+NP1EncKQBc8+F65oM2BZ1LzYGp4ncFxFPt2VmK5\r\nm7ved7AA9yTwKLHrdHS041hY9fMGkLDoMBhq3m1JqXdIfElHPaNd2e2yvlko\r\namsoEEu9FH8NdEPhpcm1keOTU9fidz1EbeWBre334lXHsTLwCXruyePaMDam\r\npDICylvUWs7sOC0aKpzVPJcrEYmRzjetyNL/Mr0DRcAbox3cYgJ+OGiS6zQ7\r\npG1ewRGdDNZFxg1O23pUd9ouIrEuuRDl27m1HqAoti8bbiqqHkPqr3/t28CD\r\nmHIGNkYbu4Nc8v6d91aspdwiL+PFqB3YTS+rYZQNPWsAGTPn2WB2/dQv8QjE\r\nChbQ/3KaRqEnOHI9Gw/Opm2exXrDLXnr0KuYQUCXUE8aYLq7ji6KW9hmUyWC\r\n7RMYhP/b7CTlg/T7PcmzCkMOAzJiu+vk5M/HKmWhXvUnB4WzpdKi6y5idK1P\r\nJHp2/v1xwKfeJJimgfRRXxzySQZDPR0rHnc=\r\n=9uwC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.1_1681212954812_0.576227609245173"},"_hasShrinkwrap":false},"2.0.0-rc.2":{"name":"wohoox","version":"2.0.0-rc.2","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"_resolved":"","_integrity":"","_from":"file:wohoox-2.0.0-rc.2.tgz","readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. create a store\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n})\n\nexport default store\n```\n\n2. use state\n\n```jsx\n/**\n * src/pages/example.tsx\n */\nimport store from 'src/store.ts'\n\nfunction Example() {\n  return (\n    <div>\n      <h2>Version: {store.state.version}</h2>\n\n      <button\n        onClick={() => {\n          store.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n    </div>\n  )\n}\n```\n\n3. typescript support\n\nwohoox is support typescript completely\n\n## Advance\n\n### Multi Store\n\n> If you want to use multi store by module, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst userStore = createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n\nexport const userActions = userStore.actions\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst devInitState = {\n  name: 'developer',\n  address: {\n    province: 'sc',\n    city: 'cd',\n  },\n}\n\nconst devStore = createStore({\n  name: 'department',\n  initState: devInitState,\n  actions: {\n    updateAddress(state, address: typeof devInitState['address']) {\n      state.address = address\n    },\n  },\n})\n\nexport const devActions = devStore.actions\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/multiStore.ts\n */\nimport defaultStore from './store'\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```jsx\n/**\n * src/pages/multiExample.tsx\n */\nimport { store } from 'src/multiStore.ts'\n\nfunction example() {\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {store.default.state.version}\n\n      <h2>User Name</h2>\n      {store.user.state.name}\n\n      <h2>Dev address</h2>\n      {store.department.address.province}\n      {store.department.address.city}\n\n      <button\n        onClick={() => {\n          store.default.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n      <button\n        onClick={() => {\n          store.user.actions.updateName(userState + '_1')\n        }}\n      >\n        click to update name\n      </button>\n      <button\n        onClick={() => {\n          store.department.actions.updateAddress({\n            ...devState,\n            city: devState.city + '_1',\n          })\n        }}\n      >\n        click to update address\n      </button>\n    </div>\n  )\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\nModify data by actions\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression + dispatch\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n### Used in js/ts code\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // use state in other js/ts file\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  actions.updateVersion(version)\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZCl6bDubS5TgzMf3dTTVmN7ZggDRFEN/Hm8uo2rSgbdBF4cHkIe33dqNwIZL4lOkqbcAQw+iR0ULiYciU5UkLw==","shasum":"07994d7a8c1a48a8cf242c442fa97c11bb10b977","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.2.tgz","fileCount":30,"unpackedSize":353296,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNwHnU6nGPwlJFXDW4NhOk/LHAU/pGdWSzviTTUu5mvAIhANrgOR+kmthZjsS0K02/e/5+m5b5lFhSfdFNlsbKTgQd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNpzsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpn0g/9HK5rpAG8J2O5OjCp7MoLtk8kfe9loyx2X2o01n2IRQPM+HrK\r\nIzjuw+uGer+dPn3P8/HfWT23SYWt6imtnagEAWYbA3HY8tZy6Ouzb4th+Hsy\r\nKcSqP5cSXketuNOBhIQoIqLfYPubB8N1GZ3qT1oYloJFPnzJuaMhz2Lwtc9F\r\nFgBcZpL6YvIRX0v+zZ+syFsveXe47GV70c4hxs2m9+ED8LCq1NrGkUbNW1pt\r\n3ZRm4xu/zSCpgUX4DVMpmKJNYA00GsXepgk/4lHaGJEcD8IbejqgDZxVJQY4\r\nG4goyeHrqb/97N0lQWaAodZkGQj0njzAiWmWC2DIZ479rYPYuaJGEX2ZqKUl\r\nK93q+uW+Po/hQ1sTe6NvNsrZ/6zZKy7ie6l91/t+hZ32RilmsNFK0IB+8+QS\r\n66DQqxRUuOVApgUjOX2gLJc+CaGH03LYjhVkGKOj+mUKnWL1Thm/Ipjo9XEE\r\nZG9LwN5ODfMDsEdwoA8VhgeuOV55uJ8Oi++73oEDqQovLgrgVKXi0ych5VPs\r\nLS/6Y9XdFcz+MfhgcF90ug5/Itox9xBQ+j6gjNTYGX5fi7RzXiR4jSKniLQf\r\nH2wejt3yJaXdHNsJKFfjG76v4HJ7GIiOhQP37L3MqdVRI3Dpt2M9mWjLnL+8\r\nLOQ9Itjzm8HwjeAXamIM8BW2xNRwhcetY48=\r\n=ssoa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.2_1681300715747_0.23205472512612846"},"_hasShrinkwrap":false},"2.0.0-rc.3":{"name":"wohoox","version":"2.0.0-rc.3","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. create a store\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n})\n\nexport default store\n```\n\n2. use state\n\n```jsx\n/**\n * src/pages/example.tsx\n */\nimport store from 'src/store.ts'\n\nfunction Example() {\n  return (\n    <div>\n      <h2>Version: {store.state.version}</h2>\n\n      <button\n        onClick={() => {\n          store.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n    </div>\n  )\n}\n```\n\n3. typescript support\n\nwohoox is support typescript completely\n\n## Advance\n\n### Multi Store\n\n> If you want to use multi store by module, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst userStore = createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n\nexport const userActions = userStore.actions\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst devInitState = {\n  name: 'developer',\n  address: {\n    province: 'sc',\n    city: 'cd',\n  },\n}\n\nconst devStore = createStore({\n  name: 'department',\n  initState: devInitState,\n  actions: {\n    updateAddress(state, address: typeof devInitState['address']) {\n      state.address = address\n    },\n  },\n})\n\nexport const devActions = devStore.actions\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/multiStore.ts\n */\nimport defaultStore from './store'\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```jsx\n/**\n * src/pages/multiExample.tsx\n */\nimport { store } from 'src/multiStore.ts'\n\nfunction example() {\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {store.default.state.version}\n\n      <h2>User Name</h2>\n      {store.user.state.name}\n\n      <h2>Dev address</h2>\n      {store.department.address.province}\n      {store.department.address.city}\n\n      <button\n        onClick={() => {\n          store.default.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n      <button\n        onClick={() => {\n          store.user.actions.updateName(userState + '_1')\n        }}\n      >\n        click to update name\n      </button>\n      <button\n        onClick={() => {\n          store.department.actions.updateAddress({\n            ...devState,\n            city: devState.city + '_1',\n          })\n        }}\n      >\n        click to update address\n      </button>\n    </div>\n  )\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\nModify data by actions\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression + dispatch\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n### Used in js/ts code\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // use state in other js/ts file\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  actions.updateVersion(version)\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.3","_integrity":"sha512-T1mg7ABbg4AXZdZwcuNmfc0V1hCnW8wLwFA4xjB5G7O9S9ty0mTW3MdQEg4yrJu+eXkoSq03Cg8SCtuZCtDFBQ==","_resolved":"/private/var/folders/2z/8kmwp74j0h30w3jvmj37rfgr0000gn/T/fa6163dec21f15a69390d6b72db31bec/wohoox-2.0.0-rc.3.tgz","_from":"file:wohoox-2.0.0-rc.3.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-T1mg7ABbg4AXZdZwcuNmfc0V1hCnW8wLwFA4xjB5G7O9S9ty0mTW3MdQEg4yrJu+eXkoSq03Cg8SCtuZCtDFBQ==","shasum":"94466cce97774be58c59b75f353dad548ccc6d58","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.3.tgz","fileCount":30,"unpackedSize":353364,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9pp+ovE6MaD3yO1u6PN4mmlE3T6aI+ib0NPhc+VQ8LAiAUdu9Pjfeft0PYHRVHdV5j0Gq0VJ6su/P/JTWpkAhb6Q=="}]},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.3_1692782689501_0.39207527362507255"},"_hasShrinkwrap":false},"2.0.0-rc.4":{"name":"wohoox","version":"2.0.0-rc.4","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. create a store\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n})\n\nexport default store\n```\n\n2. use state\n\n```jsx\n/**\n * src/pages/example.tsx\n */\nimport store from 'src/store.ts'\n\nfunction Example() {\n  return (\n    <div>\n      <h2>Version: {store.state.version}</h2>\n\n      <button\n        onClick={() => {\n          store.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n    </div>\n  )\n}\n```\n\n3. typescript support\n\nwohoox is support typescript completely\n\n## Advance\n\n### Multi Store\n\n> If you want to use multi store by module, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst userStore = createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n\nexport const userActions = userStore.actions\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/multiStore.ts\n */\n\nconst devInitState = {\n  name: 'developer',\n  address: {\n    province: 'sc',\n    city: 'cd',\n  },\n}\n\nconst devStore = createStore({\n  name: 'department',\n  initState: devInitState,\n  actions: {\n    updateAddress(state, address: typeof devInitState['address']) {\n      state.address = address\n    },\n  },\n})\n\nexport const devActions = devStore.actions\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/multiStore.ts\n */\nimport defaultStore from './store'\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```jsx\n/**\n * src/pages/multiExample.tsx\n */\nimport { store } from 'src/multiStore.ts'\n\nfunction example() {\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {store.default.state.version}\n\n      <h2>User Name</h2>\n      {store.user.state.name}\n\n      <h2>Dev address</h2>\n      {store.department.address.province}\n      {store.department.address.city}\n\n      <button\n        onClick={() => {\n          store.default.actions.updateVersion(version + '_1')\n        }}\n      >\n        click to update version\n      </button>\n      <button\n        onClick={() => {\n          store.user.actions.updateName(userState + '_1')\n        }}\n      >\n        click to update name\n      </button>\n      <button\n        onClick={() => {\n          store.department.actions.updateAddress({\n            ...devState,\n            city: devState.city + '_1',\n          })\n        }}\n      >\n        click to update address\n      </button>\n    </div>\n  )\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\nModify data by actions\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression + dispatch\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '1.X',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```jsx\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n\n  return (\n    <div>\n      <h2>Default Version</h2>\n      {state.version}\n\n      <button onClick={updateVersion}>click to update version</button>\n    </div>\n  )\n}\n```\n\n### Used in js/ts code\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // use state in other js/ts file\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  actions.updateVersion(version)\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '1.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '1.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.4","_integrity":"sha512-f/fPNg10ki1JcgGmKfGkX5htzcykEk4aou6xgndiAvJ0MPAkLHUCv0BxbZGGETBEIGtfisauD2FIzRSWdYoLXQ==","_resolved":"/private/var/folders/2z/8kmwp74j0h30w3jvmj37rfgr0000gn/T/d52654e8741b921e162a42cb33123dbe/wohoox-2.0.0-rc.4.tgz","_from":"file:wohoox-2.0.0-rc.4.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-f/fPNg10ki1JcgGmKfGkX5htzcykEk4aou6xgndiAvJ0MPAkLHUCv0BxbZGGETBEIGtfisauD2FIzRSWdYoLXQ==","shasum":"fa814d9572171bdb02d2395b954c9339c3a3ed80","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.4.tgz","fileCount":30,"unpackedSize":353965,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7AZSYcktVTQFGbjT6ume+nupWuBYHXG95rOGhgekkjAiBlRBbupur/HzKqTVq1s7s8aYm7tcgUBjwbZfF9vmQSNQ=="}]},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.4_1692878837647_0.41998460909499213"},"_hasShrinkwrap":false},"2.0.0-rc.5":{"name":"wohoox","version":"2.0.0-rc.5","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. create a store\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n})\n\nexport default store\n```\n\n2. use state\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // use state in other js/ts file\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  actions.updateVersion(version)\n}\n```\n\n## Advance\n\n### Key-Value by one action\n\n> It's common for an action to update one field. For example, `updateVersion` is used to update the `version`. `Redux` and `Mobx` are often used like this\n> `wohoox` also allows you to update by defining a common action, thus simplifying the definition of the action\n\n```typescript\n/**\n * src/store.ts\n */\n\nimport { createStore } from 'wohoox'\n\ntype RevertObjectToArrayUnion<T extends object, K = keyof T> = K extends keyof T\n  ? [K, T[K]]\n  : unknown\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    // Use the key-value action for unified definition update, and typescript support\n    updateByKeyValue(state, ...args: RevertObjectToArrayUnion<typeof state>) {\n      const [key, value] = args as [keyof typeof state, any]\n      state[key] = value\n    },\n  },\n})\n\n// OK\nstore.actions.updateByKeyValue('version', '2.0')\n// OK\nstore.actions.updateByKeyValue('details', { name: 'wohoox', other: 'anything' })\n\nexport default store\n```\n\n### Multi Store\n\n> If you want to split store by modules, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/store/user.ts\n */\n\nimport { createStore } from 'wohoox'\n\nexport default createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/store/department.ts\n */\n\nimport { createStore } from 'wohoox'\n\nexport default createStore({\n  name: 'department',\n  initState: {\n    name: 'developer',\n    address: {\n      province: 'sc',\n      city: 'cd',\n    },\n  },\n  actions: {\n    updateAddress(state, address: typeof state.address) {\n      state.address = address\n    },\n  },\n})\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/store/index.ts\n */\n\nimport { combineStores } from 'wohoox'\n\nimport defaultStore from './default'\nimport userStore from './user'\n\nconst { store } = combineStores(defaultStore, userStore)\n\nexport default store\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```typescript\n/**\n * src/App.ts\n */\nimport store from './store'\n\nfunction requestUserInfo() {\n  return fetch(`/api/details?version=${store.user.state.name}`)\n}\n\nasync function updateUserName() {\n  const res = await requestUserInfo()\n  const { name } = await res.json()\n\n  store.user.actions.updateName(name)\n}\n\nfunction printAddress() {\n  console.log(JSON.stringify(store.department.state.address))\n}\n\nfunction updateAddress() {\n  store.department.actions.updateAddress({\n    province: 'sc',\n    city: store.department.state.address.city + '_up',\n  })\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\n```typescript\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```typescript\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '2.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.5","_integrity":"sha512-VPSrxxsh3sfeVLgBZp419EaNdTBdLz8hxDnaodxfbeh9eU4zYNEj7psgkidlNjVX9wAfDljq0BykDi6KcOUobA==","_resolved":"/private/var/folders/2z/8kmwp74j0h30w3jvmj37rfgr0000gn/T/92812939ef444ec454fc151c7ffa2a13/wohoox-2.0.0-rc.5.tgz","_from":"file:wohoox-2.0.0-rc.5.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-VPSrxxsh3sfeVLgBZp419EaNdTBdLz8hxDnaodxfbeh9eU4zYNEj7psgkidlNjVX9wAfDljq0BykDi6KcOUobA==","shasum":"a9b3e452fd7d3de2d550f33667ebb8dcf490d28e","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.5.tgz","fileCount":30,"unpackedSize":361390,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4JcqFTFffIIBilxfiRe+H+woKe6xQe0zoHHL9kAfVRAiB3Ln67ugbggReR0Pk1383elTD9bIzhJcpJ9cqTATRt0Q=="}]},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.5_1694519445337_0.7619887592449954"},"_hasShrinkwrap":false},"2.0.0-rc.6":{"name":"wohoox","version":"2.0.0-rc.6","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"homepage":"https://github.com/pzxie/wohoox.git#readme","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"readme":"<p align=\"center\">\n  <img style=\"width: 160px;\" src=\"../../wohoox.png\" alt=\"wohoox\" />\n</p>\n\n<p align=\"center\">\n  English | <a href=\"./README_CN.md\">中文</a>\n</p>\n\n- Lightweight and reactive state management\n- Map, Set, WeakMap, WeakSet support\n- Typescript support\n- Plugins api support\n\n## Required\n\n- browser: only supports browsers with [native ES2015 support](https://caniuse.com/es6)\n\n## Install\n\n```bash\nnpm install -S wohoox\n```\n\n## Quick Start\n\n1. Create store\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n})\n\nexport default store\n```\n\n2. Use state\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  // 使用 state\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version } = await res.json()\n\n  console.log(version)\n}\n```\n\n3. Update state\n\n`wohoox` updates state by `action`. This will make the state changes more controllable and trackable\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {...},\n  // init actions\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n    updateDetailsName(state, name: string) {\n      state.details.name = name;\n    }\n    updateDetails(state, details: typeof state.details) {\n      state.details = details\n    }\n  },\n})\n\nexport default store\n```\n\n```typescript\n/**\n * request.ts\n */\n\nimport store from 'src/store'\n\nconst { state, actions } = store\n\nfunction request() {\n  return fetch(`/api/details?version=${state.version}`)\n}\n\nasync function getVersion() {\n  const res = await fetch('/api/version')\n  const { version, details } = await res.json()\n\n  // update version by action\n  actions.updateVersion(version)\n  console.log(state.version)\n\n  // update the object\n  actions.updateDetails(details)\n  console.log(state.details)\n\n  // update the deep field\n  actions.updateDetailsName(details.name)\n  console.log(state.details)\n}\n```\n\n## Advance\n\n### Key-Value by one action\n\n> It's common for an action to update one field. For example, `updateVersion` is used to update the `version`. `Redux` and `Mobx` are often used like this\n> `wohoox` also allows you to update by defining a common action, thus simplifying the definition of the action\n\n```typescript\n/**\n * src/store.ts\n */\n\nimport { createStore } from 'wohoox'\n\ntype RevertObjectToArrayUnion<T extends object, K = keyof T> = K extends keyof T\n  ? [K, T[K]]\n  : unknown\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    // Use the key-value action for unified definition update, and typescript support\n    updateByKeyValue(state, ...args: RevertObjectToArrayUnion<typeof state>) {\n      const [key, value] = args as [keyof typeof state, any]\n      state[key] = value\n    },\n  },\n})\n\n// OK\nstore.actions.updateByKeyValue('version', '2.0')\n// OK\nstore.actions.updateByKeyValue('details', { name: 'wohoox', other: 'anything' })\n\nexport default store\n```\n\n### Reset store\n\nThere is a built-in action named [reset]. You can use it to reset the state.\n\n#### initState is object\n\nThe reset params is required, if the store's initState is an object.\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    name: 'wohoox',\n    version: '1.x',\n  },\n})\n\n/**\n * reset by new object\n * reset params is required\n */\nstore.actions.reset({\n  name: 'wohoox',\n  version: '2.x',\n})\n```\n\n#### initState is factory function\n\nThe reset params is optional, if the store's initState is an factory function.\n\n- **If set params,** wohoox will use the factory function to reset the state.\n\n- **If no params,** wohoox will use the params to reset the state.\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: () => ({\n    name: 'wohoox',\n    version: '1.x',\n  }),\n})\n\n/**\n * reset by initState of factory function\n */\nstore.actions.reset()\n\n/**\n * reset by new object\n */\nstore.actions.reset({\n  name: 'wohoox',\n  version: '2.x',\n})\n```\n\n**Note:** `reset` is a built-in action for wohoox. If you declared `reset` in actions, your `reset` will be ignored.\n\n### Multi Store\n\n> If you want to split store by modules, look here.\n\n#### Create multi store\n\n- Create a store named 'user'\n\n```typescript\n/**\n * src/store/user.ts\n */\n\nimport { createStore } from 'wohoox'\n\nexport default createStore({\n  name: 'user',\n  initState: {\n    name: 'wohoox',\n    description: 'reactive store',\n  },\n  actions: {\n    updateName(state, name: string) {\n      state.name = name\n    },\n  },\n})\n```\n\n- Create a store named 'department'\n\n```typescript\n/**\n * src/store/department.ts\n */\n\nimport { createStore } from 'wohoox'\n\nexport default createStore({\n  name: 'department',\n  initState: {\n    name: 'developer',\n    address: {\n      province: 'sc',\n      city: 'cd',\n    },\n  },\n  actions: {\n    updateAddress(state, address: typeof state.address) {\n      state.address = address\n    },\n  },\n})\n```\n\n- Combine multi store\n\n```typescript\n/**\n * src/store/index.ts\n */\n\nimport { combineStores } from 'wohoox'\n\nimport defaultStore from './default'\nimport userStore from './user'\n\nconst { store } = combineStores(defaultStore, userStore)\n\nexport default store\n```\n\n#### usage\n\nUse multi store is same as single store, just need to point the store name\n\n```typescript\n/**\n * src/App.ts\n */\nimport store from './store'\n\nfunction requestUserInfo() {\n  return fetch(`/api/details?version=${store.user.state.name}`)\n}\n\nasync function updateUserName() {\n  const res = await requestUserInfo()\n  const { name } = await res.json()\n\n  store.user.actions.updateName(name)\n}\n\nfunction printAddress() {\n  console.log(JSON.stringify(store.department.state.address))\n}\n\nfunction updateAddress() {\n  store.department.actions.updateAddress({\n    province: 'sc',\n    city: store.department.state.address.city + '_up',\n  })\n}\n```\n\n### StrictMode\n\nIn order to make the code style more standardized.\n**Strict mode is on by default. Which means actions is the only way to modify state**.\n\n#### Turn on\n\nActions are the only valid way to modify data\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n    // default true\n    strictMode: true,\n  },\n})\n\nexport default store\n```\n\n```typescript\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // Error when modify by state\n    // state.version = state.version + '_1'\n\n    // OK\n    actions.updateVersion(state.version + '_1')\n  }\n}\n```\n\n#### Turn off\n\nValid ways\n\n- Actions\n- state expression\n\n```typescript\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  options: {\n-   strictMode: true,\n+   strictMode: false,\n  }\n})\n\nexport default store\n```\n\nModify data\n\n```typescript\nimport store from 'src/store.ts'\n\nfunction exampleStrictMode() {\n  const { state, actions } = store\n\n  const updateVersion = () => {\n    // OK\n    actions.updateVersion(state.version + '_1')\n\n    // OK\n    state.version = state.version + '_1'\n  }\n}\n```\n\n### plugins\n\nPlug-in options are provided to enhance the functionality of wohoox\n\nwohoox plugin is a object who contains below methods\n\n```jsx\nimport type { WohooxPlugin } from 'wohoox'\n\nexport const plugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    // do something before store init, return new initState and actions\n    return {\n      initState,\n      actions,\n    }\n  },\n\n  onInit(store) {\n    // do something after store inited\n  },\n  onAdd(storeName, value, keys) {\n    // do something when state property has been added\n  },\n  onDelete(storeName, keys) {\n    // do something when state property has been deleted\n  },\n  onChange(storeName, value, keys) {\n    // do something when state changed\n  },\n  onGet(storeName, value, keys) {\n    // do something when state has been gettled\n  },\n}\n```\n\n#### Example of persist\n\n- create a plugin\n\n```jsx\n// src/plugin/persist.ts\nimport type { WohooxPlugin } from 'wohoox'\n\nconst persistPlugin: WohooxPlugin = {\n  beforeInit(initState, actions) {\n    return {\n      initState: {\n        ...initState,\n        version: JSON.parse(localStorage.getItem('wohoox_version') || '\"\"'),\n      },\n      actions,\n    }\n  },\n  onChange(_name, value, keys) {\n    if (keys.toString() === 'version')\n      localStorage.setItem('wohoox_version', JSON.stringify(value))\n  },\n}\n\nexport default persistPlugin\n```\n\n- add to plugin option\n\n```jsx\nimport persistPlugin from './plugin/persist'\n\nconst store = createStore({\n  initState: {\n    version: '2.x',\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  plugins: [persistPlugin],\n})\n```\n\n## API\n\n- [createStore](#createstore)\n- [combineStores](#combinestores)\n\n### createStore\n\nIt is used to create a store.\n\n#### Params\n\n- `name:` default as `'default'`. name of store. it is used as an identifier to get store data.\n- `initState:` Initial the data and use it as the data structure of the state.\n- `actions:` Dispatch to change data. As the only valid way to modify data in strict mode, then it will caused by page rerender\n- `plugins:` plugin list for store\n- `options.strictMode:` default as `true`. Strict mode switch for store. Once the switch turn on, actions will be the only valid way to modify data, otherwise you can directly modify the data by state. `ex: state.age = 23`\n- `options.proxySetDeep:` default as `false`. Type data of set will not be proxy for its child item. Cause there is no method to get item, child proxy is is not necessary to proxy. But if you want to proxy anyway, you can set it to true.\n\n#### Usage\n\nCreate a store named 'default'\n\n```typescript\n/**\n * src/store.ts\n */\nimport { createStore } from 'wohoox'\n\nconst store = createStore({\n  /**\n   * default as 'default'\n   */\n  name: 'default',\n  initState: {\n    version: '2.x',\n    details: {\n      name: 'wohoox',\n      other: 'xxx',\n    },\n  },\n  actions: {\n    updateVersion(state, version: string) {\n      state.version = version\n    },\n  },\n  /**\n   * default as { strictMode: true }\n   */\n  options: {\n    strictMode: true,\n  },\n})\n```\n\n### combineStores\n\ncombine multi stores to a new store\n\n```jsx\nimport { combineStores } from 'wohoox'\n\nexport const { store, actions } = combineStores(\n  defaultStore,\n  devStore,\n  userStore,\n)\n```\n\n## Notes\n\n- Use strict mode if possible(use actions to modify state).\n- Type data of Set will not be proxy for its child item。If you want to rerender when changed the child items properties, you can：\n  - Delete the last item of Set and add it into Set again\n  - Or set options `proxySetDeep: true`\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.6","_integrity":"sha512-sqTwtQ5yWZOotRudA/E2hzcCzqzN2DLl0NA/SVvHlWdjFViKKYMsZCtr5ILq6FzlWRyC95gIvuu0Bsm6khl6cA==","_resolved":"/private/var/folders/2z/8kmwp74j0h30w3jvmj37rfgr0000gn/T/02f16c3f7d1a84ac686e81fbf586757d/wohoox-2.0.0-rc.6.tgz","_from":"file:wohoox-2.0.0-rc.6.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-sqTwtQ5yWZOotRudA/E2hzcCzqzN2DLl0NA/SVvHlWdjFViKKYMsZCtr5ILq6FzlWRyC95gIvuu0Bsm6khl6cA==","shasum":"53cc8f93d28301874b27d8355bfb3dfa50f7e376","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.6.tgz","fileCount":30,"unpackedSize":395932,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoHFDM+y01rFfrm/LzCdM+OZTROmp2Jcnlf5i3BTvJ/gIgB/giEPFJI09GFKvfEbWH8Nt5cSRHpA8LN0D6motVNKg="}]},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.6_1701777118862_0.42226416307765624"},"_hasShrinkwrap":false},"2.0.0-rc.7":{"name":"wohoox","version":"2.0.0-rc.7","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"readme":"https://github.com/pzxie/wohoox/tree/main/packages/wohoox","homepage":"https://github.com/pzxie/wohoox/tree/main/packages/wohoox","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.7","_integrity":"sha512-fTzIR72I0dNCf4yWrH6jTxUSBA5FsG/glxnJjem0ays+N4oZQJm6aAEYUBpWVbdU+gm4SPjENQtJGYcTvxt1DQ==","_resolved":"/private/var/folders/2z/8kmwp74j0h30w3jvmj37rfgr0000gn/T/5a2745b8959cb74cbba5c92745cf018b/wohoox-2.0.0-rc.7.tgz","_from":"file:wohoox-2.0.0-rc.7.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-fTzIR72I0dNCf4yWrH6jTxUSBA5FsG/glxnJjem0ays+N4oZQJm6aAEYUBpWVbdU+gm4SPjENQtJGYcTvxt1DQ==","shasum":"a58e44bc1b964fd7b98f2269664fd66d0163b887","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.7.tgz","fileCount":30,"unpackedSize":397775,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEhyZ8eRGuoRfh1GkQK5kpcP8U7jIOyROsIEl8PUPpTAiAiR0EKVNyLkF9cQUkwt2DZJOZeYNt18moZuhPF1o/87w=="}]},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.7_1702388993204_0.17719208146031673"},"_hasShrinkwrap":false},"2.0.0-rc.8":{"name":"wohoox","version":"2.0.0-rc.8","description":"Easy,lightweight and reactive store","author":{"name":"pzxie","email":"pzxie@outlook.com"},"main":"dist/index.js","module":"dist/wohoox.esm.js","unpkg":"dist/wohoox.umd.production.min.js","umd:main":"dist/wohoox.umd.production.min.js","types":"dist/index.d.ts","typings":"dist/index.d.ts","engines":{"node":">=12"},"keywords":["wohoox","store","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"readme":"https://github.com/pzxie/wohoox/tree/main/packages/wohoox","homepage":"https://github.com/pzxie/wohoox/tree/main/packages/wohoox","devDependencies":{"@size-limit/preset-small-lib":"^8.1.0","@testing-library/jest-dom":"^5.16.5","@types/jest":"^29.2.5","@types/node":"^18.11.18","cross-env":"^7.0.3","husky":"^8.0.1","jest":"^29.2.2","jest-environment-jsdom":"^29.2.2","size-limit":"^8.1.0","ts-jest":"^29.0.3","tsdx":"^0.14.1","tslib":"^2.4.0"},"husky":{"hooks":{"pre-commit":"tsdx lint"}},"license":"MIT","dependencies":{"wohoox-utils":"1.0.0-rc.2"},"scripts":{"start":"tsdx watch","build":"tsdx build --format cjs,umd,esm --target node","test":"jest --passWithNoTests","test:react-legency":"cross-env reactLegency=true jest --passWithNoTests","test:coverage":"jest --passWithNoTests --coverage","lint":"eslint src/**/* --fix --ext .ts --ext .js --ext .tsx --ext .jsx","size":"size-limit","analyze":"size-limit --why"},"bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"_id":"wohoox@2.0.0-rc.8","_integrity":"sha512-pEsE8Qk6mN42v4s7ipHhYXDBtjRsHQaWznLiB2v8AXMgA2rqvbjATQJA+KDgcSPpbS0C0919RlIH/Vq4wly4vg==","_resolved":"/private/var/folders/2z/8kmwp74j0h30w3jvmj37rfgr0000gn/T/16adbe03059b4719681d6ec284e0668b/wohoox-2.0.0-rc.8.tgz","_from":"file:wohoox-2.0.0-rc.8.tgz","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-pEsE8Qk6mN42v4s7ipHhYXDBtjRsHQaWznLiB2v8AXMgA2rqvbjATQJA+KDgcSPpbS0C0919RlIH/Vq4wly4vg==","shasum":"a661e02655804dea689e1b83269417291e654195","tarball":"https://registry.npmjs.org/wohoox/-/wohoox-2.0.0-rc.8.tgz","fileCount":30,"unpackedSize":408548,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJTwTqR2HxvSZmirV4E0ejLka22W+ceilzyfQtnp7KpgIgfUr5x0IUuixPcDkCpG7aI6cxnrU6aaTQWIkbPS+HkhQ="}]},"_npmUser":{"name":"pzxienpm","email":"pzxie@outlook.com"},"directories":{},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wohoox_2.0.0-rc.8_1705894126806_0.17425608106969426"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-18T02:36:13.679Z","1.0.0":"2022-10-18T02:36:13.816Z","modified":"2024-01-22T03:28:47.190Z","1.0.1":"2022-10-18T02:51:03.667Z","1.0.2":"2022-10-18T02:52:59.776Z","1.0.3":"2022-10-18T09:40:50.451Z","1.0.4":"2022-10-19T07:46:42.589Z","1.1.0":"2022-10-20T07:06:08.804Z","1.1.1":"2022-10-27T09:00:59.565Z","1.2.0":"2022-11-04T11:09:34.457Z","1.2.1":"2022-11-04T11:20:50.523Z","1.2.2":"2022-11-08T09:54:38.561Z","1.3.0":"2022-11-12T14:12:50.816Z","1.3.1":"2022-11-16T08:40:48.583Z","1.4.0":"2022-11-21T14:02:21.969Z","1.5.0":"2022-11-26T15:17:04.189Z","1.5.1":"2022-11-27T09:21:55.966Z","1.5.2":"2022-12-05T13:07:49.105Z","1.6.0":"2022-12-22T10:01:20.226Z","1.6.1":"2022-12-25T09:51:22.970Z","1.7.0":"2022-12-28T11:50:37.309Z","1.7.1":"2022-12-29T06:34:21.182Z","2.0.0-rc.0":"2023-04-07T02:20:41.070Z","2.0.0-rc.1":"2023-04-11T11:35:54.934Z","2.0.0-rc.2":"2023-04-12T11:58:36.059Z","2.0.0-rc.3":"2023-08-23T09:24:49.779Z","2.0.0-rc.4":"2023-08-24T12:07:17.917Z","2.0.0-rc.5":"2023-09-12T11:50:45.469Z","2.0.0-rc.6":"2023-12-05T11:51:59.381Z","2.0.0-rc.7":"2023-12-12T13:49:53.426Z","2.0.0-rc.8":"2024-01-22T03:28:47.010Z"},"maintainers":[{"name":"pzxienpm","email":"pzxie@outlook.com"},{"name":"wohoox01","email":"wohoox@outlook.com"}],"description":"Easy,lightweight and reactive store by react hooks","homepage":"https://github.com/pzxie/wohoox.git#readme","keywords":["react","store","hooks","reactive","observer"],"repository":{"type":"git","url":"git+https://github.com/pzxie/wohoox.git"},"author":{"name":"pzxie@outlook.com"},"bugs":{"url":"https://github.com/pzxie/wohoox/issues"},"license":"MIT","readme":"","readmeFilename":""}