{"_id":"@ice/store","_rev":"98-a7dfa8d41193a07ae5153ec7ddd7bce1","name":"@ice/store","dist-tags":{"experimental":"0.0.0-experimental-hooksbase01","beta":"2.0.0-4","latest":"2.0.4"},"versions":{"0.1.1":{"name":"@ice/store","version":"0.1.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.1.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"9480060dfa4aa822e07d03a50c91ba23c2e3f78c","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.1.1.tgz","fileCount":9,"integrity":"sha512-CMjMGwd2t4pRS8zriyFkI4sLCokcoj3ZnlbEuxojwGhJ8+OHbq55wh1Td4RmtdpF0IFwiPEB1LKdVCXlNZ2p7Q==","signatures":[{"sig":"MEQCIEVVDF+zu0GnpZ1c2HY1/+uB9QMJhWKdCTQS3AgdUk52AiBePSoBFgOZYqB5JmEpkwe5H9t/TeIdJX5q3YQQdJoR4w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc90IvCRA9TVsSAnZWagAAESYP/ijpShrl5Q71VvqdAEdC\n9wHE3FKkXQ02hmVwBRd7sz7b6HbXTlhAZzWyLmMwm/IlK1Ig8qDa3i4z3sX6\nkGpn6YzrsTPz4PGiwVRK1za80Q/cFIYI73vEL61hwPbMFe6S5wAhUSjBBrhU\nmtMyiRy1fblJxryDYI2atEEgF/vBO64LsA1WvKukOK/sCi9DLV/Mfp2nyo7z\nACK4YEXA3JcjHvp1a+srdcm5h9Bh6PJsy0dLBnOP17wQIfEcN1mUdcTgxM45\nuM/F+Sr57vnOY9XOdNCVbwdbc+cUgADSriF9rlCwIiuNWpABNZfamfGIKqym\nX4h8M0nLQsm8sUwKYRZ/xY5GP3n/1E8vZJvhyvyf3eAmKLHjZbxi0vVC3SRH\nJzzlSL+plldiffWGCLeGXUE6dqdtTNkjREmeFGG7PL7Tb5L3xZaArt0Mzmsf\nbyPJtldKPAkzB9GA4OkwYTI5TROyi0tZFAP0Rf5UFC1Rx3F9hpIStu7o3ym+\nLUVTBKEHn+ky1msC1SavNXpl/w0eTRc+efAswfU82Ary2WnTAjezAKHjUvmC\nWVFnnSIH1QEFzOgw8SZeySzxSYafhRgOzH3e9r45wO/OOVfXc9v/92mPzK8P\nP2o6T7Tho7SyMxVb0gV60YKFN8CdLFKSNxgJZcEY7tFQK6GxoXSoOrucPgrU\n5ekn\r\n=Crga\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"6854ab6fd5e920c34fe25570631e0e4321c4bee6","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.5.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"10.11.0","dependencies":{"lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.1.1_1559708207150_0.7338522694564102","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@ice/store","version":"0.1.4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.1.4","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"3578251345f1ee62ffac853669db9e98e15054f6","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.1.4.tgz","fileCount":9,"integrity":"sha512-IQvcq2JGkqKAiwIrlQBGcnVxLV3W9SjF7HbBK+okwYuClrVpRV8S5F+dUJZmmUphYyUEaNhNygXNkwBJaHzjOg==","signatures":[{"sig":"MEUCIAvd8sQUF2UN4AreRbVAV03NSIU7xud1hlBBuRyHX0L/AiEAo3i9uoX+Q+PX7zNXt8w6KqJznXgUu2vjPzbjX6YWdYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHByYCRA9TVsSAnZWagAA56oP+wURWVM7PVKF1m29ZOqt\nXWauHNcxebLCx73yhm4KH5F92GzJn0aPZFG9VJQK0imtRMohhRtp0BLkppsJ\nOfsmiyYwApMBWm2epMytDCxyUtUta29I4ethmb1GOWF0xhYEzWQ3t7TXeQAj\n5DPQq2SQZu0q20hWDuuE/4+n/z4LFitEGFNhqmg4XMiz/RUc4UOv/gGqJDq8\nFE4nZV7tygGuWYdU2NHP+eHSVVVUPrZip5Fb3Pm1DZhf3F4G/Bu29tw+LrSs\nM4niFdidTh/Yq2MKZUFIBwQdRm8LvPS3/59REfrnFFHlaZDjgHvfD8eoooso\nn9AVvxJ6nSFTsHsQo0lf0fJrIWzvytKXr7WF2jjB+fIqdaY8+Pqax88F+mUZ\n1Zm/WZPQFiLKX9+69Lfr6IJj/ntFYyA/e6akvDKsp7fEFlM49EPDwbAo4kMU\n8ZHL4NHe+fSTnzN+djvKoDuGPDRUF8ua5UxBewj6x1uoic8JFr/45SMq1wbF\nnRIAW8MDZQkPViIVy7beSG1INmNQadTsaRDpjMnHKJH5nq3UjI2kVi/8kNik\nEIqnBCxKtwvQIFjRjdR63WCLRhJl7km40nw9H9c0WOjxlEcH0rQpn1rob0CK\n+xZjtN9WrxUsyX1Lx6qyhO5e3sJvLXeHFCTJ+P5fFrDGsq25NvQMjJhlcf2b\n9/KI\r\n=ClD1\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"3c052932c7b60a363db5292be6d5179c0929a5c2","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"12.4.0","dependencies":{"lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.1.4_1562123415429_0.8096309078727992","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@ice/store","version":"0.1.5","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.1.5","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"66d33287224a29b061cc166b9f8ecf915f7298d3","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.1.5.tgz","fileCount":12,"integrity":"sha512-c0ypJ+pyW3wNEE8r9yvfWaaMU6V0WCq+fCixNlFDjuCOnd8VEd7o1ZayWc6uM7C1IDeB0j0QGBS3PLD9kvZGHQ==","signatures":[{"sig":"MEYCIQCeGuVyURgUrK4VIDzx8O62DsnxgeRH1HtalLJkDo4XbAIhAPLA0gkWpz3UGev45ZX8m75UB4sJbENlJSHwFmgG+aUZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHJIDCRA9TVsSAnZWagAAaCUP/RA4eOikPHQp+ru52iZl\nYqmhkXTWZer02pcS1Umyv601C0BFk5w7jN9JPBagvHQOPmx17LCZ0EL6v93X\ndIR+ItFtt3bP9MD6IfoVpKszr2R2ilUYddjOVoko6dwo8mjE06ajISfTKq30\nmkB00dCdT8kiifu7yIEkq14Cytg7ULEQe/C3852hkMir7g15ALwhPMb38TVp\naUsUiwV0wpvU9VTZ0NvBHkkI+8F/IvEcPo9UBbeKyruiXbQCFh3RLC5rCZxy\nuw7PC1x6mbEr8MuSmWgPb/QYQOZbZs7MfkgnPFZQm+lBgEQB3Igcqf+ap3Ly\nyxfjBSm+xlH6yaVa/D8UMuX2/J3N3UE5QPBJ7CB69pxQkqkvk2sBl3oZNs+J\ncK4q5ac1o06bVFI4vvS9TLxmgbytsgAtUCghnpF8egX6YTW38w0f501ABVAY\n9GY+oAa0GuA0cFwdufndQMWcIonYTMwbMfTWWfPhr70ttbTAbLKdQJx+8UUi\nhGA2Y1lcbl6cPYTYOwCB6OzWIybUa8S6fMokPLBq8vBZsDiXw5fZCPNZuK+i\nDrHqxfh49fVVKX+V2aKZFA1Aac8FwEVA8N4rq0LEoxz2EIUOJjEZsKRzB7Jr\nWGWQoyb63YSM5nMqedTNQH4w6ahA1k8c7kGneziOhrdad58AVy7cZt4EnW6I\nFoyN\r\n=/33C\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"ed13d506b4b41e88797d0dab4383b5a71dfd6288","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"12.4.0","dependencies":{"lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.1.5_1562153474925_0.7878153605742049","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@ice/store","version":"0.2.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.2.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"f6a46684b08613bb532e18cdc0e7fca09ae1f617","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.2.0.tgz","fileCount":12,"integrity":"sha512-HIq6bfv/xysniPGF5hGnaev3uPHBAZqM8fUg4hwLgbGVf3+gR+ESlWmKF8yzAbn3T3scfVU0Xq6ujaTHAoCJqA==","signatures":[{"sig":"MEQCICBkFBnIRwl3BHglcDYXzE5d1/ES2HwX5txsVl9/MnVtAiBEfRyuZpjSD9pQZ5Kb5L3UNAxAk25zWyKifWdiu4kQvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHcZeCRA9TVsSAnZWagAAsP8P/1ipq4Iv0feKDnvb1ibD\nC2YirYJ9rGxckq2HJFjS7UlL+61AuvKViwc2+8SiSodADL+azaIJbMYH62gl\nNaE39WBNYZWzwceyD7FBf0jWx7EiTPAfFChlYLG5S+L7Yc55u4fiDyQW+x7z\n2NSd8J1bpnPra4uJ//Vc/3xiE/BthVSzLsqQFbtwLiywixuATOTBnqoBXKyc\nNoZ8B0ZAFy8JgmTdkXIFPvHV4s+loUbRbjzp2qooP5XxrC+pN+xqc6yWOguf\nD15eFeY1+6pb/87ojFhacKPlL3L9Y08eX9ibNUeaRM0y8lkn2VqRsNPSa+YU\nMwAFQ5RGoxpQQq77If4KoTbj0L6DZBKZj+qviqrXCUyNbSx3k97LmPd//Yj6\nyVI5bcGXKwvZFDOfJYdzNQ7TFmg8iHcJKCXQng7ykLMhLeT5kXzHkvKQKYqH\n1QEAWpzxEt9OEXJRqyrObbjy+Gjb1IDq0rd0bOtNoczG56aLCwyOCbzDWNLU\nXl60vX79ZzCgQ4Q2z4lB8DeVOpvWqhsApMsN4qDlYAvSIVZpUuOfDNeTngMP\n3/3Q8p7T/ivrmz25spu2NmL358j9qqhtVkOdH4k4BllvEwcH5AhGfYfPkCkG\nbSr6EqPPjjZ2ve6yAUTHSqeG5H+uMp9YhL2rIUCdEWFLzYO7WBsVPXwj63bh\n08L5\r\n=n98M\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"0acef1b08eae801b536f11fbbb9e78b905c935ae","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"12.4.0","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.2.0_1562232414173_0.6083992461612968","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@ice/store","version":"0.2.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.2.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"4dfb95d3195dcb1954de104d70ab9e582ac18ba6","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.2.1.tgz","fileCount":12,"integrity":"sha512-5eNsFxI28uWntW6hRmlcLvt9jxA81YE8gQnjvxCupt2+UIlhXNpumnbeKAoxpez0H5UgDQe39fAURA0HKoRVow==","signatures":[{"sig":"MEUCIA10u6MtsbzhWA8wiYRG/JRaaTsPuxs2jbIFAnNyqtuWAiEA+7FAQgtLUdxBbJHCTvgXPCmExmL4r5jnLZ9N7ur5TCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHwaRCRA9TVsSAnZWagAAGqEP/15y1td4zeSPlxIrGTKK\nJZFhdPvXiC9D5rEWEXa8vh4/VlXBEBFCp5+E+nHLwlLnVpscMavbIV3NaRDa\nzStW/Y/gn/a/E4pesclhLiIx7Yn9RPAXVeYrrK3+mp30jbIZVw9vInsuZW7y\n8QZRxJ6TfEte+Fwkpgl2fg9on7k/swH6SzLKJlKIq1ghTaqaqaonM8qY6QDT\ngmhEtk531X9UuhHjPHFsXCePMyL6+JKNI4849KY+R4t5j9U32Lj0Xtb5245h\nu71dncRV2fogmVB/jUB+3TBuIJ+A4URXJS1zmO5C1woYq81lTtjFa1o60Vve\nuNiVDx1TfTFOkt78q3G5aTgUZtndruo81LOYIsVxTroqR+MjyVNuwsrkROB8\nFadB2Z4g4gtN+BdFX45TOuuEiBgHwKhO9fVb8T4C6UDstljN/Kr9u8hfVwrZ\n5ov2aLcr4mpSRXwa+06JSCHmu3LwxWRPWHkF8vcDZ1gASDwJL4C12h1CL3O6\nzJHlBAUlmmSv8wg72p0QscBTeoFMJAFNWSBRv1KxRUgmc7UA0a1Im1C9OQY1\n6ONWaEdfHbXxsyP4Oub1rga5zMd3BhjWMX/n8gqKlcKp2QqHQ2w7JTe4235a\nSgqgNl2uGjedQ4RrUIJGzjxbS/sTuBtHbnrqz03t6oylpdC2tfdLEgMVl+lM\nICIg\r\n=j+KW\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"67d98707b4a8865229ea5673c6b2cd3b6052127f","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"12.4.0","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.2.1_1562314385196_0.9054255536350928","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@ice/store","version":"0.2.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.2.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"68d05bbf8c7e404a9f044a6d019edaad5cba98e9","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.2.2.tgz","fileCount":12,"integrity":"sha512-D9q94x9dQzXmS/Q5nZejl9qT0qaQJCfcYS8PKiD6IeYiTyAluLvf+F9kig7Hr0qcFbQBM4KzvqDgTu/p/nowig==","signatures":[{"sig":"MEYCIQC0v9oFOcxrPtECtBpmZma2o9hm9BGusoZYSaqp0NmO8AIhAPMXxiUciTdyGU/pxqfM4fw9Uhj5Lchjxk+ED3W5Tcvm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJZgaCRA9TVsSAnZWagAANucP/1I5A/2V01Lv/ydZ64Vl\nQiXAn+keb1B6I6i/Gc74Ko1HLPF/5z3k75FPkTWb/PceiMgbJr7KQAazkskW\nIFxqxbOgmlh8eDwDHEeW7X+k6fsoXt+SQhBHnUFJAqLnZKbqVyQlCZ/4hF67\nPGP/4qpMvWzP5z79FrWZUegm6JY2PLICrFkk1IsEUspsSTxsLaraYed0DN8r\nxYDUJkv02CtNpwSVHXgEarQYtTmGs9o3pwoeg0JAIlsfpQVq2gHG+gmMzGW8\nWI8DjOWiaF3Z757BB0uv5POJ7lwLT00kqWlkkm/6+o1Sm6UrCZCn2LMBZghq\nzLx5PipNVUslVegVCGXTikLMce+ae4z9AeCrFewAemqCFgTjDcKScWmpeL/M\nmZvAoU48n0gTUOPyGxaE/v29//yZJ+AygprV30ONx4CCAg9eVBE0ALkddEsJ\noubf/ScK4jLgaMe+yBtvZzzF78t8K4734ov9TFfsTsZ3yQ5koYqXtlKrja9y\nkqBu6kg19ayDB5EwCunLNlCs52FzP785BCRTm4cxb8CBVwVamNU+v6DZARWd\n93URI+dbV8//10y3j/oVAVMFB5Ue0wpTuduQPWlXJzKSkbwiRAx4FpbUKWrf\novtZ5CwLTTJ7o0nQu00jXvHcPng5UAdvoZ9PZIhiNKQtKGNEyIghMX7nka7u\nkNY7\r\n=0H3k\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"149111bdef8472de3bc9560c0df8e23a202d020c","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"12.4.0","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.2.2_1562744857685_0.6483215066048333","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@ice/store","version":"0.1.6","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.1.6","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"81113efce386ea540bb6580243cb0599cb6c3edc","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.1.6.tgz","fileCount":12,"integrity":"sha512-LMU4cbztPcCabMKlibDv0DYr2K88ZN5QITuWz0xv3w3s++cgHSe2mBnRe1tOajAAhAAHTXmNZpTm1brHxH1DVg==","signatures":[{"sig":"MEUCIQCZcbcQ4MK4YQwfiKdyTB73SwlCaIhNPL+ptw9os5tGagIgNdz9ZZr+OfhtnQeI6w6XZ5Acm4Ap8ZilB0cAhLejFrE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLGSxCRA9TVsSAnZWagAAITAP/AuStDrZHnFO9jFliV7K\nfTh296sU1mPUBlN+GabQyMUZxRmxnVsrBHWjFC5xgC7m3RGHwN91VyftVtBX\nXxu3uH6gKRaSwKWrc8/mMXseFMw7hqFKEaIjlj8FSZAItgw4b02s2EndensM\nFUcBLQFfEw9Ajj5xmK3UQ3j+2BGfNSmiueqWd5WmQlPRhviDph5OuQ2hZ2Jt\ns+vI3vKEMDFA8fEqjfnOMW33tbYWiG93yrrHHMAUQW1U6gkutlBKg3svs5K0\n5cYHK40Kg/DI2iSZA1LbFXIT+oRNVs06N524QF1PcvNlwiNThY6XGKf7qHHs\nOMTcX57q4oz4JGUCAizxJip7LE0LUjg6OXnScPXOIkRHcSHWoKhBcFkuyUUA\nDEKVP6WeqTUSXixlql7rSWIGQEQNlQW2GZkzF1TeXl/BewrOS/GOTSH5vhHd\nu37PBWg0mxTAbgaQwcAWtCU2pTo5A3eoqcYibnmVh7HNEgAwn5sgGwYA7Oiu\nzPDp3xZ+Kxx38Gti21PGmSVfM07sZyzwkCslYbD0RCaVhQ2XUHziyjsOkMnl\nx2Vx42odmpBZOZ+yZz5/OEEurgdUf7CM1CZfYBNuQyQO/WlZtKKwKREYyS91\n1tm8IApK7cgvYMtxNJm/0LnisOeANy3G4pVXpm4Bw5HP3TjcKdXhbRFF1qCl\n9KRh\r\n=Eot0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"9b3a213402561eb29ea7682d50a1191157e3407d","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"基于 React Hooks 的数据流方案","directories":{},"_nodeVersion":"12.4.0","dependencies":{"lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.1.6_1563190448416_0.04727787257319771","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@ice/store","version":"0.2.4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.2.4","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"jasonintju","email":"jasonintju@gmail.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"5851b42c0ab9b6a40fa136de33cf28e6e156838f","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.2.4.tgz","fileCount":13,"integrity":"sha512-VFLAfy+uRzywPnBGRHaQznsD060F5AdbD7ruC22ZwXXwWoCnNvqZuVdpMk/QKEY5V5/Qg/Kh9L9Qi5eTISlVGQ==","signatures":[{"sig":"MEUCIQCJD4d5v0Njbm1AooLcYE0TUnVXB0crJ1p/7ySZaMCTLgIgQt9SlfORuARhCkDz4aKLiTcQ7IFh1OKF1npi6u7OxAU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42289,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQTKPCRA9TVsSAnZWagAA578QAJVV0LiyF84wHPP9JnDn\nVj4gS1LDcXzXdgvph8scj4vjJ3ghCZ2LEy/GLUzBhFHpnavRtdzh7xLqSR4L\nEL38rCHl/aq81g3wqfMq8HRTYGlwTdmLQx2KqXHj1sAK0CsY5JPnZn03FMgz\n3Jz0BbVVSsI+0LJyy5rGVeg4LZPFIV7cOCJs2uf+ZbI66KoEXqMrryIPUAOh\n56QyACx1IQ0XjsKPq2LdirJbSg5OYStHX+r80FYkg0GblkqUsRKjFr22Uo4q\nopSzc0iDgNyHnI7tvRhccMorOtraeNFDFI8k6bgH2CLkjEJiC45gKFaN2Ly+\nkw7Y6HmnTKGyrpT9fLql0IAUWAo50vNHstpuWfpSGme05traCwJImsXmiH35\nqgSQ5CFZKfYDscYwtzd8VYOkx0m1XDvQc32gEk9lQT5xvSxyStE10QFWukpH\nVcMbe+ENyY0uule7F+bomA3atAqDWVOJaJDRn2GpFbbdaYmcUgaxNybvMzGl\nt/p+qB3uBJFJejpIPI+70GhbwByxOG7wbmCvgRuUbtMKItix9DpQQKXHKi5S\n9xbE/99m27oNsru7iayEFdRLjT6a2+g1LlfA4INyK/pUPY0qmTFoGFV639P8\nixsJqFkX+j+9DyncTS4IgSn589DpLxQ+iVRnAfYPlM2YV7vXH3vFYnjn/bnN\nkR8N\r\n=UejF\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"6dfa62b16826d70bfa05ec248c63dbdd7239f835","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"12.4.0","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.7.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","react-dom":"^16.7.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","eslint-plugin-react":"^7.13.0","eslint-plugin-import":"^2.17.2","react-testing-library":"^7.0.0","@typescript-eslint/parser":"^1.7.0","eslint-config-airbnb-base":"^13.1.0","@commitlint/config-conventional":"^7.5.0","@typescript-eslint/eslint-plugin":"^1.7.0"},"peerDependencies":{"react":"^16.7.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.2.4_1564553871186_0.027829828753285435","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@ice/store","version":"0.3.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.3.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"jasonintju","email":"jasonintju@gmail.com"},{"name":"lip966","email":"470040845@qq.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"af6bb1f00b6d3df99c2652c7717ec442d43ca0a7","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.3.0.tgz","fileCount":16,"integrity":"sha512-aftEoVWGpF4J3lrrQ5uC79txnAdFtIrLUfidNdXrg0FAi4nnFPfKNi27vwKaUnAe4RNR2XuQS7lnhS3vttlDoA==","signatures":[{"sig":"MEQCIE6AuP9pQGKZU4bbMY/ewkak/jjnS0E+a5URWKDRXsgmAiAldAhLJHET4416tAAZfxyU0IttrEjt99tY3OeVXwSkeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXqbfCRA9TVsSAnZWagAAZBgP/3tBOLv9MpM1LpePV8Yf\nKD+6ISwq+SxXiDkD1/ihHLW8heclQJOgK1P/vtHsOGNPfzYndUvdVid7A7kQ\nJDM9MHXmHa9WCYLwuVIVoWHg9inUbcFb6B9/wzqBBE5k22oGokseLDpGQxLK\nL12pPmL/vbzMUKeT4+gvKzzDrBkJtAcErGKK7xXybh7aMGVVG76YExsIohf3\nW1g03A7lW0DbubnSiaHfgCcR1E9e+7wI/bttCRe1mznimEJ7R6LyW4MngOLD\nd8KWzz4T/G9Tq/J0mKa7d2xbFiCtWnIs+OYgRSmDseLmXr6699NrYMZW5B+a\nE1Y2fi9l+cYULKblrZ6UdedqEvn3R0/6XJJAfXa5Ooo4w/smk9NI19F3vIY3\nLqKqjWwUhqWMCuJzFWUnPwgFHCHJpwxNebXdNNA0o9CWW7LBIxRNtP7d3z54\nPLTvhqhvdn4FItnns7ltbahu/ekHYqfAwM32gv7TtiEnKXvv2F7BIld5VnoV\nsHuwM4tAl9Hkn/Yfltd1d79p4bFrMvPAW8MS7/n9DogyEtUZZpTCQq2HJfLm\n5clSisADq+BvZI9lTVPfXXMXcHrClq2uW90ly8cQ7E4QsrLRsWgfoOtIMSW4\n53R9VWBxlssq2TPKaJ0JbHPRJeuUwLyat33pbtS52iKFdPBgcc+PV3eNL02o\n9inA\r\n=4dge\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"e879298390b7488f1a6902856cb1fe0b71416a5b","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.9.0","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"12.4.0","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^2.2.0","react":"^16.8.0","eslint":"^5.3.0","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.4","react-dom":"^16.8.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^7.5.2","react-testing-library":"^7.0.0","@commitlint/config-conventional":"^7.5.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.3.0_1566484190828_0.6944001156812238","host":"s3://npm-registry-packages"}},"0.4.0-alpha.1":{"name":"@ice/store","version":"0.4.0-alpha.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.0-alpha.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"5d4862f5ca6056092692fd5c011dfddea06b4d6b","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.0-alpha.1.tgz","fileCount":16,"integrity":"sha512-G9PSvglz5zoymSQ+1QYBqoSQ1uU23W6/yJFmQxu73629AO9zS+6R44Zr/lUBg3H4e/ghMyRCxPotOamHT0amyg==","signatures":[{"sig":"MEUCICL7/wKRAXLaniePm5Y2Xyduoiz/zBbGBZQooXgbroMXAiEA/hZEcSVwqDIWIcObOeiopaiUvbR170OmCRJO6Mu3GHA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":64972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7ezUCRA9TVsSAnZWagAA3+cP/1zfqMnDDEIhD+vVJ43N\nmDod/d7e/5l935R+f605DR8vSaknibawYcXYY8wT1EflYGq/bDqEIS9h+Ffe\nbKYzsqjHauMGHHYRpcYmUkUgTT91YOoH1vm9u0q1/yTKnsz9OLYfg5bUQ5Yo\njCtLc8lOeKCGEw79NlItFR3uLBjp4w3EyIi0gxthJjQ4leMhFuRI1Y12ebIl\nxVnJxfrVAiGSVCRGaFWgNX3nHDw51KarRGk5Cpgidk3sRSrzKlh55EgEq18J\nFPnTg6RYbQGR9pZT7TD+Imo4yZNRZjqmeY/0hicYDLXAfGG/1LwXHjRzAVwG\nrA3r40pxaA3J2wTkwkrRV7lxGj/xGLOK8IzUfKCR8C9MrYJvEAuhi8hH/JQm\nT+CKczjd/bRwPG3SHRh4LDzeKsw4vh6gank+cv+N/kq41J/Atx/sAap1sp84\nWULQGm0jmJhWyPYT+GOAw1sxdloZ+smWMSYgE/NU6GgA0ArLlUZdOB5Gig9f\n9HheYTwbz2vySshu2/GA4PWwDgefv3EfPFyTSAZs6t0MAkdUzxlkYizs1w+p\n9LGfyo8I4QMV0F3tIcENci4j9JnEHnd5MMiRrpeeMXAIYpszh3VZ8x3gvJaM\n4P85pM7qp6j22gpHPxFn0z3R8h/Z2re6wgcAK8oFMKWcY6uW1ZWq0GgovEeV\nxTnn\r\n=lbDD\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"ae7aee065c84585ef571075b23ca1f253b614b6b","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.4.1","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.15.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.0-alpha.1_1575873748368_0.5282140362683232","host":"s3://npm-registry-packages"}},"0.4.0-alpha.2":{"name":"@ice/store","version":"0.4.0-alpha.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.0-alpha.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"b5607ef87abf5c714971cf7209b869a338a509d6","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.0-alpha.2.tgz","fileCount":19,"integrity":"sha512-6gb88lN4AulvYwpdpTM2SzKwblQ/jbzBt7THzTz4fKa1cZpnvofOyJpCOWAJDuAAz06xd040nIrvR2smcZxkcA==","signatures":[{"sig":"MEQCIEKAtOgPLFCFy7z6ZenDcq8Adl6/jKI8ixORTF3/xiYKAiA/vG9dXmXqiFJNjNSQVFE4uJyXEeOwfeGJEE4rX3y01A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7gn2CRA9TVsSAnZWagAAxLoP/juFdX7PUkkoWOy9DH7H\nxNgI3HYT9wTILUClfhYp21XwsW6VOIJOiXixkfWErViiuq4l3Cc4lDsEFTZx\nH5rEACGB+D8qi5H2MEHcxCwz1XB94E/ydLCNC+W0oa7fmKUlPxjH7ltfqoQt\nEWVNEuAOd19MgK3HbLm+2PPhxMnWo/nHl+sIRrfPcucIDOdfeRo6J41xVI5m\n/ffB6Q5FYiRLJ3y0o5hxHGWbMmWqu1LyPgKy575AYhBJZytOQDdJJsk6uXeI\nykvSxwoa45VfCqtQAULySnO/0GbgULJwAZS+HEDe+i2atLsULAqEsOhxcSX5\nL0+1g1GrLiXYD1MYTm32ndpN46EM6K+PkRi8/ij6EmJPgAKq5sY3NL54HAeB\nfIIfC64hitfNKLZ1euDBZL20FvmVsqse99ymd19ZIc5xxD5oJLiCDC08yydZ\npfaxk5cj6Za5o/Qc6bKHd7x4i6X/ukWMjM2+PE6tG7A1fXFns3IRfdh/iv5Q\nGhSlm/xAmvombrHYZieSnkNiHyiwXiPAqXGlsmFodPFkN6X59/zcRIRZaprZ\nJadm2jAuYutcmSzxWtAcvI4IUFj3+IS1NA2z9EHYTZwda88G1yjoKf7mCtxS\nFJEFBDlcJ6Ep+3DOVoU4rxBhttYUwBh6iw6FE23bgFoHA1m58AJDUARVNwAH\nemMf\r\n=IPwE\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"fb89d7dd0b5a72c0aa4f9ab054ea41093471cbd9","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.4.1","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.15.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.0-alpha.2_1575881205972_0.462221725987924","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@ice/store","version":"0.4.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"539cab656b8576c0f96e37d74cd0ddadd2308c56","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.0.tgz","fileCount":19,"integrity":"sha512-7sly5MCdXUkQj6mMCPIpARAyq0UnEpC7UYy6PEWj7qLU4qwhRnxr71CpDuF7NfyRmNWsp5AqQjNkwU8iYfi42Q==","signatures":[{"sig":"MEUCIHpN0tBgKLJ9cR9Vob+y7QHvJK7qXWhXMSJ/leOn1CclAiEAsFVrLQTAtvzPPgKNEM5b7MOyPBB3BchiISPSu4XF/pA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7xy4CRA9TVsSAnZWagAArVYP/RRIUAT9/QcwHMyNOOdB\nIUSsZhj5WCFnH6IInEOFr0kN4U1E0+pBeejutw5r9KJ+GRDCJxLCZUHguawg\nGf02xeFVpiZRvIrtgIgIHdYW8UT0ud8b/V21o/8f3drEhe4xPC7FKcxWy6IP\n9r3m56WfpyemvSWPv+Jod6vtqviPwSYRlzLzJcx1WmjRcUSjKh/FKqvmHEzM\ny2Vn3uh/s3ayb8OXGtoaYsDqE0LQPcN+KLtcp6URhX/pI+rFCNTjemsVSzmj\nr8PvZqKWW3qWCuc0PKBjF7s1fmwN8fo4b3RyVJilxZmgrsaSuW+kh7C1l7y2\nYnmeP2VFvm8Wh2eO6A+K2C2+8fs7QONtv8m91eAEukUzMNBiALUlKGNDQyt2\nNZobP8RzpX/OoKsqcVX1xeqteZBJxf1IwmwFzIdcSHUJCL0GOIJbOM4ca0Ju\ndqskxPEDKVhDex/RcufzBkQjFxlzJMAeRdSVscKcQE/6NPWCN5VgfvBwRoi8\nrXUzjebhljEEmNM73FsvXyhxgBaBZrpPOVFrFUI0HLCaA/JKibQEL/o43qur\nfiu4nuEc1CCLfsIKO+5MfcU+T+oSMOePO8RPunwjlbAFHQ2+imNP8hesyVWU\ns9G4ROAZpi3qmNu2+v/5soafhUZbOALGwPHMVztwFUE1x9009VHDxIq3NJXo\nF9Y3\r\n=WLCf\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"9ba06690b70df483381d0550a9c613754cc50b52","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"temper357","email":"temper357@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.4.1","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.15.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.0_1575951543877_0.48629747582750116","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@ice/store","version":"0.4.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"93ba357c0ee017620fb6c9e62a251166fab04c07","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.1.tgz","fileCount":19,"integrity":"sha512-GAj+gWCWW54akXLP8/y6mYuAGhfMnu5fuw9OsmlmhFrcAhHegPJCdYbT1/RXX/rishpoRtkbRG41oUqJZpvzVA==","signatures":[{"sig":"MEQCIEmjl6G5W8+6GHXbULo/3TImcOOKG17KiNAlurVjRbOtAiB4vW6v78ng335gV8T5qifUYpKsrV4d56SWlUeHBsTs5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBy4ICRA9TVsSAnZWagAAz/UP/0A7drXx4MaR4gdHD6AB\nxPMj2mC6G6JXedV/1JwKXvjGkvGpHNBt+kA9ccli24+XOH/YXdCR01SaeM6I\nLEQsJXo3jjWr6KU03tjKMPDE74hM8kF3kLKduLovLTxc+trsJY8GduSK3RDf\ncp2i/mo37MAm9uSTWFsk2UlPqX027aDmPmCbBgLRwaGeFcnOG/c4ps35hz9m\nFCoAMU2vEXNTrJxQMVyd6hx8+LXplmsbLqQnY+yDZnRw6QaKRenfkrbC82xF\nn+4swHlOOaOVzshrLi4mCb6e9Z9eqoPI2REPt6uMCnBJOdgIoRRALYdDRm2S\nSA/rfK5RnLamivAjeB+LnNvmQulhaIa+zByg4P7tHnxGDNOjCL11i/bGfhj4\nsHtMRRtrdsFRs42nHIBNNDpWp0lWmJvnDclEChcHJx9O1aa96U7DwuVylS5H\nwHYXPF1dlUV3EnysnqDpFVRBKoJR7bQ4nsril1ap51tA6L/nM5lQce/nLI2i\nA3X6QQMKZMKBgon+Y3cCbQ4ikG9SGoM5Xzd7/nA/VNfmCRYVgTELBPFZc9/s\nWQrfOvNWYzlZfnM42CTbbFj5FdBtMuquu5YIv6g9tMb/0qEiTwIzP1G3S/Zj\n1ZVENlMhPt6WpvgWNLXtOAs7IsJvlWPaWa380q1raI8TlHlsxYnNe1B1Tb3r\n5pJ8\r\n=31HS\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"db04f6823fac74eba79c172ab948273a463614c6","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.4.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.1_1577528839448_0.6116785952775707","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@ice/store","version":"0.4.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"bb4d2d2b2b62eaa985834ee16debb4629d3d75bb","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.2.tgz","fileCount":19,"integrity":"sha512-2GkqJLcFrZl7ci7nkzZaRbWGFC66kUbc1VhgxMK05hP4bG+iiLPa8sSS6OUy9DOfgdSim1ppgHa6KldI+gfJbg==","signatures":[{"sig":"MEUCIQCfWZrVEF/GjrVev0vx2/nZxUhspWO0QqEnrr0HZBObQQIgOqkuJLlCCf3iXMKGABGiqpXXxnLXbnAkHsDDte8oJgI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeCV6sCRA9TVsSAnZWagAAn6UP/jl6KUrgEYaMf6W76gy2\nOzgsNN9i0DiEz7SK1fkypTGiPMXP9bKVZtHICmQhi4vkGcFdfw+CxKrdew5T\niZJfZbQli5+MhBlubHiiV7k/dMd9yz4zep1MJ36vPZsbVkMtIVgcx/6Io2vW\nrg8OxL7/A4cwlrikaTyGN0kPzx5JXW2Xa5LSqGF7LCHPHBxpWYyIQg6pcSGF\nFEvvtAbS/mGAQTNWKHnEVS646qpva+FChz0f7m7PKp19RZkDm+20syabYFuo\nGrRbp9js8XM+UjcPd8O6XiILqCb6uFbWfYEN4vvyF/22ve9pBkb5GS9sHnDt\nCO4KEll+GkOKDFFHoVvHOr8a7TXuvSeliIZge5PsU2yg0rchdgfejhy3fl4p\npHIJRG2nOZNVbAmGNBi0Kn0H/16myCJb9DvNRrd1dmVeZco/rmU3qTsG5fur\nDnqjrJ3crvbbOw5xSzKqXCQEUp2kgteX7JAP4T5aSfqATkePWcPMvQHC5v4/\nH42DrhYaEiDEg8RlhhqYHp+0uJMq/RC0WnE/uRlcHuaR3ILd7E/qVsLaz6HX\n7MAHv/wVzrkkT0dtXv4O2V01gLZUSvMCmSeXxZA4jC+vQdpdUcoseCGrDWQV\np4cZ2+k2GA6lW4SO7J81JmaSZn/0MAa4MqBamzMVotI7HExwA5FEZD8sftoN\nnvsp\r\n=ZfR/\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"290c870431f966f9df8269cc814a0ce19ff7c7e7","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isobject":"^3.0.2","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.2_1577672363513_0.5122307233515109","host":"s3://npm-registry-packages"}},"0.4.3":{"name":"@ice/store","version":"0.4.3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.3","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"a82e71c2d4a99833fdfef2f2c2df8dcb78a28a30","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.3.tgz","fileCount":22,"integrity":"sha512-gvI6Bz+PiwKkVNk1sq8MdzT1xUJ69KDl9F2GHnw6nms/1tICnhKKhf0KgsYgHjzqCZreQIVxrfgNOj/LoZqU5Q==","signatures":[{"sig":"MEQCIGVclDZbGC4ywDFXCycfxOuE24O7oKeHe0lE//ybdiTDAiBGZNhI11EWmWAh7BmmhpUwRe7GUNdHrovxkSWs4hcDPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":78012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFoMJCRA9TVsSAnZWagAAwa0P/1AUC3Hrb/s3Ot9sbXFq\n5Ev9Fm4XfgdmR6GZrtURsfj7k6qbJ73Nh2f2SutEdyFe80uIn8vTJCFnK0tS\nZTwFzFa+xP6al7mgjKOhZsuV7594mLG1mdhwJXaluPXB9sWgWWJPT7iWpSct\n3wAd/0BmO7o1RuYMJpzKEahGOqlgXVPH0XNsydBYQp75GB3oTGTdA6WBU+fw\nRq3ekOlbHbiA3JiWKPi5BdRqKsXUBTQ698c3YphjbXS1AEteY7CedOtxGvK9\naJe3AjrqWzZc/sNCQwb2YOSjSiweClT+Hui1RO/OlIknOYsHR5TDOjJ4tM36\nUtmffYrf1n7bZ2l80qLSlsUNkoJkXDoXlCLIrb5WAPPgvrwCLqP7BqQiLUTw\n4uiphYebEwRVRfQX3IFuTEZpylyxMMCIfUC79WMeubiRXNYc24F4Z6wP6Q9k\nITH4O2gcsb9QvFq2ybQ6Vwy0/OHhfnHbkNHeeQ37iE2oES3FskWLw3P1jyca\nAnqqFiZODlCLWUoP9Vo4/8M+jDWnFZ5EGJ+Q9SHEWxq1IPNaNXi7rXHfeIFX\n5MmiB7PjEYD83e8PQyziVIhiTpe6Us/s8MTx2D+4LW4WBLxbABZEtVipv1L0\nJqkAiX2joOYk+T+3dBnXUBMGeqrXoabM4uv1n9y7aaoAq4JiT6kJzq3S5116\n3IXJ\r\n=Uf5c\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"b4990666c42178d0893bf3258f2769aad71cde7c","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.3_1578533640527_0.5304893083550295","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@ice/store","version":"0.4.4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.4","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"cc7bd97af8908f6f5955d660917b723034eead8a","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.4.tgz","fileCount":22,"integrity":"sha512-56dAHdAPFx+Nu2+WwE+xEyV/RA7ju8A7paHXSWu4hOIqeSdg6Em1LaW0du0mgWTgNykumq/apqzo2n5IGuYq+w==","signatures":[{"sig":"MEUCIQD1b3B/vuZVvvN46vF5GIukJgnlE5B/xOxazrfHWZEKxAIgJGMVN/9r1rNmccX+hTlnGL44iQfmbGKKcS74SsCK2b4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":77980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFoUyCRA9TVsSAnZWagAAIowP/0L/VdtjaOYhY6hyzi31\nWTUGIvaPsvRxmOMWP5CiWQXBZLBsY/rcbtZTHBKnOjf8+MJRD2uYxOsewz4R\nGp9S8oq81MeMiyAg79EcEJu0UXE3VOzJ/fQWH1nR8exHFr+8tDrXyVMXOSI5\nO+zVDlWMo46Z0XixDhD3TYr4IR17Pb9rj1j/3M8Asw0mcOvvwZ8Gg3jQipy0\nuqKsuK7i0pe6JeTOFnmlMgvyOOjSKOQIQFSxRlYJZQoxaiFyTScgBbkSnHO4\nPbflrMaHiGEkQf3jX+G3Vv8jUACgTogcHNLxSl4giA6vd8Z1mBQxAav9DWtU\nPWhu0+dVTLzn+je46AOkWvxpZHfHrRZQ5hzVlotreix4ARGdggQltb16Q7Uc\nzUlQrXksgiJx/GkoRF1PmV9b+G2AKjbOD4WwssdqR4F04bJkQ2HQmV1WeoTM\nXGRCfoGIOFaE8G3jmqN5a7LN4WsiMiRbKBsDZMUKWeg6AJwy9tvUuNvJcXro\nFjBGUizcJvBbmAXUEgxMLPm3LUGmowgNy0raySTw6P/YPmoc39YUOOzSMmqv\nbN9FQk+bfxqN7HOevMvWVc052TTFHWiigXmgMARNgcixol22q6azylCSJ0wk\n6s/6uJ8cNGxtL4AZHpBOzU3TrHtG4lD1bcLB19gCeezjw2aVWyurD1J9F3ic\niq0K\r\n=LRgL\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"004a25cfbe93c422079694094a1c0917bb26b283","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.foreach":"^4.5.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.4_1578534194594_0.4365832568884991","host":"s3://npm-registry-packages"}},"0.4.5":{"name":"@ice/store","version":"0.4.5","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.5","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"788c1e9ac0ded3ab9771d56e384a7a7f5b3f554d","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.5.tgz","fileCount":22,"integrity":"sha512-rNRZphTejDIq3uDJrZdYTpM2MN8Qx/IdvQVlB9buMKAiHXRnFD0GuylFUiF2LgXPOi23e5ryAEn2P0+Qp6yQ4Q==","signatures":[{"sig":"MEUCIEtUnC7gsJkm63fxHlPDHxuxZqxXK4UNB0cQh4si17jYAiEA2a6ph1BZeDuhnV8iv4CTIKtoCiJw7h2wynLYxQyiKhc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":77948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHSDdCRA9TVsSAnZWagAA4NAP/jBWfhbhnUx1dT7P2ovs\nQJ0EOlU/T4ml47Tro3JhCFd5xB2I1Y7u4MShImrKw5MvlAlLYb2euswj1atk\nXRpSPKr60ZRTdAKyDfR/nPLrWT2zdq1Q7h+T+vAMRyskMU8TRRDs+5cvuqvH\nwB33JcvbRAm50K2YqGN2JU5ERRYVF4XgsddtyEfVpNfzrXRe1A8mSsgENPK5\nB5LgC8fDCGl8Pzv/d8DU18LhFb8hUvroVIfwO9uHGnk3hOTy31P8RFUGRI46\ndM1yo//oWxim2k+2aDntHgFbDj73XhEpsUBQR/afcV2opVN19/2vVb8GogMC\nNTegNG0pyj7c74fzx90Z2+Z74835DTLri+wZ7RMd140R4oUsQG6aAC18rPAy\nq1urlkh756vGChFIhQ4/fzG1liIKv+oNMdnpqanFfwgiMqSu3Ze0aZTg7Kp2\nYexcCRp0qM+uzfBqiW/ca9WjxFpIc3CT34b77WG3+IvkepALsu+vA3Z2ASc4\ngfzIka2Q0OOmxNyS/arTbvEIpQk3QaiekLVG4KhSwQkjE4sk5w6ala7LhpcJ\nqJo+q1FY93+AhkKlzrNGE7zYd+JtIct/qMReHh2UccfIdMUprn1KQkjtwcfp\nQY5OsSMNJ5D9PhIP1Ai4rU/5ZS7S32Yf/BafzLtILW7z9m0RlITPvth3qxTF\nmH1K\r\n=HAXm\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"ac47f3d4d9ec0a5e26ab162a7988929dcdbcc2f7","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.5_1578967261226_0.23560522867878464","host":"s3://npm-registry-packages"}},"0.4.6":{"name":"@ice/store","version":"0.4.6","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.6","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"0de6be94aa402d5dceedde8d7da8b81d9060c306","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.6.tgz","fileCount":22,"integrity":"sha512-4zTjO+fVaG7f7PMHLngzP1JpE3nyZaHFQUeDv5KCfL/B6zKOP0OL1X6apGeKOmqQpv+dYfDM85TqnUdq0pvdLQ==","signatures":[{"sig":"MEUCICx9YdajJZuRZQqUPLD4crwJzmB0DfoIYR81js+FsIimAiEA/q2xWibzrW/Y17Jpg6Sfd8lOGSGBjhemuASAUlknAKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":82050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHX4GCRA9TVsSAnZWagAAqeEP/1KjM1BI4GW8IPdKAhiU\ny2MylM4WMtA+ZZkyYEbgBos4arPROPIZAICktDTb8tuPIPkFShIGJ5lFjdCE\ncFzIphtTMrHGXca5UhSYvwl2lgW9O/EqkY2K9fpWD+pVpJRUpImQxoNO/mMH\nZnbdmvlypaXvjbjQBemz62as7gH6pEKtrAegU4gc/cujFSTdN1WrwKqEuc5I\nBkMgUtBLRwcxi4EnAeusIRuOZkW6u/lDwB8RMXNnNtbazy+SUnAZXWkvVR4p\n9loUlcuRKo+I9HUFyB4VtxxD4A/YIUdX3TfuEt5u4v9garrIFmGwjDR7LnJa\nbcxq4hYZnr/xZkdHRAp80r98wiOkuU0mrXzQm7JP5iA/6WHU1VwVlfjapTD3\nqHiEvU7aQ/qRu/6phmBZwb8LecB/olk5zZX2HQbiLuVBGyGqoVWhHsYQVI9J\nIrLBv3nbdtaqI4s+K3IAobxJcYzD9rbCbidn1kOPegITApgSoA34ugabFEJ9\nPrV8kPrOlTdMnHwxlI3dn8Ed3asK7FknGLVYZOBnGtMGneulRqzSy/eT1XmC\n7+DsCGsB5PRTt+ADErrciJvZlVtAORTWDrKiIcDNl4TWe9DoM1ArqQi6kU06\nK8RMQG0Ih4WZs7Edh9qeXOd5PhYEhINRZPWYS7/908lkZbT7CG+vPe7UMIz4\nhEYC\r\n=6lr7\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"1b624ea2bac3afc5eb37284ad27574679bb7dff6","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvinxwt@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.6_1578991110466_0.03631996720934483","host":"s3://npm-registry-packages"}},"0.4.7":{"name":"@ice/store","version":"0.4.7","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.4.7","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"dbbc748fd5d62da1d1bf3ae580aebfdfcf18fb68","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.4.7.tgz","fileCount":22,"integrity":"sha512-lfOA1ki828a3Xv42z4y0eVAwxfsmx1vfSvcRZ2DnRluo5/4n+tRCLWvQXeD2xE0Mf2GGf1Xfw/imdk5Is/b45A==","signatures":[{"sig":"MEQCIFgiPjQrMkilEkeShdEwSrPzRAYZnQskgLq78khKhyMFAiBfrQBYIIiEGz+OqfpWfoPi35c6sh6SE5/0ph3ve35Tcg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":86531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKEQoCRA9TVsSAnZWagAAQS4QAIxw0ZXCRSzT6kk/XZTk\nM2OzlQRaKc7d0IG8Y+z5BKpAGxCYk7/DYZckYvWyIL0ybWFYrC8aE6UwKvZi\nlGMkcc9fAulnHDCqMC69R7frjRd/nAdjx0iNQnGMl5qVMcaJDQ61aOV5Zvbn\nmcyoagDnerJWvLDgWWRV0i3dcDNVcP1UJnij42Xf1p/+WsHQCgctFZfA6y6j\nzzxTyE1L/nUVpx785//hAuYvZv/ZUts9mPx+MhmbC7azHggylQqCWAeeoG3X\nXFj3AfTyIBeQovodDPyUznWDhwyZJI1SVGnNCnoxNEINucLh5RalHLvDqaEd\nUMijsIJMjAHofaI2Q3R+Foxm3tx3t5bhM8aP1H+Aq7XWjYNSMesr3OVFUkWB\ndu3TrUtiLUeCY6kX+2zlq5tot/zAFWZcbouKcrRA/k/xIbC70Xblo0p27BCV\ncKIxmnvvhOH1GzRsNMAsb5glAuUxZIDj3nCDY4mSm47JEKUtmK8kmVdVRU6T\nYtpohAuiRV23/AMpwgQATvuQ7uKZf6YR8IDFjzo3GuYUcZwZsG3J9z4RH4ej\n9yKb1MAnl3nCIpzbqiKZIwdI7XUhSRPgn4H0eiS9cw7ECMdIxU7e2pP89GcE\nQ4IUnm5WvrsiQnp67iwkJaF+8T6Phts0OYqoCMquaFL94hg0MZfePWJCIIf2\nkSwE\r\n=t6RI\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"968e57b5c97ed452a1503cdd6d4c8af16c1c55d5","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.4.7_1579697192284_0.5976919559490004","host":"s3://npm-registry-packages"}},"1.0.0-beta.0":{"name":"@ice/store","version":"1.0.0-beta.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.0.0-beta.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"c29130a94536c9a57a9377f15837a52010298aa3","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.0.0-beta.0.tgz","fileCount":16,"integrity":"sha512-DRPxaQccHVQergS04bKRKq6P/+E2S9UVGk/xxXcAkbZC6XpnFXDnl64jgDGXbgyYtwSpUPmK6/pL44wJnQnzxw==","signatures":[{"sig":"MEYCIQCO+CT5S8GTj7BCXL00dMit3nK78uhqaLWSM+G1Kucc6QIhALiVzCEQ5lmFWcQSVaSRwsNjQXWviVczYZ+xxPoE6lmu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQmvXCRA9TVsSAnZWagAA8J8P/2M+pTLwQn0CQX9JzsdW\npmKUOPT9trqXy28lf4gVzAMp2ZqSpGZY8Wcwy9wZu2AK0W2mdIJswNTTQtU9\nr4kcqvBDjnACo+wvFFbtlHkvVxlq+41H+X8FGJpoDKxaQiR4xYjcUS0kgf30\neb9815dQIFGL+3s/GGCrm7m5JE33yYceGAUBZcf4WX/O69DNgcd28my7gBNY\nkaUlQPvQhuiLYntHxf6pKuzOfFC6ax6lGgJsYx5XUEYFU6x40peHiAdbSndm\nWw1PHnm/fEnRDeqEy3RvFaupuIOKannOI2DVINXKfl/2R0ge5sagCHzYci5a\nelSnvFDI1qOAwiMutR4tz91MXn/A5il59rzA7qnIeQvpfEv73TC4cu4NMVKY\nYBIJyNnjeZhezrczPIfh3bZPXwMg2jIA96JOI1FgYsq/CVkDF+OxXqomtaO+\nEd9Sy6zAgSuCfWv84bGUKzmkhYkrdkO727oP4wjuEvo0JzQG3iKm/VCpUz/M\nh24lMQcF1S60vBKfU32CMoffpKTgkIPuoFMcYW9+83btXBlYfZvDbcCrJjqB\nV6GJ9z/tBJO0H3cVca+NOYrXmg97F7yBf2Aiw8omJgm06jWpzH5Jf2Ds1tYk\nyoYifZTNA6H9WpBjQvSJd9UmMsK0/FT8VkKfoiKa3GdKAczmnrneU1/9rYAr\nHtc+\r\n=uK/B\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"bebf01ba92db63bfe4f50db50ba27577dc0b71e9","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.0.0-beta.0_1581411287044_0.3364149907216316","host":"s3://npm-registry-packages"}},"1.0.0-beta.2":{"name":"@ice/store","version":"1.0.0-beta.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.0.0-beta.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"ad199d264fc7015a1ecaf4382bb7f7f4c4c1dee0","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.0.0-beta.2.tgz","fileCount":15,"integrity":"sha512-KvQuHlIduNrll9CF1gduDBWueHKCuL7HwZcYSOqHBgNWU8AtNoU3AxEQgY0/hv1UxLC3LjJSXBkHlsrFrVPNVA==","signatures":[{"sig":"MEUCIA/vqUJJFQ8sM6DoN/HZAgQYlsaB22+43Z2UqQSqO4BmAiEAhI3SJrCELVTKQ3TE5Pssh6HTNmfnaZyEBEGeLJkkjIo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSe/jCRA9TVsSAnZWagAAQYkP+gP1QIKn+gqYrcZaMX+b\nnJcY/iBfSnO1LGhO8zm9VK/05miomPSj3aZOHuMNFXWq4sUlLCeK64zTC3ul\nLOXIK3iTfnXDRuNvU4srnITBzrcSxn0YbXbjh9zey3UECJpvSUk4kNjTI3rE\nO0SM6cTLUEdxM0LGmmipYZJv8p8z3baLgwE5lU5U7sK+Cab2O4zQBGBdZLCj\nBt6mvUFu23gMJSjH86fOoPVN6Lb7y72Sc4a0I0Bk9Sm2+73KC9ytHATKnxci\nwNkdHNqooWA7X0g2B/blg52gkBVip/OQ6hHw1pcGIc984jn5G7dzIERNqWFY\nc3YBQ4WoTPAYgkZYhkFZeXqetRvmGY6Wilkyd9yvDeznO4txZ/8peg+6ZaKG\nqwqpb2wMx0XwVAMwppF7rb01l3MrHS6CHKxHR7ibmE5MfAZ+kkqj5Zruyvje\n0MrY7QNECoD1QP3A7Q+jn/yTZ9XNuQmP1cnBNlcAnqx3BKve+6HWD0NIbdHO\nQ2Fblm9Zb09iVdtWXOG4iMm17FO5UW038yPwKJVPfcHPspZaNQGycMxYAAiI\nXu1J+VhaNlN27olSsFLuW1xwcULQPYpfQKqjlaSxWJo2CYVO0PN1irpAIbZr\nCUcTE26W8BoLPaZSn8HbB36xViZIsY4QVJsAJdAVfrl6Yxtt0XEdqlE1Jrsp\n9gx4\r\n=k3IL\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","readme":"[English](./README.md) | 简体中文\n\n# icestore\n\n> 基于 React Hooks 实现的轻量级状态管理框架\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![Test coverage](https://img.shields.io/codecov/c/github/ice-lab/icestore.svg?style=flat-square)](https://codecov.io/gh/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n## 安装\n\n使用 icestore 需要 React 在 16.8.0 版本以上。\n\n```bash\n$ npm install @ice/store --save\n```\n\n## 简介\n\n`icestore` 是基于 React Hooks 实现的轻量级状态管理框架，具有以下特征：\n\n* **简单、熟悉的 API**：不需要额外的学习成本，只需要了解 React Hooks；\n* **支持组件 Class 写法**：友好的兼容策略可以让老项目享受轻量状态管理的乐趣；\n* **集成异步处理**：记录异步操作时的执行状态，简化视图中对于等待或错误的处理逻辑；\n* **良好的 TypeScript 支持**：提供完整的 TypeScript 类型定义，在 VS Code 中能获得完整的类型检查和推断；\n\n## 快速开始\n\n让我们使用 `icestore` 开发一个简单的 Todo 应用，包含以下几个步骤：\n\n* 定义 Model：\n\n  ```javascript\n  // src/models/todos.js\n  export default {\n    state: {\n      dataSource: [],\n    },\n\n    actions: {\n      async fetch(prevState, actions) {\n        await delay(1000);\n        const dataSource = [\n          { name: 'react' },\n          { name: 'vue', done: true},\n          { name: 'angular' },\n        ];\n        return {\n          ...prevState,\n          dataSource,\n        }\n      },\n      addData(prevState, todo) {\n        return {\n          ...prevState,\n          dataSource: [\n            ...prevState.dataSource,\n            todo,\n          ]\n        };\n      },\n    },\n  };\n  ```\n* 创建 Store：\n\n  ```javascript\n  // src/store.js\n  import { createStore } from '@ice/store';\n  import todos from './models/todos';\n  export default createStore({ todos });\n  ```\n* 在 View 中，消费 Model：\n\n  ```jsx\n  // src/index.js\n  import React, { useEffect } from 'react';\n  import ReactDOM from 'react-dom';\n  import store from './store';\n  \n  const { Provider, useModel } = store;\n\n  function Todos() {\n    const [ state, actions ] = useModel('todos');\n    const { dataSource } = state;\n    const { fetch, add } = actions;\n\n    useEffect(() => {\n      fetch();\n    }, []);\n\n    function handleAdd(name) {\n      add({ name });\n    }\n\n    return (\n      <div>\n        <ul>\n          {dataSource.map(({ name, done }, index) => (\n            <li key={index}>\n              <label>\n                <input\n                  type=\"checkbox\"\n                  checked={done}\n                  onClick={() => onCheck(index)}\n                />\n                {done ? <s>{name}</s> : <span>{name}</span>}\n              </label>\n              <button onClick={() => onRemove(index)}>-</button>\n            </li>\n          ))}\n        </ul>\n        <div>\n          <input\n            onKeyDown={event => {\n              if (event.keyCode === 13) {\n                handleAdd(event.target.value);\n                event.target.value = '';\n              }\n            }}\n            placeholder=\"Press Enter\"\n          />\n        </div>\n      </div>\n    );\n  }\n\n  ReactDOM.render(<Provider>\n    <Todos />\n  </Provider>, document.getElementById('root'));\n  ```\n\n## 浏览器支持\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## 先前技术\n\n- [constate](https://github.com/diegohaz/constate)\n- [rematch](https://github.com/rematch/rematch)\n\n## 贡献\n\n欢迎反馈问题 [issue 链接](https://github.com/alibaba/ice/issues/new)\n如果对 `icestore` 感兴趣，欢迎参考 [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) 学习如何贡献代码。\n\n## 协议\n\n[MIT](LICENSE)\n\n","gitHead":"a1cf288cd4b3451db7b94d1517eb7c61971087a9","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.zh-CN.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.0.0-beta.2_1581903842747_0.829952874307164","host":"s3://npm-registry-packages"}},"1.0.0-beta-3":{"name":"@ice/store","version":"1.0.0-beta-3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.0.0-beta-3","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"f09380a84e07bfa1ca7fb7e825727f595dccd145","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.0.0-beta-3.tgz","fileCount":19,"integrity":"sha512-tvEyIZlnma+1UWaWPkWObstizji/2Wb9JJyo1Qzy0LTDLJL2r2UCVUolp2tIwM2tfY6581eMYaqdGChn2xGerA==","signatures":[{"sig":"MEYCIQDhA4aMSqa3g5k+lDpsHtJo5eSVLCfCeE1/qGNSj+Kr0wIhAOWmeKPnzCHroCt9bUImbuZW6P4pjyggBRLcNgLtrQ3w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSlp5CRA9TVsSAnZWagAAIiQP/j9YuSgm2aHikCcrPcyN\nEkbNluj2eZ1hwNi/zKiks73k6HBy4Ak31PjzX2D0BzlRj/RuccJSJ1GBXZjo\nONFqcMcNxAAzkZPqPRQuTB55wVTHLQahwB5Y7VYwQV36kmD2HgGZwLjNhWCo\nQm+grJeLq5yEVgCdMisceN3/5nsS/f7jkcgnURwrZcQgcn1Vv8Q67aXM7SBd\nsoZqpBof4v5bQkflpa+nwQIUrLNdy5QN1xWJBVNRYGNQhbIL5Tw/ozVxWqfT\nWbu1cy3a3p7oEpb/SFVdW/JGuuTQV+KFHK4TeMw1z0M9rSMUAwivgg0Ef+Ia\nsoMy3bymCFB6W8cuAP9YnbXx/YbWUTcrbOq+KnIag1WfLC9r4DutANHOD8Qo\nqWlkSi+rLCeDUe4k9117FA3xlRxgb1MT/zzS5zfpPU9U3QCHiK1U3NNpgVcG\nvx19waP3s+lYg18GKOZm9f3WfiDPAbjFmiFx7UYOz0EkpybqBpG4wJaJZ6TP\n9LNJxV7PYkqJDRL+RTahu7lIzapWD87ISckuwll0j923Ee4r7rcFzX4GBI7A\nCAbAnUH57shSVCmJQBp7Ym1I/8FaeDkZC25RmJIKfDeF1kwxC+sFUL72dRiz\nnipDyxrYyhCfTKjRZy58DL34FqD02BWWwuOV9EP/iBxr10hjJyWTA8mmbEWZ\nk4y2\r\n=MAJc\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Lightweight React state management library based on react hooks\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![Test coverage](https://img.shields.io/codecov/c/github/ice-lab/icestore.svg?style=flat-square)](https://codecov.io/gh/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Introduction\n\nicestore is a lightweight React state management library based on hooks. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of React Hooks.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **Built in Async Status**: Records loading and error status of async actions, simplifying the rendering logic in the view layer.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\n## Getting Started\n\nLet's build a simple todo app from scatch using icestore which includes following steps:\n\n### Step 1 - Use a model to define your store：\n\n```javascript\nexport const todos = {\n  state: {\n    dataSource: [],\n  },\n  actions: {\n    async fetch(prevState, actions) {\n      await delay(1000);\n      const dataSource = [\n        { name: 'react' },\n        { name: 'vue', done: true},\n        { name: 'angular' },\n      ];\n      return {\n        ...prevState,\n        dataSource,\n      }\n    },\n    add(prevState, todo) {\n      return {\n        ...prevState,\n        dataSource: [\n          ...prevState.dataSource,\n          todo,\n        ]\n      };\n    },\n  },\n};\n```\n\n### Step 2 - Create the store\n\n```javascript\nimport { createStore } from '@ice/store';\nimport * as models from './models';\n\nexport default createStore(models);\n```\n\n### Step 3 - Wrap your application\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport store from './store';\n\nconst { Provider } = store;\n\nReactDOM.render(\n  <Provider>\n    <App />\n  </Provider>,\n  rootEl\n); \n```\n\n### Step 4 - Consume model\n\n```jsx\nimport React, { useEffect } from 'react';\nimport store from './store';\n\nconst { useModel } = store;\n\nfunction Todos() {\n  const [ state, actions ] = useModel('todos');\n  const { dataSource } = state;\n  const { fetch, add } = actions;\n\n  useEffect(() => {\n    fetch();\n  }, []);\n\n  function handleAdd(name) {\n    add({ name });\n  }\n\n  return (\n    <div>\n      <ul>\n        {dataSource.map(({ name, done }, index) => (\n          <li key={index}>\n            <label>\n              <input\n                type=\"checkbox\"\n                checked={done}\n                onClick={() => onCheck(index)}\n              />\n              {done ? <s>{name}</s> : <span>{name}</span>}\n            </label>\n            <button onClick={() => onRemove(index)}>-</button>\n          </li>\n        ))}\n      </ul>\n      <div>\n        <input\n          onKeyDown={event => {\n            if (event.keyCode === 13) {\n              handleAdd(event.target.value);\n              event.target.value = '';\n            }\n          }}\n          placeholder=\"Press Enter\"\n        />\n      </div>\n    </div>\n  );\n}\n```\n\n## API\n\n**createStore**\n\n`createStore(models)`\n\nThe function called to create a store.\n\n```js\nimport { createStore } from '@ice/store';\nconst store = createStore(models);\nconst { Provider, useModel, withModel } = store;\n```\n\n### Parameters\n\n**models**\n\n```js\nimport { createStore } from '@ice/store'\n\nconst counterModel = {\n  state: {\n    value: 0\n  },\n};\n\nconst models = {\n  counter: counterModel\n};\n\ncreateStore(models)\n```\n\n#### state\n\n`state: any`: Required\n\nThe initial state of the model.\n\n```js\nconst example = {\n  state: { loading: false },\n};\n```\n\n#### actions\n\n`actions: { [string]: (prevState, payload, actions, globalActions) => any }`\n\nAn object of functions that change the model's state. These functions take the model's previous state and a payload, and return the model's next state. \n\n```js\nconst counter = {\n  actions: {\n    add: (prevState, payload) => prevState + payload,\n  }\n};\n```\n\nActions provide a simple way of handling async actions when used with async/await:\n\n```js\nconst counter = {\n  actions: {\n    async addAsync(prevState, payload) => {\n      await delay(1000);\n      return prevState + payload;\n    },\n  }\n};\n```\n\nYou can call another action by useing `actions` or `globalActions`:\n\n```js\nconst user = {\n  state: {\n    foo: [],\n  }\n  actions: {\n    like(prevState, payload, actions, globalActions) => {\n      actions.foo(payload); // call user's actions\n      globalActions.user.foo(payload); // call actions of another model\n      \n      // do something...\n\n      return {\n        ...prevState,\n      };\n    },\n    foo(prevState, id) {\n      // do something...\n\n      return {\n        ...prevState,\n      };\n    },\n  }\n};\n```\n\n### Return\n\n#### Provider\n\n`Provider(props: { children, initialStates })`\n\nExposes the store to your React application, so that your components will be able to consume and interact with the store via the hooks.\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst { Provider } = createStore(models);\nReactDOM.render(\n  <Provider>\n    <App />\n  </Provider>,\n  rootEl\n); \n```\n\n#### useModel\n\n`useModel(name: string): [ state, actions ]`\n\nA hook granting your components access to the model instance.\n\n```jsx\nconst counter = {\n  state: {\n    value: 0\n  },\n  actions: {\n    add: (prevState, payload) => ({...prevState, value: prevState.value + payload}),\n  }\n};\n\nconst { userModel } = createStore({ counter });\n\nfunctio FunctionComponent() {\n  const [ state, actions ] = userModel('name');\n\n  state.value; // 0\n\n  actions.add(1); // state.value === 1\n}\n```\n\n#### useModelActions\n\n`useModelActions(name: string): actions`\n\nA hook granting your components access to the model actions.\n\n```js\nfunctio FunctionComponent() {\n  const actions = useModelActions('name');\n  actions.add(1);\n}\n```\n\n#### useModelActionsState\n\n`useModelActionsState(name: string): { [actionName: string]: { isLoading: boolean, error: Error } } `\n\nA hook granting your components access to the action state of the model.\n\n```js\nfunctio FunctionComponent() {\n  const actions = useModelActions('name');\n  const actionsState = useModelActionsState('name');\n\n  useEffect(() => {\n    actions.fetch();\n  }, []);\n\n  actionsState.fetch.isLoading;\n  actionsState.fetch.error;\n}\n```\n\n#### withModel\n\n`withModel(name: string, mapModelToProps?: (model: [state, actions]) => Object = (model) => ({ [name]: model }) ): (React.Component) => React.Component`\n\nUse withmodel to connect the model and class component:\n\n```jsx\nclass TodoList extends Component {\n  render() {\n    const { counter } = this.props;\n    const [ state, actions ] = counter;\n    const { dataSource } = state;\n    \n    state.value; // 0\n\n    actions.add(1);\n  }\n} \n\nexport default withModel('counter')(TodoList);\n```\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [constate](https://github.com/diegohaz/constate) & [rematch](https://github.com/rematch/rematch).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"b1b39b6531a00abffe9098e7556d2c8201543104","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.0.0-beta-3_1581931129102_0.044838241840579274","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@ice/store","version":"1.0.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.0.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"25a7a413efd7b48a2a22c0d723e2e160c527d9a2","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.0.0.tgz","fileCount":19,"integrity":"sha512-lIh5FEtexkfXAK5stmoMeox2Cx4DSbmW2j7hjtLHkibRgYFMK3xRwff2y/JdjenbaGiQ0M6amJ4dnMwph1W7pw==","signatures":[{"sig":"MEQCIANMy4JNnvOUbFaxp6ONTtyfsoGQgFrlHkRfpG04WMctAiBBzrD/kJCeduavOiUzU3GMyDE+BWvf6AJlboiRD/Ek7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":51709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSmX+CRA9TVsSAnZWagAA2M8QAIFvZgL0How6D2o3vPZ2\n9yhBTlSyOkK73hKYnpPx5On+7i9fyELZajnms4ouJ3uDKD+Sa8wtYD5yand8\nQzNYyHum/eHy0amOVpZWRKlvPW/jaPiOBxeKxc0gwJPcpVEwUP8J5Vv8+T6W\npUrJeC9w7EsRnxWnqFVIxEHbzPqsV2naqmZS/9Nd7MULytmYUSCQw3nDNilV\nojJDWKmv98JVqY5pjK1pzkLqhc9obrYx/3H8TnDDoyJuLVqnIjKkGvNfM0th\nE9RIhBSrXoFSY5Dw/jBhWpa6aaKmY2hV0wIkI83yBk3FXPgBSOyZYYpvXXUN\nXCvrQYmVvgY+v44udMxBD20heE14DhgT8Bl6tGEQLpbLldTQ3esXXdqXSgEl\nj8FA6zJd4S+ktyj7p0ReJxoyyAv8rqqvKFAdiTd4VpInG6R81VWXCIQ9toSM\nq2W2UB7EdmXNVVA2yJolgg6dfgdkhczsTccHHHEGQjpa7+WvM+M+GeOVvHwE\nd2a9sFLtvUcIije5/zqO5zqM+RfMI28b8XamB/q1av0xTpU11eUDkxf0xlwL\n6nGqmi90B42PqbpUrKS3SU65oCOGLx3kYKRZzhvkEXP1AlXSjJYJ5WyMCx1C\nC3PEX6R15mNUEoSL9n4Vg1XL5Fv9JkiFI7W4OeL02rlAFGJ5bY422ItG+bi4\njS8o\r\n=6YI4\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"33e3bdc3d0c19fb075daa9617b0915184b015113","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.0.0_1581934078397_0.7557635040256627","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@ice/store","version":"1.0.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.0.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"1e4295e3b2db262ee297bdada95df44cefae4223","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.0.1.tgz","fileCount":18,"integrity":"sha512-7QNHANmDHTNrfxTf0xFc97I9XLHoHomSoqLPioIe7Vk4LNa32fzpc+XsI5cvp7WlO6olmkxrOngInGg5K8JseA==","signatures":[{"sig":"MEYCIQCE195e4KYMcx7Z7+LbVwlPsG1rXyQ0JWLloVOsmbuASQIhAIUCXhqLDbg5Wunxsd/7TSrHYn2vkPneWxeF8Cuu5oHp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeU4kACRA9TVsSAnZWagAAk9wP/irIqeZRMu99WaDhZLj1\n0FujufOhj45bKa0osalwaJ0768q6UlmbUjyolu5YCLq7PhwhPXx27mo3rAHy\nL1P+rvV5ju+dr5oRgUHV+cLIfLm2G0wfYhfK53uBr3kHJKuGz5BL3SsTdrPX\n/KeDdSXFuJtWJbAG2FETpIOR2bao90/gUa3MULSZK+uYxfmkCRzVPOXbp/TO\n7Svk6aYsgx80EOMN8CJ3A0kPyhY2nk6pF8tcwn4mhycmxRil8TKaSAM4M+MQ\nvrSd6eqge1cGgkA/MtBXUo2nfvVXHc9ZalozkjySEKiYgzqwYDPbd9GUvY15\noBkr4K1q2koYOJu7Iy66N8xMwkdzmI0gX1QInlsnGMGSwKLc5FlkXj1GlckW\n1t0jk9r6DSjnlzgela8MsfbqS6WHbqpuSNsP12do/7dxFib2P8/b1IOFRRG0\nhpqLbTFjON9X0MRG5N8lSEplNanUnLms2uQZUiCVjyr1+u/uOYDG7Qj7Fr3W\nxmuACyARlHvAqGWvA3Oz4guxeWPAQ8TBIljjWVBfDylQ/toOY0/FLUX0uDGZ\nE8ol+5ltnm7W55YPGSguq7vX5pmNz1aClPhg8y9PPphD2nvCcLzGlZRFaiQh\nCnynW5WIFvPfuI6+UUbTmUIMEFBdab4e4VpV1qGIvDltg7FTKzv1DVmb/3L1\nSCe8\r\n=hNAf\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"95a6114788447ab2a888e5da878bbedf1266b14a","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.0.1_1582532863800_0.724577773148843","host":"s3://npm-registry-packages"}},"1.1.0-beta-0":{"name":"@ice/store","version":"1.1.0-beta-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.1.0-beta-0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"324a5358444755b58a9df2df6515643dff07535d","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.1.0-beta-0.tgz","fileCount":18,"integrity":"sha512-58a5ZeU7NgqO0mxiwSCpreoPe3yidKbUyyi9GczH/O0B1Qd5G1dyEQCBASGfwrlrYdOR8C92lJWD0stqW8ih/w==","signatures":[{"sig":"MEQCIHKZx8Ffm5ifW6aWV0Mfe+pdimHjPiZEQqToM3p6Dcw/AiBNFJy/aVS7jazrevBqTYFvmgpLTj7Bhutgzf52nF/4ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYGNxCRA9TVsSAnZWagAAQasP/2yvmX8AgpejlAd3zBei\nVjkosJmHQpndxrfm+0nEYm0ZQN/UmYiHcJDrntROPfciYcKa00eGvQ/YoFbF\nD3re7Kx8JZB94xVQri0QkEpvCOhsFmcufWGTMhWEUS+ZxuQodTSPVtpmyGWQ\n9rmWNd6ToTwKCn935cyvh7BcVBu+BTZr9Aa0m5ymeYw7Hb0eAWI3IXO3g9aP\nuTOmn2hEsjzUlUr0QXmnvzB6KYKKJoby8N8/sPtg7NQZWEWuyVLNSVUNSLWN\nXg36N+gXia74gymNPm7+mZsEs4ZrLE6e2btZn3hFUKDpgWV6EkLNB8Oq0p/w\n2Dmpn2i9hO60CU7FNBDhq2E5e83vBb9paKSxEhBOt3C15PNVze9k+oYehPMQ\nWseZLPtFuZESgYCxS3b4iHeP3L1rgNTLQsjF8JJQGIymn2RFwA8S4YTNfp4t\nrcTxK66LFK3Ek3koghbG7yvaybL/BrPMM0TkdMdUVHFL1W8+50RwXzKGfNHz\nmufMvN0CS3RfroOAydeOPKTCQxT08S6jMncRoxviCubgD7tnp4VkW2T+rAd/\n/g/daXM2UFnZsSGKVKxHKwbSJnA+t6YnTEaTnI4GwATTq6nTLqdcsCTnmcjY\nW06EPDPf8StiUCw5nNPUTe29/GS27snwB8WlkzY8CFbzjeB0VFguLuc0DCmT\nhfcl\r\n=Pka6\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","readme":"# icestore\n\n> Lightweight state management solution based on React Hooks.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a lightweight React state management library based on hooks. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of React Hooks, friendly to Redux users.\n* **Built in Async Status**: Records loading and error status of async actions, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: {\n    async decrementAsync(state, playload, actions) {\n      await delay(1000);\n      actions.decrement();\n    },\n  }\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, actions ] = useModel('counter');\n  const { increment, decrementAsync } = actions;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [constate](https://github.com/diegohaz/constate) & [rematch](https://github.com/rematch/rematch).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"b0416ba9d43073cdf50d92c3b2f3c884fa1ebf8b","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","utility-types":"^3.10.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.1.0-beta-0_1583375216579_0.9043455823019078","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@ice/store","version":"1.1.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.1.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"23e58ae75cf6d4a164fedddec75f87bb54ecbafc","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.1.0.tgz","fileCount":18,"integrity":"sha512-GnAFd3Lt38A1i7RZgKLjsRl51fsT3qyoCkFgVgtepUeO2VHgzME/gz/q9QnMaoBFLJ9zzMydSDJHONd90cjM4g==","signatures":[{"sig":"MEQCIGHyWRWCF68Xc3F3ecgmXFwxEa9Sc64b+RyHPTOFZgWJAiAReb121eW/bA64MF+NLngcl7OY908CGe6Fh+yYr8efOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYIbuCRA9TVsSAnZWagAATYoP/0pKgCBm4nNhbYThTX8t\nEeJZJx4f9edysVE7V8Q31xg2n/F7tUi2Avmifo3KYWJaD0wR5hF2H5Ih3LBc\nxT91/1u1R558eYwsCNZiUD6oV+6HyoPiA077SmT2gqKpGu02+iNUbLun8Wwa\nkvLbmp3aA+EjuqRrH79naD7CeQbxYJQUYjNJYMoHdZuDn2G5bzwMTQy+rTuU\nLCiwqXMKk7DURQSaM1qaM7FHJPI+ES5mNMHc29ZnsSUunfLodc8E9Dt1eeFS\nmMdVy5N4usZbZMZJtVTw1XgK6/qe7mTPAXFpG/BBnhCeYT3Z4LZSlLlRQOIr\nC85Y4JhoyKtfPRQiXEBJOO6IPgYITAJvrTGqmRaVwcxt1rMK21xV41fjBPPQ\nzOnHGl03UsrFQ6J+8RKYydycmwrm8ehBcv/IoObDx/akBnDCJsFW0/E3LAyy\nTZl4mUNNiS2Lj/0DBSIHS/rXAZUAVpyX+/fXA3OcLRwKoS2i6TmSQVUh2XCG\n2v6tR8PTA/E40lH/ZRQEA/Yku+aWqXkFUrsVwVfeaHS9AP5gTWC7aiSE60g/\nadEapO3CIxEotspQTzPtB6Pfz/KDhMCR4w0bDrg3ok3DVZd0ol040rW4scHN\nP4+lP8FHD8atjTKXyBpTN16I7oB4UO9f89ek4FlZyGdDWIbLlwREv5MV/a0v\n5v6b\r\n=m6zf\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"c7870a45220733b1618902b3757b326dd509dbea","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","utility-types":"^3.10.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.1.0_1583384301950_0.49812315263471807","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@ice/store","version":"1.1.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.1.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"45e2624989deadf5e3d17964963aadaaa055065d","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.1.1.tgz","fileCount":18,"integrity":"sha512-qPxLlynpZk8Fuv+bWCnukLkR3W0cvfs7MYHg2VLrYb22UeSStBaJkP89EYFrzWiBIq/zG1UiiY9kc8kJkq8DNg==","signatures":[{"sig":"MEYCIQDkLUszx3X66It9toyVdlVSdRHz6E1/woCW24zXSTv3dQIhAJg103DSkhgqPpBItVAykxPL/d2NbnAPA7Ixf/5oOscD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeabd5CRA9TVsSAnZWagAAlDcP/0ZU2R6GGEAkokS4dCFh\nbfz0OUgsfGB4mZjfJNVE03FnKMEUeVzh3AhA4vUiet0/uZHPft6XI4xdjBJU\nhYYtTrPU3e269JJhr5wT9WGKWZ6hrI/nH3mWO+jYh6Io0ard7IX0MqaJ0d3j\n8ft6kxkkuOB5it5EYIpsRkcZg5WveO/8SBu34nyASnrjpO02QlstQNbtAbYB\nZe6Mtiu2ZMGf/aZoroAqjJQHOqiwknGZTRgmyW9G7eVt0eeB2eMtwclmFClS\n8UMG1uJfobNac/yMGKeTsu9GTRluCVzLC4z41BPt8+pKj+z4adM3+s30fhYg\nASuKsmNpWKQJsvMt1gq3wi96XwaYo6/xeup6HiHNCSWngUhdhdaS+xWBBQwS\nPks/gY4g9CWd14vV5w59dLLgGZB91e9c7obiVS1XHOH9bXyF233kyBtwSdET\nn5CjLx3jEIShKnnGbUeuc9iGCms2hc6k2BtMGHj5Tm9S8CX8lXThnyYZ09EW\n6yK/xEHQqNt7p7TXYpVDEnEmOvrIXYncY303b1KkuVQVCPX3vs3mngmjZKMn\nHpPzL6fRtfG5+giTQwcP+WSb+b5Cze4SMtew32FzXzRPyHem7NhNpO8tw3wO\nSy0+6l1rrWrmKDJyDe33dy5ODPau8IW3orKpBOVRYH4KFe+HdmKObK89eTr1\np0kN\r\n=FMH7\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"013c166ccd84ac589a1fd7d795221e0505aa784c","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","utility-types":"^3.10.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.1.1_1583986552754_0.47136564115621415","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@ice/store","version":"1.1.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.1.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"33d5449c20cf909ac11c1d131929cd3feb6cedc5","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.1.2.tgz","fileCount":18,"integrity":"sha512-YC6Q6PbrE5e6mbNurWMBbUu27U/f4hCVNXVmfMaqaV3FjdkvoYAcT9U/h3LRo4Rz9uw1fg3SK+ARjEFjPLUGvA==","signatures":[{"sig":"MEYCIQClnArPZzOuUlFP4w1Z3rzbQB5bUy4bAhFLdl/HN9IrBQIhAJvWek1VZfkxeIAuJ2zBTKDIcI/E74k9kOQKg+BpW9VE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJealuACRA9TVsSAnZWagAAF0UP/j9obQnM+HOShgVXJew8\nQ3FcookZp4ArqH7Tid3PrkFJy/6rgRDXwG8SEtskDbzbY75hx2m9VL1q1utq\nX0JAYQ3xW4BBXUEBL3y7nCVnFy4LxAEpKWgIEtt9hli2oLLnqcEwxjgvYP5O\nEcLPqw5uHQUuw8VCSZXpx8Y2NkLH7iCCNcIK3QNPMiGM3ln+cpN5xDyPf2a8\n2g4Om1yoMXDczABqJURYZcl0oDFz203b7cFoJSjbhEUVabtmFunv4IwJ6nMg\nyl6IIQ5jy2RzFDOMuSU5u+LQdfA2IC4onYKFJgc+20mmf5hAEX3Xe4rDWGNc\nALPe5SVGzWEG4BjGKCG/OrSWwIcW4P6xX337jszHyQQ3jfJPwsYq+/ppx/kH\nGMQVRmWu40Gy5i222bmrRhq1YP0+JcYTtGI4lCmjbelh8U3TUxPgubja1qrD\n0c2QQU9VGTsA1nu0EDrb21U1G0qlQdONBmDJIbZr5QPG43zrzUpOSUlXc99m\n+Ydb1lnaPxuusP7aJieUUykdKzp6Ip3zVIpDGH3hG1uxnw52cWvCims4LYDl\nBfgnFdxs9TsogT/2OIV5ApjHUGwi5cFb0I1/fXee8YuWJZEhVBC9euK1POF5\nbqVvTZY/py8RMaTi/ddT2YkTC94Eu3QVknYUZ1tjqX/ZDk7C7pRMyRF/dNJ1\nNq3T\r\n=yYpu\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"5a58ef40fd7028b70208bb5038602d9cdbc21d40","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"is-promise":"^2.1.0","utility-types":"^3.10.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.1.2_1584028543630_0.8607110979567538","host":"s3://npm-registry-packages"}},"0.0.0-experimental-hooksbase01":{"name":"@ice/store","version":"0.0.0-experimental-hooksbase01","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@0.0.0-experimental-hooksbase01","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"cd3f2bb3dfdd95578d2df9da25b081ffb737b1bf","tarball":"https://registry.npmjs.org/@ice/store/-/store-0.0.0-experimental-hooksbase01.tgz","fileCount":27,"integrity":"sha512-WdT3oZVfPSU+ZNvKyei0geYY338GYI0rKYRzXOSzuRjIUvg11/SudV/RtNZy1dFNUHgeTgZXcL47I7vBA2JYRA==","signatures":[{"sig":"MEUCIQDcbxqyqfa/vIp4tuwORWz8E8LVS/ipF84cOtSRT+iCXgIgf/VLnJBG1HDPDiiq4AK6o8qn8U5f26M6sYoDLnA7Llo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeGDKCRA9TVsSAnZWagAAaxQP/0a7hp6/ZzgSyvVYwh4j\nT35vexgd+awgLbIQKtPbZH1Fc3FwjkJ+K7DQ3zsVch1NXqviOEarTJkzSGmu\nOij31HHelWj2KnnVC4ne1Z1eRKKwsl7bQn5oFNINRT2QvJjOVQzGIwkJptPO\n0WEapsaEHZF7c6N6J1LSW3GpaMiX+grJ4h7hBHgT3O4Zbbk+pDtISvTrqNtf\npfTbg67GkKETT1lK4njbgsOJswt8DAa8HXyu+a5avaXo7UIKli0YOrN2xT79\ntGUCkZoBJ1yiBON/WilqeNjtvaEE2C32DUPDXbw/VuskVXtsVyvxNp5z7TGz\nrRHM0I4EYH8RwOZ4WQOI43y1bqk75P4n/n8zGVldzxe27wceZ7bmRLSeK+XX\nbh89UAG84DDUh8OzyL3eBp83YOzuSdY6eWMGKIAItqJuotOWKT5nj95QdIWn\nNn0wIFnk7DvCOFwxlyf9eKUQ2azuO7g3nIiB2hGBd36KPbvc3p32AXVXHu7J\nU6StbuJIflvU8ekCnXBLToO5+9toOiufxNBgK2XrC5bX+dzB4zr27z2sBB+v\nCo6e8c9xH7uTNJSBnEf0D1DkAiTz7brvYrK6lNH082dqTcf9Nyb/zqtmsPtv\n6goioyPBGrMrN/fWEITLlHyc8+IHjbG5WRE7PFcAtgK1izxJNDarZTSnSn47\nGc78\r\n=PEQy\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","readme":"# icestore\n\n> Lightweight state management solution based on React Hooks.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a lightweight React state management library based on hooks. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of React Hooks, friendly to Redux users.\n* **Built in Async Status**: Records loading and error status of async actions, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: {\n    async decrementAsync(state, payload, actions) {\n      await delay(1000);\n      actions.decrement();\n    },\n  }\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, actions ] = useModel('counter');\n  const { increment, decrementAsync } = actions;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [constate](https://github.com/diegohaz/constate) & [rematch](https://github.com/rematch/rematch).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"768c6f23660d0b5d68408ba3a337da65d854577e","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"lodash.isequal":"^4.5.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@types/react":"^16.9.25","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_0.0.0-experimental-hooksbase01_1584947401765_0.5439983169788898","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@ice/store","version":"1.2.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.2.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"11a8d3c46cc1fa7a4f11e826b0d8eec5742a416c","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.2.0.tgz","fileCount":18,"integrity":"sha512-pbNHegKQfpP20IIWzDDHWF5B9QMND6Ny2Gu/fsboHDQXTxxENR0XnKLSFh/agpMph+bhxK1n5os5C40LKyyKug==","signatures":[{"sig":"MEUCIQCpm4LnDJ9xuhNAn0tROfXzElWaoun80QXfFHaOa29qawIgb3ke5ZM46uPwXETNUTC4+8TzPDWjhcL+XXuxTkXOeEA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefCimCRA9TVsSAnZWagAAk+0QAIHqTJnHNv1BB8l460N4\nCOQTVPN+yztJ/LcKkVCtp50Q3DzFg/+KZHgLZF5K8Cfe23JwcYxncJWTucrJ\n83pZKQDNxThjWhYhS0fLVXFF4hlDCV2NsbnggVyZnIE6a7aAtfgLjU8hiuMl\nbvCR91nMQZabQKZd7OWoVWjK0Axj7ISkX+LAK6a2Q1zlUQct4GENVXhJvM/2\nXxLk53YJYhUiYr6fROEDfRrXm5OZb9C6PUCEIogfaMUQRp0SShe/o6ilPyrw\nFaYA1DKx9PYnorXpR51ZOTCw6MyKlHzun5o9hjuQjGyL44iCme3kt5qoooXY\n0Sr0ZLTqAMcsAUAs/1UewKxVOv4cwa/Au5+B6mJYXnukCFEP7nRYsj+Sl4WI\nW/7D2YAo/XPyF+YXeioQ616LTZJlTv+G+zQ0iDgWzO3Xd2HmpuxvTDLVsSys\nV+lyUuwpC4hySgY6q8cJsq9OYkVDNsXWoso65QOZNaKhxAJ48QU6psWOUIxK\n03BQyIkAGbsbola9/1aEVycAre2zIJnRtlpaWzhuvLlktjEk4exgRRa+GAFY\nnqHYoD0Xkms33mffX/MNDAiYKWGrUaE7tFyQdQIRUVrYTeuiZBhn5Lkvwd3G\n5/OJXcKFhN3catEOjTiUQo9WXaB5Gvw3EY9488gYISI8ftxLTpxZJFmMQTtw\nRMsN\r\n=LLwI\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"types":"lib/index.d.ts","gitHead":"875eaf90257ed0e8c7dfb3e5bd4ef31a81bd4468","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.1","is-promise":"^2.1.0","utility-types":"^3.10.0","lodash.transform":"^4.6.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.2.0_1585195174216_0.8968981279196147","host":"s3://npm-registry-packages"}},"1.3.0-beta-0":{"name":"@ice/store","version":"1.3.0-beta-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0-beta-0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"23241f69db679d12259ac6aa17de376b0086a4bb","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0-beta-0.tgz","fileCount":63,"integrity":"sha512-yUzjryZmufFrHj+APAGxINu8ORTsOqqxSjFWOqpKuW1tQMmErMBVIAZ1Ey+QM9JZb0eG0vYfWiOGYvOZaekOaA==","signatures":[{"sig":"MEUCIQC/vbxrFjXJFw30X3PtmPjDFPi+dtBUydv3ynLuRqaiZAIgN+yrlHFlOpesXWWxvgHxpLHv/nOyhNPEJo4J84q9yvA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeg0EiCRA9TVsSAnZWagAAPvMQAJqTZqCqS9FiBRNqK+CK\n0buedFCuBBPvYWkhhd18JoQLpHVkrovPqqJ1XzYPAdvZaRmJ/wSh0LZGoEHG\nwRYmC0oTlFo9TedAqyZVUHvZ3RuzQ04jlArT+CJ5v8sbVY/B97Aw3esBHqb6\nuAfEZpXHRU+xci7Oe/apsIuNamFJMuPeyZlOpqerUnrwTaSLvBOZbxjI6kxy\nwdqbkD1pPl1HxpED+1cYYj3KvcU/15iHW/n97OB6dRk7sLoOyWSmIN1BLxx5\nunsLN3lxiduSOPNcq1dEBQVlPNXhOKOYaAiHAolIL/mx+FGLfyLLq01DwsiV\nUIAxrA6zWqDwoNAH/9D2FwPqo7kUSlct+AvqdwLsxum20Dp7Ek8eUQV2zJqV\na7iQxUHioCIVZ3HW00gq1LqLNyA0i3ayO3n2aA1vIuXt2aUK18XvZJ2qCT+u\nGV5qbuLlID+2n6JIhr2XIq1wVoLj+HTuaIaFTTckqb64HC7uM32tSdPBq/Tn\n4qEWMV9Ar2zkVqRgKda+p+g9Cu1HiGCQqSoGm7/gMoUGA4pp6FAW95mWcWLr\nf/40m+reI4QDZ3N8peTgYKvmixrq3I36QVVJxM8zlym0IsZtShs53XfcPkzz\nxbfqXfOfVhy4jzgb5BGwzNO5sSsbyHyFvQJKWQtrA/qgu+uOKHAqTOQYx1Pt\nGfzD\r\n=Np/h\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# icestore\n\n> Lightweight state management solution based on React Hooks.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a lightweight React state management library based on hooks. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of async actions, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync(payload, rootState) {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [constate](https://github.com/diegohaz/constate) & [rematch](https://github.com/rematch/rematch).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"2292bb64fbd76d13f08c2fd1f77c2a475447e801","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Lightweight React state management library based on react hooks","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0-beta-0_1585660193647_0.8457299001594292","host":"s3://npm-registry-packages"}},"1.3.0-beta-1":{"name":"@ice/store","version":"1.3.0-beta-1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0-beta-1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"b8747da033b681b7029e84bb67c975e92000a4d9","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0-beta-1.tgz","fileCount":63,"integrity":"sha512-jE2Elku14xsHbq7cnqYMMroJqzXhhMm5Tysy5VbGhJlNWe7+YYjRsh1ANXpGstZ+lETJV44h7bBS59JPtDDtgg==","signatures":[{"sig":"MEYCIQDt0S8o8rNPKEGXGKWREKnJpeumBx8bvCC2Xe+vf/OYFwIhAMA2+gf8IzVZ0yhJBUMac0yl9g49MdXjVglEOEPpEex/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehEKSCRA9TVsSAnZWagAA35QP/0vdKvsPwzI2dbmt42uZ\nLmYKPTI0bNHirRGhnxm6zRrayGFOkzaCji6Oh3B0aV/+ZTmiYlZTwag3MrYN\nREUfT+rlA+h91Xkg//dOTAgaFpjAEDlgjccwuX74u9bAoHw1QNFNC8z3rIhR\nlukbWcCWPJjUBz3a5Bdp89LOeUiHev3xdiSpBPnkQQNq2BimYRa88Ztzx7c8\nhDeDcJtXsdz0CwzrrIGfbBgqccjOZwTCt/3cP6CmnYSvvn62xeQa1UbOLJCJ\nNesBgZlZrEU50n3IHlHoeTCKjezrll+BuUnupPnrnw3ZgCMsYGi1yzQlXfCX\nsuIo2N3Ggg+L2q9AMfn4vs9PH7QP9C47vNpxg+EIush98hkr4uodySbNAEx3\ndSa/LWLAWKvJ89u7KKNZtMP/xXlsC4h68rBCTzN0nk9hZoxi5XYOwjT6x+9P\nq//qzo5kiwiIEUgV1RzUvbyu2kio1EM42Zm55gRR4mcjS+u+9ENmzmcgJIih\nNJBveyXRk4wIhqk4cJlC8rHhWoc9/xZSq9J1CA3u2ohbq5lEso6HJx4JdN1I\nMnO5bxbiXNY4puKCjFVWcSt78xEsiWWt0N7sR8brdZnikYcDxY4T2ISgSbRs\nGBI01DCDFh0KGR2ACzSZ5o3nefl48IVgV8rOHtgtKPNWIishXVoGWJig1ItS\nA2Q7\r\n=+t3k\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of async actions, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [constate](https://github.com/diegohaz/constate) & [rematch](https://github.com/rematch/rematch).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"ea37ebafffca25192960939a242cf7c135b5ff5e","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0-beta-1_1585726098026_0.6821414227061735","host":"s3://npm-registry-packages"}},"1.3.0-beta-2":{"name":"@ice/store","version":"1.3.0-beta-2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0-beta-2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"abb16a3f47cbd485174dc098ef012d8f7ccb30db","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0-beta-2.tgz","fileCount":64,"integrity":"sha512-zUXY+VIrklDQNdm2MLFobA6H5AoDQ5R/xFTP1+U4QLjGSLzgRV8ISV125zb8xbWPJxv56vcesBYCVDMWjamshA==","signatures":[{"sig":"MEUCIBt+lDvrhQ/OhS2R/+W+xkrEr8yE6onA0wH474tMu0p3AiEA/PTncEBAR8f24ReyQrngk8zpca1SYx1Yvp9lVN+rBzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehV9mCRA9TVsSAnZWagAAXu0P/iDWB11lRGa2mSJE9BQC\nptdb7zS9SMDB3jkOxE+Y+fEjxBVjSq2x2gAQggSWIQHnO79FrBud1PLxK9s+\nmt/d5oGJTcMEJVivKBSvrPVwzm/pyzDXn13N5HtpVDb/Ypjb561ok9bU/1vP\n+3/+wAV0sb6MMppThlCNd2k2kChUIb1e+UFgM30WIcvlNnPmc/05y90EPCih\n3cL3xb5QIlJCxaojpdXSJEWGIAT3kSpOspRFzaHy1GJKPH/oPeqMoRfxX8Go\nikoBRFkyosPpn2GoUzD0XvozVgtxCh6A2K8NbdKblrD9VdKqOim1827XFmP5\n2xZrTddsrwOVf01UEMVAma2YdhQ7uJfpOAb2St0J6lL+/Jeb34z2GD3dafDn\nS6SLxGBPPD66ALZIJoVsqoCDOy5ESe3j0tGVnJ9UwJ1FeyClCJAB8Hz+YDp9\n1tWXFIg8TR1kBMApJCQF1bcZ3COfm8tWXzw0TS+r6AsYfweNB4pVJWvdZpcU\ng6HojVnVIi3iXhv1MSmTYBVfdGAq1HCDPcH2QwUb5z71TXHzl81Yhr2shIuI\nntpyKuBVkqxOOgzq71HHdk6ac6kEC/d2VZnMq6prEr1a+S51Ue42lwAFSfeQ\n2WMnkHKtk3bkOo1GDa/Ub51QYeeQf3/sPdoMlNDFPqZhsAoRyYLhsA0qs+fx\n1W5M\r\n=6s+c\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of async actions, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"6e141c9ea67f4f1497934c36d0963b0c14bd6910","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0-beta-2_1585799013928_0.2508778177258475","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@ice/store","version":"1.3.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"eb5a6998a23d1bb4be3fa37a8e20b97a0d91d9f9","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0.tgz","fileCount":64,"integrity":"sha512-bhOYmMVuXdxJbwUrQlBr4GPBYutHMYooH20X6HhHrpt0JmIu6MZ6Z47Rt9SPPm3iBpwhILAPquElXUvCVJpNaQ==","signatures":[{"sig":"MEYCIQDrk+24Gm+P/5QiFoIaDzHt9ajDtpa4QYE+5awjJxuKGgIhAJEy0S9I0DL+7U//oFQPqgGnyCn6t4NMSOHIE2J32kAO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehZMcCRA9TVsSAnZWagAAPlUQAJZnDUQ7ScinPSstHMl3\nJ436+Lowh0x9IBRymoZfV5v2ro7xqsfWpOO1xiS5vjCV8LWYGpSjoAIg1sMD\nkEUGQQS4+tzgbRkJEQVHF/0hPkdSkFxlSc3KZxljBMahOstE8gIbYqwjfcBB\nHtoT6Gq6Q5QCnlfma+RROBpuEgdrUuEpA5f6EEXyetEjg6QlQuR5JJJ1+0St\nVYK7l6B4e/8c3x+NLUF4oTNJTDC3IduOox2aLbMxIcgwKfMam0BwjFspiWes\nJllBeI7T1s//UjpiZ6H7/RY6cdMupfhwH02pM1gU/mlLIdsBz4pY69LDf1Ux\nd2QU2xd6LjO01bwb26A70PuJ5ptZiWFTOA5gt7xPgAipaVguwF/CC6v0UbN6\nZpquJMwapwfNbcHJi01T42GUluZRTqCgcXsN8N+N6I/3Qh6Ay8NztOI3eymc\nLB2hFRzVsfpe8/BRAqGCMEHHT+M3rz0c8H7oDSZGedzc5TJ07EZrIazAIfWJ\nYc4ORRt4g6GeclF7rdWDHl0/WGuA+s/DfS+8z/UTeQerj9BuFbHr9GylBFnk\nuKI/LiUXU7wqZI0/ly6eUW37b7oQuuPTgFBgLscKaJttm/t0zvM2T6B/oy3a\nLdDZEPcvgloG/qZ6TpbAOdCSxW/lpvVE5wKgwiI5ZvS7lDUc3uEmihp2qFkm\n4eR1\r\n=zqFl\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"8d275dcc302d0f164bcf59eea4f547300c95cfcd","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0_1585812252064_0.7376605362132256","host":"s3://npm-registry-packages"}},"1.3.0-beta-3":{"name":"@ice/store","version":"1.3.0-beta-3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0-beta-3","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"32b938862e2c412b593461663a8d5065dd2eed86","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0-beta-3.tgz","fileCount":67,"integrity":"sha512-mVQqMcIS+buz1UXBQCR+P2MoH0YKgSqYjuNpPb6pV4H4ZrrUEMUd/C+uBxTbro9JlSzR7eLnMN1hetAo6AhfIQ==","signatures":[{"sig":"MEQCICcO3lIk2UigyBP9aSWyFJTCXJiljaLRy/09vE7mnbT+AiA9RiDzTVutVwZ36fW8XPcLuZYsAQsHrW3/YSurKR2L1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehuKtCRA9TVsSAnZWagAAK88QAJdG2h1ErXTHRdBmLwts\nA1xRFYeu7W6qESTFYE/jwY0Po2znKAuy2u6nVIXnSxWkLDJ76rLxltWzExdl\nL5tSwSr2CKHLcMFuKeTTJdBAAqTqK/J87fBk0eBfS6fBauW/0ctYSE9ydHt6\nyXvnVGdJQK0JOuq6umu+nEGSWxAhLN6zGAUZJQUA5gzDNgqLw7ev9stSSDm9\nxFmp2Q4V6becvLAbNSY4eLasVq9HFO5jrxGftKOkbJcT3cX3U88avtES0CbJ\npFBDL1Kkka9O4M+DsJ1fklCSdLIBtPKP0HS80CW56Tl/UuTbjNdWVGuX/7ca\ny7BoD7+pwHYLAzQN7d+9kKUghCaAEkm1wII/QRBK33810R4J24KYO9y87Ch5\nI+TrS9O1vU8goXLTWAwYuZzojuOI1OgCuT3fZWyHw9hJn2iDOOobaMFlivXy\nWSsaWY9/6g+3f5pTIeWnvY9BWuq7dVsO+/E7lUrlkME/h6yP6beqG2fWrgNp\nA17XeufwQyYX8uDzjboEEUgh9xctmn2ZSoV7WqVg69d3BdMuNw+XUfxEe7fJ\n0e/e5PtZuoWvbycyl2/kumTy27/OvxIxr+SfUztX5ffaGd1cqMeIHIJg5FdH\nV2Pw7YcmvZtpvW4QXR1e8mTkKp9w83B5KEDaOsJS24+fab27rc86z1vXizpu\nejP+\r\n=yY6o\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"ca78315b78efbc114530b78d4cd2fc0dc2e1b5f7","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0-beta-3_1585898157225_0.02688372278800455","host":"s3://npm-registry-packages"}},"1.3.0-beta-4":{"name":"@ice/store","version":"1.3.0-beta-4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0-beta-4","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"dfc5cca723fe8cece07ec7d46096bd57ef641f95","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0-beta-4.tgz","fileCount":67,"integrity":"sha512-mGzWk+3R4OcTJdJjsRxgLV+O8emGQ8UU01A6hcvMHpTfLv3kdvcphV7eAFJCMmiTA3bzvQIHzL3Beku+Iy+B4g==","signatures":[{"sig":"MEUCIFP88kBcxFk9m/RGAs87oaj2ExMfaSOGagP/TYio+CRbAiEAgzXpkYPG2qDPyzGpUGYwGLcjbDJ78pZfhO39rp0GjuA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehue8CRA9TVsSAnZWagAAClEP/03Wm4qVvbUIOeK6o9Gr\nLrH4XmMJWfUN9TGCApjRKCTE5N5TRHme1UIdazWJWnUiz/2+enPuJLy4Z2Fe\nWsgZUn/Z0H1CKMFzKUk9x9IDgsD6lk/LWJd6EK5P6amrWiewpHNhBCCglfKx\n7ha88//598T7VuhaaEbDthGU8b1xjDhuIadXSLQ1RN8E1zS/AwwKSmfgvVh5\nN8sD4HlxLb7RJjARxgRhFigJfHIt3tKql8i1HSR0i//YfeRFqhMFaRfstWtj\nAEtfYrZaDje8NZ9hznzh+7X8lYhbh4D5DDgx2ZD2f6NOUi8VATk8EmM5M2ij\noOleMktwsakuDaModQE9EStsAuFeYphpJzfNwEuYzX+OZ4geKxl49H7A785X\nQw3DgMXN8sV/pmFTW5kkYrTI0sUYeKj3iBlCun3tJQdZsPE0Ag4nRMsHv6eC\nQXLMfLp+xpozb8Gi7abVKW6beJvx/jLvCT6z6BFl+6hI+2hLEsAF1a0ZhsFD\ny9HXK5BINuxjQzzbbZP3/HmRhHJYP1zoYlgWg1uf2icbPMowuv/hHH9nfx5P\n7YdwIv7DjZffTUM1/HgRnMoi90VRQPTCJPuegl8Ez9jT3NLHIKfUC6gl6H2k\nU3a5+FLyM6896GnKP29huTBlNSShyGgcHy6VtR60UTA9BOjhge4MEOmDrkfW\ntcuI\r\n=0rvV\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"72b1db0779fa9eb0dcd145d90986657291b90acd","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0-beta-4_1585899452001_0.6715987626722646","host":"s3://npm-registry-packages"}},"1.3.0-beta-5":{"name":"@ice/store","version":"1.3.0-beta-5","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.0-beta-5","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"dbc99e26726d6ad84270a4ae17a17898c78c1151","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.0-beta-5.tgz","fileCount":67,"integrity":"sha512-dgRKIreJw62P6VvzgtgqQdIAmY+YA/IfQbUcUdz65SWXzRgFgb/VIZ64pkI7HV6Ko1x3zGttP/LnUgXAlXsBDA==","signatures":[{"sig":"MEUCIQCZVRemB9GQjh2rG0gg/1HBgg45HnX6MyaYQDBCB7QwUQIgBIoWP/WYzOTcXi9jYfPvygFbxciAir46fGjlhVMhy58=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehvFgCRA9TVsSAnZWagAA5/YP/REB2rGt67agQ/Ok+cEN\nzShmQGy4qwwSdeD1sp7VHAKQ5QxGk72smnF9jSPP4uTV0ehjJUB24DSZxxbq\nUMJnyCs3+3Be+Z7ZcASi7kKKxW9s0jEmv6Y5xagiRf1y2kasnrF7+KzAJ9fh\ncKFY2gjk5FO9DNpy3TAE60bzZjmnXQH4yD2N6nttwvBXLn9yX8tHBLK8czl7\nTPTS2UTE6N/D4wyiuBEhqYgb7Nb7LXSANniDbx/pJZMRk+A0ILlDmxqVIiu1\n5Xt3GLCdI7XdxDauValhhqQ/Vu7CQ6lhbTeEqQ7tH/uu2icBVJS2svxjMj7G\nkOI7n9Z44SR+udkHWYpEjFwX9v8dYJBQv0e8SmZSctStR2x7huqemt6MuXab\nYFIj5jBJBXZJhAuGERU6WUsUoB1jue7wQ3O4SFvX1UYBph2jgZfVQPkKOZJn\nP2tZeFbaMiApL5wkMfJGZzuiA9katIAKObeTpBNCj9RMEI8ELTRjBux0qhqv\n8D5Lzho+T7Rq9tDb4XBDHOX2SVF22KOINel6yFDpgYf65uAYWvdUmpeWptqv\n1voj5e4WA1qMwYhSIl8ePVhPVmu1aM4Vm8/aLVmpCv62J8/V3sSu7HmhLJfG\n2+MnkYNmjUasCzpN85I9KROPlYL/+Gq7YC9ZZRTC6garsp68sCOv77hCQWP1\nFfsQ\r\n=yIJ+\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"298939ddb24b55581727d6d41075d148d4a30fa6","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.0-beta-5_1585901919950_0.5564231777314892","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@ice/store","version":"1.3.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"988a90d9b4803f5a8a796e4e2410444dc15d7db6","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.1.tgz","fileCount":67,"integrity":"sha512-1xB90JRWNSwuwCVzLPj69+Y7VPTgKG/w66AZzL9DBwdd/4l8er7N6bv01O4abW7a/8rYfIB5VBzzm/GUwvRjgg==","signatures":[{"sig":"MEYCIQCva81AM/GDkj7vi94tbZW82txkI7ysVK1v42ydXMyEPAIhAPCO/fSTkmAfEZtNijWgW7FM4siFPC0RWUK2liSX1ub6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehxLhCRA9TVsSAnZWagAAKKcP/j7kbwjVvmRQaEShlJBA\nafJGlSL8kbHwXrHQeBniZyKwsN+7xAKrN7L5mD7ErRH2DdJky1zLsxXsYpSr\nSa8Y4Ej1wGgsMFTrv16mZecZHiKRwTYOW31LDRItcHgHD+SEDbdOwfcZnria\ntNGEZLdEYiK/QMAAhRp/QVyhg5dhxuvbSre67stOSXMKpFuYwXzeqT0jcHn8\nwNPoAIVIBlr0T/fbILIR5d03dZBslagYFMqCrUDbNTJ4MGa4xmm//IFe4coM\nXuXn0og46czFw+acE62ulsRPmnRlL4tGI7paFPI7fnq7s48h3wmy8GbMbYcz\nJ/6LQcPVFB7ZsBGGCcqBiYeZcR7RJRMoLJL7nEhgAnjQLfewTsZli7KDH21G\nvVP9KNhLvZzziC8FWZ4ku2QZJxa424NnSHhyB4rru5v2gB+s6hT8dRsslKQ2\nHJqj+gMkfom0+r+PnUKjPHfc12yaWfb4jvzxHoMO2wl5L4HdHW6yXgCYjm0s\nEFJ027PUlc+kj3XzByudaRrFAZjrEnsfrqdv1vi6KFwKuAlfVlNXu4NeiHPf\naSXT8oiK841q/DI1b3DRU/FCIVkskUPOLVvOjCsby8OEmTx0KlaKXJIfIf8p\nEf4WJlCoeuXgckqxQzIMjaJsITRhZY3nhnmXfRNU+qK6oj9RJHprFQJb7WOn\nqk3M\r\n=Sje/\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"eb9885726ad6e043a1d5060befd90aa5382b9bac","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.1_1585910496872_0.5174908110814112","host":"s3://npm-registry-packages"}},"1.3.2-beta-0":{"name":"@ice/store","version":"1.3.2-beta-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.2-beta-0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"014f0e593616a66d64c57d125ce9f2cd04d60b08","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.2-beta-0.tgz","fileCount":67,"integrity":"sha512-+xa24LNYVdMXdepgMCFXQw0NXrHStVVnRSvlhJD9ECmXmSx7GcxtQ/5Gw21ENCK27Ep9u/HvYaPH+sL6jh0onQ==","signatures":[{"sig":"MEUCIQCBmOQDygvljI9gkFVTXIwmrT4/e1eDIpJkb8Y++b/0pwIgezsiEXrzJrUvBN5/SCBVskVLacrRpzvoEwDc25pchCo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJei/qSCRA9TVsSAnZWagAAsckP/jPibSaLYgbMPeea922i\nz4S6aMPhBoTfDLe5RVOJ4Naz3vK9uo/MKGgfbNBBCzsyvullW3CbBLea31nb\nlcX8EXQdjmqz8+yNlbw7+3jMv2QSHmLjvjhCURwH9AAlHkGkGSfi6cGmr+g5\nImO+8zjBD/H+GWw4BB7McUul89UOGmju5qK8ZGkz6FgfNI0GxjLTXSPAwnCv\nkgs/ZsM5mNuLsOpFKseSqBvqw949c10nc5Y8c9XCuhA+RsBOh081+O8V9VoW\nAWHe3sMNvcGWVxDCFcxMSMEtnWoceNSSY616hIrEsc1mZXxKqblpD0hYuP7J\nWj7SJaBQ0Nt8ibtavnu8Ac1IXUs/+94mIUHPKJfhvcgj5WGA3WF+AvE34bD3\nL5qIhGX6qQK3Dg2/nq2ApW5eTBQXlabj0HjwzUMs7nJQHJoShkEwHYXsU4RM\n2xQRNq8Oy0JrUBF6dihQRLcgOCLKehKSvoL2lidtNjKXa6Evjsw2IyZmqGWw\nsVwSOGxFEm8qIwnb7U3rW2RX5EVdi8Jr4L0AvnZ9cK6x/nFaJtIwYKg9oL8k\neqkxwLzEqfW/v4dwal47hUXIKjmsJn4+LK62SdANPj0uTGWpTBihM4H6b7mB\nVHyFxYOSg6fwhhy1Azhur+qATaPrFZy/482l/JdRb45sFoVqrJgxWmHZ9w7v\nSfWa\r\n=P3WG\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"7752daf45d0d11a78749438c7dcc66dd08cd2867","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.2-beta-0_1586231954365_0.3498551383171109","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"@ice/store","version":"1.3.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"8928da911842b575a9faa5e30e05428908c4fe79","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.2.tgz","fileCount":67,"integrity":"sha512-dYZu2Try6zYeNIHg0z0gJODUXO9kpVFrpae7bOr2JK6f3Cl6UAgLBQB09GfteyvJdBbk59oZJ2qOngM7z7s08w==","signatures":[{"sig":"MEUCIQCq0eM3ZwwVHa4/kn9eR0NznFB+4owjkVg7Z6xnPWAnSgIgDtlBYsYCvpGEi/0131L/KyV6tBkeg4G8/Q2aH8+G1YU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejEIoCRA9TVsSAnZWagAAS20P/ivSGV0vnlT1JU+y6ROz\nSnwjYtQkUswEdgYiYfUDm+D0oXjmKOZ4iheee2U0n0OEfhetFcpZ/hA1Pbzl\nNz40Udr5bk9sGGMZEfyBPD1WUN0/lFBr4xha6mrD9WAy3jjzRVaN4qNoFXO2\nOOMmrkd2UpC+A2n2WJ7ejWguKxh1ZjUKjZCUb3qPEuuPhBN+jMudm1cs5ltS\nHAvEwRfJ4g8ZmOf8cBmDsimKIPivgi99M/bjW8Sp9s4jTusIFoiQV3HHk2+N\n+bmg/g7R8INPw5IPdQH6uCKMcVGV8yuqn4zjk4p1VsnyMLPEf4RI6rbbeWn3\nRPjPP2WBrUPlm9WTZf9EeCzjBolzLClCQsshJrab0JC5E01rZnyFvo8RtUf3\niYWdYS8K4XxHXAwDqbHCTOfNqGXI3c84vU/782CgvDInNsvzPFVIxKN2YwEl\nrsuDoUjZNHPz/xK8qPyHMPDTOPLWvh5hSnQ9XvAQP1h500oTqyoJPWPnYnFx\nLEBGV4BSXZxz291BbRE8FmPQop0GNHGztfKnJRPN8etVx6vaFRiNJCRAa7tA\nEU7NmhVpKgsLt0A/dFk5PqKiheHwn7b2CfFCYOHLc6Qn/1PA9s/jMgS0MjJr\nDwLBQ6dNPa301CU6xSTzLLqCltaCD+IMteqr1jNUdmvCWXGpWYJN2zsOJiIM\nvMWe\r\n=9Dyz\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"09ba3eb4eccb9904ba282d81449de38b912c4585","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.2_1586250279587_0.401398719342956","host":"s3://npm-registry-packages"}},"1.3.3":{"name":"@ice/store","version":"1.3.3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.3","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"8823a79470df3a6747a8a2c6297658596fd9d7e1","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.3.tgz","fileCount":67,"integrity":"sha512-w13gnAo2eW09dM0wLQRSIIv6G2UrWBWD2190ou6lNeF1rXiu98ta8bEEbjRP3PPI0cYTuORTAF2HIpJvqK6osQ==","signatures":[{"sig":"MEUCIBlLWOP8WL9lHD0RO7pJyd+nbP99NNLrsWuS+7RRjC5mAiEA0AO+2xyJcUOaCc/Zsp4z4h79IPmTRbtEA79Ok19i4zM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejTzZCRA9TVsSAnZWagAAIiUP/i1I+57I9toqr93CwNEI\nICVmugUm/ofUoMvaUQrq1m2jIkOYprY9LjEC/JdWJvFzjOG06ovr+wTrSk6e\nfBHXJMs608Ivr/bI3Nssn/Goix0H/b9HJsID3873OoQEjhc9CrkMTIqKnwZS\n2ovh9AAbzqaunq4wwopUZYWUAnvId/s6/upYbJH8IvKo7FobTlgoVymU2Yoo\nJ6d/Nh+HH8zWcvBpVYPAJyTVpyo2N8Ls/qym7lNHIQrHv3V+jN1qWz6JKNV7\nuPekEK4W0j61W/K9osGLzCaCcfAtSyfTH+K+iN1ktZPDdNbYifJc/fr+EIzp\n0n/jyKt5tk2tXMtBX9z5b8mXn0nc6Rw2l0hrHdOt6y9XpOV6uIouZVUf4pPU\nyl0GVanqGBAd60BrcsHpzgrxUxmZESnZD/VSMbgxGTyepyL/VQuKxVFwjR6f\ng/H//zaD+sJfXfirDlZw+QsyM3j1WRVJEIXkHTNmAATiCBarAS8P7xctpBdD\ny57mU5C7v4MbvmUKZQ7D/HxgKzD1ZrioyC+0JsgpMnbjbX1O78hfeUCYMB5h\nK4BA+EsTxvSRp7QaQMHEJsh1YcsPhH4Rep5rqqEQQIN/RWse5euev6QGH3v0\nEsJaSC89q7WuMHgZmRM8cugTcYqEAkn1+vIK/ITWwmns0HEThs5J4MBXHTKv\ne4tD\r\n=Dydr\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"41586a86fa4218f70e2dcc02327affe0382aeab9","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.3_1586314454540_0.5222735523086326","host":"s3://npm-registry-packages"}},"1.3.4":{"name":"@ice/store","version":"1.3.4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.4","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"94d0279f9e37e896305a66d625c9233934a6fccc","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.4.tgz","fileCount":67,"integrity":"sha512-rHZCod8lnbf29FjDDPmD41JBys+/MFRshbbSst1nLmA/qDSC95X5txLXfXM+YMc3d4htAzHGm9CP181/+sz1jw==","signatures":[{"sig":"MEQCIC6uvBz6D/t4EAL8Y+sH6kJQk1ou6gfRKPxQTqXIVaRgAiAPt6L6DCjTEINIg1tUdkuLhyvGcvEKYo8S321mjegNrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekCnECRA9TVsSAnZWagAAw5gQAJmOrWS+wc7J571oUT8H\nVUgtrMMbB3mKpRhyUDDDQzQiUmPbXWtvl6AbeuDvNODt0p85/ByzOcrTq6VR\nfe2BL/w7JVFhjDLLLLlo5LJE+PdXta1x8Zw5b2Se3AaDpCFmdXHiz67+yZct\nJnz99XzcSfNcOdvu+iDa+/+SH4kitkX6JxuSpsq8hQ4GSH+6EXC/Wj51+Hgr\nPvxWbwt1k5jARYS+mzJfTMkfqrvg52f4OzILejeq5jq2ROcVzEKDC1qCE2Yd\nVlGfYYfkgBKOieECcFAJTwAujxzbIXlVLmiIkaZONkMJklyuNYHiP5/YIrjq\n0p5ub/GJThM9VYthQsfzbMU6JufMhtTrAcAA6voNqdH2loDnaI73IIjiOAcz\nvTv7DjoUvSDlqfx+4O5Nc+MYwUA+zJ9lv9Ty8i6p4Ey6sS+1CRpQWbkzHSnl\ni6/xlXaC+53rppX64AQ4kbRgFH9YnKLIOpFHyTcObTBmHho8+7e7vn6071zG\nOcQK4sg2HxxfgnRTZ8KVy9iwj/VrIQ7iuqnoSuW0zzZYRJL6a9YSpVWE/svQ\ni4WMByVeKFVBkYYaw8HoOkeJb/SynJqfmpi4rmz7k5351mTed5C2b4DQTXNO\nvo+2q6Y5TxlOfLesXr4m7LjEmUo5xPCQ6xX2kh2ex30hC+hiu31sZRMn5+8y\nfaKm\r\n=na+y\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"8833e977dbe59ea6baed7c47cfb55aa8598eff37","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.4_1586506179446_0.7769748617063288","host":"s3://npm-registry-packages"}},"1.3.5":{"name":"@ice/store","version":"1.3.5","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.3.5","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"c70e5e7b4e55ea5f3d76470a01f9b06ba0c83055","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.3.5.tgz","fileCount":67,"integrity":"sha512-3lWQkg12K+RF+4CO0VbcVNDy73odSZhlXCdNo7B8UnIfi7XoMJVtn8mCG4QZMAK8FW/+Ga8WnA9PtNR+SjjQ6Q==","signatures":[{"sig":"MEQCIH+ykpimgZsMOvcbdISA8KpVYrEaBlAslUjtGIrgZKeBAiA15/yR/Y9/1VEb9ZJFXw2IXKUFBTYxBm1ctk16iP66TA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekTcFCRA9TVsSAnZWagAACe8P/iSp2HOOTlhibpLP1IxF\nfgi92eGqKKzYisFnEXK0X9Hij5Y4rBv+SBPyI2GUwIH7i7tk+OeTZ5Fb42pl\neQMiycAxQ6zc4hA34tqXinBZzfQZ4MAp62WgB/HW9a2xrOES2fVgZ7B1T2uL\nOWJJdCjMnQseTGpIR33m0vSf26FogKAJe28ueE+09CHl9VvT/v5TyW9MUmLc\nvOdrHdUGtAnb76Uq3pp3nG/KiBt9ojaSPJEM2M6GzD9IBYg15em1K6YqW3/X\nl8ZXVfRLDOHveCimNHv6awaawpE+3a32cErpDlFu2Z7vvfiiP0aQPPaCgL7D\nF/4W2u6GNwm5Z+OGvs3Ma4XSvj+fpWL48ZtKXovq+SJ7imT4Uo/z2NcNN/hE\nV/Jyc+/fAVZNvQwXuCIy5+BFeeK26TQYaOQzQj3IyA8I03/KV1NHsqi+8ePP\nCDzTtU6aByIlfsLWcBqQD6Tmk1lS//GboInFFqCEhUSqNyqh56l8EuNy22GM\nxH7TWWNfsCVvWQodS1/ZJrUiUwz/ZBGNitvJUH5cAUCK9u5Q6DQx1fxTFpTK\nKxRsyOjXEf3g9g5SaGA9x8Gmy8NOWZCWe1MHHytaDKdAgcSee01cWQwZvqAX\n0ZBwMmp99zAhBw0DvE8hF3JQqDnShhpVxy3Am9ISZ92z6RD0DStyDWFQ9506\nkv2Y\r\n=H5sr\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/"},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"b08f35827e56e2d39106b61c46380eb2e7432390","scripts":{"lint":"npm run lint:nofix -- --fix","test":"NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^24.7.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^24.0.2","@ice/spec":"^0.1.9","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^24.0.12","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","@testing-library/react":"^9.0.0","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.3.5_1586575109360_0.29470965699370044","host":"s3://npm-registry-packages"}},"1.4.0-beta-0":{"name":"@ice/store","version":"1.4.0-beta-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.0-beta-0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"d3b50c08749914ab4ca7e31a9f8d45eabd76b473","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.0-beta-0.tgz","fileCount":64,"integrity":"sha512-dfstYdHTurLvbDFlsr8F3TXWhW6ov4J+oSV0ZKEFMfnPmXyAdFPUf2kiKlDc8MKCfHwxxh+1JegvtD/+Ee4CDw==","signatures":[{"sig":"MEUCIQDDMZPdesf/roYxiWkK082SH5Aw5yphxY3trGEyTGL4tgIgQOK+RF1LfAFRgiMoovwqnhzotw0VdK260EMGWEcelNM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenV/GCRA9TVsSAnZWagAA+4AP/0i43n/WmY1aFYGswYqi\nMZihmolf0QQsJAfnPAaexusY/+FIBk6WBqjF+BT6T6wrqDT8gjo1WWitJk/C\ni518LT3l/DTkIv41q/I76fcaWGEsKUobhYYdCqAO+CVWiAIBMJNQLXBwZOPa\nk4Q+RQSMemLSRR8REKuxaOh5z/2FzUDmni5ecnj6jqO4lb+JJAo5Jr8LbbJj\ncc5wR9URoPAsnm1Gtk3XMOlqX+1kZyEigworOH1fKKgo3e4tCs5sxq90diDl\nJEWiSldsqjWNDBGTrubR4iZ/Axd8MupzvgrqCbxvIXZa7IFGcfTcJp1AoSuG\nK6hMC2BDcSZr5637VB/k8sB6ECMK71AVxM9JxrI7wh9JOd9aQ/JTBXCTh+ga\nX2RQyb0mrL0eSPuvXwGatK/Wy1iZF99HLebHnCUbJ0LxESM7BE+H14+AUf77\nTHHqnm+udBBBiZf+8Kfs0xYrGZN5vF0BnBVMiafMM/xxcplmausFbqoGqGAb\npH33qM708QhAxa0CgEXePVJPI0WQbSniAyJNa7FTATBCDrMx2D8zg7E4QHu7\n30DmJhi1J4QI9SgSi8z9YBDBWBYhFVHLmmu5wV9kfp3Lf1Yr+7R0G+AlHz0X\n/JJFXFxquDCZNBNNYOoSjn/cu1kR7b7V+MyZe2YO/1+U5czKOtXx1Oc6F3gj\nNu7k\r\n=eUgI\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## API\n\n[docs/api](./docs/api.md)\n\n## Recipes\n\n[docs/recipes](./docs/recipes.md)\n\n## Upgrade Guidelines\n\n[docs/upgrade-guidelines](./docs/upgrade-guidelines.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"90f04887ae362c8fd72ca781808b6f2cba0a6a1d","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.2.1","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.0-beta-0_1587371973902_0.7263142576527375","host":"s3://npm-registry-packages"}},"1.4.0-beta-1":{"name":"@ice/store","version":"1.4.0-beta-1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.0-beta-1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"5f1f71b701ec1f1534c20b0dab7c9198058ace63","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.0-beta-1.tgz","fileCount":67,"integrity":"sha512-2VQlGRWTGfuGJeFoQ+rFVHv7q01cAJL/bvK0fK+kDGY7S+QLqxv8EOQrWeZl6jJM6fLJt4kp7FyUQcKltqYguw==","signatures":[{"sig":"MEYCIQDEj26TBlmmLBrjjuiv1VyewYeR/jkNweC1RJrr+BZmcAIhAIg+TOxNgcTORcUwnSRDAVb02w2MRGsml+qGiG5EYZuO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoULZCRA9TVsSAnZWagAAsj0P/264WqiOxWk9DCPXmac/\nEXNMnXg28hQyr20wNFVcRffHAOnuijVrIs1WDqS+MZqFjjSrxw/caOJS6c72\nQJSDpQvXo3CuKRxbVzBTAEJCOQPqpFuSNblTiPm4y/OhyMmrgUx9D4AdnH9v\n1dgaHS0T50y11LTD33XE/XjfBVvrFMFxzSpgxVFeOWqmxFvO6jEnk+pw9ecl\ncxKwxddlxRU538mjVn7qom/mJ53UorLUsFripncJSZPpz6MnDR/D5oQTX/mY\nk66GqZpMMksvlf6v7/lS1jVi1cYJabYy2P/umJC+y2JuChspOPzzPOHf8a7u\ng5W3pA9hDpC1Rb6SRhhlCBqZvcGO1t/AqfvKhCiCH4BNE4qCkwnbvKjXQEZ6\nJ82qj1dqkNS/GMhn4SgiiJLMZpJBbwtRqvGg9BXICMJCU2cV4hrrFx73TkwA\n6Iqq/xwhm+35d2MA0z8ereUvu88G6he4cWPhJEASXWp/z4r+dgRcbubghuFo\n6FsqR/GxIUyW6HjZT+d83+n/eKph11c4Ce1f3NLumGccR2b64sispKHmTFNR\nw1TBgpORlJ/0bwU7YKenD50oPjQ6KLKlbgZ7kFZcmKXveoEkr2v7rS0XayC1\nA/62XXNs+3bBzSBBoDxeFM1IPZRbniMHul38zfTIi+qad83jKZtyMb6MWmbP\n3sVs\r\n=hWKk\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async decrementAsync() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, decrementAsync } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={decrementAsync}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"afc5a11aa71b90064ff8838d682dd955e979fed3","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.2.1","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.0-beta-1_1587626712914_0.7261233833322558","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@ice/store","version":"1.4.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"379793d1567a8118eb3d532a684a1064bfedd50d","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.0.tgz","fileCount":64,"integrity":"sha512-4nXtbgLHz4jVcqrUWOmL/N/IG5SbMbI3oIHgHtsM8aOpDWx6KLbzsKtpNj23KQ9suiv55x7QsBXCGdhfkb15Tw==","signatures":[{"sig":"MEYCIQCMB576ryL4GCntqBWnIMVIEo1Enjf3jaOBd5BzwXapQQIhAK0L0+3gCeBdkYy57hDjmwy+fMlvaREzee/VY4Re5wWR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepPQzCRA9TVsSAnZWagAA31QP/R9Un+FEaitwCqPAiBed\naWGjYOmTxoC6VowXwNkK2HoCngHNAKZjqQ2N5rzq4v1uaK/Z1J00UxCTyK3g\nKkvFnrIPBbGgKtbENzA3dmWEu3CFVK8Jcaiu71PHRjjDQKYEOFDBqR2fMHJo\nC+TbPLzefEt/DhjFf+Iz92EovuwxMzjQL/QOW3HnulGPNinnak05PxhRYgO2\noIRi2oUOC48bJQKNgreZrZQbSTd8jXDxa/TY3vIzb3vTEqb+QZBNVPC5dMGV\nu5iHQwfBrpuqPQ3MKSVs8SePasq5NFLlT/1uyXGap8gAUMgIOWNrQ+Dxt1Bl\nbr/xD5TsBpVGJ4jW4W5NzqeI4Inq1u3NAisl8S2/Nd4VJBs03kYAhBRtjXEl\nEs0N1a4PXetMs1ou/PgHHTalVHvpN21t2wKTP+DlrDqKaY29Di0Vdbfdy/vr\nJ0Tkjs1Xugoaqw1LeRWr3cstB9C6zqirGAq7eGW0K33DI/TeooJJdqjKqjVo\nFwJuHU5IfTCVcoTfvvjw9zx6NvS+7mVez1oLG6q3W1m/9Hw+5qb2JLjZTQR8\nkZECjR3RMnmr4/tHwpEjKBiOEdbRSxFdzGEiTgHdm0TCgU83w/becLPDfUSK\n19T7nkciMJ4fRZMYN0LGW0cYO6MNVfMt65JIVerEcuBTjojHedeBotMiqGuL\n6Rol\r\n=zgMr\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"abf623eb1a88f05054da88b640daa94f34899d86","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.13.4","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"8.17.0","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.2.1","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.0_1587868723004_0.9738046267689893","host":"s3://npm-registry-packages"}},"1.4.1-beta-0":{"name":"@ice/store","version":"1.4.1-beta-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.1-beta-0","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"647eda00aa81274001c752f2e6cd4789a3b1e594","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.1-beta-0.tgz","fileCount":64,"integrity":"sha512-FBa5rTr2Q0qksapKh/Tj4Nx68gaxq/RSN6dCA+hxUylwXDUw9QNwFOq5himN01ngJPy45Wq3BOVMcMKFWUCwRw==","signatures":[{"sig":"MEUCIC7gvMGxD6nKwttvad+hVi0y2bde/hxgRdNYjAjvaCwFAiEAx0qxn+xHIA85DWnBVOkH+mkuCVrJYIqGDgkcKfo+H6I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew1F0CRA9TVsSAnZWagAAsmMP/2/AXJZ563Fr0st4cf9n\n0XLJsStYgWzsdn55Shd+wIJY+O3XjLm9pes/g1tRiKfJf4t82DuLKGRp4Zx2\nQiDWwIkA5gyLXMMu2zaVQx/k/8kWbPcKOed83uZhyE6XIYtyuRI04TvJdPjm\na0iGp1ghgJDwttnE4gWSeZvO2YDSW12UzbWUyKR7GoawopZCiGRFfemKFvmj\nuPyIxqLi3F+QrHnCm+fghHQY/A5AV24wdT7LKtL44VC71CmLpBoEN9F6Sydo\n5J8CQ3ZvB2v6tmQgWSNPEL6YCxd1DthouBg1cXlDOLebqIGhdMvytP2MlsH5\nUAK1xrGynV/HevxFtcfT+5Kz3XFRSisCyngDJP89uzl37O2Dxvx5SWqpB/Uq\naqkeFZ38S2Te8Xfq+vjh0qjm7yjnSR4VmfqkU/DeaCkolwC/AHIKdj2lT9DQ\nYuEfY7buDKlGBa6dw7+/isjahZcyaabFLLXS1/fMwBVm2kulP+kpWRxaWDYH\nvDZCD50VmIF6NKCAAMGbsJ5U7GPgY3PsxYjC/JU+8aIn2bK6cHB0qKPbc+uQ\n/S2eNRW+TvTGZglsuogfVyOydJ7MBCPuy0mgR3IdPJAbFutCvQq+B9NrLCsI\nbsJ60NS9nPy/oup/SyaSZMmADQhjPZBU0Jxmw971amosUPKAQZ7XLeHvlsEK\nDC1S\r\n=Nrqs\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n* **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n* **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n* **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n* **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) => new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment:(prevState) => prevState + 1,\n    decrement:(prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  })\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [ count, dispatchers ] = useModel('counter');\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>+</button>\n      <button type=\"button\" onClick={asyncDecrement}>-</button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|✔ |✔|✔|9+ ✔|✔|✔|✔|\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/alibaba/ice/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## Community\n\n| DingTalk community                               | GitHub issues |  Gitter |\n|-------------------------------------|--------------|---------|\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]     | [gitter]|\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"507ec5eb0a92927bd3f7568ab681fb00730b3d3f","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.10.3","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"10.16.3","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.2.1","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.1-beta-0_1589858676450_0.933273487301322","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"@ice/store","version":"1.4.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.1","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"77eba1a78e853fe145907a14abe61d7564a7b757","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.1.tgz","fileCount":64,"integrity":"sha512-fAHQPolofiQcOtN8kD4JE+O3pNP6BdSOCv9MU+Q2qNeDJOItSVWX2BkzcE3OI6HW0adaDmbCRJCBrinyG9jJLQ==","signatures":[{"sig":"MEYCIQDRTlAt56tIWo+Zgf+YETY7To5BDIEA941DIaSpgkZnEQIhAMjJuJ2k7A6vaHSZcbucUv1c1P2rNRQWnqH5PVKrARnd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew1Y7CRA9TVsSAnZWagAA8ngP/2Cua3CWNOk1Vw5SDpPW\nlO6IbrILzbD4Onlh6pBe1NQR2wiKPTh8FirjQHRAjoz0O2jev61OL5/wmAsl\nrgvhn4SxVUhlwKkErjT8jHKyVQmCHRcmVBEiG+DqF+sAUmlgPyFvFmyb1FRK\nrX1XLd6Kqw161GN6Pu4Uks7jB1oDcHTKtSOT70C7Dt+45TVc2dARwRLdWmWK\nu5EvtHLWLl3O0xffrL5jet77OWELXhLEt6JISQG7egMjtMeLoheFFmQ0DIoV\nbmxaOU/91Ba+kBOfkrnFMh3CyvRTzrvfMUyA0Ym8CSBquoMpZ3PMimLRHZgi\n+3UdK4OB4ulcnS8dy0pwYJPIw/Hl4FOWCman5kNtHCXm3gpaQG0UU92xtzuC\nAd7wPJVyrHkbfasBoD7hPaduv4vQkR8NfCUMVaDjM4kWfVM7Qt41DlZ1Esm5\ngtvRBzPOO5sNDOBJns/iCIpzwWr6VE1IX2gOSOz1VSSrLlEDTCB9f0QNALdX\n8hUzCvgJs58segMmXl/HHr2uX+7clyAt8xldWDt7sgOn6aL1fqSpDWW/x5kJ\nEKVMl1etM+9E7iWmTnBVX9sWM2nFLfWvajijZ0qoxrFQQWKN0AZc5/R6pQAO\noKYQOgw49SdcFdBXM8BSM1+ZkgK1oExv2rLul4KLeakTjkjn0hrhUqcWmN7A\nwAku\r\n=oWKZ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"bba4e123ff503b42ed52dddaca1c5ab3e38cf934","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.13.4","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"8.17.0","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.2.1","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.1_1589859899240_0.655932955131346","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"@ice/store","version":"1.4.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.2","maintainers":[{"name":"alvinhui","email":"alvinxwt@gmail.com"},{"name":"boiawang","email":"zhengwang2314@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@163.com"},{"name":"lip966","email":"wddpwzz36@gmail.com"},{"name":"oraaange","email":"oraaangecolin@gmail.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"temper357","email":"temper357@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yundong","email":"yundong.me@gmail.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"b7f10e48389cdff06fd7814514708be9c586e000","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.2.tgz","fileCount":64,"integrity":"sha512-vOMniP4XXgpX81Qu+eAUp8NU5a14cTyEDkUp/Yavvq0DtbO6LlCG1CmAejGdQRn3lpu8aF1nG19RaY/J4Ap0BQ==","signatures":[{"sig":"MEUCIE9oux8ew2ZlX1oJU5K9SAP50udGXOmWBn+3KjLvgtv4AiEAk9TxAHn67K0KQQ4C6ALAwEyjoCYhBOnbi6UgLejC70M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1GopCRA9TVsSAnZWagAA0a4P/0Ozru8L3HNOp+J3Sf6k\nEZLWXHSouAvO2i06EoYENsvVZV+MtLW9qqTy/Jep56TPut0qnc42g51Fg5KW\nrQAKJhlkAzz3Ca9GNbTg7QlOFUaRW1DbGNLtwBONdsw7qZ4906SouV+xGW6w\nIJ599jQqiT97Ra70lwphOcZ8L27OL+QCfsgc5VQE+INWwB1LxVRc1y6MDFB4\n0l8VXh3bhE57TyjD6inCnfjAr9Q8i6qp8JiR/Z9k50PmooBLF+94y/aatoFM\nR2/rk6Z5lnu/rsCbiBZ2ieXUIN5iUGkJlgOFYA8fpunweKiis5ur2F1dPkUj\nhFSBBbt+MDkWBCqcXZP5CH6GmldmkL+0/o98ePglD+bIeK+xJlXQvmpiJ4T8\nA8lPHaAl4vz+FUaJs3O3l29da3C07tv5GS5Uf88PKOJHWsSoFCSyMTnLjmLb\nLDeEI4b6JinQAMP8t/jLQywpAewA8Z6PP/LCRxovckMOnOZaXVLWPXsCdL7R\nCNiq8Kn0Rj0hzMYWJGMA2WYIbl6eFtuU6Tk64LxilgINRsMq5tzDTVjUHPtX\nSjABbr8v8Z3EG4MHLaRfMYGSzKsuiMP0Wow8pol72qR7Jg6VWHT8C87KGKcg\n2gmJ5zC5+BczY6h0DUFBfzZBNih9Dz/SF/OpA1nkV3xtHbMfsUnaOUyRI9dq\niPS7\r\n=fBjJ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"aef2bade57e00026597a8a30042ea37b286c67ed","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"alvinhui","email":"alvin.hui@qq.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.13.4","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"8.17.0","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.2.1","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@commitlint/cli":"^8.2.0","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.2_1590979113313_0.08722819459445974","host":"s3://npm-registry-packages"}},"1.4.3-0":{"name":"@ice/store","version":"1.4.3-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-0","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"fedd2df87bdf9f891a88fef406ab340a9733f022","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-0.tgz","fileCount":64,"integrity":"sha512-xyatG/4ewYW1T89LqvjhBo3c2lmsTK/9g/EWs4G3coq/GPly9JxhmxHEj27ljFSEZQ5ZtC58QEHJFLBqsaGNeg==","signatures":[{"sig":"MEYCIQDznG7i6bnbIMyrenXTLrVDgLU5Ld5rB4w02NP/DkTekgIhAL1aJVY56lbbD8u+Y3r6ic6ZI7ZnH5asZolgtkqZ4TNO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgye4zCRA9TVsSAnZWagAAGswP/0TIEfEobMDtddPW3x9v\nsbybKfXJiP6rJIyedVhJ8/UJibBLFNxOFOk9U/KFxW1fk9szCdsF1pOyIg9t\nrKvauej9yUPBo+nGacJOpy9BkPAh2kSeRXWMttQwVcBUWXKNJRK0Gbb7L3BR\n2vvLmQo0TLuuwoE7uLjac/D0x121YW0o5021w/v9WhuRlLCofH+Zxe4iIoTp\n3ovK2vvx+0PNi+/DTKfPwMe22jriFLAD50f7l3TuwQI3Pf72xQdb2UlUwLoY\n2JihAGrXrLjZm+tLPA6nuTh2rjXx/5qYTsikqAyOqpmpwZKKNdgwbI6zzFpr\nAsDgXmff4V8xqi3NzjTuLxoEzXVoIwyNfuVlUsZVvFHfVTjva5Jg909DdJRu\nAzknRAWok2bqbClZCt913XYOLAn3bW5dAoaG4Q+fcv/V+BejcCFlTl+2EtOm\nDOYvJyP2Z1Borqh5HTNbYkRZSHZSQDr/ry+7+QmtiYxoxtJ7NBi4/u8CWPhQ\nmbFRiraEbAlh8T3C+++bNw7U3M/oGrIX06OQULj6kvbGkvrqBlValk5tuNUw\nxSTFWE5FSG2Kzxvt/lBWp2FiJfeBYQBWVMSj2epqUqrJzOv6zYkJy9aZ8Y0S\ntM3y40v3d8vJE6AuK/AJ5zhY7YHsZe6cLH+6IksPlLqT3z2lUGLGl+eM7I4O\nVnHa\r\n=udGn\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"d4ce841423700095e657560a3bc4e55c8ad1db99","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-0_1623846451326_0.22055549704774835","host":"s3://npm-registry-packages"}},"1.4.3-1":{"name":"@ice/store","version":"1.4.3-1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-1","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"e4cac3065c2828bda5acd4626a501f0d79d58bb6","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-1.tgz","fileCount":64,"integrity":"sha512-J8u/cbAIa/l+4bKVhJEaem597VMKqIyd247YmqHi7VrAqI9ePam/MsU4tZDR6+NLM6S/v84Cw+EMcUjtyF68ag==","signatures":[{"sig":"MEUCIQDU4Vat5RpomDvMn0iJLowXx3A3BbQE1hoeITW9fwV19gIgNde3HR2yDh15OCPerSFxVgpfoFVGpCaAg5UmoXRWmnc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgye64CRA9TVsSAnZWagAAlMMP/RSsT1oa5RUVBjZWhWCK\nExRwsXo8oZKCwBP1GHkykLLjGsRW1FoezO9oduI5ulxMpAejAiaR2rpUHf8N\ndPvJNSleXj5v9ea9HQbaMxbi6qT2Cf2tdJcJQaf36JHTACgIjC9vN/c5GXJt\nXZ4p9cm/UDbuRY2O7iJSDNhhdLUIdmZezWDuLbazJnIeEOVO47+3tDOcHPDt\nuNNUmKRcgBpBFWucI82jjPWmMwcwQOQW1pDSMkr7fAEO8H3R0KzOXaCrEkFr\nCV5ogsTVuEcEAu0FhavpiPgdzY0hMklQWU8rhW4BHMY/xl9LcmaIXH35CFN2\nyCcwo/e/692EVta5ld8KVXE2p1gbAxwl4Fq/GCf9Trlzluj+U58BVJkdEmVz\nNFdGghddSGXHGjjFz0MGu6x8rhifiaYcYqRPiNvV1lhnkqiOUP0rLWgvCinI\ngDPVyvU38MA4tj+oOT319O0LAekEd6LVG8mNCqlBnsMuu4LXM4+cJmHjhtIU\n6vhVZWstpNyvSALNOKJ3G5GMnlmFSeikuzv22vsRl0FoeeCdEQ1XY+j3jXQr\nlxDOLhCN/197ND8SiYd5HZOXamR0XDUKLWrwkow1lHZhONnOy2n6BMEfLOBn\nrl7yal78TrlPWMNoCrX/KGX07kcVQ5Wxs62ImXVtnnF5CiPhpDRzLPk39EKr\nRRJM\r\n=f7mp\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"9893cdfc27b2d67e2439efa08b10d69151e908da","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-1_1623846584724_0.9485843830305332","host":"s3://npm-registry-packages"}},"1.4.3-2":{"name":"@ice/store","version":"1.4.3-2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-2","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"94b6b43d1edf587749bf80d9db6409fe75189cdb","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-2.tgz","fileCount":64,"integrity":"sha512-gXQrFxayGUI6ZC7wE3jyO2zmYfduGfh2EfR2n93vssDCWN9WmC+r7mUkJ3lERvSN2/zdhG1EXCgZbNX3ybll6Q==","signatures":[{"sig":"MEQCIHWai8ebJ206cQ5fXs5UOzP1MZJmc84LM4NPO5yLWWHtAiB4Q1JiEJ3iV5Yjr77pqhq+sqkDjbQqTbQflTwRSPwjsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyfVPCRA9TVsSAnZWagAAKA0P/3Fd1DdPFbqMaBNUeTo3\n9fp+N1seQYsXSUACUAzzF+jwuHHNt6ZqZrnO37TAEqGSglzJ8CgDLT0wxi1k\nlCaVfwxQCBD3mDWLEhvn7gJ8KoVeG8D3cabwhsoyIKdMANWffMFShXEzOAcG\n3oc3kLX+y8/dU61S9s1MbN4se/XiYYtSwq0IlAGJbNBjb1w3/EMs+psVZD1H\n3h1W53TP6th3/QBDuEDEAQ+UIhqbmVchEwZorQfOC8U1kRPZnw812cvY0Qrj\nCqTbnfXB1RmBDnMikRR9u6dVBasa5VE5NrzhqqqJDxpbmppVltOXGlEjUjdl\nW90klfSOGlJpr4revoWg8pMD5QUb7z1gNyiDwA4f3ec9BjxQPkhWlqYEmvR6\nvtBu29Eh6/kdU2RVLTa7wi7XsoLm8TkJNxzWkShbmdeHoWaLiM5xrVoGGt13\n5mjcTpT5WEYXms0MCvuJs3vW+KqhAgzpdeLkVEW/5K9Ni8v1WNpVpZoF3kXN\n2A1UxMDqvSkg7EPw5nO6tQPIaeSRFLjmHT4JEZjS7FTXlLy9uE02VWl1fu0U\nV9gOIlE7msiEZVdG33AChJ4sdrANDawTyhrWdLjL1F7PTPE9TMwkoI6bCnon\nL+nfWjaiMkNo1Cg2wG4bZ6/Eoq2XsgKc383xQLi6KFY74Xe/IxKEGruirmVD\nCcb0\r\n=coOB\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"43bb31e1cd5ca7832001af84764d4abb35852487","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-2_1623848271242_0.4781672319434811","host":"s3://npm-registry-packages"}},"1.4.3-3":{"name":"@ice/store","version":"1.4.3-3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-3","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"1384ad6b009a8f6b8e3bf8f096373b2a81595b67","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-3.tgz","fileCount":64,"integrity":"sha512-1v7HUtOQAFPx9LeEKiKQqyj8sOVQm/3C7UTkj+wK74GBhxZv1Jr/F6dMGWHdo+jm7H0bGG7/uChAJv4IiaYNow==","signatures":[{"sig":"MEQCIEze9YcWUbiEgMYpIZjmnmaItmXb6Aj+93R3qJbIfYM1AiAX1HU5nI0Z521Bzl57Qt8cPdMlmZemGYsoYRq2kHFQ8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyfZJCRA9TVsSAnZWagAA4kMP/0sB5fRralNDTxhwNWu3\nBt8Hc/nlBfi7ZvzqMKJ/EvcE8PusKIBX7hwRxrzRFURO79eM1ajJSTNFgiAF\noW/HzEhjKjKdj3cj/agPDr3kVPmNkYf1L1UEJ6kBdIA5pGFWbNZINAJhGSEQ\n3aV1bRap+YvtDuKjlN/9hViEt1Sf4gV5FeFyB0OeOwLacB5jpuXzmg9sCOOi\nFUqRsqR/xFE+OPtwbNXkSBzmuwVp96YwPhMiylW80jEbfEVNMV3rWyoGFHbT\n2aZqeR2tLZta0dq4FE+LTwM/YGf+uauu9N2mBJ6QcYKqBa5COty7XfzqYCla\nIFB2SMi8j8XatStUEf3Nw7fZYLlnzIiOEGC6C0NGcypsl1tHKLD1VZ0ItcJz\nS4jymPNVnzvDalDzpwSuuV/lfi7kHXL4VeWxV7N4ZEOuS0asofCrgu20p77K\nytAazWa+AjGJmD2HnvjW80W39x48X+FufeqM4xPmuIZD2SOksda1v/f5tESW\nLnxDbyGn1qUf727ku8UNpOP0iprKESWRhcHZu5m5a23xFmkZrXjAF1tU1wDL\nVXPCxoa8kLyqA1b4kHB0OTC7mdQ8lmrY30tU8NORh4gxv5i55dLAfM9VqGxt\ndCcyjutUg/3WHOrAee3V0ZAQOaqXnmEotlLm6RIUWIcHY8cWOQhnVQuCIOxL\njVlK\r\n=bFQQ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"df445144bd2662cd1d5a4d8872a677cde1fbf07d","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-3_1623848521801_0.09907235925094415","host":"s3://npm-registry-packages"}},"1.4.3-4":{"name":"@ice/store","version":"1.4.3-4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-4","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"4b62acf3f368f1f1e3418215d92d2debf961823d","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-4.tgz","fileCount":64,"integrity":"sha512-7wrFe30qO/7N5OtBVXTNbLHp04Vcp3alKmvEMtKkKu9uRX762WqMQLo/QzDXwTm4lqKTmC1fjSeiy7wk2zLJCA==","signatures":[{"sig":"MEUCIAPuNOWIlFN0OIO9FzhjzHE57ZTo2A8B8gDOVQv67gA2AiEAu7BZz83wdbFIiuR3Nu65wtpOPgnjkHSWSMTjwSNxfeM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyfbkCRA9TVsSAnZWagAAnygP/3UFPw9ZC3r2Yk4WGNRg\nS8moiMKwkgEHsWCAl+lqexQ7KICXbIvTB6Uj8oFQ3Swr6x8XIe2RBCh4xzaf\nn//ykHqhtWom+Qeavjtc22v7tesYRHMiAf6GKc8ld6rl5Peb2gowhxm2c8jo\ndokjqoLe0I5H7H5wYmp05SxpnkhhV+SM6iJfCS0UUGCVbsL+Xu77m/HY6nWU\nwAtMR8S0Oaz+GR2A74vv03nox+IctTovGb2a5QFJLtr1bH1RWy5hc7sDRILn\nrlZXIkL6xRZWt70dEcbUCLRxZYNmSatFxeVv6MlxD1gEHYvlxFmMq8lHdiIY\nIyzFtvcTEuxdzlY5tb31xBvVM3AsgRGMD7ShpSKK0twkNxQggn6sGaEzMNVq\n8pNXcHmeV61g+/evmIaS+HmqRvnt041xohi6S5+ddzBKhbHjQtK7DJyRIAHh\n+FjnVCOJnf2u7l2yXWn+YyqgiBBoLPrU/sk/0YfKdmJMOGMLgGS15wZb773x\n2TAL9ZDl5GZdwU0FB4Dg7O5T68f0q20EU3odON3vnNI5tsC4hSPtqBqCiDqh\nNVt5ELsEWekpAspXmzGiP/JFmr2o02FfLtsH+G2rE3Q7DKrfejTXIrk05TVq\neOgzVExcz3FD7XrN81sUGzuWPqljFXt6427//0zEKp/oVilqTxqkP/YsP2Hh\nwMpU\r\n=x8x9\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"5444efc170b2d55767c6f7d7fa826b9a95bf9d4e","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-4_1623848675901_0.148289328223008","host":"s3://npm-registry-packages"}},"1.4.3-5":{"name":"@ice/store","version":"1.4.3-5","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-5","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"297d8cb9ac5c8a51ac0241be0c0798e71865e310","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-5.tgz","fileCount":64,"integrity":"sha512-qoVYfFnSjP3bpfj8kI/QhY6LW42/YEGJrBXdlTSbm+aC15pBDeNpzUwjRXLvf1b35YOlaLC+oeex7GZZFd1rEQ==","signatures":[{"sig":"MEUCIQDQ6W53o7xvo04CZl0Vve2uGzW69CMqxP99DApot59W0AIgC5+jEg3MXFQTg4cVplvqS9W8tqrvoLNavpYO5cnGu70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":226131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyuoUCRA9TVsSAnZWagAAYYQP/jyS/KZBrCBctPjz3Uoz\nSWt4mGW0xUfVSVzmMJPbvqg4h+8D5Mlto81nqWRpvFafP6rGY3EoxUT9pedx\ncBnsaFL1O2O7oHwdo5DQb8T/cV5E8tXOmNrlJbonxtZdRtN9IFx003iF5hDs\ntcY3//gmXbW2U+zjTTxPj33TqvdeGGKgsUGczx3CS2/9IRoMHu1HUKwdXPkw\nWnYR4gu5fec2KQtCRA2o+V836AZAoSJeyZBSaaAALODGDHcTrIaPSeB+NcRe\n6SLpGMFXhCIU4fSAwaaZZfqsZCCXuUcqEfAfY0q4qyw9fZDVRsQtye0wjOeu\nkdiq9LxIKVMOeT5953WcVu5wY7xIrci4rDCm27urYrkBVDfEnXXxHxRG9QTc\nmk/vvNTsL4S9xG+xADkbLl5RD5iv6cLZIAhZXaMzoq86CBZCeI032Guujui1\nR0BAwYJQHL3bClQn0hnRJmx0lLEIHL2gjd0hb6rzrMI3bEw8TolHUvI/wGcw\nzOVAgVXQ9TYCFIUPI6cmaiShqcW7kpzv3cB2Vhd+pWUlbakBHaYOL008ou/W\neO8TLeI4EiTRWVZbWz1KsMWNcvJBC6vmw0AU6Cr1upbQlYv1aB2kUi5UFRD5\npUP/cDwOoNhLmD9ipTmqeoFQWFNmKCgo7nscaS+22/rmJEUOjg4vVCPmefc4\nyu3T\r\n=/Exx\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"26487fcd0581a419c2d4d1ea543ac6d1bc1c36e7","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.13","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"14.17.0","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-5_1623910932488_0.13341088121196298","host":"s3://npm-registry-packages"}},"1.4.3-6":{"name":"@ice/store","version":"1.4.3-6","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3-6","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"9e62e7c3fb90637297fc9f1fca0ddf151a6122e9","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3-6.tgz","fileCount":84,"integrity":"sha512-abWiYIWkq7a33DItnCdBPzRFhZwYMk/dKmYZJAPkG5RTIdHkoJ+is/hujk7ZSOPEsGL2J9Kh0tEZ2+wr1RagIA==","signatures":[{"sig":"MEUCIQDTy5SOq5QHUV5k/dAOct5rhyhiOLsjtXtkXg+nvWtpngIgZYBVlX+Ual7AjME+3gkt5gEjXiByF4j7LlGW58phXHE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":223512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyvDHCRA9TVsSAnZWagAAusUP/2hXHlRjWhglxGuhT2Ry\nBFjiFIGZTSpKQEiRLCEkvivW45kbefcx3cqRZkZxaTLenZ85Pyl5LZjSlV+/\nuKoYJ+b/bZrMNeaiYEtCbckH7B9mfxKQ8NbYYAqUBrmXsZLBimyQ3DDER2ec\n15+LAQK8ljppt0wlfCthekQOuXrjcSS9MKaOW2eDNfjacWB4IIHsVf8zxqDI\n8wtnJq1nBWxVZx/1SyBzqV5n5iyZUyBaAe43CdJVBR6jdcmbyBI/mV7Ef2Fl\naY57YZ8cw04TvSXwCFhbfNdZVymYOgEeuLg4HzeK8F9NCJoAsV5ZtA9zcjIR\nItd5YuhlrIzD2OW+0eHvv3C7jxRRpWHz8xZPUpW7gnOHKCgcakLfuWvTr7Ai\nOUQ/3shnVEPAgBiMYpst53LlZv9a7vwWMle8UMMfkBOZW/FvcmaVTRT4Hojt\nAdJL7FDMiHw+jRVBpYapyUt6BtidKT8WoDYqF+GTJN+5KmpSZRTDSEM4cnoK\np9Kd2YJirfMAScnnpFLqvy52hl7pAEbKzIZmfus9FOYDNrXgD2r9UxFL2DPM\nR31hpBUbgrtdn3iuViIN5Iom3uFxgvw18QytB3Rh9H/HcGZaxMu3o2cWzvO3\nhwUitoTjEHsWLEYJ+dSNNWPMbZFnJQdFO6Hwz6uFFZY0Ef63TK5MgxcrBlKs\nCJlB\r\n=lb9W\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createStore } from \"@ice/store\";\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel(\"counter\");\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById(\"root\");\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\n## ICE Ecosystem\n\n| Project    | Version                                | Docs                  | Description                                        |\n| ---------- | -------------------------------------- | --------------------- | -------------------------------------------------- |\n| [icejs]    | [![icejs-status]][icejs-package]       | [docs][icejs-docs]    | A universal framework based on react.js            |\n| [icestark] | [![icestark-status]][icestark-package] | [docs][icestark-docs] | Micro Frontends solution for large application     |\n| [icestore] | [![icestore-status]][icestore-package] | [docs][icestore-docs] | Simple and friendly state for React                |\n| [iceworks] | [![iceworks-status]][iceworks-package] | [docs][iceworks-docs] | Universal Application Development Pack for VS Code |\n\n[icejs]: https://github.com/alibaba/ice\n[icestark]: https://github.com/ice-lab/icestark\n[icestore]: https://github.com/ice-lab/icestore\n[iceworks]: https://github.com/ice-lab/iceworks\n[icejs-status]: https://img.shields.io/npm/v/ice.js.svg\n[icestark-status]: https://img.shields.io/npm/v/@ice/stark.svg\n[icestore-status]: https://img.shields.io/npm/v/@ice/store.svg\n[iceworks-status]: https://vsmarketplacebadge.apphb.com/version/iceworks-team.iceworks.svg\n[icejs-package]: https://npmjs.com/package/ice.js\n[icestark-package]: https://npmjs.com/package/@ice/stark\n[icestore-package]: https://npmjs.com/package/@ice/store\n[iceworks-package]: https://marketplace.visualstudio.com/items?itemName=iceworks-team.iceworks\n[icejs-docs]: https://ice.work/docs/guide/intro\n[icestark-docs]: https://ice.work/docs/icestark/guide/about\n[icestore-docs]: https://github.com/ice-lab/icestore#icestore\n[iceworks-docs]: https://ice.work/docs/iceworks/about\n\n## Community\n\n| DingTalk community                                                                                                                      | GitHub issues | Gitter   |\n| --------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |\n| <a href=\"https://ice.alicdn.com/assets/images/qrcode.png\"><img src=\"https://ice.alicdn.com/assets/images/qrcode.png\" width=\"150\" /></a> | [issues]      | [gitter] |\n\n[issues]: https://github.com/alibaba/ice/issues\n[gitter]: https://gitter.im/alibaba/ice\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"26487fcd0581a419c2d4d1ea543ac6d1bc1c36e7","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.13","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"14.17.0","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3-6_1623912647186_0.1171682867658097","host":"s3://npm-registry-packages"}},"1.4.3":{"name":"@ice/store","version":"1.4.3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@1.4.3","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"a0fa0abb601101ca303020a8675b740027e9aef4","tarball":"https://registry.npmjs.org/@ice/store/-/store-1.4.3.tgz","fileCount":64,"integrity":"sha512-WRU2z0dkZ8C2Xzv4+HxQiqS1K8Icli1zFgXeoviahVjvGx6Xjura33AIbviEYLRlyVTiZnq1w4hFsxCiSg5TLg==","signatures":[{"sig":"MEYCIQDZwPAVTahgYHlmS2Vml05HsaROnENsp0ltq/zf8ceISAIhAPe4Qc9iowPaJc5WQuOnFfowCJOOPlf1Y7jDAxyn25Ie","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":224006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0ClUCRA9TVsSAnZWagAAqu8P/1khdomotAoQ+BtdnXYJ\njKlg/SICyUetYYqU3YyxHL0VDhMYEwqoyPP5Aspp67vh9POCqhRrwkP1S2QO\neNnubVyX4zVx7F8B3Gml7vmYJ4lXs0xOE4JsXjWYEOHCS5+8Av1YI2HMVfDX\nbYSbeJaKlwinpyeVN2IWLl//ZLlCXM/TmeWXftXHYyB1QADTg8CkxHglBISL\ndBtSnmZfQZJvhKthVajqefIn35ptIo8rvnvBujWavzZta9SWGcO/BxZqY7Gi\navznnmNfIjjFHC4vf1CozArn2Nc396cYi94OB0CY4kGYRG+AoXOV6nDoI3sA\nlszjLmKLoIgREBnp0oXfljgW96k+iMvzid97yL/GjtP3ZW57n0POreegZNZr\nnlNudcO9genEOMlq/QYNGdcapgtjAYwKCIk/WPzIs36WtcFpMfYsBPZPm3tH\nLBHzaf+kQ7v+MxLCmLNZa+LdkAdhWDgDuKxNVhZN3J51/YPJQiq9SCvtOBpB\nXBTePL66WIWl7HQZVMH3BOZ89Q4mDf4nn5ESQUDZxXe0mVtfqRujhZcSDb+l\nKhQRWfOuNiETWiFb/FuN47E+lRl5ZeTS6OzuhgoGnJJuQXjjdpp2fxudknNj\nFZiTW9xkYTeABHcdjvRTuQAQ2ZTyfyITgLi+h2MpO+GjnNRhRm3No06MrDda\nMoQE\r\n=IZ7O\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"de76ab8d1113b78262ea0db80550daa5445424b2","scripts":{"lint":"npm run lint:nofix -- --fix","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:nofix":"eslint --cache --ext .ts,.tsx,.js ./","prepublishOnly":"npm run lint:nofix && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"immer":"^6.0.2","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_1.4.3_1624254803553_0.9956332004949371","host":"s3://npm-registry-packages"}},"2.0.0-0":{"name":"@ice/store","version":"2.0.0-0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.0-0","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"4e02258da0b35f878feec703bbdab8e2200896f3","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.0-0.tgz","fileCount":58,"integrity":"sha512-YfjWo+XjmFzI4mkULPH569hsABWtjbQmjupAuMxLR86nPz0ahpFx5nORr6hGIjnaTTGkQXl3MQRBOOExuWirww==","signatures":[{"sig":"MEUCIQC9w6mbMjU5aTxJTSglKlI0skNKBGTbhYEGbBoHWMFU3QIgDJkAYWHG93Hd+hu+WZr4XWFZRerw1wU6cNJNzfyW7oA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5s60CRA9TVsSAnZWagAAU2gP/jxMMAWAtcuQz/WqiRRz\nhX1OnZNJ07UQajSTLdZhzLE9ZYeOoI6ao1EMZeoiMLBhWYWyyvAmhZZbw246\nVhYhltRWzjQLFM92ZU4ms37utDyUIZwuFffaeu0B6MY5KkU4+QYUt60u60Ps\nYg34UiVEQsnQEinZcijyXVhQLjKoJErXYuqnqbzI8b9KgpvoFSwsaJBpoEe1\nB6L7IX6puFX3jgXj0EOMKaHRdiW4jbih2UrG+1Wxar9i/RVkOr40gBX3SC/9\nVAKKVV9rkKP0UM0kVnXsBXfd/RMGbqb27Jf6DeEX7dzAeJrJmIlRS3uOMHOf\nGpaNieGu1eeTciytXCwx7tfq10I8KEYIY+9Lgki/sJ+4OQWlTQ0w0F9NCKeQ\nyWWqQ5zqoR6bnUFbAkOOL2suVGdORGu02gCcXa5lJbIyIDK9DzmXFqOGd5HR\nzLqNEaObiYFoDrVlErAe6BC4ovW4X5iBlMWN5Uij68u/XGfc9zuvZopXJp6u\nzIGAoDj6tDt9FkKSnE9YZWqYGBrCUFWIhwnQ7KEw2OHMcdlCvqTfJ7SoHkPK\nf8i35JekxMyarby/l55O8ci0/p9mV5ANvCQA7G3otAVa+mqvRzp1p8Z9lCkv\n26mEsEg5sQsiDtSjgwoA8CuZ0VQHDoq8JQV10rlgbSMxdFkHaw/t6OvqK0Ge\nG3aH\r\n=J8x8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"ERROR: No README data found!","scripts":{"build":"rm -rf lib && tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.12","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.1","dependencies":{"redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"react":"^16.8.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.0-0_1625738931647_0.8584573216692113","host":"s3://npm-registry-packages"}},"2.0.0-2":{"name":"@ice/store","version":"2.0.0-2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.0-2","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"fe054174446b097f104f61072e756b7439bea6e4","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.0-2.tgz","fileCount":24,"integrity":"sha512-IV0nYqhmeMfLgZ8pbNfb1DckBGSsXAoIDKGBQoEJbTbo2NUI+dBTSPzcnLO6xLBmr9XjU+qA6afFCDQ83+OXjg==","signatures":[{"sig":"MEQCIGcOu/RQJOhRou68fMesHAHgBlNE7ohmp8sduGz+UJyMAiBVmvkR1SmTgh+YP073pB6URDAuai6G0AxYrWZxvs/ZIg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":83944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQczOCRA9TVsSAnZWagAAlp4P/jhXtE6XyeoWBwtl0Fl+\nJ32hUonOtMLlLWD7zJDe5Zc1Kc7ekKlDR1vEzTlI8t4udGMJhLcmHRSxGlSZ\nQ0yZ7qRN9znrylmLE8jRzcIn5V7W8beHf3fgaEMXgMgyj3gs/g3l6iv7BfIT\nnDzcZ1wB9hVJ5Axq6OSjjqn3wCjSxGuG2fSSBiDmSPBTb6dIo3gA+m6t0KZV\nGoURWn+L74RNjH4BZiouuMrmyJ6xT+dZ8/U85ExhVjMgodZ9RURNuog5sLXB\nPc6T3HBq7OfaZS5zef6GyrFtu/3SM8deZjnz/avZ9Vzzj9cPSjb5F4/gSz2N\ndz/kR/4ZhzVdROu+zWS107rLh+HaaL6zBxCPE8xEngpXnxBrliPTtUSQJIps\nC0zBCSGWCA87oL6ZbRNGYlS5V1YNNruIUm0tq2mgVTP+5VSqi5f6Uh6YEVto\nubCujvmegY0gyJdc9lcLc6BDt6wJEadrIJ25IXwi1gjR/QIhHcbvxn+FBxpr\nD6E98m73Wml8N2JKA6PP4XwBzITddOK//M4vtDk9x1tYA9XA7VRAkuVQ6IVF\nplQnXso11dFwtL31oYRYCQuM49mFCPVotwmaipsoNOodAXO+FwG4rnje4PBt\nmcxuDQfCOOiOySoqthCAeEx+B9sXu4FP0Mjf40OQr7WXdQcR4D7KAa5dXlE3\nWQ9J\r\n=txbi\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"es/index.js","readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel('counter');\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\nDevelop:\n\n```bash\n$ cd icestore/\n$ npm install\n$ npm run test\n$ npm run watch\n\n$ cd examples/counter\n$ npm install\n$ npm link ../../                    # link icestore\n$ npm link ../../node_modules/react  # link react\n$ npm start\n```\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"0a376169bca8658075b52b54d92107ab8402599b","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc && rm -rf es && tsc -p tsconfig-ejs.json","watch":"tsc -w -p tsconfig-ejs.json","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.15","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.6","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.0-2_1631702222551_0.7653316536901149","host":"s3://npm-registry-packages"}},"2.0.0-3":{"name":"@ice/store","version":"2.0.0-3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.0-3","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"5051fb23676379b001e1d27c94b184620ab90b62","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.0-3.tgz","fileCount":62,"integrity":"sha512-Df+NHe16jgzR1oU7gJsBSQb/lew3IDkwYKx8N/M1C0jy20+VmX9RvrshIQEKAXo+pYykW/HH/09OjR3raBf5Ng==","signatures":[{"sig":"MEQCIEZnp1neNCXNIpq014AbMdjegfYBv1peCWDFg9HCy9BqAiBXENgMFmPMZcEvVEZKG4UBcYjV9r+pa/Fd9W36O6OOww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQc20CRA9TVsSAnZWagAAg08P/jfQr3GoiGcz+J/06dCB\nafI0jqYGJKabcKw/zdhXrXr78gX21xdJWL81rY3/bXJTYH+yVnZAD1GA18cE\nEqLg3AwKP99cepqQ1oOx7nFGmnv87iIXXi/mk+eOOE8o6fL0yTRT+nzI8YdR\nJeHAoK4SCAaaA4+iTHSAMnHWbtQM9YDlu5jwrgSuvCGRHOHwERIJyrBAfqP6\n5QCqK5zHfFgDyI2oIAyjpWmVILMyKoYxgbFOyJWA90KRaMZgC6gzLE0itswl\nUwAXLkteXU2cDhMmxPWIWFAsOU3b2og7U2nm4P43XdMSz8taghzyomzUHhhJ\n0YVaKt+4z8IU7dNmlkrLLZ5yXjt6WqpQIY7EW9Tpv8MO+/T7Zlz155rJv2VN\n8MCdNfP+FhEm9vZ+hpKBKEIZ3A9ajslj2NUrqrizH1y6othMNx0QC/zhtfCB\n/A1rK/DANbD0KojHbZ1vbcgR1k54p6eP0nu8Nr8JW2zbn6FHDbBJRKk1+8JG\nIOm/24Jmb78gM1TeTAUDX5ZktJyQXv74VmdwUBx8MA16jCv8uzoGVlJvD07u\nP/X3aSLBCTeCKmw66tiZM7AkgXa1d5t4kqrhzlEqk8FR1MQdFs1XIdgFFWYP\ngquj6MjqifuakuStmuymt8fuZVliJLam9XfIasBSd1x3VULFY6ZIv//YvbcM\nnhHz\r\n=KVjP\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"es/index.js","readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel('counter');\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\nDevelop:\n\n```bash\n$ cd icestore/\n$ npm install\n$ npm run test\n$ npm run watch\n\n$ cd examples/counter\n$ npm install\n$ npm link ../../                    # link icestore\n$ npm link ../../node_modules/react  # link react\n$ npm start\n```\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"afe0d0a49a8f44238d421b5bbbb434ea1f0fe305","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc && rm -rf es && tsc -p tsconfig-ejs.json","watch":"tsc -w -p tsconfig-ejs.json","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.15","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.6","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.0-3_1631702452009_0.87408106526991","host":"s3://npm-registry-packages"}},"2.0.0-4":{"name":"@ice/store","version":"2.0.0-4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.0-4","maintainers":[{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"e4ec6be7708c38dbac8df1269e6ec93bd971c329","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.0-4.tgz","fileCount":43,"integrity":"sha512-iwv8VbVt7MY0UBbekxS2RyAnYwg4bfxQ3l7NvE+tDdyTUQXABvnQz+F2uxDYi95ZYH67Hq28erIZ7VRGsDUKNg==","signatures":[{"sig":"MEUCIQDpD9elK3uWb7zx0jroe70fRvKbdM/kyD4oSKK6JoZa3AIgIOuhY9TD7bKqR59lQfrcgzyPOO+AQkBK+KqTvYO+/hg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99175},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"lib/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"lib/index.js","readme":"English | [简体中文](./README.zh-CN.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Package Quality](https://npm.packagequality.com/shield/@ice%2Fstore.svg)](https://packagequality.com/#?package=@ice/store)\n[![build status](https://img.shields.io/travis/ice-lab/icestore.svg?style=flat-square)](https://travis-ci.org/ice-lab/icestore)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@ice/store/badge.svg)](https://snyk.io/test/npm/@ice/store)\n[![David deps](https://img.shields.io/david/ice-lab/icestore.svg?style=flat-square)](https://david-dm.org/ice-lab/icestore)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n<table>\n  <thead>\n    <tr>\n      <th colspan=\"5\"><center>🕹 CodeSandbox demos 🕹</center></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter?module=/src/index.tsx\">Counter</a></td>\n      <td><a href=\"https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos?module=/src/index.tsx\">Todos</a></td>\n    </tr>\n  </tbody>\n</table>\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#Comparison) for more details.\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore } from '@ice/store';\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = {\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n};\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel('counter');\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade Guidelines](./docs/upgrade-guidelines.md)\n- [Migration](./docs/migration.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Browser Compatibility\n\n| ![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![UC](https://raw.github.com/alrra/browser-logos/master/src/uc/uc_48x48.png) |\n| :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: |\n|                                            ✔                                             |                                              ✔                                              |                                         ✔                                          |                                                             9+ ✔                                                             |                                            ✔                                             |                                           ✔                                           |                                      ✔                                       |\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nIf you're interested in icestore, see [CONTRIBUTING.md](https://github.com/alibaba/ice/blob/master/.github/CONTRIBUTING.md) for more information to learn how to get started.\n\nDevelop:\n\n```bash\n$ cd icestore/\n$ npm install\n$ npm run test\n$ npm run watch\n\n$ cd examples/counter\n$ npm install\n$ npm link ../../                    # link icestore\n$ npm link ../../node_modules/react  # link react\n$ npm start\n```\n\n## License\n\n[MIT](LICENSE)\n","gitHead":"6fede304ed3d454254775b689db8c2cc1145c7a9","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf lib && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.15","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.6","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.0-4_1632369079067_0.7852139234244859","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@ice/store","version":"2.0.0","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.0","maintainers":[{"name":"luhengchang228","email":"luhengchang228@126.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"28b1119d3d1c09f5d9f13292c353c98d6d7e9fc7","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.0.tgz","fileCount":43,"integrity":"sha512-q84GT73F6cYWFo8ZZ5zgHLliQmig64Vj8scBzafCIs/C5grZO7PgJX4+0XJzVPKc2MYXI5Ow6JoevoWn4kO72Q==","signatures":[{"sig":"MEUCIBDITMQctyZzMTCSn8tp9trx8DOtMQ/1zN0qqx7ckcOrAiEA/V8fhOKZH4BgszUCjypcvWqy3iPq5WRcEd5BSMeDfro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPCh7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpzkQ//Rb4vIzfOk1VQfgkkZNrNzkRkmcMkSjl4l9Nzi0HuE9yjuoS5\r\npsQrim1mLWkuCfrJjJOIRJRMrTM1XP0jChue9mnij9jtQUBiWsrTT48hUmXI\r\niwPYf1fl2S6+22z8OJkHV/XfdDRu5Wc1ZBfZc2crwL3nxTUjQrd0VqGpKaFn\r\n/i8mIO1GNIlBxT5TuP2A5SJWPM46A50p3CxxVwqIGABLUg9bOtaC0k7uOKwo\r\n3Dqdx6jcAgQs1qB7Xk+aWNCAtE0RU8khO+Sa1wdWLhj0M321effy3iwdzqtv\r\nRG78kW94jlI5zDWWcapJtKUcGWW4CuNuOBWYAl1ezIWg2A6LTb9Zb/pj0qY2\r\nIs4mXb9vvYeHYg4u4zKdgYvrT6Z0uc3qrT8vAXbWUYMUccIFuQDZQWFFtPY5\r\nL4B6T1Du0f2PVnlELAJvT8QxqyAA9dVe1vCqYetcVkmDSmuGximoVEa08HbR\r\nxuzlCfZVZ7fZpleMYwM01CsqHVeGBnVPy0N0HKwZQOqIQl0sTQ8sy0Xel8yM\r\nccuMsjei2el34IYrHr7X2as80cAvJqTyf9i3YBdlAc+lG4trNtnYvMpfdgws\r\nnrvrohCgeYNoKjU4ibHUs5gvl4bZ0/DA8Z3p/D4QXgwVDsGtaawI1F9JciA3\r\nT4pWBFG3tns9Hy76PshDXijxk1ULtF1to30=\r\n=qrE0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"esm/index.js","gitHead":"a19d25829e6c41e32deb47998e71295dd5b39895","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf esm && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.16","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.10","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.3 || ^17"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.0_1648109691542_0.09158883062971857","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@ice/store","version":"2.0.1","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.1","maintainers":[{"name":"luhengchang228","email":"luhengchang228@126.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},{"name":"solojiang","email":"feifeishen1996@gmail.com"},{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"maoxiaoke","email":"thebigyellowbee@qq.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"7bd8970d74a69e32cbf6ccb52b9a06d4c4609836","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.1.tgz","fileCount":43,"integrity":"sha512-hopb8IduVb5Xgh2oOL2UT0w1UOXMo1alJTVyiSHUJ+LmKaJ+0j7Yqr8Ans12Qse7Xa7GroLIxUEZSBsJFIQGTg==","signatures":[{"sig":"MEUCIQCl8j8L6g5F+tlyzOfiLy69q/n/YtV7+4DJK+wqL9cF/wIgMF1mr2YNmbN+Hn6RVTzWVywCfc6LtEQLwUklJvkeTP4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQuGhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreLxAAgj1Oxlyc2rHnCgiF4lANLhQY9Yw31Bb//nVW1Zi2TdLT8VnW\r\nWWV7syFx0eAJOBt9nce+vZqCk6h7HupC+3B+hz+P49Vj4N54UYO1Kh1kc/X+\r\nRUjKFUowr3qFSfbsEC66rhfiU/yO8l6q41rqWhw20kO5q/0OVUb+QdgRs8gg\r\n+nKydyycwO1yYwrs5d0LfZOOtA4lrLFM6pnEUCNsvMPPjjpsO/GKtVuQMpk/\r\nMr3Y6EgNduy+4YeEKjddJY5mEtAK4XwErk+3Q4RM/Dt9OmwETs0+ybPJnqwg\r\nx75ZHZpsZZl1LCwoQvUO0jYaE2LYWbS8irzC6URzJlkV76yZCZ2ijghcHQWT\r\nHXAnbm9V1bkU/es+KhABKKvxPC5bZFrhIt/uL0ImHpJvHxXW3xoUpX4R/b9Z\r\nfFTkRImOv0tXVM+4MSLu4LaeFeeL9x6aHXxp/iWdJHvfKblbCNW71ggG2fBB\r\nuWO2imh2ZG1CMIkeDLUHqT5TNNLwZQVS0cnef1Xr4r9s/ydlAIk1/m3FAgCB\r\nGQzNNCJ5TBGgwoPxbzcdVVREWSok4dZYPW7YFMc6LN6hPwH9xEG6+qdcOlfD\r\n5EwsSoSuSYqClWX4Tq7ZWawW3M5kwnHQmn863vYRxXM3gpgm/8YzrBq2dnFl\r\npLDkuL4hO6E/7oetaNKcTKnKGo/atHBNyXM=\r\n=fpGG\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"esm/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"esm/index.js","gitHead":"c26b5b849dfaf021652269dd55eec1abcf53c8b6","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf esm && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.16","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.10","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.3 || ^17"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.1_1648550305496_0.3617230651691745","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@ice/store","version":"2.0.2","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.2","maintainers":[{"name":"answershuto","email":"answershuto@gmail.com"},{"name":"chenjun1011","email":"chenjun1011@gmail.com"},{"name":"luhengchang228","email":"luhengchang228@126.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"bbcb01e3f91e91a7592956c645ef0af6a11989be","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.2.tgz","fileCount":43,"integrity":"sha512-1c+y5VVmq9ZX2LV/EkBc/wXPgTNoDAKbdtqlSdo07RAJrAbvf/X8Mph7Cz8z1GMR69rWXUGEHwENd6O1URfgog==","signatures":[{"sig":"MEYCIQDrMcA1KFMU1Akyd6LkN1zZ9MU1vQwuxS7DZqBt9PKh4QIhAPVQkr4WcPijQRU7ioGlXnx/UM1rGh+7W7bmJNrECyad","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8IedACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWnQ//bwGFZ1vGgGdX0J834mnKQ92yjPIPeu2vK/LhMiKL8GRqAKP2\r\nKWaZtfLxi5r7l2eDQcRvANa9HA5YlcMX3AajosFc6w4GTgTCDON3ZdmWcm4h\r\nsu8n17X7ZJVGCxuc5GQH0Aw541q6KqxgxowIN5saQX3RzRSQOEaodjgeKO6K\r\nMHpfv96D+GSzeRBIXtCziudkuI9ljZ2lcF2bWVBSmlSSlvQz65Js0LlHVcvD\r\nlew0dqybLJSUmlmoHN7hCkTdkRZ3Mouiy8d74dcZwiCF/t62X8dJQQ4r7ENN\r\nk1X43qKgPb1PKX0z9ZG/H97/136E62QKregRz/Kf9XuC3uB6V0qGFtvujS9q\r\ndMXJTpTJCOvfbWFehVpqY2viMQpzmyjPEHLHUHdEPYgfaKfcPWUtyc5+5cdM\r\nqWafjAj5dmKrInuq7Yx5mNNVuy811Go9WsISGiWCJsxdusTLhKmGU6A4rY8U\r\nUUk4U5w3+99qmIk7xwLdZ2mkZ49B61c7Lalx72I3iMulGFkLu2DN1H/GLoqv\r\ny6tn9oobfrD3dJrY2PGnEh3lkH8eV7qmVFhBQRoAP0OBHA4v6QVmUXVfZTSO\r\nq6x8uOjiXXcOJmIRf7tGBSSaiklg66tQlZtJ4khzCc3sSNTi2zTd50MPy1qs\r\n3u1e4XHIRUGixid9ZQA6VFc06IFv/jMg2Bo=\r\n=F/nK\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"esm/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"esm/index.js","gitHead":"0da6c767c179c8c1942db6291982a13c32b0ef7a","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf esm && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.16","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.12","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8.3 || ^17"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.2_1659930525661_0.06605492463597984","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"@ice/store","version":"2.0.3","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.3","maintainers":[{"name":"answershuto","email":"answershuto@gmail.com"},{"name":"chenjun1011","email":"chenjun1011@gmail.com"},{"name":"luhengchang228","email":"luhengchang228@126.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"a74c3c2f9bdd26ec3a5ff7b28111fe3ea9ab3559","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.3.tgz","fileCount":43,"integrity":"sha512-U1YcY380bejqc3+WtkEqIwE6HnjBjSKd4IWFyq8gakPeAvA6fEJ58Qx9hzscYxlogWbiCb0Wm9kqkcDU+njx7g==","signatures":[{"sig":"MEYCIQDzs/p1EpTZ5BHSIs7qJYAQRF7G75U73GLiYCZiIXyZnAIhAI+4ILo4mtC4DRU02TcVqa35iyLA7zy4aVizLoUJje4m","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":95667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBuh+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmogYw/9EXAzU7Z86ntnQomT7XvZqhcOVZmlJg50C4tOBrrGL/QWWHEE\r\nf9lvKoHtViprtTRZAp2b/scbUZWbymUf+/3EqUWtvx+oTCxoF537Se+WOPDq\r\nrTSgd3K1mDjLq0oZW0QSB4jKINwNxAFciyiYQHpt+QXYL2NgQ/a8Eh+5iUmy\r\nuDEhuHvKXGGnLUfnxr5dqhV7ivCwrN8ZIfuhnCnVoa/i9eD4jPQLHeMOavvL\r\n8xHGsvppHHkjQOsg5hvxkT26N0zwTzXKOUeFMw1KchY/Novmn+prN7ah/+Or\r\nuTisDW+i/qD5ktMSTy83mVdOjFqg9qNlxPLO+85dLUlLl7CbB3e299faOn3j\r\nV1WwO44KnDRywcNB3jrZ1UXh8kjvRb3EB215EtxYHErsB1LFlPTC++xDnQqP\r\nVbLyo79t7gykDR8oPHb322urEoaxcebWK3mbDhOrDHxxahx6kZr1LYbFdA/l\r\nhSP/Cngh7wT1F+tSSWGJKt8SnF97S28sY6HWUI+Giq5ADo7xGp8G5sQMDXcp\r\nDOy1xxTx0kyObUe9We2hDRbcuHnb17AwdegN8ObLDJmtlSlp3/LHy6sz76/+\r\nKBTf5OXV8/uBbdMMj3Kb5NV3E5Pr41TAHWTII/R/mM9C83kF1170b/rexeD8\r\nXlfSRgT8NW9GYEMBQjdx1m/rKjj+JoG/Tz8=\r\n=MLPJ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"esm/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"esm/index.js","gitHead":"179c822f690001bd160203b70e35510e55d064cf","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf esm && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.16","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.12","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^25.2.1","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^6.7.2","codecov":"^3.3.0","ts-jest":"^25.5.1","ts-node":"^10.0.0","fs-extra":"^10.0.0","@ice/spec":"^0.1.9","cross-env":"^7.0.2","react-dom":"^16.8.0","typescript":"^3.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8 || ^17 || ^18"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.3_1661397118018_0.5572557389419397","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"@ice/store","version":"2.0.4","keywords":["hooks","state"],"license":"MIT","_id":"@ice/store@2.0.4","maintainers":[{"name":"linbudu","email":"linbudu599@gmail.com"},{"name":"answershuto","email":"answershuto@gmail.com"},{"name":"chenjun1011","email":"chenjun1011@gmail.com"},{"name":"luhengchang228","email":"luhengchang228@126.com"},{"name":"sobear","email":"sobear.me@gmail.com"},{"name":"clarkxia","email":"xiawenwu41@gmail.com"},{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"}],"homepage":"https://github.com/ice-lab/icestore","bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"dist":{"shasum":"81d4ebfd39b4537c304eba69d830bb0cff3089ec","tarball":"https://registry.npmjs.org/@ice/store/-/store-2.0.4.tgz","fileCount":43,"integrity":"sha512-EAcoHlemj4pYuFWC4D8RfmoFtjHqq4REi9trTAUipnXO8f4paZWbHwnnoHXbSHtsQBdTTYavNvHK4dnnNsd6bw==","signatures":[{"sig":"MEYCIQCufz5FyNBg3yVms60HgM+QUGd6V1OvJAIaOpEL+IuOWwIhAJiWAL5pWlYLefsXYnpiLBKfbAIYTlh9MeleDbXiE2E7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96071},"jest":{"preset":"ts-jest","collectCoverage":true,"coverageDirectory":"./coverage/","coveragePathIgnorePatterns":["<rootDir>/tests/helpers/","<rootDir>/node_modules/"]},"main":"esm/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"module":"esm/index.js","gitHead":"5c6976ba1a7cfb08d768d71d94bd1cef636bbcde","scripts":{"lint":"eslint --cache --ext .ts,.tsx,.js ./","test":"cross-env NODE_ENV=unittest jest","build":"rm -rf esm && tsc","watch":"tsc -w","test:w":"jest --watch","publish":"ts-node scripts/publish","coverage":"codecov","lint:fix":"npm run lint -- --fix","prepublishOnly":"npm run lint && npm run test && npm run build"},"_npmUser":{"name":"rax-publisher","email":"rax-public@alibaba-inc.com"},"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"_npmVersion":"6.14.16","description":"Simple and friendly state for React","directories":{},"_nodeVersion":"12.22.12","dependencies":{"immer":"^9.0.6","redux":"^4.0.5","react-redux":"^7.2.0","redux-thunk":"^2.3.0","lodash.isfunction":"^3.0.9"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.0.0","axios":"^0.21.1","husky":"^3.0.9","react":"^16.8.0","eslint":"^8.6.0","codecov":"^3.3.0","ts-jest":"^26.0.0","ts-node":"^10.0.0","fs-extra":"^10.0.0","cross-env":"^7.0.2","react-dom":"^16.8.0","stylelint":"^15.10.2","typescript":"^4.7.4","@types/jest":"^25.2.1","@types/node":"^12.0.0","@applint/spec":"^1.2.3","ice-npm-utils":"^2.1.1","@commitlint/cli":"^8.2.0","@types/fs-extra":"^9.0.11","react-test-renderer":"^16.13.0","@testing-library/react":"^9.0.0","@testing-library/react-hooks":"^3.2.1","@commitlint/config-conventional":"^8.2.0"},"peerDependencies":{"react":"^16.8 || ^17 || ^18"},"_npmOperationalInternal":{"tmp":"tmp/store_2.0.4_1690793076142_0.09589272010186178","host":"s3://npm-registry-packages"}}},"time":{"created":"2019-06-05T04:16:46.952Z","modified":"2026-01-06T10:12:19.682Z","0.1.0":"2019-06-05T04:11:42.007Z","0.1.1":"2019-06-05T04:16:47.383Z","0.1.4":"2019-07-03T03:10:15.795Z","0.1.5":"2019-07-03T11:31:15.067Z","0.2.0":"2019-07-04T09:26:54.326Z","0.2.1":"2019-07-05T08:13:05.307Z","0.2.2":"2019-07-10T07:47:37.778Z","0.1.6":"2019-07-15T11:34:08.570Z","0.2.4":"2019-07-31T06:17:51.355Z","0.3.0":"2019-08-22T14:29:51.003Z","0.4.0-alpha.1":"2019-12-09T06:42:28.486Z","0.4.0-alpha.2":"2019-12-09T08:46:46.142Z","0.4.0":"2019-12-10T04:19:04.099Z","0.4.1":"2019-12-28T10:27:19.597Z","0.4.2":"2019-12-30T02:19:23.697Z","0.4.3":"2020-01-09T01:34:00.679Z","0.4.4":"2020-01-09T01:43:14.713Z","0.4.5":"2020-01-14T02:01:01.392Z","0.4.6":"2020-01-14T08:38:30.624Z","0.4.7":"2020-01-22T12:46:32.396Z","1.0.0-beta.0":"2020-02-11T08:54:47.220Z","1.0.0-beta.2":"2020-02-17T01:44:02.886Z","1.0.0-beta-3":"2020-02-17T09:18:49.219Z","1.0.0":"2020-02-17T10:07:58.534Z","1.0.1":"2020-02-24T08:27:43.933Z","1.1.0-beta-0":"2020-03-05T02:26:56.765Z","1.1.0":"2020-03-05T04:58:22.100Z","1.1.1":"2020-03-12T04:15:52.895Z","1.1.2":"2020-03-12T15:55:43.765Z","0.0.0-experimental-hooksbase01":"2020-03-23T07:10:01.991Z","1.2.0":"2020-03-26T03:59:34.447Z","1.3.0-beta-0":"2020-03-31T13:09:53.780Z","1.3.0-beta-1":"2020-04-01T07:28:18.139Z","1.3.0-beta-2":"2020-04-02T03:43:34.051Z","1.3.0":"2020-04-02T07:24:12.232Z","1.3.0-beta-3":"2020-04-03T07:15:57.355Z","1.3.0-beta-4":"2020-04-03T07:37:32.136Z","1.3.0-beta-5":"2020-04-03T08:18:40.140Z","1.3.1":"2020-04-03T10:41:37.026Z","1.3.2-beta-0":"2020-04-07T03:59:14.495Z","1.3.2":"2020-04-07T09:04:39.741Z","1.3.3":"2020-04-08T02:54:14.682Z","1.3.4":"2020-04-10T08:09:39.720Z","1.3.5":"2020-04-11T03:18:29.495Z","1.4.0-beta-0":"2020-04-20T08:39:34.062Z","1.4.0-beta-1":"2020-04-23T07:25:13.098Z","1.4.0":"2020-04-26T02:38:43.127Z","1.4.1-beta-0":"2020-05-19T03:24:36.555Z","1.4.1":"2020-05-19T03:44:59.413Z","1.4.2":"2020-06-01T02:38:33.494Z","1.4.3-0":"2021-06-16T12:27:31.491Z","1.4.3-1":"2021-06-16T12:29:44.881Z","1.4.3-2":"2021-06-16T12:57:51.366Z","1.4.3-3":"2021-06-16T13:02:01.971Z","1.4.3-4":"2021-06-16T13:04:36.077Z","1.4.3-5":"2021-06-17T06:22:12.688Z","1.4.3-6":"2021-06-17T06:50:47.312Z","1.4.3":"2021-06-21T05:53:23.689Z","2.0.0-0":"2021-07-08T10:08:51.759Z","2.0.0-2":"2021-09-15T10:37:02.734Z","2.0.0-3":"2021-09-15T10:40:52.199Z","2.0.0-4":"2021-09-23T03:51:19.211Z","2.0.0":"2022-03-24T08:14:51.721Z","2.0.1":"2022-03-29T10:38:25.679Z","2.0.2":"2022-08-08T03:48:45.846Z","2.0.3":"2022-08-25T03:11:58.232Z","2.0.4":"2023-07-31T08:44:36.293Z"},"bugs":{"url":"https://github.com/ice-lab/icestore/issues"},"license":"MIT","homepage":"https://github.com/ice-lab/icestore","keywords":["hooks","state"],"repository":{"url":"git+https://github.com/ice-lab/icestore.git","type":"git"},"description":"Simple and friendly state for React","maintainers":[{"email":"answershuto@gmail.com","name":"answershuto"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"xiawenwu41@gmail.com","name":"clarkxia"},{"email":"rax-public@alibaba-inc.com","name":"rax-publisher"},{"email":"mrgitservice@outlook.com","name":"xkeith"}],"readme":"English | [简体中文](./README.md)\n\n# icestore\n\n> Simple and friendly state for React.\n\n[![NPM version](https://img.shields.io/npm/v/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![build status](https://github.com/ice-lab/icestore/actions/workflows/ci.yml/badge.svg)](https://github.com/ice-lab/icestore/actions/workflows/ci.yml)\n[![NPM downloads](http://img.shields.io/npm/dm/@ice/store.svg?style=flat)](https://npmjs.org/package/@ice/store)\n[![codecov](https://codecov.io/gh/ice-lab/icestore/branch/master/graph/badge.svg)](https://codecov.io/gh/ice-lab/icestore)\n\n## Versions\n\n| Version | Branch | Docs |\n| --- | --- | --- |\n| V2  | master     |  [Docs](https://github.com/ice-lab/icestore#文档)\n| V1  | stable/1.x |  [Docs](https://github.com/ice-lab/icestore/tree/stable/1.x#documents)\n\n## Introduction\n\nicestore is a simple and friendly state management library for React. It has the following core features:\n\n- **Minimal & Familiar API**: No additional learning costs, easy to get started with the knowledge of Redux && React Hooks.\n- **Built in Async Status**: Records loading and error status of effects, simplifying the rendering logic in the view layer.\n- **Class Component Support**: Make old projects enjoying the fun of lightweight state management with friendly compatibility strategy.\n- **TypeScript Support**: Provide complete type definitions to support intelliSense in VS Code.\n\nSee the [comparison table](docs/recipes.md#能力对比表) for more details.\n\n## Documents\n\n- [API](./docs/api.md)\n- [Recipes](./docs/recipes.md)\n- [Upgrade from V1](./docs/upgrade-guidelines.md)\n- [Q & A](./docs/qna.md)\n\n## Examples\n\n- [Counter](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/counter)\n- [Todos](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/todos)\n- [Class Component Support](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/classComponent)\n- [withModel](https://codesandbox.io/s/github/ice-lab/icestore/tree/master/examples/withModel)\n\n## Basic example\n\n```jsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { createStore, createModel } from '@ice/store';\n\nconst delay = (time) =>\n  new Promise((resolve) => setTimeout(() => resolve(), time));\n\n// 1️⃣ Use a model to define your store\nconst counter = createModel({\n  state: 0,\n  reducers: {\n    increment: (prevState) => prevState + 1,\n    decrement: (prevState) => prevState - 1,\n  },\n  effects: () => ({\n    async asyncDecrement() {\n      await delay(1000);\n      this.decrement();\n    },\n  }),\n});\n\nconst models = {\n  counter,\n};\n\n// 2️⃣ Create the store\nconst store = createStore(models);\n\n// 3️⃣ Consume model\nconst { useModel } = store;\nfunction Counter() {\n  const [count, dispatchers] = useModel('counter');\n  const { increment, asyncDecrement } = dispatchers;\n  return (\n    <div>\n      <span>{count}</span>\n      <button type=\"button\" onClick={increment}>\n        +\n      </button>\n      <button type=\"button\" onClick={asyncDecrement}>\n        -\n      </button>\n    </div>\n  );\n}\n\n// 4️⃣ Wrap your components with Provider\nconst { Provider } = store;\nfunction App() {\n  return (\n    <Provider>\n      <Counter />\n    </Provider>\n  );\n}\n\nconst rootElement = document.getElementById('root');\nReactDOM.render(<App />, rootElement);\n```\n\n## Installation\n\nicestore requires React 16.8.0 or later.\n\n```bash\nnpm install @ice/store --save\n```\n\n## Inspiration\n\nicestore refines and builds upon the ideas of [rematch](https://github.com/rematch/rematch) & [constate](https://github.com/diegohaz/constate).\n\n## Contributors\n\nFeel free to report any questions as an [issue](https://github.com/ice-lab/icestore/issues/new), we'd love to have your helping hand on icestore.\n\nDevelop:\n\n```bash\n$ cd icestore/\n$ npm install\n$ npm run test\n$ npm run watch\n\n$ cd examples/counter\n$ npm install\n$ npm link ../../                    # link icestore\n$ npm link ../../node_modules/react  # link react\n$ npm start\n```\n\n## License\n\n[MIT](LICENSE)","readmeFilename":"README.en.md"}