{"_id":"@aminnairi/react-store","_rev":"5-0dda503f68d4df5b4bd14dacbe6947e0","name":"@aminnairi/react-store","dist-tags":{"latest":"2.1.1"},"versions":{"0.1.0":{"name":"@aminnairi/react-store","description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","version":"0.1.0","homepage":"https://github.com/aminnairi/react-store#readme","license":"GPL-3.0-or-later","main":"./build/index.umd.js","module":"./build/index.mjs","browser":"./build/index.umd.js","bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"types":"./build/index.d.ts","keywords":["react","store","context","reducer","state"],"scripts":{"serve":"vite","build":"vite --config vite.config.build.ts build"},"devDependencies":{"@aminnairi/react-store":"file:.","@rollup/plugin-terser":"0.1.0","@types/node":"18.11.10","@types/react":"18.0.26","@types/react-dom":"18.0.9","@types/react-router-dom":"5.3.3","react":"18.2.0","react-dom":"18.2.0","react-router-dom":"6.4.4","tslib":"2.4.1","typescript":"4.9.3","vite":"3.2.4","vite-plugin-dts":"1.7.1"},"gitHead":"d97de1b93d09e57415074ef44291831369b327bd","_id":"@aminnairi/react-store@0.1.0","_nodeVersion":"18.0.0","_npmVersion":"8.6.0","dist":{"integrity":"sha512-gmgmAvDCbYhaIr0VQDpoccWBj2nKNlYbr/2hL5EYY0Tt+Ruw8fisW764EexzIkRTx+cS/haoeyjyIvBBG0GLjw==","shasum":"b5ca44fbd1f6a81765718fa2a3386f3e139a9f1b","tarball":"https://registry.npmjs.org/@aminnairi/react-store/-/react-store-0.1.0.tgz","fileCount":6,"unpackedSize":38951,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB6VoMUC6eAUDjxOYmoixhgDe8LLNSV3qFH74HYszODEAiEA8mGtxvHSQZMCoQPjboQUXtRb58v3eLv7p1XOTD9Bla4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjNJUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQxg/7B2CZDisszDUTuArWtNHv62Qf3Wc1bgKhCu8kq6q0eJd3UNSD\r\n7icnGaVMaiR+RmLL3BSLB07Dxy+nh8nHfg+KqKTqgPIbD/XNqjEXYECtiGWB\r\nMblYITyJ4/LmSLqWRQxzHpZ0dtY+1xkLSgBV30ETy0Cq3yr9MwESewfRxko8\r\noqaDNNCG75j3e9mCKxiKclkeqXdUklISCdFAetMBb4Xg6bKIlEP7EwRvvHZk\r\n5w2tHaFp/X9JguU5z8ElBaCwhqtkS8FS2tmeYYp2JZSFxjOOqa62RH8FrruQ\r\n862T02JRifRlHy9S1jrdgBcOeVrmVx5UHi37Kp7rMJ+NUDC9UjptzPqC5/mp\r\n9G4lbrMJV1uq9jRKl2raTVh25YyX9zu+2uHmWSH78+HtYiM7ul9PRE9fk6Xt\r\nMU1MMd9tdOPR2RIwGQf2Gj8Oqil42+am+cZTMHANdE9bH3NH7Whwq9XYMfQZ\r\ntrUerMUaZNCPVZATxXcz/MiCFhaaFN8UsWPsfQF0EGwXCdizcneh7oH4wXtl\r\nOCJSFiNaHGJ3DITgXw3rHEjXnuMlXJ1UvJynmshC+zp3cWRiUvAmGQRoNh8o\r\ncODjh2IwyuvCmI+dfSQIiJQuBwOWydFNtqVFF2O+458YbhqbY21rxuUtgupb\r\nK6nLHAtve64c9Az+DtNwlNiTsh746OsyDWk=\r\n=DaGa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aminnairi","email":"nairi.amin@gmail.com"},"directories":{},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-store_0.1.0_1670173268526_0.28959467253946336"},"_hasShrinkwrap":false},"1.0.0":{"name":"@aminnairi/react-store","description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","version":"1.0.0","homepage":"https://github.com/aminnairi/react-store#readme","license":"GPL-3.0-or-later","main":"./build/index.umd.js","module":"./build/index.mjs","browser":"./build/index.umd.js","sideEffects":false,"bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"types":"./build/index.d.ts","keywords":["react","store","context","reducer","state"],"scripts":{"start":"vite","build":"vite --config vite.config.build.ts build","test":"jest"},"peerDependencies":{"react":"^18.0.0"},"devDependencies":{"@aminnairi/react-store":"file:.","@rollup/plugin-terser":"0.1.0","@types/jest":"29.2.3","@types/node":"18.11.10","@types/react":"18.0.26","@types/react-dom":"18.0.9","@types/react-router-dom":"5.3.3","jest":"29.3.1","jest-environment-jsdom":"29.3.1","react-dom":"18.2.0","react-router-dom":"6.4.4","ts-jest":"29.0.3","ts-node":"10.9.1","tslib":"2.4.1","typescript":"4.9.3","vite":"3.2.4","vite-plugin-dts":"1.7.1","zod":"3.19.1"},"gitHead":"75fbc6cfaa203311cf58e50ea84f1df5194a63d7","_id":"@aminnairi/react-store@1.0.0","_nodeVersion":"18.0.0","_npmVersion":"8.6.0","dist":{"integrity":"sha512-zQrAdtYgw5JL7DqNdmXKmvW+iWS6TiJnkE/E5hoddZ0naSEAIRjW4fUtOP8QuugM53x9NW8g1eFXTwz/soTJJQ==","shasum":"a1bc238b17cfefe1a545c782f0f2dca18ea9cb08","tarball":"https://registry.npmjs.org/@aminnairi/react-store/-/react-store-1.0.0.tgz","fileCount":6,"unpackedSize":44076,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9oVcjyXuo4kEU0VZy4OSlzsg6XeWT7utAzOSIj+4rGwIgbTP7XtNkYViijMpqkAYpEu8b7k2CGiOLYdM2FZn/RKM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjl5EACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAhw//dhUDBJQUHB3DQBd3dq4DQU9DdVU4mUE6A9ky75Fj8HD4J5zy\r\nPAvO2WNteUljOor/ZIZmzTBz/mo8e8CRT4VWmd+EbFk1MMl7ijMnlkNKV46l\r\nXuulalfWMdC+/n9fUDPa6Gt6klrqOj4wy7qEBZrrbil26yO1O55/2Pya9EUa\r\ncpFWAliViyBPbnHcaoWjPjUDdx/+81gLDPnAgK9NGRMVGB/yEHRfTdBDFUEX\r\nly2/v8aS3izkXl9NWmJ8DS3IZuHtIcnrltIdsp6ASvKddqWKCpPDCeAXLb0H\r\nwVNmCWmsRZpVJ4gx0spxIqfk0YDNuK1rKaW/Is/fKSj4UH883YNDN2eTgp8u\r\n6MlN9TRwkIpaeqHIviXhgaGPCYXfQjS3hmPpQg4YXlqXBHvzfBQTcH7IRlmR\r\nlXgd+colOBo2VPnq/+XjucU55InP3iMh4Tuxmzoh4w0/sIGEL5laZIKstNfi\r\nRhhoU02i5mE/nvFEnkzKFKUX+bJ0CHkZ0crWr805/qzAbg4epUXb36jPPNEK\r\nK0Px16dIVA8lTfNHlYj1CffR7oaJdn+M7+5/b/c87oUiBOMciMvf+MzOBGqZ\r\nz9I2bPerJ8WWXxxEsORTbB0rfjqXY8MUOV/rVLjC1HBJVIw0u5aLCV/ULvNF\r\nnIU9u1L3NkcTDX/sYPm3tuScD8qR1ecpaCQ=\r\n=z8B4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aminnairi","email":"nairi.amin@gmail.com"},"directories":{},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-store_1.0.0_1670274628614_0.032939774316617765"},"_hasShrinkwrap":false},"1.0.1":{"name":"@aminnairi/react-store","description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","version":"1.0.1","homepage":"https://github.com/aminnairi/react-store#readme","license":"GPL-3.0-or-later","main":"./build/index.umd.js","module":"./build/index.mjs","browser":"./build/index.umd.js","sideEffects":false,"bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"types":"./build/index.d.ts","keywords":["react","store","context","reducer","state"],"scripts":{"start":"vite","build":"vite --config vite.config.build.ts build","test":"jest"},"peerDependencies":{"react":"^18.0.0"},"devDependencies":{"@aminnairi/react-store":"file:.","@rollup/plugin-terser":"0.1.0","@types/jest":"29.2.3","@types/node":"18.11.10","@types/react":"18.0.26","@types/react-dom":"18.0.9","@types/react-router-dom":"5.3.3","jest":"29.3.1","jest-environment-jsdom":"29.3.1","react-dom":"18.2.0","react-router-dom":"6.4.4","ts-jest":"29.0.3","ts-node":"10.9.1","tslib":"2.4.1","typescript":"4.9.3","vite":"3.2.4","vite-plugin-dts":"1.7.1","zod":"3.19.1"},"gitHead":"503ad8146b060531a2b88d957f5165d42458ab8b","_id":"@aminnairi/react-store@1.0.1","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-wKXiBCrTfBjHF9KLvAqP71apFX3JwrPmMIdXE7ASHNtXQ0e0eeL+deLAi3E+KZMtm+OmEpnT15bRFuoolbI7yg==","shasum":"5abcfffb0f27193d8bdbde9b3595d476ae454a46","tarball":"https://registry.npmjs.org/@aminnairi/react-store/-/react-store-1.0.1.tgz","fileCount":6,"unpackedSize":43969,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB60gTVnoFQbTxQbMowhKbvVvK/cdmPP0rdrgTJM2vrTAiEAuUla0oTABs/Ty2s0m2AeQ+YQj9+9f0YatQ/TKsqptOo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjxn7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhFg//T6ZcDYlk0A/oElnk/Njb/vVSpp1NitzKH7fAxZnFejXk+Wm6\r\n8R/TMd0HSB532zIPAvfeb2RxMead+Ig3/8Tif8s1qSdQ3nz/AYbMlR/C45Ah\r\nQWAV8e87L3Gr8iQw8AbqP4a09rLPubOPT1jZvE8H0hbbSd8qBJJ/ShPr1smh\r\nRUztPKZAOSvDl5BcLk6LhbYKapg5o0Zw3R1aNnv9NnDiTtNW8WcQ8z8w+nrg\r\n6XsOE5Ffg9aRy/7dO+ED/hQwto4PPcYEa7Mh3y0+FBfSEXZq+jOPRyXwNEtt\r\n13KX46TRNpDrNYJY7uThCWPJK1A5T1BOpsiF/lNjVOyZ4t0E+rinu73jBngX\r\nbdEuLf5Ey02ezwMHpnfJaWwXgyRVLclQnHzDOs8o3LBV6v21CSKIN0YmKpQi\r\nhlJH/NRYpwFStIWlGHJRg88MoZOjseOxl8OWMSIoSfAJAPXT4LlSbZ6FOJnT\r\nS11WcYxIHnz/+SRE346Sn9V9XPckNGLIduaLddewfmpCra4x87Uq6lENVFYX\r\nHG5a7ohYO8xf7Ca0QhKPzZSufGoF5EjJGqronDsef+HgykIRl2+gSMXN0CkN\r\nYte6J0u5EzZxrP+sZ5mLuBkfUpoD+Rmsv8qJg/pRRvNX2AZQZV9QXnaUuPCL\r\nfTUhV7qluYmlptemR1eMS1g/0nHMR5OdSRY=\r\n=Pq7U\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aminnairi","email":"nairi.amin@gmail.com"},"directories":{},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-store_1.0.1_1670322683310_0.033638976654625896"},"_hasShrinkwrap":false},"2.0.0":{"name":"@aminnairi/react-store","description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","version":"2.0.0","homepage":"https://github.com/aminnairi/react-store#readme","license":"GPL-3.0-or-later","main":"./build/index.umd.js","module":"./build/index.mjs","browser":"./build/index.umd.js","sideEffects":false,"bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"types":"./build/index.d.ts","keywords":["react","store","context","reducer","state"],"scripts":{"start":"vite","build":"vite --config vite.config.build.ts build","test":"jest"},"peerDependencies":{"react":"^18.0.0"},"devDependencies":{"@aminnairi/react-store":"file:.","@rollup/plugin-terser":"0.1.0","@types/jest":"29.2.3","@types/node":"18.11.10","@types/react":"18.0.26","@types/react-dom":"18.0.9","@types/react-router-dom":"5.3.3","jest":"29.3.1","jest-environment-jsdom":"29.3.1","react-dom":"18.2.0","react-router-dom":"6.4.4","ts-jest":"29.0.3","ts-node":"10.9.1","tslib":"2.4.1","typescript":"4.9.3","vite":"3.2.4","vite-plugin-dts":"1.7.1","zod":"3.19.1"},"gitHead":"9b783cfef410f6df9caa2d035b0cf38c3f2c57c8","_id":"@aminnairi/react-store@2.0.0","_nodeVersion":"19.2.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-j1Q4DUW+qci1XkEWnIhAeBTWlWvtF7p3c8OHxaisnw435KZKi50MGsEn4HMZIAfU0VTCwfggvoYbG1UNdrx8qg==","shasum":"4c6266b2441cc7d701072a1e362157115ed603b4","tarball":"https://registry.npmjs.org/@aminnairi/react-store/-/react-store-2.0.0.tgz","fileCount":6,"unpackedSize":45635,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQWKT2lN8sKLy9qo8ZTAe2Iqn2yuC4FAq+PmyDro63AAiEAj1Dz8Poxt5Qy9IPVXHBeehu7DpIbCDLN+mK426mmY9Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjj5tGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmro0RAAiP3h+/N9bPlU99rA29tuWlg0XwMkkDlTX9HNu7xtGo4rsXPc\r\nMTti8qEQHfozKECxa5cEcFH6ckUupwcuBzbHVw80w9tWMklIPa8p8eR2nQJH\r\n5K9KcnBMJ2ty2RHDAmogGyDWCY8Z+HsnK47XqJ0kTBfEu3VxFKcna8tvH/Hh\r\nEUVCj6IvousjKg74qvfQmsVdc+lBaWgku26ftFEcET+9+A48z9lFPwErh3Te\r\nUulYUFfNKvzPfHUXKSHwni9gXvcgpc35akOAE0N0x6J7NZZ8bbKQvhXpvaxr\r\nGxtc58qUiPYyVXeLSRGRKpwqSPPh/cIwcyBxdfwBM8t8kATowsqhWMxD86k8\r\nNsXxH8JnD9rhPKlB9usufNxggCWXzHXZXkCts4LIdBrBx2n+5xxJZzpD0+cL\r\nb30UB5TeEkbtog16Iy1gt7KUok1Df7hPRh0DHXu6IMCE/KIAisCa1GSKSDDE\r\nDtu0WAnOFvRkVzuLN7rTWo01NEW7ldZP1980z8n1z2izOdYGwagrvD/SLHNG\r\nh2QfFEkihzKFa1+IJLn3GsUkz98oKFaooyy1NpVO87bHjPpEilmh68CKmbkI\r\nEwM+DYAuKSZkEWegth3NgnW3Z4K3JvRQIEPsGfkOuvKm1cPlipKEg7QbvZ0Y\r\nnYqs55KQgqQZsWLMygcoJbo5AlrsdlWCmAw=\r\n=F528\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aminnairi","email":"nairi.amin@gmail.com"},"directories":{},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-store_2.0.0_1670355782079_0.7916693734812237"},"_hasShrinkwrap":false},"2.1.0":{"name":"@aminnairi/react-store","description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","version":"2.1.0","homepage":"https://github.com/aminnairi/react-store#readme","license":"GPL-3.0-or-later","main":"./build/index.umd.js","module":"./build/index.mjs","browser":"./build/index.umd.js","sideEffects":false,"bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"types":"./build/index.d.ts","keywords":["react","store","context","reducer","state"],"scripts":{"start":"vite","build":"vite --config vite.config.build.ts build","test":"jest"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@aminnairi/react-store":"file:.","@rollup/plugin-terser":"0.1.0","@types/jest":"29.2.3","@types/node":"18.11.10","@types/react":"18.0.26","@types/react-dom":"18.0.9","@types/react-router-dom":"5.3.3","jest":"29.3.1","jest-environment-jsdom":"29.3.1","react-dom":"18.2.0","react-router-dom":"6.4.4","ts-jest":"29.0.3","ts-node":"10.9.1","tslib":"2.4.1","typescript":"4.9.3","vite":"3.2.4","vite-plugin-dts":"1.7.1","zod":"3.19.1"},"gitHead":"404474ff54cb22519099e1c83d739e570c347a31","_id":"@aminnairi/react-store@2.1.0","_nodeVersion":"18.0.0","_npmVersion":"8.6.0","dist":{"integrity":"sha512-+wLsetxRiAyR/KSM6cnRbrMyYm72Hr7jDogjDRS9B4Y4rcTrtHhjSolykB8oEfNkRFMqxDt1vP60FuH2MzgMHA==","shasum":"d71bb67e4233cef9683f1f8f2ef793b887e1dae2","tarball":"https://registry.npmjs.org/@aminnairi/react-store/-/react-store-2.1.0.tgz","fileCount":3,"unpackedSize":42711,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMjcVzo096bxV6g48SMcM2eBjCVDv7aw9kQNRk45umyAiEAgZBUs0HZJPgXjsFz/TEXtTwBIJFxLe/824/DNG3znUg="}]},"_npmUser":{"name":"aminnairi","email":"nairi.amin@gmail.com"},"directories":{},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-store_2.1.0_1685376483973_0.40347211611929934"},"_hasShrinkwrap":false},"2.1.1":{"name":"@aminnairi/react-store","description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","version":"2.1.1","homepage":"https://github.com/aminnairi/react-store#readme","license":"GPL-3.0-or-later","main":"build/index.js","module":"build/index.js","browser":"build/index.js","sideEffects":false,"bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"types":"build/index.d.ts","keywords":["react","store","context","reducer","state"],"scripts":{"start":"rollup --config rollup.config.example.ts --configPlugin esbuild --watch","test":"jest","build":"rollup --config rollup.config.ts --configPlugin esbuild","types":"tsc --emitDeclarationOnly --declaration --project tsconfig.json"},"peerDependencies":{"react":">=16.8.0"},"devDependencies":{"@aminnairi/react-store":"file:.","@rollup/plugin-commonjs":"25.0.0","@rollup/plugin-node-resolve":"15.1.0","@rollup/plugin-replace":"5.0.2","@rollup/plugin-terser":"0.1.0","@types/jest":"29.2.3","@types/node":"18.11.10","@types/react":"18.0.26","@types/react-dom":"18.0.9","@types/react-router-dom":"5.3.3","jest":"29.3.1","jest-environment-jsdom":"29.3.1","react-dom":"18.2.0","react-router-dom":"6.4.4","rollup":"3.23.0","rollup-plugin-delete":"2.0.0","rollup-plugin-esbuild":"5.0.0","rollup-plugin-serve":"2.0.2","ts-jest":"29.0.3","ts-node":"10.9.1","tslib":"2.4.1","typescript":"4.9.3","zod":"3.19.1"},"gitHead":"78959bfd266f691aea548041262c6e478e11613f","_id":"@aminnairi/react-store@2.1.1","_nodeVersion":"20.2.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-yDF7Xqb86GOmL30XmpKXUgnhVdUPF4ZwUftXnRdXifU0EMlhbY151mE9XLUyFXBa3DZuyCIplGUsawXob1EmlQ==","shasum":"bb042b686805d4a16182f9585dd8ead084c87cf7","tarball":"https://registry.npmjs.org/@aminnairi/react-store/-/react-store-2.1.1.tgz","fileCount":5,"unpackedSize":45240,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVyhhaKASyQBgZ/clHkR+pr3wBvaQ5g3Oh0wQ6fZdkxAiBFgWrBPkuE5rF/qoPHMCWwLI3UxPGp5fMxYJPy0zrWKg=="}]},"_npmUser":{"name":"aminnairi","email":"nairi.amin@gmail.com"},"directories":{},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-store_2.1.1_1685692578455_0.8938799840181229"},"_hasShrinkwrap":false}},"time":{"created":"2022-12-04T17:01:08.467Z","0.1.0":"2022-12-04T17:01:08.770Z","modified":"2023-06-02T07:56:18.754Z","1.0.0":"2022-12-05T21:10:28.784Z","1.0.1":"2022-12-06T10:31:23.511Z","2.0.0":"2022-12-06T19:43:02.555Z","2.1.0":"2023-05-29T16:08:04.175Z","2.1.1":"2023-06-02T07:56:18.645Z"},"maintainers":[{"name":"aminnairi","email":"nairi.amin@gmail.com"}],"description":"Simple yet powerful store manager written in TypeScript on top of React's context & reducer","homepage":"https://github.com/aminnairi/react-store#readme","keywords":["react","store","context","reducer","state"],"repository":{"type":"git","url":"git+https://github.com/aminnairi/react-store.git"},"author":{"name":"Amin NAIRI","url":"https://github.com/aminnairi"},"bugs":{"url":"https://github.com/aminnairi/react-store/issues"},"license":"GPL-3.0-or-later","readme":"# @aminnairi/react-store\n\n[![NPM](https://badgen.net/npm/v/@aminnairi/react-store)](https://www.npmjs.com/package/@aminnairi/react-store) [![Unit Test](https://github.com/aminnairi/react-store/actions/workflows/test.yaml/badge.svg)](https://github.com/aminnairi/react-store/actions/workflows/test.yaml) [![Tree Shaking](https://badgen.net/bundlephobia/minzip/@aminnairi/react-store)](https://bundlephobia.com/package/@aminnairi/react-store) ![Size]() [![Vulnerabilities](https://badgen.net/snyk/aminnairi/react-store)](https://snyk.io/advisor/npm-package/@aminnairi/react-store)\n\nSimple yet powerful store manager written in TypeScript on top of React's context & reducer\n\n## Requirements\n\n- Node\n- NPM\n\n## Installation\n\n```bash\nnpm install @aminnairi/react-store\n```\n\n## API\n\n### API - createReducer\n\nCreate a reducer function that takes the previous state, an action, and returns a new state. Note that when using this function, mutations for the state and the action are not permitted.\n\n```tsx\nexport interface UserState {\n    token: string\n}\n\nexport type TodosState = Array<string>\n\nexport interface State {\n    user: UserState\n    todos: TodosState\n}\n\nexport const initialState: State = {\n    user: {\n        token: \"\"\n    },\n    todos: [\n        \"Finish this library\",\n        \"Wait for React's Context API enhancement\"\n    ]\n}\n```\n\n```tsx\nexport type Action =\n    | { type: \"TODOS_ITEM_ADD\", payload: string }\n    | { type: \"USER_TOKEN_UPDATE\", payload: string }\n```\n\n```tsx\nimport { createReducer } from \"@aminnairi/react-store\"\n\nimport { State } from \"../states/state\"\nimport { Action } from \"../actions/action\"\n\nexport const userReducer = createReducer<State, Action>((state, action) => {\n    switch (action.type) {\n        case \"USER_TOKEN_UPDATE\":\n            return {\n                ...state,\n                user: {\n                    ...state.user,\n                    token: action.payload\n                }\n            }\n\n        default:\n            return state\n    }\n})\n```\n\n```tsx\nimport { createReducer } from \"@aminnairi/react-store\"\n\nimport { State } from \"../states/state\"\nimport { Action } from \"../actions/action\"\n\nexport const todosReducer = createReducer<State, Action>((state, action) => {\n    switch (action.type) {\n        case \"TODOS_ITEM_ADD\":\n            return {\n                ...state,\n                todos: [\n                    ...state.todos,\n                    action.payload\n                ]\n            }\n\n        default:\n            return state\n    }\n})\n```\n\n### API - combineReducers\n\nTurn several small reducers into one bigger reducer. This is great when it comes to breaking down the whole store's reducer into smaller, easier to work with reducers.\n\n```tsx\nimport { combineReducers } from \"@aminnairi/react-store\"\n\nimport { State } from \"./states/state\"\nimport { Action } from \"./actions/action\"\nimport { userReducer } from \"./user\"\nimport { todosReducer } from \"./todos\"\n\nexport const reducer = combineReducers<State, Action>([\n    userReducer,\n    todosReducer\n])\n```\n\n### API - createStore\n\nCreate a store that is the union point of an initial state and a reducer for that state.\n\n```tsx\nimport { createStore } from \"@aminnairi/react-store\"\n\nimport { State, initialState } from \"./states/state\"\nimport { Action } from \"./actions/action\"\nimport { reducer } from \"./reducers/reducer\"\n\nexport const { StoreProvider, useDispatch, useSelector } = createStore<State, Action>({\n    initialState\n    reducer\n})\n```\n\n#### API - createStore - StoreProvider\n\nThe provider for a store is a JSX component that will expose a context to all of its child components.\n\n```tsx\nimport React from \"react\"\nimport { createRoot } from \"react-dom/client\"\nimport { Main } from \"./main\"\nimport { StoreProvider } from \"./store\"\n\nconst rootElement = document.getElementById(\"root\")\n\nif (!rootElement) {\n    throw new Error(\"Root element not found\")\n}\n\ncreateRoot(rootElement).render(\n    <StoreProvider>\n        <Main />\n    </StoreProvider>\n)\n```\n\n#### API - createStore - useDispatch\n\nReturn a function that can be used to dispatch actions that are available for this store. This is useful when it comes down to update the state of the store from a component. It is also useful in custom hooks to define action creators that will dispatch the correct types using a clean API to work with.\n\n```tsx\nimport { useDispatch } from \"../store\"\n\nconst useUser = () => {\n    const dispatch = useDispatch()\n\n    const updateToken = (payload: string) => {\n        dispatch({\n            type: \"USER_TOKEN_UPDATE\",\n            payload\n        })\n    }\n\n    return {\n        updateToken\n    }\n}\n```\n\n```tsx\nimport { useDispatch } from \"../store\"\n\nconst useTodos = () => {\n    const dispatch = useDispatch()\n\n    const addTodo = (payload: string) => {\n        dispatch({\n            type: \"TODOS_ITEM_ADD\",\n            payload\n        })\n    }\n\n    return {\n        addTodo\n    }\n}\n```\n\n#### API - createStore - useSelector\n\nExposes part or all of the state that has been within by the store. This is great to break down the state of a store into a smaller piece, easier to work with and especially useful in custom hooks or components. Note that the state in this case is readonly and cannot be mutated.\n\n```tsx\nimport { UserState } from \"../states/state\"\nimport { useSelector } from \"../store\"\n\nconst useUser = () => {\n    const user = useSelector<UserState>(state => state.user)\n\n    return {\n        user\n    }\n}\n```\n\n```tsx\nimport { TodosState } from \"../states/state\"\nimport { useSelector } from \"../store\"\n\nconst useTodos = () => {\n    const todos = useSelector<TodosState>(state => state.todos)\n\n    return {\n        todos\n    }\n}\n```\n\n## Example\n\nSee [`example`](./example).\n\n## Changelog\n\nSee [`CHANGELOG.md`](./CHANGELOG.md).\n\n## Contributing\n\nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md).\n\n## Licence\n\nSee [`LICENCE`](./LICENCE).\n\n## Security\n\nSee [`SECURITY.md`](./SECURITY.md).\n\n## Code of conduct\n\nSee [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md).\n\n## Credits\n\nReact icon made by [Icons8](https://icons8.com/license).\n","readmeFilename":"README.md"}