{"_id":"@redux-model/core","_rev":"48-da0c28d724a75b3539622628f5e473d1","name":"@redux-model/core","dist-tags":{"next":"9.1.0-alpha.0","latest":"9.0.6"},"versions":{"7.0.0-beta.10":{"name":"@redux-model/core","version":"7.0.0-beta.10","keywords":["redux-model","redux","model","typescript"],"main":"src/index.ts","types":"src/index.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","outdated":"yarn outdated","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"."},"gitHead":"3064a85b8fb698b2bcae88262410a1ae4a4e3776","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0-beta.10","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-kSZlkiQqpmPD5kNxlMhMkq1SFBgE8NC9NQrGorV7UBTfkE8XWCcgCfiRS96pR2DI+jiy33juk6ADF2G7KMVIoQ==","shasum":"778c0aa037c326100775202638e0281ca6bda0e4","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0-beta.10.tgz","fileCount":3,"unpackedSize":2628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEleFCRA9TVsSAnZWagAAYb0QAIn33/7tC7/tTareNvtD\nwUJch0z56eA0GdkecOhK34cSa3evJeJY8dRnODCmSmKZs6GTSIgocgjW+Hlz\nTOOWjdNjWVBJOW9TFpf5ZY4eI98j4aghuk96snpF2sCaGVI0XRrmB35lDsVn\nUtitSb/TeJ5dlVD4aIk0LzrTN2cOxVdIqVWqreliDT9atiXbxLj8yjwCFMUA\nqjl++8/WGvlFrEKyLfrcKplJgJlAJY2GnYvZ1mwzgYcTujYVvmVXtGeCYZ7s\n5qDHOCEd9mKM5iHd6SL3ZpShENON7VSFdnXcyyS1h5iiXUdUYmCK3lLMZtYt\nH3IVjtw3l5pG4srD9gztE1nHK5EYCXJxeUzjNfTEfMERnnIt353eHakXoi3Q\nu3/hKSujSxuSjHTk4s+f5nTr90BgpYHMGw7vng8ayAYTPhxeQxwcbtxADt3q\n9cY5X3jdfzIBwYqPsW2b73f7Z253u0u3ZAcGxzBc5YSFqF5DA1pLTyYiIYJe\n86yJU4yb0KaOX4SU/17+ziuGFgR6BNutgbY3RpxjkeZXRBbMpv/RvXproxLL\nSLznbI2S3BqVJ1OwIgQ0mc/muvDC7puYI/3ZfbGo1DbP6W8B3oyHCp3uYRX2\nWPz5JT7ga/Ey1mPEVqtL7rARwXVe8R5wljRyXT1d/1HD0WH3pGXiHhx2bP1d\ndQ4J\r\n=h1Xc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoSZBE6z9UT8KEBC9A6AAorVB97f8x1edksn6RiFGL2QIhAM87vSTu+MBt+KXgyJKGS7SW9/N/mFFwlai5zxjZLb03"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0-beta.10_1595037572880_0.6885719216373138"},"_hasShrinkwrap":false},"7.0.0-beta.11":{"name":"@redux-model/core","version":"7.0.0-beta.11","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","outdated":"yarn outdated","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"c2247c0ca9ab995ecdc20ea8e78b2af66503513c","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\nRedux Model is created to enhance original redux framework, which has complex development flow and lots of template fragments.\n\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# Features\n\n* Less code and higher efficiency\n* Modify reducer by MVVM\n* Absolutely 100% static type checking with typescript\n* Trace loading status for each request action\n* Support react/vue hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Others\n* For `taro < v3`, install @redux-model/taro@6.9.2 instead\n* For `vue < v3`, install @redux-model/vue@6.9.2 instead\n\n# Define Model\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# With React Hooks\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# With Vue Hooks\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# With Redux Connect\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# Demos\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://redux-model.github.io/redux-model)\n\n---------------------\n\nFeel free to use it and welcome to send PR to me.\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0-beta.11","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-wwMSUD+ZTbxbZHf2N5reHZtVhLaGXpV5WG/teyE1PIzm8A3QVFPACu+2HJI/biVX8CoU76I3cwUbaRpwsnhQnw==","shasum":"e46693495f5c0eceb5178511d840cd4bb8c8f437","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0-beta.11.tgz","fileCount":65,"unpackedSize":97429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEl+kCRA9TVsSAnZWagAA/qwQAIaXhTalIspRIMZl7GCH\nERgjgESRSR/2ZRMyRme0rlGpDJJg5IM7s6tFSR6CGQNPTN36AaDlC2C3qAe+\nCuDSGQ1Z9cPskGTOqa0oziPy7Bbo0DLGtAgh1Gom7Z5Ke4oeew0RxhDjAKjh\nF6oEiuEUZMEcaPbT3oMVwHma3fivnxJIRL9P97cxlDjJR0k6OkWX9shI0Py2\njE9S7fVUzZ9WwkllZB5hDhdXFXa2K8Po00zAm/C+1jYsqSGmEuzmFcbJpKT/\nmsV5nr6cLRZybbTV8C4ImJaG8VZeuNQb5bj8KL+Cx8W1x1R8METGG9ZUFCMo\nlsjeSMQB+SOBolpdWpnOlpCmvk0ARVNkEmttanXg275J022uGJOK+Emy2meq\nJhBtusg5Fu0TX4zWEetuwO7y3V8gU75DeNROzlpdy0X1xXHgVyoOwXuPFOoL\n/Ni2ykkv3PfWzhaRuoqKSo2Nmp851fd3VwijZAIodg66r1FzGnI0HshMEr8p\nyi+RR+mOYQcqzX2i6MGpK4OFcunn2P3eNwREpz4SdyEL1Z3MdR0PqcfPDrDj\n+x4AcRENdACa2KTZF14yhpgbmcfTblKajq7/LQxKS8frGOI4FsQ1CYHE6brx\nulmS8MWeEWeGyMnILiqAXpV4xFkyzc4c2YeubL1fshz4A6FeNO3fmHyRZwxq\nuifp\r\n=jrhw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4QMhlx+O8WStSg0f9FGS5SA4jbWDIqsfReg0iyBsHXAiEAp+0K8UNNDK0wrM1nSWlvQPnfweuy+l0dQlYZLfwCUH0="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0-beta.11_1595039652216_0.6821821211732102"},"_hasShrinkwrap":false},"7.0.0-beta.13":{"name":"@redux-model/core","version":"7.0.0-beta.13","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"4e57d7d5e466ca2567d9d8f5d40059b1b23b9224","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\nRedux Model is created to enhance original redux framework, which has complex development flow and lots of template fragments.\n\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# Features\n\n* Less code and higher efficiency\n* Modify reducer by MVVM\n* Absolutely 100% static type checking with typescript\n* Trace loading status for each request action\n* Support react/vue hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Others\n* For `taro < v3`, install @redux-model/taro@6.9.2 instead\n* For `vue < v3`, install @redux-model/vue@6.9.2 instead\n\n# Define Model\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# With React Hooks\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# With Vue Hooks\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# With Redux Connect\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# Demos\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://redux-model.github.io/redux-model)\n\n---------------------\n\nFeel free to use it and welcome to send PR to me.\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0-beta.13","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-NtaSxVYzKV24sHltmNR5z6ygQuCjUwEVkT8ZOtLl556wSpwYGykWfEBg8VAEjzwybCMwWyoum/XuCuejqQvSEQ==","shasum":"3993331a4b3dbfbc1f3b0ad0a1f7f64ada0d80fc","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0-beta.13.tgz","fileCount":65,"unpackedSize":103237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEwx0CRA9TVsSAnZWagAA8oIQAIuF+Aqm/hJavktGZ5he\nsA1nZ4loS9aYRY1o0TCCq1KMWRXZ+YnnVt/SPaMaV7S2ZdHYI2JribbhEwTb\niXJrXsG0tp0qFYIkkpJyWdQxMNQ4f4FOvbrKX76cjfawcgujvEPskprUtI1y\nwM2CFToCpDE5+DYqafGVHsFA2npGXf/4gK4tgGoEkEIHP7ySjlOjrrZhWGir\ng9mXxfv4KYT1N4NWbtwju5Vzzs3TLpUfJy42d3kB/lNtw0PzqgXCaRSyatsZ\n9gCeTDalVZrpP497xjSJ3xUOxhbSylP7P1Ac76m52B9A3j+0mPKbabOFxyvv\nlhzxZOT2IUjx9Q9X/nuxobx3ty3tAGNAJcOLpmL8QD4jSkGP8hXltqG8XllD\naUF6eQBIA8eJuL9dHrpFOGabKHHmuo8Z5YT2z38DqhhFRAJFpj0BnT6ZL8CC\nLbra9MOgI15gXfFggZH7iu9URy3rQiym9Xw0ijg13AA0wAAYCc84ZLHKY8oR\ngsO1IhywqvQzjN3xC5CJYWLyKLj8L8PlWA2FONEBeLONDA7KbymGpkYBiKui\ndCyRorlPUYRalmEOU7IObvMdCGVDEzrTKCNpxqq6R8hlwNIYxYcDz8tqX6ij\nPCODgh1M+ogOKBBDRTx/6GOZbGNAXxt75rszHy5lWx+pb/hn4AfRkEfUWykA\nZDAr\r\n=eVEV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmSlI1thYKg2pfIHRtxCoFcf7INc3sVV1lpxL28b9thAiEAmUD2yqQRMxvq3jokDbFKSqKHj75PsCvYxU6FTXiUDP0="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0-beta.13_1595083891708_0.7757890974772288"},"_hasShrinkwrap":false},"7.0.0-beta.14":{"name":"@redux-model/core","version":"7.0.0-beta.14","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"824cc9e7c45b3db6d59da0759e361493e844611c","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\nRedux Model is created to enhance original redux framework, which has complex development flow and lots of template fragments.\n\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# Features\n\n* Less code and higher efficiency\n* Modify reducer by MVVM\n* Absolutely 100% static type checking with typescript\n* Trace loading status for each request action\n* Support react/vue hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Others\n* For `taro < v3`, install @redux-model/taro@6.9.2 instead\n* For `vue < v3`, install @redux-model/vue@6.9.2 instead\n\n# Define Model\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# With React Hooks\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# With Vue Hooks\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# With Redux Connect\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# Demos\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://redux-model.github.io/redux-model)\n\n---------------------\n\nFeel free to use it and welcome to send PR to me.\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0-beta.14","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-CErkaJVjZ/nvYwR1tpCacBeEMLimiweZK410jl3YV1tFd88joKs/OWCA7aFu8U6Rsg/0b0NcD3OwlQmm47iPjg==","shasum":"941a40e4ca1f1da4775cc98a773554aced30aa8a","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0-beta.14.tgz","fileCount":65,"unpackedSize":99488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFCHlCRA9TVsSAnZWagAAW3EP/ioPPF7INgNzTBORuVPp\n3C/yU3bcPOW0FRT29Vpot2ON4nf13J5chw8QxWG215UFzhJjqvTpr6KH7tR1\nCzYFr8ovlFrrwT3J1dBAORSK0pr+ZKNqhkWMtBAZK3YBNxX9UzdU8TslJxN8\nBZuabdwhdiAZgU5hE18QOSQissu7ZaKAXx+GuVajMGmMH9GjDBuRhWnaCg9V\nhP1Z/KUUe2xh4gKojwEHDT+T3BlWzwnGLQxdYMVs7D5YQ7xednePG1I1TNqR\nS5IcU7jVholZyl3rACanfCiYfqcbtM9MJXZYiaTuj+faA50eF8FKsBjf/+oS\nDQedIEvLdi3PZEyyxHQsRoARySheCzEY9amKz1th/wcUgsvVYqxX8YVoCiwA\nUSruUU5nlGUrxTIMIHZpjkEWv7lb2FcwQlCmg+d21ZWY9WzmY5joamdVAq4+\nnFwb2LTYCOMcUHl1u5UKUx1nwx2cmm/LVZv7zQ8h9CY16xRstQp0RTGcRklZ\nsOb9KiCttK5mvfaq6vep1Rr15ayI7LDMuJOqjmsRGq/uMwbNE1ZtUggCb2n0\ndDEUaaf4k9st74TGsySDG0vjIiXqPz3/LgdvBWkz+NnAzM30IDAVhbEtkIgY\nVWfhcJKVagSEqEc7tPTl0a+zCIDBEQ/T0dj3t4GPs/2YKzJPwE5oJ19c0UTT\np9QH\r\n=JISe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBAJrcD5+XgchKaqKdPNcCRIaLJYbwTLuM+jpSD2YsabAiA1dkQCImJfU2fgAWBVa84sGjeXYSfc+BgLO5Ybv73K6Q=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0-beta.14_1595154917183_0.22640763748769044"},"_hasShrinkwrap":false},"7.0.0-rc.0":{"name":"@redux-model/core","version":"7.0.0-rc.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"53d0feae1f63bd6b0eed2cce9f624c061507ef81","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\nRedux Model is created to enhance original redux framework, which has complex development flow and lots of template fragments.\n\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# Features\n\n* Less code and higher efficiency\n* Modify reducer by MVVM\n* Absolutely 100% static type checking with typescript\n* Trace loading status for each request action\n* Support react/vue hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Others\n* For `taro < v3`, install @redux-model/taro@6.9.2 instead\n* For `vue < v3`, install @redux-model/vue@6.9.2 instead\n\n# Define Model\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# With React Hooks\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# With Vue Hooks\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# With Redux Connect\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# Demos\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://redux-model.github.io/redux-model)\n\n---------------------\n\nFeel free to use it and welcome to send PR to me.\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0-rc.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-4zZHBl1F4VuLk9NOefRJ9a3E1J4CfhH8rxj2BZ4N7edbLJ0OYtUUHCWl2kAcfw0W4hGsraRH3RJuq74r8+VMAQ==","shasum":"09e424f85684746b5026a047da49e2fbce1032dc","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0-rc.0.tgz","fileCount":65,"unpackedSize":99216,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFFPHCRA9TVsSAnZWagAAJdwP+QEffGmJbw5ioRM7c4w8\nawILKX2R3tWg18PHTDBOtZCYxAzuDuNOKDXzBoLOi8AoW3nKdfo1AxiiPhf7\niE7GKeWkTSPg6om+jS1i9PEpPFbl8Bbfpb5evtc7uErHDF17k7lPiweBdnYG\n6/NKIelpHRDZpJjgakzcEpsbbkkcy4lSKz5P2xqk3Be0AQWHKLGROFqS0xEY\nsNgLMsJBreufWToobCs3LsP2e1rndVYFq7mjsVGpWvM7qPpfmyQJ2AjdALJs\nu09Og93ufNxqmP2hgVOW00E0RpIqNnkrjG6Hv7iGyQ87OCx3bbWuiD1Piclq\n9tRYFP9AOj19IICVn0IFfiBexsHO7eNmUOwAiTh17CqVxb6r8hnC3kWg79q7\nVhwPr+6emoD6jZtHQGnT1pE6bmj/Fr1YZUYRMciSfOZ4zFD6nW+wcIDWEZAj\nqYcWjE3IIbeQKKCU7V6tsWsUcH47fPYi+ZSAWXWEa5uoVWaPEnlaFGWDMBRl\nstynrO3z03IL2Vjp5XjL+c8yMczYAprMhHPbZv+ONrp5qj/x36Rb/bS+fn+i\nYWULYzkIkNzW8tBmgtybX8L8/2VA4Vfi0LolmWVBHHTDIfQA19FvHtJmsTVH\nPrP8nUVHhz7vp4iXKJze0BRI5NTgR6KCUafYLaTt5NIq8TVBmle8Q7BSOMdk\nYnNB\r\n=pgOa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHKwVoj6OcMwiePiKk622lQDcKXFzeAa8ymDUGN6LreeAiBkM9KpvjXvxvvTOVXNWDkInupdc1zRFC0nce0HsLYqhw=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0-rc.0_1595167686949_0.2053510048796856"},"_hasShrinkwrap":false},"7.0.0-rc.1":{"name":"@redux-model/core","version":"7.0.0-rc.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"d7f45bfdea72fe5921e038fa3c480b92d5bb41b4","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\nRedux Model is created to enhance original redux framework, which has complex development flow and lots of template fragments.\n\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# Features\n\n* Less code and higher efficiency\n* Modify reducer by MVVM\n* Absolutely 100% static type checking with typescript\n* Trace loading status for each request action\n* Support react/vue hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Others\n* For `taro < v3`, install @redux-model/taro@6.9.2 instead\n* For `vue < v3`, install @redux-model/vue@6.9.2 instead\n\n# Define Model\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# With React Hooks\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# With Vue Hooks\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# With Redux Connect\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# Demos\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://redux-model.github.io/redux-model)\n\n---------------------\n\nFeel free to use it and welcome to send PR to me.\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0-rc.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-kdM/IXTj4eW6yBEgNRHGbE5BKkFa+Lx6Wyf6gOwvn9aZxEFa0W3apBe7xePokBJOo1zFdLExs+ZkAexLzC9R/w==","shasum":"b12f8019189505d6f2189a3b14faccf3cf54240c","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0-rc.1.tgz","fileCount":65,"unpackedSize":99446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFHcTCRA9TVsSAnZWagAASB0P/30biM+KfYq2WKvNio50\nKx9IDiMSzM2VP0Ubi7GSIHwf7J6IiRZKBxoQUhS66yeYmQQzr2a8orYav0n4\niE5k2k4+hT1f5BnD+O3EDypO3WRk116OpXpeVGR7NcQKDdDMoALcFbD865ot\niFAMjRsB9u2T+ugmBIpnaG4zqs64GqY6xd13oF/uJapUS809qkzmuI5w1Yd6\nTHiIW0qJrqqPtENIpUtj85d5RJRnl5gLDerJEk18zpkOTbwsHGJDS0tLVdjB\nJnngvk6+pS8g6AuXCD3J2YD27JVfEhOQp7LdInbfe3Hin3pW5mIpqqSYzu4e\nCripNHLSdy3gPM/dwV+7pQFIrjKP8uCTEC+irbgSQJ4EROy2TRdmG6EKpUpA\nCHWGQTmu+flM7MYTuMlKSRFP0eaWGMV5vSAI4MMmZ6X4K6yZ+k8TVBOyc2ut\nYDLVwY91peCz67qmhawrA6QU6S0zs5lzUh2FSzdbRjTTdebcO2e8dFjzj1zq\ngRgonVRUqlfzCKK+32f+VUIzN4Gv2sf1oD3FDnZCViIxdbmeezoITjEVfboR\nVaAgmJjXtgwImEGagFfVxEeVt/G3wUZUcxK6TnOqQEigQtBQH80uv3lTxhkQ\nTp6Ha6Lu7at03YszrDJxuIv9LLaPOFw0IPWeUUicH/fKdiv1M85mPrt5gU2/\n6ogk\r\n=XUYN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE4pOmZ5zCeovIYwSZ2awBA8L2tUCluh41SG73WPg3lOAiEAn6J+xwJizN+YMKdP7V4aF9KHZKZj84wRZWKfyJM6A68="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0-rc.1_1595176722578_0.44772351861037296"},"_hasShrinkwrap":false},"7.0.0":{"name":"@redux-model/core","version":"7.0.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"b7454cdbfdb128ea00aafb659d7fd712d4aa281d","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-oZx/CHz7xzlNZrkIqDAFb0XSNsu5RHCJMgu8lPrub6XhcGtrXwDPglD4WKNvJRMwDQpnMMRiUIfG40mDtp4iUA==","shasum":"3da620228ee02e26af46005a70305b49d1b9aa8c","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.0.tgz","fileCount":66,"unpackedSize":102809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFPw9CRA9TVsSAnZWagAAZkIP/0hXvEX4pcCcRC3HIfqr\nLyDhjXIZfHYs2t6g4b6WKRUCpg8azgfAY7hT2vM0jJHEYhE2FQcJEX9wocxO\nhZY34I3/+YNAFQ5LMHeAZxBm7won9Oawjf3zVmjo/l7ee8+7pvCPaugl/Xvw\nbGjbXTvg3hO7t7e6sWay+iSC3TwV3CfrMCkltMqlOttZxePRY8ieeiA6upXO\nWh86YmpgaEgwvKUDM9ThbSb8LEdohhore7A5N8SsuaEGXBOlIRT9CS5y3EuZ\nd3P9CQDYhKny4ZCyK52IL9yES1k12b9kA3bDW+CbSZ+O4Mzgs0lVNOd77TRt\nYKX7KJCrzVuFaCC6YP1iOae3j2im74Day0TXPjT4LewrokAlo3QsK9vKo6Qo\nli99FnjcXpBfimhY4ZRtcb94tRWZ+/fA9WnggVHpwdNGk5uwwopTG8UoCZuR\nXMh2vCJGSN6G/Vdcf7W9/q332Pe5q01hDU3e+D9YnWuIrmCa98727u99cl5M\nl9cYy/w/4PiyTGpTsRM7aMeSgvR8XNqOCU2m8IuiTxG04HZ15pIstukjz06G\nMXbWs36f4oEMM/ydhyBjM186MSiW1yCysBTSrbij/l1a7IVWemOIiz3e4wHz\nWv/+o1kr946aod2voURQm20mWLV2ZhFmhRs1PjW1l9+j7cFzEDnZeo9rYZ3M\njRrg\r\n=Ls7d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbHHD8XbqHFkSc+Lgdk6K4bUthxQ0MAmaZCZIrRDZHWAIgPP/n3jCn9/jAcEaczmisycW0DFftLVgnLb6LA6KrSSE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.0_1595210813061_0.7014004420949982"},"_hasShrinkwrap":false},"7.0.1-alpha.0":{"name":"@redux-model/core","version":"7.0.1-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"548d90f08f1fcc31e55558052fc490ddff94b6fa","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux Model的存在是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 代码量极简，超高开发效率\n* 使用mvvm更改reducer，一步到位\n* **基于typescript定制，拥有100%无死角的业务代码类型提示**\n* 每个请求的action都自带loading状态记录\n* 支持 Hooks\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-xhnkywj++BROX3djtqh4Y4cvE2l9R9L2LnxB+Pqk1ZrfwpLFnCoLKn8fg3tjNzomhGLXxycg2dydCI7UxdPVyA==","shasum":"0c1f328d6be71c3e1f771596e42d34b03e5ff019","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.1-alpha.0.tgz","fileCount":66,"unpackedSize":103071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHjybCRA9TVsSAnZWagAAEMcP/jWtSbkkrRj34zUgNEgG\nPSASeJdkem2mZCwqfVDa0JPQLGzikmD85YbB+3G2jhRPXxx5Bp/BF13rFnIt\nBPg4FU/Y2bCgvAXycUKdurlgXgH8tEGQMobxJkCwNvAxf5WraTuGo/7nWNOp\nSZL/NYa9OkMuhPE56Rgtk1m3fMz90RtStUAZWsNgwcro8BmsfFnOjb0qDeNz\n+jMmXn0O09mTDnnConLVlhrFjIYwTiLQTQcBR8UR1pf8xJXyxJIrRozfOf69\nbdB+Q93LswFvTD1xcd5+19DlQZ0hCyeeLM0eMk8rzposLckVuwk4uhHvcqYI\nTCTLDZi0IdLUlUwfdktUfVIHCJ5uqper4OsGoQIKzm0cKUG8O5LHphqKWSsn\nf0vuk6mk9wnI1TKPQ6nBNE4u2V1J25zptxB3VxftrwufMZld6KKOpJY/Incx\nrB9eByVA4Jzq/bwFNlRkh0EYKJVNLBfFOYmJsHvLA3mFq/m+HbZlQqu0V7ow\npsU2ZTHgA7aR1vj2xZx0KeY/acA2iKido6z/eZMp5Y6ukKy9ClukwbVbvkje\nUjhrsc2QMq8keRgN6nIlvX+PhtOQLigpaZUwbUHc9SjA3wDMBEWOIFfGIATc\nECy9HgdfJ8+AySRCSjFl1SnOWpzKzma1uIi1uS2s7ny5Q71XhB8rDOVB9bAy\nmhAI\r\n=tzfr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDB4yqRPnkx4r03wSReOsAIQd2vpjCuACuP+sg/0kkYQAIgdzFHpfKU85h94iOOFumkCshesC6Un1MX5XVyVwQf0uY="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.1-alpha.0_1595817114779_0.15656382822607195"},"_hasShrinkwrap":false},"7.0.1":{"name":"@redux-model/core","version":"7.0.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.5"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"606d7c142dfd7717c847b0aeaa60e76e477764b5","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.0.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-Cll9ftlL/cRpao3xnbfMTUstajUOKOQePV/SUx01sC7HIKctHbrzRjk8fxsGIocKKgHcG9yzGH4gsywcBM//bw==","shasum":"a8eea656cdf2fb0bcb9789120523ab6731125e8b","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.0.1.tgz","fileCount":66,"unpackedSize":103479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHkJNCRA9TVsSAnZWagAALG4QAIX3pOUXm4+ezKoSBX55\n232jWokpE/nbzP61wl9ied3KwdjCOcsCkhzFq8DTDNNszwJxnP7kbCZmkbl+\nQjok8M8F4UqAyA8ByBrAKfHwB+6yGxqgHqPjjk0kEhw4pQll4Jo4+MmdwQyG\nE3pyJ2WpfMOpIinay1a/MIIm2e5aObApuIrU+v/zKnDz6y5CdYklyLmOvFvA\ngXasUnHTFVsuOiY92QHI5bNqfogTLZlYqkTLaPUmQxxKSO6o7xmZRq0zfjrn\nAGhDalbUb7IfR54J32Z4rDpBXsRSATsxRHWBpNI0OKInnhg2TFeANA/vTAbw\nQyAv6uMrmro18ZpxxxE2mBkgYlhhnTTRPAc0+03Lic/RyMqcqfMVqcOpH22K\nVlpBq9crWBLNX7ShKm9rOCPm8/xRJ0yDOY5HnxbEe1tGHChPD5hpa85kKu6V\nbaAQ8g/DyElRbMAKv4gXJy4WukPUesbu+ef+Z04I9nb3qV495tw2RKVdwRr8\n5qDSxgTLMDhfq24pUI3/UQRoGqKf3oKQ4qtQsQq/dZdgejda3S+GWmiotDXk\nl0YtTtLACHZkCX30HOQh2W/id4rTBqZoBNTcfHRUXrgWXamrlj8jcOwsTesZ\noN8BCICd9pXuyl62aw8egzI1cxC0EAZWIcQWOu0b0eOxjFgW+9UnuC8RDfcq\nGBGo\r\n=n3+d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtaQf9E4wB9wJ2me+uyW18E6LaoqKg2TWWwinBuznUpAiBBaI9ofjExIZTvqQbOu/EJJmDa34EZsWLGDEa5xzsoVg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.0.1_1595818573384_0.06333720964474976"},"_hasShrinkwrap":false},"7.1.0":{"name":"@redux-model/core","version":"7.1.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"07dc213467b9e4c05b18b6d4bdcd11f02be628a4","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.1.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-69grHEBM2PboZ8QBU280luwznzxIFBC5z7Q7S1lLPeTjiZvgcOjTqBAqC6Pudv9009G3+CXS064S1jojLXhZtQ==","shasum":"bab22a657f47fdd660ea1ca66390ec8e92ee5440","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.1.0.tgz","fileCount":64,"unpackedSize":102061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIRSqCRA9TVsSAnZWagAAEhYP/0i3U4cJX4g52SsaCQ7w\nBG2PFqR51KeGeiNqidfpt10DFd3r44FpSpjeWzjAzGR1Y0+CHVOXsw3rHEje\nRJ1X4IXcdFXf1I88w8X18ZlvskxtVG82Bt5n2o/7RVFzsHRuNqW7iRcDzb7a\nPVB4U0hyJW8xzjYXqJflHRO7EFr/9daQ8n9YbjZJtoCi48SMZGp6iVqV+GIX\nuhl24OFSkJ6trCXqXPEkqXUNaIgxFPrQp53ayhFYK9YQtTpL/1TXIg4fZ/XX\nQ2nlZVLlRjFxhNmp1jyws7CTnSGNtRxFj6HKERiB71v5NBgbOGV3emq+DGbY\nuVXXn0+X4cwv+67PxzNv0P0pg63GjFUg3IWMtxWAwwBUK5duEbIqJuX/D+Qz\npjinZU7FEnjpptPjRy5OGboFtyvDNX+7yVb6S8PUOn/k211Za5vNzl+vnIan\ntf+5NAiS8+38dvQ0aSj9rb8PRsXNDKEfUVcxGF0fexLfDzrjgdsFHKbM7kwe\n3Cr4VBYu9UG6rziikioLsHlUlVbm0r88yXrBdGt8PqDZJLmPmd2Ie7FH4+Mh\nDBaEhWJjTdKdvTZK52iMuyZJuB4ns9/jyMqxkKd8k/z1RyFeANe9GN1qYbsH\nRO1N6V2rWCLfqTo0rDjJQ0VBT2Sv9gig1eipZLXN7NMTzgZsXhr3uNvYbrqm\nQWfH\r\n=H6WM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+nHNz3iSv1tFVh/4VNNWV8SH1x6hgijxD+ja6TZQJbwIhAIfjGmlxPOzF5uNBTPD81jW/YJ6V5wAX/CaZQrmIbCoO"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.1.0_1596003498314_0.1052327184387325"},"_hasShrinkwrap":false},"7.1.1-alpha.0":{"name":"@redux-model/core","version":"7.1.1-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"38ceb1f67bb451ccba8c032e017c0f95f3cda3c4","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n    id: number;\n    name: string;\n}\n\ninterface Data {\n    counter: number;\n    users: Partial<{\n        [key: string]: Response;\n    }>;\n}\n\nclass TestModel extends Model<Data> {\n    increase = this.action((state) => {\n        state.counter += 1;\n    });\n\n    getUser = $api.action((id: number) => {\n        return this\n            .get<Response>(`/api/user/${id}`)\n            .onSuccess((state, action) => {\n                state.counter += 1;\n                state.users[id] = action.response;\n            });\n    });\n\n    protected initReducer(): Data {\n        return {\n            counter: 0,\n            users: {},\n        };\n    }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    const increase = () => {\n        testModel.increase();\n        testModel.getUser(3);\n    };\n\n    return (\n        <button onClick={increase}>\n            {loading ? 'Waiting...' : `You clicked ${counter} times`}\n        </button>\n    );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n    setup() {\n        const increase = () => {\n            testModel.increase();\n            testModel.getUser(3);\n        };\n\n        const counter = testModel.useData((data) => data.counter);\n        const loading = testModel.getUser.useLoading();\n\n        return {\n            increase,\n            counter,\n            loading,\n        };\n    }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n    increase() {\n        testModel.increase();\n        testModel.getUser(3);\n    }\n\n    render() {\n        const { loading, counter } = this.props;\n        return (\n            <button onClick={this.increase}>\n                {loading ? 'Waiting...' : `You clicked ${counter} times`}\n            </button>\n        );\n    }\n}\n\nconst mapStateToProps = () => {\n    return {\n        counter: testModel.data.counter,\n        loading: testModel.getUser.loading,\n    };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.1.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-mpeJpve0LNj9ARWHaXAnalGVRqdUs+QOQICWpE/7tNAiSjGMDIH7yxHsbpqFcVwG8oW7TlVDn0Qj7giXbSZu1A==","shasum":"b7c8ac290d138aa966aee0bdd7484e6fac772030","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.1.1-alpha.0.tgz","fileCount":64,"unpackedSize":100024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI7epCRA9TVsSAnZWagAAnGQQAI539vbyGg+jKYth3hcy\nmPK12zRCUkdx37X6sqpMRk01Od+EiJqGX5XS7xY+xNTyFDQ/OD9nhlLS5h5E\naV7Q7HLnrlbTkaH/6z8/5OoB09EbDJU+gtPpvLMwxXHYzlSiQtSqblrmgmD3\nsH2Lb8yZ+Mvzs1+fzGNFLeAOsjdfdUzxmugidfxzarqBN0WYe7qv86+yrjK2\nz6Tw6TDA5IfH6T5QLJJh36eCRn4wsc+Ve/OB9DAVyYSAaIgHBV5C1EQ+tVfr\nfPfbeUJzi8fN11mBDWAtfsMij8ycMF0sLkuEmace6guu76M0yPgkfRiZs24L\ntKubRqYi2wDHQk8ZLt7PNcwLUt4k3ZZ044UPQY9F+QFky/rreMfjT9iJJ8/D\nZqv4IKGMW/mwB6tKwEbReoxljsJY4FpEqEdbeB3zyUBJcV05RVLAU8TjrHaw\neXdRe+YvFHoNwuueU6Wvqmi6mlei+it/Xzu1qM42YaMQ6IDQJehMxRWk2DLY\nWIUcR5PYbbacLDh0fGVa+qybpcvYi13a7dz4J0vBD8X71ounqsE3lpnYhyVH\n6bpgvZAM+vQUjMr7UO/zXK1Bj2Un/67bsuQnQBbv8WWsThC6cMS1OTHY+wHm\nL9juapba073/L0iMc3cDjQzK/CRtfIJ1DiZaILR79YNMmv/kKOdUlHiM9DT3\nEtHs\r\n=xHnz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwOBWnOPIpBn0ngJ6dlovLya/nHixCiYPWOdqUWNnI3AiEAzaRWj6hXQdCHwm+HJgH8Kjdt1xhSmjUmVh/5l+cK+EM="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.1.1-alpha.0_1596176296979_0.6536694088965427"},"_hasShrinkwrap":false},"7.2.0-alpha.0":{"name":"@redux-model/core","version":"7.2.0-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"5bdba5ee3d56c9dd2db90a57d243f149a9cd7636","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initReducer(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.2.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-jc+Ete5liqiuFZy224MZfjLWry9Idmj9DmsQ49iC3Pm8E3u3daOJaGLIAdCtlegl8Ne4LjXJDYajQK+gWi57IA==","shasum":"4825437425ee959ea4f981e8413f247cf86adc4d","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.2.0-alpha.0.tgz","fileCount":64,"unpackedSize":100911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ3FDCRA9TVsSAnZWagAAcEoP/iuLJap87OQv/PctZTsD\n5Q3ZqZfXrw81zdv6/piN7kOxF2zvg9sgmxJ/MugkqEzP9r6yzrxqGnIgKu7u\nc3ReoDUxAlV0cPsxzmu87IxptXgkDFKjshkli/wYz4fRVo2bEgmz2BfST3Yi\nWTKpARhrJhfIZ0tGQUlirkRi/xVw13EPT4HP8dtx9YNfRF7ywCkBypFCufU/\nM8tchD0pKhwuNscXDu/cyI0JxwcwMhVvWL6P9rLCfGt5UDjPYNrx39QR8yUM\naHIjltwykjeeUQ9FaVO2YNP1cNKu4F9Wx+8fHpeqG+7Dz7dcC8BXS1GEWH2X\nGiEbz2BUEtyiH7NfuS9DlKHAG0cK7PDeMss+G/NX3M98Z6bWit6BZqxub0Wr\n+FXgvI1hvDhytX7v99vV4/qU12A35dbR9+84+NsInBgw6WRwA2LtkB9MQ2CG\nWTXyxt2pdSu98kkg1G5zzRdLnKLBRnqSYK2u6fTBH1fKznTzxyGVLqsJ1VRG\nChscNaPEAbYtgvbejAymlhTB2xDuuvOjxCQdO0AnS5qn4MFeDL8bH2ZoVk5T\nXhsImum7pn6LZmoym4YYJIU6CHUl9PiN46Ui8ZwNWdH+IZoraNp3M2NWrhRg\nYI+YRGZ3xVPxcu4v1ovFIVLZtCoFTnBwqRYtrcNNYT/JzfyogZ1C/qrO74yM\nBARC\r\n=lfkY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdznKFeIUR2wjda/bhP6XY03peB4+T7blSLGtEUdf1zQIgIyO3ImM9qXIzCkLfbdRLAsR1RsDjnh1duTRBX7f81ck="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.2.0-alpha.0_1596420419003_0.2182852430876958"},"_hasShrinkwrap":false},"7.2.0":{"name":"@redux-model/core","version":"7.2.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"2186dee4cf041788e4549be4d8fc3a14da6a8daf","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.2.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-UJVODSky92lSzEFF94+hBy+zLFrXIzjyAXext53MnFDcGjPRRuCIK9yVPS59u2IvE+3PpoYS7hcwZa+PmwdEhA==","shasum":"f9154a27fdaf3c897c5c6fd49911933971846e4a","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.2.0.tgz","fileCount":64,"unpackedSize":101618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKAOdCRA9TVsSAnZWagAAHV4P/1hClOBLrG2/7PDdbGze\n9IC/nWhJa7v5F4r2dBe/pYwSjmMPbHgNucuVNcGUxpZ58wgb1llZa0/joj24\n/6nRkziZFryh2T+VFkLitsv01/A2dKbpcAwc6bP4TJ19dUHWOitI7hXPoMSa\nTM9XTtjTGOejvzsU2LnQYCfMaFNC1PuW32aPYjDTwhFjILmjnYTVoXiJcqwX\nyrZlYvY4nJTNizY2qWm/TnHnVNoxlE5H1GIiPAABQ7KM3HGDyOM6/QksnX6a\n3ss2JF33XLGfLIbnU4SPVlZznAQ4ozTbqjAgSo+0Ov5wib7+qpV5wSfSEfhF\nn7/8kjsXSvFq+HqGKVn/emqgfPvu6aRDG6x6559zzteY76VP2ikADgAFI3uX\nTJXVPvk9LPFIHgXjVtwtc2pYEFAZhni46cKgW4jqpOiv/U1KeKr/Q0JRSCkb\n+ythGcZE9nqYK1J/2O2k+OtrxFvZdFMNsrdFoWg9KsAjbgYLuvLUDBwoWC70\nW0D8bHvh0odOoy+TuqrDrzVVFYCTlI0z/t47uogQg9QOU+54CStLlSxtLlMr\ntJO2CP31+yPUwXsNPQ0hlsxA6wYrQMSHDKf2tDTBAfy86D0qWU76rKp+WCZY\nlu7RLTiFjKcAa5OmGmgvLQV4GsY+AUMAjHsM2j7+iGafFexROwsBlvJn3Rkx\neduo\r\n=y6P0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjAksqfpLQOh4r3lsptPecTDbLPn1EaOsV0NLtfouMxQIhAID1VVSYNFCr6bDUUrbd51qDfSkPswFusV/LqpxU/0+/"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.2.0_1596457885356_0.5176222291833843"},"_hasShrinkwrap":false},"7.2.1":{"name":"@redux-model/core","version":"7.2.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"82481530922b2c3e74f1be2664b87115ee49de5d","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.2.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-qAPfWpNVORf2RZYl9f8moI18x5G2SN2e8W4Du34YAD7vkNFAFhIXDyaCKhMkWDTWM9TMXvk322rpyHwRh3N9Dg==","shasum":"31174973d7d567418abd960f66223167ac0dc2a5","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.2.1.tgz","fileCount":64,"unpackedSize":103207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKhKkCRA9TVsSAnZWagAAeGMP/32cSdd7fre6wb5E50oy\nvghjzMYct9ViSR99KcXLpdRF3vUMoYpJNUifEL5Fc3JMPgPS5YhvBtOtsCVK\noOP2EMKLmBSkt8qpanO5HVsY36TlMuhXb4MBh8CnAuQi3PPkqu4+dfbPuoF/\nZ+nfvECnfUfVTrLdPqz2phgv0m6C95ZhCCN3OkqTxftXmsiQ4027GqkrqJJE\nBJTuqsGTDyesMz2vkbPdEoZqIiXTwOhANhVGbD4RSIGhz7gLx2SW+2WmB9x3\nwJ3fShybJuo9iKJB86jvaNhzmJFrha65Ax0jeluKYmL/o3i3c/bGoD7H4ve7\nvP15n58Q5JLZzxtMaBsgf3oCVHMiphXb1V/StsavzbwbuA93WYt98MmF2ys0\nV2iiZBzrqYG9e4gyX8yN8NFP/GVra4lcPheFlFhcjGYTz+FpPPM5jDeEUttr\nf5SqSO9vr39UMpVdU8in9bwZGYvDmWDRdbCKGgNVdrDFH/oav/KVbz/qv4QK\n1JGmoBv6bldyjP/uIveyj2eb/eLSXOnDJfk05S0yjo7+xHeNfI832QYP5qP0\n4+vWcvNIKsjjRMKXjLqAiYiGN7TXZX/FR37Wq/ohqaNxPrdAbLZJmoeL/c7C\n4ic+yOZKvk4cILkJod6Q3Z7DqfAWuKHScGezyQOPcZheCNt/Q8/ke+PZ8r8d\nTsCl\r\n=TVRn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBlfl3I9CHgA8vnLD0M2oZrsSc+hJBbtU/8zBeIYyfSPAiAGKoM7b2t6T8gBQAbj6gHH8fAj6N61vLOYPxmdsE/Fqw=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.2.1_1596592804332_0.8293241887567779"},"_hasShrinkwrap":false},"7.3.0":{"name":"@redux-model/core","version":"7.3.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"2a3fce2db29cb7e48bc5c89f4559da07cf56e3d5","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.3.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-fnug1NJlyeFtz1vLZoDe2tDmCAk8WcFyylfO2SNb7kLCiXsOF+Ab6BKRMiZP/lktOGw17KNohHAFNatvY5jPHw==","shasum":"5f28a15562bba1176c2e075b6eaf89ff4898e5ad","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.3.0.tgz","fileCount":64,"unpackedSize":104385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKkQlCRA9TVsSAnZWagAArUsP/3b1XGenQMIoGcvqwDi3\nDnqQSOSypzm9Br4vZ9C7/SW/5Uv2H7JqiSgVUXiwVrxKg5/VWZFHHGyJnfko\noVVLGhgOyuw+D2L1JStmgrXgsV3hNTNRT+4Evk1kZ8Wk+lU/ceRoTETIwScW\nEY2zqAoR6sSl5jXIJpMmunRBKeVZtF9GfUPtEqhFJXlUjfNolk5nz5bb8kKT\nmXv46dxOSKnakDCfIU5R36RMZbRXR3O+dO5dwXhDvjqiOPecMJB0hQVuTmXe\nP6ecGo7fmeomrmm4fed8et5aOWHgCKjslo7ElBnsRRJirFgUtbbgUhUyHLMw\nQkzFLcglkXpx4Ukc2sYqrkg/yFl6/OCkxWl66qcAwMe4s4PUdf+pv2M7vHx+\nWnqefB1yUtPK75u/bVkxxb9wM5IIMF3Had4tMNvsGJkDCI9hLwUMsBOhxOan\nuTPEyATqJYDtOHVMHfBY5Tes9WFirVSC9Raky7r7L0EYPzoC1k3yLfm34rkb\njQhG44whZjk9UspCYdGJxDM4nEtAhMRMYo+0kPTUj3EeV9D17Y9WlKYXyqVg\nxZv3TxPsz1TAhXoYkUUiU8Ing0msDIM7hJea9tbQ4ERZh/adDJ/SE478hSro\ncSfY6n45i8q+9IAmdUaifUbjWxJ+9fwW7pADmawj6aO+sqPyQ4L3lPqVsZxM\nZdwG\r\n=n7iI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCna1pryRUCr5XO2k3Tr+ejl3mWd1ikjBf6U1mQKj4uEAIhAPFa8WMnXYGyhwFhDAZHmXiTXvom2m4V8UcnWzo7fXLd"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.3.0_1596605477511_0.8622519764647529"},"_hasShrinkwrap":false},"7.3.1-alpha.0":{"name":"@redux-model/core","version":"7.3.1-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"c6c9f1e6e0f6473df428823964f13683d0613ef9","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initReducer(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@7.3.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-meTY9aJ0ToON3ISbGQ7VZyfhYGqhHibAIIqsleCFDKU/W64bBUT7+HwfWJxYU7mp5PIo50iOEe/L8RIw9XbaUw==","shasum":"46cbdafd0197610edac023aa702e9cb81971f843","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-7.3.1-alpha.0.tgz","fileCount":62,"unpackedSize":100361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMLnUCRA9TVsSAnZWagAAIw8P+wbRmJyRzduvB1zuyOau\niQ7qLQ/X2fNISwiNZoJNdSi/qRN3kmQdv4xb+TxYzQ06jTcOqrR9qJeKn4to\n4CzMHHOz/Fj+u+hvCQlSmdSgfcVpMC2AkgQ5G5PwDQQmkO2C34ybMjOXQhp5\nxbz6VBJAOfBGjC0GvgJT6pPJZhRoHuNTDyqZTTHX8QSImcq2+UOaKVxEDmNK\nJlLgJPu6tV5qUvjuveFICsZMI+tXZstnNxqIW8jmN9d0CzDAueEdR+BCAVES\nijoDE3WZHWO6OcwR0IR0chuj0qI8dc4yduRRD+dkBY4MSzECDGMgCYpxCyOg\nty/4OQ7OAK6kkXnxBZ4UjaeUWJPHxVujJNGsc7rDduhXXQYu++iT1oFSKLk5\nCD5PwBukFmclrpjWzMkrcSAza8yuIzMHB0oYgAf2/JtkPauQl7iiTBQ8bWKV\n2BpHDvZ20xpncivEJNtMH3MbROOilaa0xnpFOM7OP+9LXFEPFCkHMEZ6OFzp\nZTeHX3cInyGsscIf33CNnzLlsOdbk33WLXTuLGDh7F4ntsqmEOLSBk2yKTFb\n2etMokU66NjTFvUfLes2dv8ZNmCshchp0hbnFuzzhwq1z1A3hMMRaJuvVMf1\nuhb3IL0j/jtXsJmZULDw/h8vmBxIfdENA6efaPqdd6pQb5oAlf542go9Gs0+\nYj+n\r\n=Yz2P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEoztQUQLXE5mPF0gPXOWG7mjgJcrXgzXCO0FCki6xdtAiBF7yPoCZzYF+EbynVDimGuk5nlyNtqaeZjJAOfrrdhWA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_7.3.1-alpha.0_1597028820169_0.2115804131742982"},"_hasShrinkwrap":false},"8.0.0-alpha.0":{"name":"@redux-model/core","version":"8.0.0-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"06026d37d061fff5305bb71d822acbbf377ce294","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-Y8sLDWVLBlQ6gfI3Us4N7cUV2c2GHgkoDLx+m9M2bSRl/PUjSkQ0JXpM2K0Ggc/jQ8zk9RRnQaWlQGm+0jysfw==","shasum":"e21f771472270bfb56aa83641fafcdb549c99f91","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.0-alpha.0.tgz","fileCount":62,"unpackedSize":100650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM47dCRA9TVsSAnZWagAALpYP/1zFFrkSwK8OkiyJlbQ7\nnNyykBvokSUwgoGpB0YfGIx6LiigTnQPMYLV+xO+a/7huk4zwbEGO4OqXc0t\nC1DHcq4p/Ua90DYgON1m0M0lNNm/Pesz4GaspxKcqVGZtAkftlRLBEDLUUY1\nJwVEumX6tTxTpaEUwxZAHiW6ien2crt1qM1F9PI8VcVyV+jypS299Ud/GBW7\nDtoP/1ImxupH4XX1oGtaKSOXBRio4z0KNW2YbRt3xhzHjMPzddvHMh7HVMnp\nAxosBZH5XAYTMQmb/MeiqJ/ZzvBmFPV2aEwDnzxfz+qp4lBeMUj1wmy8e0kx\nTpWKMXlphESSstA0wsnh/bh6JjOdAqwcwSRyDW5S0MbunxEMpg7GLuN+JG5p\nxxnpyicNCu7ptkxU4TKLJR/wt2LdS20RFy9J/rerXlEUjCmczxfj8bYHkNV5\n9KdzPsBZniDajgFwvRYICDtp5GHJPMC0NT03pXpaS0HwP8kXN3kA3LhmXJ87\n49zbqTvYsEio+vTyCBFGAP+QfKbLgO5QL7IyZg6L48MgS+xIejhusteNHcZM\nh0esTW/gQMrOGKhFtxpD48rKJeEBNk8/Nr/BSeVRN3Wu+aAc9GbVqrKqYhTV\nLvy9N/TVpBPWp4oooWhkXUoSL5eclKE5CbvZ0AjFcgmOFCNEY84OAoty60NY\nCwMH\r\n=Q4kv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQ3ekdU2VvnXw38pxputoW2/Jw7ekPowJHDhyWmybWKAiB47ZH8lEqJ9qZpYYZ25Xqsdfbp4dglLiSAchO3sh742w=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.0-alpha.0_1597214429019_0.22320420185905965"},"_hasShrinkwrap":false},"8.0.0":{"name":"@redux-model/core","version":"8.0.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"5cd6cdc0359c13f9afb97758a490b3fcbed7a4c9","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-tVh0C+zcv96f9r9V4CTLQG9XISOPBauW4uPtsO66VjBSrHEXARG50nvUCgr0ynyeBoA4up8KjCaWGd6BjyygHg==","shasum":"46676fd3f75c89df34beabf2a4b0126251480724","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.0.tgz","fileCount":62,"unpackedSize":100642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM5DkCRA9TVsSAnZWagAAC4IQAJ3aPGsdx0z7SlZfXc2D\nI3VeRXJ3xvA+03non16PF/lNnUO2BANaBjh3AJpewp5a96hQVZnz6wqlw8OV\n3QY+Qzl8glzxHx241270oYah88qj2jlt7YTQeHz4hEPbIv60PhG5uYPiAm1T\nj6x0YhVDWleSGNJTBBs0shEQx5NZuq0weVCzXK17A5oNH6bTZeRpiOw9Alzh\naAbXNsVg4wjVqaboqU4Cd6QFt6XRwtFF1YTJh7o8oT5IrSlGgllLOU3QHrMh\nLfbtAyCOlsMdWubYVGUxGMJikGVsZvSgYrn42Il50GacW0ms8H55Wgy1On4h\nYVMSk83/8N+6TEiWk3zIiKcaDBjF01KVNP2FDu24n/T09jthW9s7t2BCCwjq\nL5lIAn77kMo041zrTyqGbfDeKFgo/wUJK8ixPu6u/jXnBsBY8Z35iTxz+Hps\njjrWEQA3oSYlyDW7IkkZymDysfuBaehYHVI7/gtId39FLpfu/uckX/AJSJGA\nb3hJKa/3Jveo+ND3MLAkp5FS7io7B0z48Y4gjW48M2+4i27m79y/ZkeQtV40\n5Z54cyRvtU3C6niY/FR5AS/xJNh8/m9oGIQjDWX/0QS7hRJujDhfzjMG8+fn\nYeDz7M8O3b0ZsiabLAVM4hd89ikvCUQayhSXnn2710dqA7rYddEhxnZxgydy\nZo6n\r\n=aPKl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHWQkpuxeXjRnRtIT+uQgveP3O3/UNqNfFJ0Oa0Z5KRZAiALcwjRbNqlseuXTO5IJX0aKeka3wJaywQoT40fJDLLIg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.0_1597214947780_0.6694964623297577"},"_hasShrinkwrap":false},"8.0.1-alpha.0":{"name":"@redux-model/core","version":"8.0.1-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"63e11a241dd23d819996d405f775acde8f96bea9","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-e9/fwFUYch22LfRuDZrrtIAZd2ELMsJhQV5haHtwFObfpZOZTl6goWUoPd6MCPVNQmqZ69elgXw61VxjDNnXcA==","shasum":"8c67dd8d71c83038bd2d911121e6dd171da50e45","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.1-alpha.0.tgz","fileCount":62,"unpackedSize":101541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOBSuCRA9TVsSAnZWagAAZNgP/i6e1dS/FYjkOMu3vokj\nuD37xtWbANMNzCrsLQLLiOBdBFI5h6Kli2Pi3Snt6+VhQ1FBfMWYjqFB2L0p\nDtrXaLZ0rbRIybAmNoJ2hHpg9L5zM8Z/BLxHSD2D6LxAHB36m5IYk5Hgrxt2\nKuyi3yDO2NZLS2FJjs2rqEVL2RHFz2cgjlFBnvAP3QjCh0JAIlVvWIFM/vDZ\nH+RLgeWazxg6OfZ5EC40G4itpRTX+1UWPjoddA0KiRIlIxAdnGEo3Qb+7dbT\nSJ8tD4kaZQYBANkz8e9ZwaKCIEPMhPn//E818hnTqx643ZN8ncb2KSAKIgML\nGj/Y5bP0R2Jn3BWsHfzh8zVlVYvxNNAPUk2ZoGD1Shs4Dks3NkNub5AQE+Ny\nidGuUOwIb0FCI6WS9sLBMPIBI7lg833PXqdKA155Se07An/MBRlSPMUGH4Yd\nsvRfn+Jy5LPCF28quG5f0T5BEijZowq+T8t5LMFjRNpbkkzJslWe5ydkNU+B\nwgj/d/sQmwX3AQSFAWO7n9P8kaW01GPi5+Z2pbBuljfwhrlc30p+0x3xilL5\nHNwdSKkJ2TpShU4UiA7AWJFb+/GTa8V0A50nOMnfAFMqdY9/wPaJUFn/4arT\nxHd5iurHJfeNwt+5alWkKGXt7qEink057VcagRBjFtWNceJz22xewnrRp0nj\nGgV9\r\n=LOce\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICHypzTelcqjNhtsZ8sq2tOEwCTQjY2CbhAcxiUUvrCHAiEAsHRK+ii3aPUwLhGVK93esTsPKJtOiJR2aal1lW7/JMY="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.1-alpha.0_1597510829913_0.8980799588361468"},"_hasShrinkwrap":false},"8.0.1-alpha.1":{"name":"@redux-model/core","version":"8.0.1-alpha.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"63e11a241dd23d819996d405f775acde8f96bea9","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.1-alpha.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-LAludQIbbb7UN0HilDZJ4hGU2PGaEU7DDw+tUfFAbvs8FGDcus2X/MtTltmOsNXhW4NdgJmnBLYo9pTgfvoJNA==","shasum":"4c39aaa0dc86104a3475b5b66124b550b8d6cd38","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.1-alpha.1.tgz","fileCount":62,"unpackedSize":101541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOBVXCRA9TVsSAnZWagAAc0EP/07uYOs7jDfh06JSCls2\nOLy/okJDVTXeBXVgw9Cu30XfZ9AU1p6MCShNLAX8TkgR/AeVj0hTBHdoTlrS\nIQUbfVAjJPQWMk5AoHvw5LzNpZsOFSlFxgIy2MvXd7cIdCMVu4shHR8NUQSQ\nimY7Cp2rUHouTXfszdOgRse9taOsArDjNRMiU0XE/rpYutFcyi7kh61VXxai\nIGuSWlOn9+1fTg4tTJb2olpGKrjuM4IMh0bP85Ym8gfhuEwuftLU/iJag+j3\niDBakiyeahQg1kth6aOL5H/0yC2Zwirxyg3cQVCf3C1kgnVD/lmJTslpqSSf\nwtcNEc3WoTGbolegX8KDmsFH7qtKdspPzVHqSXAyyr/9MIdJGOokeG39Vv9Q\nYtbCUP6p6FqIph4cZycUaSNLHy/gEGzzWmZNJ/UfPk395dUZeg5Er1kk0QTy\nTU3rp22Ny9w0E5+h912777su9t+PWdv5Ez3KZZcDl7BzPpnWLqxqTNDcaT0R\nKTF/3sQ5AIQ2R60+QoWDX/kw+XVb8UFMUiwjaNp4P7YpfqAAPQlf3yIh+fGs\ndFLievNUMkaZLFBTYcyVchATMI4ye9en41ihjCZobkaS4OLPntvxnkpzEIIm\nk18pZIjv+tQLj5fjp9o9wCmnV62DCQAJusPW4+A083jUXmRs0pdMulXr3g2i\noO52\r\n=2mCp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuMyZmYvivCsGYhsNFY54pZKulwlMRwWMo7sx5Ni+gUAiBssS5WCQ6HyUpyF3OOkNpCw08CVdy32OIwbn/KKfFbug=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.1-alpha.1_1597510999074_0.28346055445938556"},"_hasShrinkwrap":false},"8.0.1-alpha.2":{"name":"@redux-model/core","version":"8.0.1-alpha.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"145803b3a1e6c7bb83a6fdf4ef23d5ae2f2c86fd","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.1-alpha.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-mCC+u9wfGKFddJi7BhlqjPTIw6OiLoL/2XEh21MiP6riGM9uFHg2lhqbwYEANHE5p0EdI9ySkRom3bwuK6ueLA==","shasum":"aa25fbf01e2fdf0b506ead53543582c67adbedae","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.1-alpha.2.tgz","fileCount":60,"unpackedSize":100036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOKh2CRA9TVsSAnZWagAAz7YP/0LISVSnElBc0OTg9ZcY\nmdtyxksEKa+7YrwYhoGoxSqCyu2sQcQJW8RlU9ZGwLRd+Qhlw6GSkMXrsYcZ\n4lbmdTgQhyJu6x1PIRGnnP41OqwUlGAXdcdgPimm1ZkZAmM8cW6zHzAGe+Ox\nVY89lZNmFxVwflICl4sDj6ZGUC4K7/7Rj5tCDWGXtp6sD9fCy+a0u4lIhskR\nhtk3kaT/Li+jkt3M+BczVEJe/HziJSqrRXyqU+UN7B+4zXM9760Gf5w4C/qq\n+Fw097V9JBZ2QfNmVQ4fbdmAPKJm7CRGPHRwQhNaQD4quKlCUToFapiQi4ss\n0C3bO8gxsPvMQXzc4PI0RRFUcNJ69gK/HHjCQ5IOKHZCZBNhegWj1ePcMMNq\neBe0ujg33PGGR2bVJR/H1Zo2i/sjqSZzvEfbrOJEQW9DauV5rGlZPnC2NuHq\nI1OG38dP5AeNZF5B+g7irHuKrD2y6vGTHcqjBGmSsQKZdGYkMI9vM1wZLrO3\naw/LwH0gMQXESf247E8Z4Mbs3EvunMitC6vuHursQTWucULvNGow8CWWpUoi\nejqp+RTkG/HQ4gR52s84eigzvXc0dXcM4+qOYxabtWU92aJjoCI74dCqesPl\niPl0IFR/i4yNujehgFtf6/rEkep/imuPlxoJIi7r5zOG5HMv4+wC7r9SicCX\newPI\r\n=orh9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZvGoIqFGfj825OHDBIoEu4mgfJ2hB3eIa65AUPU+AXAiEAx/3yVf5KvVtmJfcjr60dj/ZbRPlpQPeg9ctCiIyYHxY="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.1-alpha.2_1597548662377_0.3637433853027956"},"_hasShrinkwrap":false},"8.0.1-alpha.3":{"name":"@redux-model/core","version":"8.0.1-alpha.3","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"3b6c036be8449bd2ac43edff2ecea39b488da247","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.1-alpha.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-dwyTkQZSQEeO7E8o2Yjo0Lffg8A2qx7MarnRtdofBV6X5GxwBKPiaysGG6d83qtWUsUxyWgDhLLME0rGIpMmlA==","shasum":"b3c8495f6d902d02c918cc4db97fcdd8316debeb","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.1-alpha.3.tgz","fileCount":58,"unpackedSize":99309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOMF8CRA9TVsSAnZWagAAjNQP+QDhkZGQXVRcsYkYEp+6\ne38bOzmbuRVMbJUnb/dEdNBHA8UouhA7jNkV94xJ7sAX5xCV5HuYr2ul4IQK\nHjhgk+WhEierPZucFXmPq+0R5U0wuuu5FYmDo5yHHek9SqlseswiUx+XI/or\nz7rRfv5uH9eXHPSgeX+34qc0hfaRZ5PXMtZOFmxxR/fs5Zz0ibmifhYu25E4\na3t+kFbDI38e5myMp+W7r4HwHZEMRw7Nu3Yvt2RofYfrTHJwQq4IL4XLNFqL\ngct3vwO9UdY2MCAC9vP/MvRWEKXz+qGBPh0pOjXdTGRM2nrqd+5fuszkAWHf\n7gLU08m1NBBLp2fcD+hisGLH8CXm0CDuZIdyAP9tJp9z+IRjH2OQ3RTDYBGs\n1WhvAZvGj1Mb0nnoCt2Xn8QKDmZ7R7R1FRstE9hRQD1pl5xMiFB1XMbVPNo3\nl3bGUooS27YlUB3u5PctuCRe/+bdd/gS1tXdX/VMSgQC20swpdTXKBz+j6r7\nBaqPwt5lMXXMrEDykSLsQEZMfvc2wK7SFTi5MX0d1KzYKKkkmEd0zo3V4s9f\nQJ5MAp1MuS86C7jC7/iIWzQAy9+zekko5Es8tpPZNf//TD9GuyPDwzZRzvei\nI8Eb9gHtjaAt2/T91LzzWEyVVpuHIiM2qK9PRSvgEdCOlRbpDmhgxHJU2Jbv\njJki\r\n=mVS2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWsm0q/7j1Nn5h88Tc1LE7U/i0Y9djVXOv1cPAkxjY2AiEA810CPuKEgnuTFnKCBHn1Ti2/KbdTzrC0ucT6eiBAPLY="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.1-alpha.3_1597555067965_0.5635473679975844"},"_hasShrinkwrap":false},"8.0.1-alpha.4":{"name":"@redux-model/core","version":"8.0.1-alpha.4","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"acb90bfd9766e7f1ef68766d3b9bbc51a8c7f46d","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n众多知名的状态管理框架，基本都是为JS用户设计的。离散的代码结构、严格的设计模式、不合时宜的细节封装，都意味着想完美融入TypeScript，就必须经常手动注入类型。幸运的是，Redux-Model专门为Typescript设计，强健的自动推导能力，允许类型一次注入，到处使用。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，超高开发效率\n* 使用mvvm快速处理reducer\n* **无typescript不编程，拥有100%无死角的业务代码类型提示**\n* 内置http服务，请求action自带loading追踪、节流\n* React/Vue Hooks\n* 数据持久化\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### 其它\n* 对于Taro 3.0之前的版本，请安装 **@redux-model/taro@6.9.2**\n* 对于Vue 3.0之前的版本，请安装 **@redux-model/vue@6.9.2**\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  increase = this.action((state) => {\n    state.counter += 1;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/user/${id}`)\n      .onSuccess((state, action) => {\n        state.counter += 1;\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 在React Hooks中使用\n```typescript jsx\nimport React, { FC } from 'react';\n\nconst App: FC = () => {\n  const counter = testModel.useData((data) => data.counter);\n  const loading = testModel.getUser.useLoading();\n\n  const increase = () => {\n    testModel.increase();\n    testModel.getUser(3);\n  };\n\n  return (\n    <button onClick={increase}>\n      {loading ? 'Waiting...' : `You clicked ${counter} times`}\n    </button>\n  );\n};\n\nexport default App;\n```\n\n# 在Vue Hooks中使用\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading.value ? 'Waiting...' : `You clicked ${counter.value} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  setup() {\n    const increase = () => {\n      testModel.increase();\n      testModel.getUser(3);\n    };\n\n    const counter = testModel.useData((data) => data.counter);\n    const loading = testModel.getUser.useLoading();\n\n    return {\n      increase,\n      counter,\n      loading,\n    };\n  }\n};\n</script>\n```\n\n# 在Redux Connect中使用\n```typescript jsx\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass App extends Component<Props> {\n  increase() {\n    testModel.increase();\n    testModel.getUser(3);\n  }\n\n  render() {\n    const { loading, counter } = this.props;\n    return (\n      <button onClick={this.increase}>\n          {loading ? 'Waiting...' : `You clicked ${counter} times`}\n      </button>\n    );\n  }\n}\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter,\n    loading: testModel.getUser.loading,\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 简单的例子\n\n* [React Web](https://github.com/redux-model/redux-model-web-demo)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.1-alpha.4","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-+kgngHX9keS5K0Q2jiNDtfZa2Q7hdkibNWgg/FKumP6fsYlvglbUlSRvvTg/WtCU2Ws4yyNSDA6FWsUYsXv57g==","shasum":"b9e1bed9c379c6d2a65c7914aa1d4504685f6b99","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.1-alpha.4.tgz","fileCount":58,"unpackedSize":98811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOM2uCRA9TVsSAnZWagAAVokP/jKzrh/mb12jZhtKPJgc\nt3ETalj1ZvX9D+lqS48NLP5T2gAgOxjNghjKHisrXb0k4evCHdobsEd6RVB7\nszVT+dWnMuDaqAwYBWcHGal1/4/MzSDk3MvpDS1q65iNOsBdPRSukuw2orGb\nbFLJmmyMN07TYEL+VfhPE7ZeoPR7wAl7jIVs12PXfUbUSjvKDlXSg8O9AMPd\neSXYKIm1RQXpiKCOWtwyDwmdxxB5gCCgCnPKBkGTw6fQZtG2DEYdq7fce1H2\nHO2fR747/GsoYnJ+utBx/MSijwfX/Wv0DjqZVBcmmr9CbLfzJ68QlVx7oFiV\nz8EIzcyLvo4Oxl9fJH9SmVi84kbleBufzfluFLNitQHfkJJWcI8tGl8pl2J1\nFLrAEaC9ImUKpgCRbvobeVUgyii2dh6hgU7tdUk1I02O07d5nO4olqRy52FY\na4XwV2UXaFN8NMOTfPSscliwgvRvL5w8WkGpKLZQJyDduhpZkkH8EcmQQc+J\nOT9DLKEmXoZdTUuC5zaTkhigIfHDdoh5dkB3sIk/r6CRQnCm2Ftm1RHttTrA\nQNk+x2bwbnNJwhpuJveXmvl26DhSapqXdLNTBd224OQ/cIpnFuxahaKZEJGg\nNj9qh7qci64EhKs5VDomAHC9Mk4jnDZ3g7VvFi4JZuCviOpk/ARvW+/UHBUr\nzNQa\r\n=VTYQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDe4uqu0kFMwmJNByM126wySRL86ZNWmb4McyG0bIbtrQIhAPH/GTkJTwArzRhf8XZKSuNbVLFgzeJorfyzPwUhVfpZ"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.1-alpha.4_1597558189794_0.12414211585266499"},"_hasShrinkwrap":false},"8.0.1":{"name":"@redux-model/core","version":"8.0.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.7"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"9adf76d65601db511572df06cfd01a68cf610750","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-Fep256Acsp1QLPMqa0jhuKyVTo5004IqZlvRCKbYE3pWqVClAraTgLxeGDEzw63ZDm0RGcOz1EqDdtVjBjrvoQ==","shasum":"a9117ac53613ea8e0b29f35b2aa61cc65c48977f","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.1.tgz","fileCount":58,"unpackedSize":98995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOPcfCRA9TVsSAnZWagAA5AIP/i7rcaXybfL7XlfoVg/M\nsuby5/prZk7rD6KXbQ51B9qE3pRitaoVXCeBVjTjPnzyxeCPCj7hMva/RUqj\nmK407vLOjhPpFLNXcAsuWfNbgxKYbnHbwt8xvS/EUaZioAjoefiTdvfqpBKr\nAzFll21uBnOOwqn/Bt/yECiEhL+BvktbvBYD+GCaKQGXLtq4M4bSGNt5nn2g\nOTlrbdsowno3lJ8llcszFOhP4ABV0b1qfgnwLxqhZRk6b6ledR+JiKwfECzG\n+BB/4Y13dyqKV+Sz22iNey4+9MIGy/aK+TkdoeVxUMXuaI3or8VulMMmtP26\nJWChDm9TDB92JPAEXSxnwu3W+ISifPT6Vz6PBbZgR0kEto4QeT3fXi8lk+x8\nWB/nFK3eXT/OcjkpvQRNWsTEKWiiH7nmN3RnHqkgVX+QuhbrqmM2aRq9hIPI\nbVWPdjvgCfBH+Is72mQK+t7LTBcaNofQqy8uZ0Pf0rr4mQpVZV9gGTm0DaYA\nTOL2U+/qh5uZz6j7tzQxJEkHAXRp+IcNzOJ25T0bGHqQkrA3dE4kT723dbcQ\nDEu+1eaJFT8J9BXXMLxuX5hiEIA5Osc3/szhk+M7HY6MX7rmeIMze8hV4MfT\nCsWLt/kCa0EkFefQgNpvQsrR1ytmWLYzKUjkvxtjYZJt7c/U4DDxptm5KuoT\n1Q56\r\n=+fXL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmIroW9ge/glehDiWJZ2/cq0/CsLC1isGw9+nbLhzv4AiAXfAPuiJhUfVV4UIFvh6nyFtbxAQo5ROLh8pU6lMNS4A=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.1_1597568799468_0.5176889177769133"},"_hasShrinkwrap":false},"8.0.2":{"name":"@redux-model/core","version":"8.0.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.8"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"91293ca98a4cd8cbe436410b62e7a752b42da4fb","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.0.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-7rk/k6cmZP5eIJTLHuIAPA66P8qy30qtJdn9zUyxW19el6l8JkA9gqyhD5p0Llewl8+pRJ+Om5oB0FTYAkpDvA==","shasum":"96f5437d884ba7b558c1807e37fc5896977af3b4","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.0.2.tgz","fileCount":54,"unpackedSize":98056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSv8JCRA9TVsSAnZWagAAJQkQAJ+kNKNznsyz/MKBQGxx\nL9w0dAYt5sWXiKosHCp9vipNfhrP/V0Lb6b1C2+6w3BK5X4up58Y+QuBCfP/\n3eiKMzycErU/UilOOO1YcgM2zakNbAelk1oGo17/1Vklpz0O2QJu0b9+xtm2\ngTKn3igfn64h4MFwjGVyFKLwXwHNQfIEsgcmZ0EccApUx3dUCGDwsnLFvy/n\nivDveTq4Sa7Qsxax+AGL5GaTr6Oqr4oarLw52taoJzUOUQvxal1OiDZIIvL/\nnBNjufRXqCVji6f891c8BWxFZ3FS23xX9r/2P9Cg8Lm93w6Re5UrWqroxAVY\nNtlO1r5Pd8EkkmMxb5wudg31WTHDaUE6GLFAeYToW5s011Q0kqC+DqzYa3Ed\niMLL8J+Thk6lXIla+cVMd+fZJozZCGf5bwLTkhnARR6079dCrY8pJ80myFvW\n3pUX4w70N5imUKWX+u/DC0iSHCZa6Cc+2czS3I9aIglJwHiFk9bujbsBnCKs\nnI0xn1dGSFiu3NtYsMLdY1xaeWdm+o90B7IE0QD9YUOji8Tzu6HYlJx55nMQ\n2rFfvNLwFLYt8WuX7DA6ezDU9UWIUFno+jjznIyBEEZePB7lLKOOKLmcf//E\nggv+vCknoD2yqDaH9YPFUf0qQkR7Srd3WT0W0eDuwWG0cxmPhhKvdgQ7hMUk\nvllT\r\n=T+rA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRV1B258z8/IO54M2avcL0a2F9gsqG5w8LoCkiHriS7gIhAPduFZzn58Cntf/hDw9VB1FPLkBJFgD3iCNTSGcZB3ZJ"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.0.2_1598750472934_0.08307335827377571"},"_hasShrinkwrap":false},"8.1.0":{"name":"@redux-model/core","version":"8.1.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.8"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"fc3ee2197148517e2a85318f570f3a2d67c0784d","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.1.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-7ApTkX/YkpFNazPZnR1xh6Vzzrhb91gLO56qSlzcdQnkBj33XmN9JLoeVkC4R/73zXT6ed4j//CS5gFKOPFaCQ==","shasum":"5f117cc8b735ae3b8da96b473f65b8483b012751","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.1.0.tgz","fileCount":54,"unpackedSize":98534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSyqgCRA9TVsSAnZWagAA77sQAIU/TioS5s8HKJ4RXCzt\nkUoivyQrJHqjXPlL0ipWO9CC88/fHIftUekpWUphGcQyl+zx8tmDznp/r/m+\nhTVFS7hqxf8nuD/rAROVIReRp1A3Dz4oOUDW+ps9nsTwA5CISWVpP9Vg0K+g\nY3ruN/eTYohqs2nAMC3UHktTC2MJILGJKz3pj0d/maDaAt0Gvw6A4oFIn6fq\n63HvZSJRvsxDanpeSczBF9uD/IXCDnce2DlC9h9MOclO1fBUnPgYnxxpE7jm\n2bM5FtwoqgWqLJWkTNsMMWGet2oscmvtAB6O6y5NGiOjQ7N9ZOqpMs1nXPG6\nC7jcqG2e1BPWiCMri2xv3RgrAZuzyhRWjkH9LuNYti1MF5/3GBvFA3Q2DdKF\nQEZi4uk9utKFKLcm7EAm+TWTW/wJdfZgmAcHG9EsMTJgofpfBmexWhcj7znY\nQ6c+70byhST9Mhf++XzAlV7D4D8vFpU4VZH6jkvfKvpM73d9QLviGXccNvzo\nGhvl79pF3jy0lLu3sqDz539GfXDADEjHb0H3uP28EtRGL5nKndAnZ+SCGbNF\nNSyD8WQ4FqwAD8J/U+yJVxApyY0JkuAk1d3oNbfwb6UGzhClyhUPxz0TVTP8\n+rL3HuNv5cTinV5ZYXeWsz3tsgz7ujPMb0VgcE1JTfrJqgNkqLQqXG0evcVe\na5Q1\r\n=pgeD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8KEA5e+K+LpObhfwN8PFDGmWJUZkQmrRj5oKWe4juXgIhAKmCYXoEyTrP77oaLRHiHGsA9LVGgm1h9F3gOmfiU3xT"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.1.0_1598761630345_0.0232736449753419"},"_hasShrinkwrap":false},"8.1.2":{"name":"@redux-model/core","version":"8.1.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"1d01306efaf44b18afe9657f476c326bc3d9104a","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.1.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-HYCRFXF7mmLsqYvQAf8AOpOhJyRoclNlv5LVCdNTcSXnmylLt2qeAyBU5zSVejM9jIGLqNmRoEppZPQKSO8j+Q==","shasum":"b998eec4a4a46babea925f0232d1c6758252aa02","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.1.2.tgz","fileCount":54,"unpackedSize":97834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW0niCRA9TVsSAnZWagAA6JUP/RvE2hi0E6ULckV9LanM\nJyP+YkrtdJSHrbLV/0/dV8wBXjtunJW7ZqPd+cMiqMAvqJB3yaJMvhczLyYr\nv9BortQTvL6MiKZtqB1EX3xKUbjmIZQ7JpKdJ6TS7xTzRBpPNnK0FgfHdRIa\n7WnqfUDFOyTmESHvZgvsjHuyX6SKIfaSlx+R2CLeb1gnaiPAxX/JsSnZQ6Ze\nfdghzWiwEqnY3B0ngyuQYG30IWcJz8VaYOA1ItdF0JnyBNJFknmsceZx/Hze\nr5LXUe0838SO5Si3rv6URt7SYz0vhep9pQ8HujaJrev506srlfblo2q9Vcwl\nr9gC18V7CfHWkYd3DKGTYl8RWWfwZB6rc8oYIfQx5X1vbmpUmY1miQ5OVVIh\nfm0K36x/BZ1YUezf/btk1vF2ie8q/gxkwV7OHRgblWe7XMcwdwo7Wk3hc9mE\nkKhCv6VBnBoeGBzENKoLLovikJJHvT8PL57Bkeg8k+ibvq/pkZqYrc2uOanc\niXcisG4tNV3RmiOdcdlKVA+IwWescOM0eOJcV1kf+9aXkDKBUDkxul7Y11uc\nSKTam5P7Z5PrEmSyVLM4e2KZzJkM64J5J1l23OWK8+/MJfTtjds0D2kfHtaE\nk1Qu7KA2vFJ9ziCTkyWENpuQnDvEiHm5BIhPxxQO8X2jvdcSmvcRsrkgzpxV\nZWkV\r\n=G011\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBDIOBeOlESMtCcv6K3b85pyyTQZXFo9CXrsIJ8TdWTaAiBwgtkFJvHXBVzHsBUUsrf6pymJgmn/fSTjDqRrO8q5EA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.1.2_1599818209782_0.8241699237279745"},"_hasShrinkwrap":false},"8.1.3":{"name":"@redux-model/core","version":"8.1.3","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"84b23ae4e5b83f8f128372b2b06d0161b82c3f7b","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.1.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-Jwi3Kto4Pd7HyLhtzfCBnHGmvUStljbNH+zAceP02mfjFhOeT12VCh+bKkaymwi1L4J7lq0mXnkQQrEmLz6/+A==","shasum":"572ddf0c5165a2fce35ac0c88842ad29c993d739","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.1.3.tgz","fileCount":54,"unpackedSize":98559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW1pfCRA9TVsSAnZWagAAh+UP/Awra4USm0l+utkVTAZt\nHpZh1Pb9gaoCMiHR1txqs61A+lcH5XGPsG9hjd/Vxea5gwfq2OSfs1YqEvCd\nnBSicJ9WosCXrfEm/D05HI+QrVOenghRniiQQwhCEYLAPr6zP6oma1u1P+va\nP5sIcaRmctjOWDvcxbEHwyaTyMi8X6R5kIebrTvrmzNn992FRI3KEffYxPTO\nr7nRb221a4GkizzkdannoRvZJAp/ot38xdJANxtEW2C37TcV7Qj4cCMHJp/y\nC8eRcy/Vs78Al+5goCQaQvMg6alLuhmaXrg0/9vTIkc5FdT4nBkm0V7gqDmV\ncU/Wbh46ErcqKticiSgdRg6LF6juVX9j1KkO2yWZBZNjm4fgUSJDVSZuL393\nxoOzLDpFagRMZPAwZ5wh/jON+hPI97gLSYizBjIlx5UySU/R6FiFFsi7hGPk\nmuHzPupSXn+2hHjN5Ng5pinctLSU4FAhiwErA60qo3rARnnq0V9Hbd7lbqQy\nJ6LUHjEpbMF8DrF3w241Btp9CK/CbCxbjbXXMTLLE/DS8ZHQmLMieB1Sz9Mj\nHms46IJP/ZRXgjPKJXSZsAHsrJZ3d9+gTU82ahBcc9xdbzPb70CDFu8CJ930\nQUupoLK5AVlBrB/RKpjNGEX6CniFC7Pwl3jU7rnIuQc4bvXGDP/NW5UuuSlA\nHry+\r\n=oF7W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXcs5354nAmzV3X6SebMthoSweTAzofkfx70ThE/UEMgIgR6+OQu4INMBuM/wUIJO40xo9XlWGNFqjrUqJHnPoHt4="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.1.3_1599822430903_0.7823061326722485"},"_hasShrinkwrap":false},"8.2.0":{"name":"@redux-model/core","version":"8.2.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"345e79d5f436393a010ac49e627783a6e7ad47ff","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.2.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-22oMkCB3aB8OmXmnECgAU5VvoCTztAbICG8F/ylB1R/JPShvH0elHUHPIvn4SYdIRLmZImkcNwlYpLfEAQdODQ==","shasum":"696cf4cbe3195c0d5763e5dfc171af770811cca9","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.2.0.tgz","fileCount":54,"unpackedSize":99328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYi7kCRA9TVsSAnZWagAAQQEP/2wUgzssLRADNl6Cy3fO\nwPGcLTelZLOwyCtxTHUUaF1t0ceemtayl+qmdMnWaCm9FPiRY9bQIKnuvUKy\nJclWOF6SEvQY12DLzf6rgzvKhYuTlltHfZN18J36mB5noO3isqmc2t8ZDphW\nJY4c1Dm0cT2dyyam1ehUAulm1iMFXO29MgPLLzBTO0Nl5pD6I4yDIVjJ+wBB\nOBHSEpqcBg4OWzGDXFNRlNRgrWpwPbFGs4wnOk5Grl6Cr5d1dY9lgi3oQywm\nT9u/Jod60cUSef3eHFDv2m8sTqhrWHewnkrFCEnslkUP4fWAFDwJeIATrpWu\nbrhdlpjrH1N1OaM5fTB7VUXT4WDHV9XcBmN13oDT05GNnu6VvcA9Sxp30X0+\nn0+9av46j7YazeGeEKLDuXC5o+AEW8w5Uv5G5fxCp1B00FdMhKDPneN5DUPz\nudcA9VvoBEI4uVKisLiI1FMNP3dw23UDbPSiFIdI3K5PskNlg6IXOpbxtLoo\nAI3ZTjg1P40bYDrkPd/kP99/YGQUFHBzJd5XCs+02IvklIau5rOhldBqoQAF\nXYc18IqEnQ2SFhCIq+ZxvhoKLN5/6SFea0Q4Y5iYAoijoaOFf8lz/0crCySg\n5yDPxFhryz8T8g3jgtxiAtmdvm9BGHAJ0gYtyOV8W8vfFY8IJq2Er45pDMhc\nR5hl\r\n=dh1J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDZO97UJhbLS/lHi6ZPKYtpG6GxYUdKPgOzc1NgqEPFnAiEAgFOotZyVqIRNlBbhCRSj6K4sS1XEyOtZfAMXYaJvyUs="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.2.0_1600270051985_0.3244279717477181"},"_hasShrinkwrap":false},"8.2.1":{"name":"@redux-model/core","version":"8.2.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"4c2d91976814e3ed1e7e1fbaae5916117441184d","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.2.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-kKzoVNwTc2J13Gb8P/Xb0pTFBGzWiAsn/Mdna6Q1bsto/rAaqs3cEreIlf/a/EYRrxT6Az/9GSA+pkxaq0fk3Q==","shasum":"351703ccdb84a7375fc269365298bb772ef11246","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.2.1.tgz","fileCount":54,"unpackedSize":99319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa2nyCRA9TVsSAnZWagAAPzYQAI4yZvSD7i+DC1bOgcEG\nLfvA3XmiP2ZmdNxXL0Wg0f8uDaGrZGvxRrIJEjAL3zN4tLgR0YQEQMbABpcn\nLHJY/4JtxXiZJM3ZGijYXe0qCFnZpimnykZZIeTxQz0TRjLM0ImQq70oBm76\n5LFWrAnJjpy/CG5VG6XgNUZApwGie/lQX0JuMGM0vKPTrzVIJ30U+XvrCleN\noWtE4XfJ7cLWA7O1kP93xNkvyAG20Nq2nh+tfsuSSdlpGPXYH5deLsq5cVtk\nE27SEz8gMVkJx1Q8YhD71MzZLKc0Ix7SqIDc8RawaXH7KgRPwp6fS6649BWB\nHic3DGY1g6T8X+HgiuH8NwFUT/wdzK91bDRV7e+/uiv0ZQO8kdnxwleY925F\nvNdFmhCHdAR5WhrqfaG5Hp87ZR38oWbmuwKy7goN1ZHAfxwzkI9lP4RbB7wx\nEVTONBILS3gTQP7w/po5yBD7M6WDi9mY0FDYT6hOxwAKyGVESqY6sovKrTxW\nyFzAwt33zNuBZ1MN3hsgLB1JbwVRme65aE72Ng5MBo86BKFTKvN2xS0k0ESQ\n47aaI/hiVdvgWHXpX8Ztxr7k6Mzqf2QoGtd+yN9MokLluueMDpMr7R3AYKhd\nw2KjPwGgyESrRfB95jJlQHaJqfdacBdVjrg2reMAXxOD336Co/g2m1mJ2qar\nnjog\r\n=7Tdr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMXdl+zAcdr8bYIRIuZBp1n20wLBwMndaiv6cs07zuygIhAKw4k34lh+S/18oTlAWyhVxmIiV3+/f4Ya5CeNViGzTk"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.2.1_1600874994082_0.15301488159788668"},"_hasShrinkwrap":false},"8.2.2-alpha.0":{"name":"@redux-model/core","version":"8.2.2-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"d86cdc96dfc5f87e8032e5c84a498307507b1236","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro redux react-redux\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue redux\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2 redux\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.2.2-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-5fQN1ibNIrYK7sUT37RhLtUYfmH3NlNeDjl64XfhSfJNb/UsQWM9Gn4gMI/UK0azHNJTcvMblv84rf48XRpPWw==","shasum":"4b261f236e4388d036ddd681074640ea5a7ef770","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.2.2-alpha.0.tgz","fileCount":54,"unpackedSize":116694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfccV/CRA9TVsSAnZWagAA6AkP/1BehEsSRg1cH6QGhmdg\nXiv4ITWpMVBO/R61q0iaIOYSaoxZapuRBlg7T5cCCYzjOTrG3mFubwy+5PqM\nJNomPZb4wTHI3nYWNrVT4uPQPIrqcFhvr5uyyDvBRGy8mXeQgKAoQVc4+unM\nLcduBvc6iUSNOFOJWk6JVr/c/Nt85UwPQnIVDWh1oowjUO0y8CHbw8JvpXS0\n/QZTVwbgFN7OrsLXlf5NnGFbSFMpPsV3RVaJ4IO61tWSEvDoJRp83QpHVx6U\nlMqBeftSwflipz6zzjx8hrCx6ZVmJVcftYba8MmidXTyVhj0L75GxxCToQzu\n8aGvuIjfR4QQnRG/yckdgnYXdR5keXYHl5eU0qRd/1JUdL+dWYN9zn/t5KZT\nT2QFW3DgVBchsqKzkOGEfDzQD5RUr7ByMTWnDR2eq0KXRu1XsH9lQQgYKwb0\nu2QHY8RxysWgMiHFSSdL4e2LOsevh+9QDxQUE5XlX9U488RpuazO3EDaL555\nCkcjREOsTyV+xUVjCRfOLowqeUXfPd63SagQdLEgITtoP3cOBwyFqRinn2sj\nHxdXhO2vy4bgZqO2H1i2CQpur33LevGoAYd20e+K5FRt1S56Ie9EVYnxn6gJ\ncOuwtSeJomlpZTL2eR7wLKgXsbgJbFF+0v6a3GxAzszGubfO1J9FUwW6M/LL\nJ9+b\r\n=x7Qy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHAkBTYDXl6ECHmfn0BSHXMc8Pwwe6tnhUmWfYT84HsvAiAqKJXNNDGhzzUp09pQrZNPLnwj9A7RiAieSlcpSacuFQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.2.2-alpha.0_1601291647305_0.23962201257832327"},"_hasShrinkwrap":false},"8.2.2-alpha.1":{"name":"@redux-model/core","version":"8.2.2-alpha.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"eabcd07856cf33c01bc898c848d09d22615afe85","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro redux react-redux\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue redux\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2 redux\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.2.2-alpha.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ubVwiKcN+/ah/pKuK7yflotXiH3Ui1mkHOW8VtEBtb54c4eDc+72XTgaKqTHFnvUzCKpz18zoRTUmF1OD3vyEA==","shasum":"f212ec8c44dc9ddcc008868a8a615d7e1cfb74b4","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.2.2-alpha.1.tgz","fileCount":54,"unpackedSize":116470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdqJCRA9TVsSAnZWagAAuLYP/1jL8IEyp2yglpo176ci\neYAhm9ZMc2T6tNqYZ361Svk9c82IqXVM6EndDlinUG3u1DE2sxyPw90BAGtn\ngf1z97rz6QFBhmCYGTE/kTLI2HDrq2ExecrsQKnMsCjE2Yd7lFLZOJK6pCxI\n258nE6upAxTxCK8N5W2ud/3es6fE3DRxmyjDUuYlCCAVKBzYQNEQPoXmlVjD\nTpoNzhxABcwlNwgceJbftzIYhkd4I2InPZi5G9E2AwbxYQDnRC5Yba8hJJ9T\nqKqVV1AnPyA5EPYzX7lffLZHT3wqaIxPufhYXxc88u7Kf89Im4xXnhInJOql\nEJpKNLkHrguCh6ReZZ0TUiXm1DjpeK7KePaCctl4CnMELmaU5GOZg+wdMFn2\nkrKpvduvmu1+GRAoYNwX1LSDDHyuVs3UVMFy9AvOvuGWl5rAdrW3QKXKJ77c\nfR4Lu4jBfdYNNlZ3DLitkQyfUmVInmTm2AVmDudCWUAPE2OWzofzj3A1r5k5\nFhMVWNj4sKuAC5fS9hQ6KS5zg5kHg3NvbUZ0uNZMTNhrKO8MzLL6b3RVQJWp\nEoNwH+BGLu7bU21vFtnTWwS3Mxbr1J32ifSPtDfeHtvD6i4EVcVSAIxRDvx4\nURARkpKug/hNvOpzGMByuFxM/Sx5R9347rR3HpQCQEcJE5qAORGSoWkT9POL\nYf2J\r\n=jK50\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6dfW7YWj3eMORgZIXMhxHt1mWc+RxZSuxvdYkWhpWKgIgTR4oB+kFSu7IxuqHdGf9314IGIyeD6rFqsgeJ3fAY9E="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.2.2-alpha.1_1601297033116_0.5892028914457679"},"_hasShrinkwrap":false},"8.2.2-alpha.2":{"name":"@redux-model/core","version":"8.2.2-alpha.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"2f1fba5c8e719d7855e85d19b32622fea0d0a0f5","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro redux react-redux\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue redux\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2 redux\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.2.2-alpha.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-Ywv1Nle7ff8A4Xmo6OdgfMKq6cm5ZJEeSKhm9qZnaj04FYOTtoi8WwNLkb12vNXJa44iY/O493w+Wy3eovHIaw==","shasum":"5d58aeb32e66c739a50b6d500376c8151a7ba14c","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.2.2-alpha.2.tgz","fileCount":104,"unpackedSize":214424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcv3xCRA9TVsSAnZWagAAnkwP/3i9wvwMDZWx9dxR4o3a\nQIsdu/0SNsEezUSTf4DaWsOdVPMdmEEV7pX2V7QRk4jmb2FO3acFut/ZHbk8\ngjDEULkmsHFm8gkdYXhTGeOJLUnFrKDNMz3RZ2rUQDHgdRFOy+mlhQlIvjLM\nwMJYn8KPQDWv8n0s4NQPgMBRSJiI3F5y8wAVB7IpXL+8RMw+wc7IT4NZ7uLd\ndQHeOLpRJb/7m1e3nL2/iUWTJ3DlSFgSsX8MUePFNwLKCRZNK/o+RuZLUevX\nItSjWfCa0IvgdKeUQV2tD5vTevkwm6+K56D3bUha3noziq7ntRlw/d1xZWEO\nv6dkgmHkaqbNUlTR9WQfFc5vjOFWc5rK24f2h6RDeQ/J/SbI3pDVPp1NtqBK\nmV3ew9plP2JEF+VndjPDSZLJ0nCFhk+t9urH/8/fsinsTMOjgEzBruBBTsDG\npRU0zBf5LSc83WGK4j663ybIQiuZ9tvo5usMFjBPM9YyOZ9aeKJ1SOd9q2OO\nagE5yDyNEnMBDomroH7MRuR+A6TiZNR558ywXvkxFo46Z298D2VU8B1kYlOV\nuzzxGQNy/bsmYuPgV2bL2thxk9rOM7TDxwX5zVvM+8aNPB/Ypg/OtLlfbsZI\n37MKuLXPlcnFHKHLZuILXSKHzPRjukQwE+CRg1x8YbWT7bFAVC5HOGB4EJ5c\ncj4G\r\n=Oy+L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkmE6hpMvP6CXrUWHv6kiAsBjXe6klDvc4i157bdZwrQIgJx1l8LtO+xYkTI/bwjOf8+OAPLaME5HJREJ+dYuLeSs="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.2.2-alpha.2_1601371632928_0.6165325116664011"},"_hasShrinkwrap":false},"8.2.2":{"name":"@redux-model/core","version":"8.2.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"3e6c6e411cbe69033f452fada09617e22d61ff1b","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@8.2.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-VuUP1q0MKMZXe9Sa5pu9CMecf8FcT/+EIh9GxhmXiPfjreDm4Igh8RcdrD18fb22OPuwr9ABrPee6ZLF4G6A0A==","shasum":"f3c082eea5f9e8f0a3ade958bf9548320ab4fe0e","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-8.2.2.tgz","fileCount":104,"unpackedSize":214735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcwNBCRA9TVsSAnZWagAAJKgP/2v7B3MAoqdecrbs9Ub8\nPgs30Vy3MVSojtQPvF6OQsFznwBOyyVTiXJepvpty30oeNZZtDfuNUhjoEMm\nXZZP+XRXLu3rrGX0DInU1nhE0H7iQ1b6bY/+xXCnruGF8VM8tbDP7fw0QK1x\nA824fWejCLgknWLYtQutfD424X0lO5hmJ2NWZ/0jON9iVZcWhQr5pNCoVYpr\nxEK5G6l0XwUdQD5w+V4AnNR2hC9Gv80PaSOY4V6GH93gjhsferwrpNeY4frs\nwNSPDPAo/XIJVm2JfCoVCf89Vou/sidTdVl1oxuM8IUDHH+8EADlRVcb+fbk\nVmfKAVagEdAKw5KCQ9toNrm9u3lfiVhepDEI1kt2b2+zBU+to/xFdBQBJ82Z\nz5XznaoqjJAbUttNHE7NG/ZIytA88uYbwkdDYjghq9a0Q5w0RSw0TcnTjKW4\nVjI4VtkqmXmZUbSFq6YLtyhCPVOax/JJOLC0ra2xSk6w4UljMMrZhhyVt02f\nx45YR3lbZb3sxBHEfs1N88S2SGCSxudwqsMhvxz4/I+Lola/qkzHGeyyiwdk\nHUMPOA358+/Ti0M4k5iD0PtvZLlK5PDNCizela+GSyp+CmA6F/eLCoACF0nc\nN73Zu4pMOyQfS/p+f/ADlIe9BbIIXE6T4yIUMJKgwECXYlasA/9fgCalVKVE\n2RtJ\r\n=jxJE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxJUa6SBNOngy7adATaB1x04JU1v3crFGHrVax5FV0GAiEAswlWMM6pmqPmip7Gqr00iGzCLYgxE5Egs2KUmNesix4="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_8.2.2_1601372992623_0.03308822368394515"},"_hasShrinkwrap":false},"9.0.0-alpha.0":{"name":"@redux-model/core","version":"9.0.0-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"8b541184d11fbf0e08fdfe5bd95e928021e34bc9","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-4dU+1d+/MMd2oy/MmcWKKUO9liuJ8/jd/0LVfDDaxaqhCGAZpeHKFAPjfpGsahnKuAsskbbOfEVEYFLqRS2mqg==","shasum":"0c597d2fae657c9175903554a815d3241c3010ce","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0-alpha.0.tgz","fileCount":104,"unpackedSize":211350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdCp7CRA9TVsSAnZWagAA/7MP/3iCp23/eJUtMM8REwfc\n0V7X27V8tuts9iK/G1qrVrq+unYn/b+7aUKh9c+s8l/TsvFraNRZaCiZtCoJ\no+KTZzQfQ6iTtp3L4ZEaLP61io1LBCce85BkSaFPIl1Rb0nasSG5y5vcTraY\nZQhfcGeXTJ/j2/73+ZpciiQ5k66Ho+BLMYYb3CGpns9V/FW4PfPkKGDVGgpj\nteT/eqjnsL3V5AFUKdShCCseBkRUEc7g94g1cmxIms9baJq06RPwOLtWzglq\nACNDrM3ti6dw+UQDPrlbcLMyZeSzhMSposhhGHtUaNhACZPvdLcbcsYpmDNc\nDnVdsJeJXJV8TBGKk9xwjQEkssxAuh0HjB7uimALKBBaFVPHytU8K3MlFP/w\nv6CpuHtR6plee7/ElcVSvOoIA/D89FhesSz318L1V8FTYBrW41M8wW4j+T9q\nS73GwG2TZwPICZs4FfkI38DVXa9lr4F8WOlSS6RPB/H1dn2Edt+fNetZkGuW\n5Ujb5DOd1tLSc/YbQttPQ0/rFpvhn0VMEeGD62bwhERg5oyavBsc/mM62ADU\nliJ1j2UAkCw3f3NRPrV3tGdRULe1BR19+HgYl4syBUj+2Fn7wGpfe2O0b586\nHoG/Ymga4OM8lgYo2ZGEkhp2r8jnRSCFBvELpcUnRKvTimR7Rcj6DrxhUDGc\nbd4H\r\n=SS/c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDKFFunMWPNXw1KUsYDElc1E3AzleEEZ1OCkzbUDPkcdAiB6nJ7t1yMifQ+9tQHCBknyJ2esC2383nT1yxHoNpJKGg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0-alpha.0_1601448571354_0.07448532954901443"},"_hasShrinkwrap":false},"9.0.0-alpha.1":{"name":"@redux-model/core","version":"9.0.0-alpha.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"22bdedca6f34e19bb50e0204177e358b0cc81efd","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0-alpha.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-/nVWeiYzDANk4QTbpra1bYqK+QsT0a6FFWZp/L1FHKQf5QLmD5jfyUcR36HBX8RcI9W7maj1YNaCCkO6bSybQg==","shasum":"a155ab5927d30f200fec64e61422638cbeb90574","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0-alpha.1.tgz","fileCount":108,"unpackedSize":214445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdGWCCRA9TVsSAnZWagAAUKsP/0jEW/VHk8VjTYmjuy5B\nyNAF9oyIaaLSVlagAq52Q9GiNSl4yHHZksioejKW+GZLSs7G9IY8n/xKw0M3\nxrP3w7p91a34C1LpRN97/jWyeVO8OCAahCSo+TVZHBi4Dc5tH9wohS8OopMx\npUuvvOBQkRi/f9n44gByNOrut//STfNgkjOmNFcL9l/4EW82lrMrOal5HrRB\nA12xMh8nAbyGH7b0bWdSWKRRl9NBZ/YrDeOlKBr+mzCPL+8ecOyU2ftkjsRV\nBqmGUTBd5bUqoEjh9w8vEsCpHpr3hYRT7U2MfFHaNME6Zm8uUF/LrNDnIzuw\nareEzcrI2mzn2gjf4bayEWFIzCv7Sc4GBe6s0eamICpGB/9LPLitwZLK2StY\n6z8lDGxEj34+upuRqUXhBNYdNfI+jbpd3LqMoTOIaeGI1hRJzpkNC8/2krpx\nRIRx/cc8DuYCWufzgfBGFdbjWHMQ2wvHVHU5oPiFwlRyQkb5P0fhsnFTRp56\ndy/y91WG4+VcX5yJS45dYH7y+S2+WP++FmMQ8pw0+9HZTeTQbYFkn6UbBKJ7\ngPv432xI/mjoofPyGbOLAz+bYVMTOzv4D9YizTFgGYMN5sXyqjpHxhZIZFX2\nE1NV3H6HNP/6ZghNoy95X5i84sybxaYhMstw7bwH4MV2682Hwp5UMjvitDiQ\nkLtT\r\n=Wxwg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFp4XdlRNS+M3+Z0j1drIWCSRItlYfVOotjhoQwfgnJAiEAo43+Vn7r7YR97OYQbNBmC/0ncr3rENIoopgvlIl0yis="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0-alpha.1_1601463681807_0.4678494132372044"},"_hasShrinkwrap":false},"9.0.0-alpha.2":{"name":"@redux-model/core","version":"9.0.0-alpha.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"4a29a1732782e6d3375a6c7325945e225adec19c","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0-alpha.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-huRJzm3513naaP6+a9EmLUO1vGsrs+qRzXiJSEAn63r7zU2uQ5BrgSa/n8Wq9dRgcBRcKAqjmt1W9LmM5e68NQ==","shasum":"90c964fb76024e77c95d52d29a9284a3690ab677","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0-alpha.2.tgz","fileCount":104,"unpackedSize":215085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff99dCRA9TVsSAnZWagAABS4P/jSpe0IZWW3/ZyLBDCcI\nV90VbyWxVwsn6bJn4LvlkIae2+Jt/3ccAYfYXYvLYmXjUKC+SqFFnE/w3Gy+\nyPTCOEjxgLzlA41xXfQ5Dr6ywrhB95eKoUc+UmhSRwtmH1fR08BfW4m9kjIz\nUqv0UtWILXDsALFMpdRoL8Dsmhq/gwTTnw+rMmuajXqbxtCGNwgF24qeBPK7\n13rasxIoyCkZidUdE3dQElO8VbkU+JJ+KsRg56UFpdUmRDxdiHUS/VZJWAAR\nwhOZGCrahGk0iDpAb8g4v5PSVYtvzP09YkvycyudLg5trbRlYXUUqp7b2LQu\nyQLLIAeYQfpCJYAt125c0vPIrPJfWGcIheEgiORlQo2aCy7j+fGqo3xx/t5x\noAm0La7WDAtbCDl/7QFp/2CppKDhC8E96ql8a7MbXTsPt2Ya1/h0zAS30BFU\na23YEe+L/sx4HfEJ51AePGNzEjtWfxlGcnzTH9UTWgxLyvZOUtbwD9pCaKD4\nEF2IgbKclmUW+H1P3T4TXKrFgWx/36iEg3TV51xPRjzFJWpl1+gqU2yEbH1e\n7j9bZqUoau/cJVA5EGzHAZPxcCCq2iS4oMX+ks25pItq1LIZrj9ehixqA/b7\nRY8gfcZJHPCgNahSaZeTn7U5YdSq2Cv8c007X2S6DCdQ12WebznFCJoc5f9I\nmR45\r\n=klCE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLAvXTF3e4iH/bsvfoYHnJE4mySCoHzCd9FLWdhJ/yGAIgAwJfICZtryYowHyYrFe45i8uORjpVlJmuCg44Nwz5YE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0-alpha.2_1602215772944_0.8730280995655408"},"_hasShrinkwrap":false},"9.0.0-alpha.3":{"name":"@redux-model/core","version":"9.0.0-alpha.3","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"8964d3c4ead7b6548d4be4c49700c5c65410d392","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0-alpha.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-R8AqckdLr7U+JsvZDjW/4qoKEX7ro7SqHGGzpHYgnf69MYnzC73mM3ebRda7fn6t48z+skPgY9lu0j7DnY/NZA==","shasum":"b14ca3ad752635e9bbe30573bac7b768237224f5","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0-alpha.3.tgz","fileCount":104,"unpackedSize":215977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff/cPCRA9TVsSAnZWagAAlRcP/2k5FD/SgfELxkjgDFgE\nKsGBPyrlNG1u5HlMfA5Ej5CgaVg+6wl0v0H4IWVPKFKi7WcvjkDmHck6jatN\naxx1nPE3Lw0q784tOAFYcTqmhl8/zQil5n3cbiyXmbH9j3g56s3jsfhxQ76W\n99EXobM6cDzdjmUMoKyWFenk9oWKATEgEcTw71uNmOb9auAfYrz6ct8fApog\nAsvFo+0l8208it7yS97nzX2mAsAYdfGzjkrjK/SHFPWHpoSzXeI+qhubo1dQ\n/wH90e48pzADURI/dc0hEvzPoObtmX0O5OFk29db1dvdOqNY2TWbteXFZOz4\nf7+QXEfP8DfcuA+FfFvuKyW9jN5Mr31SOh+koKnfJGAWkrCDx8wdyTJJXYeI\nALoV6ntamkiA91LxkuIC2/U2IEp4E952aI8egnoBaFGTK7sTDO0f7T2mut2B\ndcpNHvtdZLgWq84H6mgpRtoMKCmLy25dsxUzbEx6zKXj3G8l/s6woOU72c2q\nfddQPr/yybYGcp3o/qJ9uWcD2tgKBXoz9Zq2NUW0DuBxzic5mUKRu/RTugW/\nc9dAconAC27NiPIKayhglG9n8N0Fpou0niSX6zifSr4Hvjku4CTtDEj9xWq/\ndc611mbzR5cwZnq66T669UBtE9SGSgthowl0PYWbk9Xh3/enlgxhD6VjAKj8\nERjX\r\n=HQkO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiPFKYl9o2kATlvoadQbwbyHHkOuO7CMJn92M111B1igIhAOgw/mUqR4EETLI1+T3xOUM+qWBM9zKHqpMqkmH+weG0"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0-alpha.3_1602221838580_0.3179109094513448"},"_hasShrinkwrap":false},"9.0.0-alpha.4":{"name":"@redux-model/core","version":"9.0.0-alpha.4","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9","tslib":"2.0.2"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"f148688b98f361d0f6491ddcc2d3513d1509f303","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0-alpha.4","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-6Z/BAChR4R+17QpenksqlqGEBqZgbXSiOj7TvHYhEFEzwMCju4FY99zrgzkYV2Ci7g2UQeoAqE/pRGPL4K8t5w==","shasum":"f5ce502083ae8ebd2017f9c2e70980b837b6d1b6","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0-alpha.4.tgz","fileCount":104,"unpackedSize":219706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgDqTCRA9TVsSAnZWagAAvuYQAJlnFcbC7UErPdHxVDfs\noC/E/0hFuuYO8j9J83yymMiysxuSndmRsy9vw+T04str1vwXC/ekmSObpShr\n1J674ZJ5IS5zIGOuG+pDJJj5hT+7frtdcwhnq4F5HVs75VEmXzRSSHp71a5t\nTrnhTK2uYt4EoeM32mR+DSpxd9JrKbmYs/Sa8anzyTq7oDccdsP+/ACOjQrX\nJRQE8ycRETrl47tVV0F+Gy7Uo+zNYJRFebsj/Yq7XoYUEacQM1aNKtLQe6z6\n6HzRMWvxF9HQO806A90Af5oCLXsNzlZc3MX9rRZBchwvuQ/58HrxSKdMfYiu\nweuixhPrjbXc1sfPhmZsHztmAdbVLDYBpOS0DlhSBaQ4EALjsI0l8SS5XMPX\nofhs4Pej9TeEDr7aQ7B4wqY1bMXOXl14dAL9qzrfWqucaWIby6qr6wxKyOHo\nADZR6hB+wHUNQ0tOxD+fTrHFgN/Pg52z4mFSN/1lcjudYhAVZoxsJy/7Q7nu\n4jCTrz1MI9zUy0AUtuzkHb5h+I23AOZ/OS/WAdlH8fTt9uoUEh0OCep0fFk0\nlly7MEVExDsu2Z6N7AyxsLQvfEPdE+yEGljCMQkAgFHLKTWwLL/OVdlDj6Xc\nP3Kk0cX5SwWnsX2+xrSIuE6EWa8rbdm8OUuxTGyLSjaruWMX52ejRPgwuN5P\nkZtc\r\n=1qgy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtJJhZjXuWlHbwhHBKHNJ1fX3f6UOxIrkcKm8o44a+ZAiEAy8WcySE0mjB+p8koYzt2gth44XdZIxGAcPuy/BvhFlE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0-alpha.4_1602239123137_0.8860730269802761"},"_hasShrinkwrap":false},"9.0.0-alpha.5":{"name":"@redux-model/core","version":"9.0.0-alpha.5","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.9","tslib":"2.0.2"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"92c1a803f5338e2b7b0e9ca34cbf8613da8f9347","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0-alpha.5","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-94KQ82NBStZ6RaWZJbEUj0xRlc7vT8wgRwxEowgPimOD+cbTb6jviuHg4xEkxMi4V7rkRGtAJvq4pdxMTElRUQ==","shasum":"b38f2788c488f6576a6be73af46edb84cdeca39b","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0-alpha.5.tgz","fileCount":108,"unpackedSize":225398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgl+9CRA9TVsSAnZWagAAP9YP/RfV/K9kBgdGAwx9lhR4\nZI4lbkf1p+XOWsOLV1VxHNNOGljY6lyXTC5ZIvK2EGXu9Fb1yVJ0mb6dOe7b\nnk5XlLeGIznggbAXZrWMcGzt+0k8g73P0OKHVToTbcuiGfW1PgeznUXZcOd4\ntSddkasULSe/XtDRdaDTDUsWQzaKCpMvj+FNurVBIwycQnK3aK2dsDWT0Qf5\nOM/RB5QIubgYOadwn8YmeniabA5zCC+AI4qLfP0fk3Wy95XZlkOlbwxFFMVT\nMlWdEExHkuQwxlrgCOUpB04o+3rB13+wvvrla+J/YCcx74v/RMaIuibm7gf6\nbLSAKadbRI0dXdAREIrRiaD+sm6Xz4UlGR6OO4FknbiDbgYs6xobfAzLPrxn\nmrPDYYju2PMY1ruTbuORNGm/YMZl5E8NWWmCx1jBFgIbA3bEs4+qwNzDAIFM\nRZN+/I7/Qf16bh+PyiJD9ODPXDIUyL+m0kiG+M+haaboICwiz9+IydFo9nYL\nGLBEofL0wrywsrrAQn59LcRIfwE2Tp9Isj3fnUBPGFeB1AWJ80dgA532kYZ/\nR/0H0Pu0+LHDLx7W+RAqZKf9/DsRJXqPsxXLvxTiu1ZfB7N6uVpWyfs7Cmw/\n25ZtxNQ/GsPDzbEVRLsa/ADggC7OpJxsfb/m1Olj0IObh6EHrJShgS1Ursqy\nkU2U\r\n=1WJc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2u4KwQN35hlysC6vWkWIJnB1Zn+SGAyl447pDavT1mQIhAMMaLVEAnq7crP8OdhWbLmWJTDurMFUeJzt+KAbaK2I2"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0-alpha.5_1602379708553_0.41830711409866494"},"_hasShrinkwrap":false},"9.0.0":{"name":"@redux-model/core","version":"9.0.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.14","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"5ed28ab95a8f32184046d8df52b0862e9119f2ab","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-f8CGHC6cXzHZMzZeYsGCzpkOnXz6ZJoD1kF8RNiUci+bT6oJcUE9h1GyfmYYsvyerCBO51DwI3pQvuKOTA+PTg==","shasum":"19f5e30484d545b5fb5f231a286fd4ce73283a08","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.0.tgz","fileCount":108,"unpackedSize":225546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkF6fCRA9TVsSAnZWagAA0NwQAJP3oQHB+jobribBtY5D\nFj3MiQYVe8FrdhkcVVX7y3TZ4LmG3U/PBhOWwpOagF24QCRjLKqanSUSliQS\nwhUayWC6pydCMa42Ecn1VV2sguVniuPnbgUH5iFwJvn/iwScNUoLwz9ZDl9t\nkz6TFRiO80uSyD26EUc2htcEW6TL7Tl4M50lQljiLQLj3GlXDajVTo8aDsjE\nosK2KsIfwvetPmWD+SA0iSaVl790cBf5mTArXOnPqGFwhgB22T5y5Y7intX4\nQ9Ryez5/+uG4NrLi/lpO0X5N/oUFGeJGZibgIyrrbnQU5prfsxru48hx9VhJ\nhnPHj3bFttbp0Y95XoJey3Lce40YKRvpv2Vqan5P7MrkBi4v2NCh+JnjQhfY\nPOqjxI5NS8exdaVMfn9OzVTd+UFq7zCMbL3FohiOwJi9r0dNmJjRhE7yxpAj\nQpg8b18YdjEcGWShLCaIfmIFSUwDi7dt7JSxoAjBHwBg2rLwZIA3Ryfv+qa9\nxrCsGBUaIckjAC0BaNk/NVeAZSMD9QbELj1VrfagEQ/ocksM7UX574YNBuWH\nZOgZML8u18HJ1VqPtesPqd4wX7FLGSNYSP5ndYizLn617LlaUtnzIB6hAcAj\nbaINzriFDjx1+YfG15bnhVlVh7zmXrsRe8KnagSvAI9FR9r6XUi3iGkG5z2b\nVuOP\r\n=uHA6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7R71pZPsI0t5j/Y0Djf6J538N5lXHsU4ZrJGHKBn3cgIhAN3qo1WHES819hmTB558u6C+9y6abqLWFFDzgj0jyBhC"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.0_1603296926992_0.9170764476167979"},"_hasShrinkwrap":false},"9.0.1":{"name":"@redux-model/core","version":"9.0.1","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.14","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"64cdc5e38022304ec8f545f8bc8b9b8c2e2829a6","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ZAJslAKZByXcbOIrQyDOFN03w6O9FSWvGPu8rP0LIXB2sy0g6hRMEcUfQy9ZoKQzTNAom03kFLSUs+evDwlKCQ==","shasum":"21e7eae07e0fd968fdd60489d48d1cbdcc05b8e2","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.1.tgz","fileCount":108,"unpackedSize":226196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnjXyCRA9TVsSAnZWagAAbcEP/3Y9RUOrJVqmWjbKdcF3\n6/ScPOl+5sa4TnCblHntAmBjVDLLRAS+clkFprhujonwlEqbKrRdUl3JR4B4\ng+r7kZPfjStLqgRsbdCwd4ksbdgk88FszYLniUA3Q+2/LsBOpMomGtwfrePi\nPHCwMi2odrmdgoMZOSAtraRLt5og2lUiitBaKpAEKPdX7SY6WfzvxjqmHGE/\nKQRchyT7fu7nGDrvV7+Z7jsFTk8BffxMFpLH1dxCl5faBuFc7U4OlbnJZyag\nWy6qi5ElXXGcuGgwNA2c/7WYh4/oSi0w30PRlPfNiXaIfW2ZlLRgxe/5K4TN\nEt31E5kfpNngVTrTjCwlCtq4yYfTldjmgAXJihnHX9Fjc1z6msZNu9JtfeAW\nIGmk7aQbsLh4vD3WMnULUnZqqJE5vciN3YuwlFGGXW/972YuBOXY/b0NBoa0\nI0QpHXKgPpIJt0rsfGqjRlxoxuZfiy6PM/kURG1XWwYIe+axQVd1OaKopoEr\nP7yYGzuvgVAGtE9xNAnzR94SwkUgOZYnEaxQy0PsTWKCJZPBSYPf6mpiaAA8\nWCNTFLZ1t7GsoebzlrPmCXX+eQcEqDRUsA1QU9g3PGqGCfg5/5C8Aq5xzzV5\nOXuu1S9VsCcIWvyAp12cQjaQfAIr7Ak06/D+3rfQNLukQstXFA28Qr1tC2sd\nhCz+\r\n=2WGc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgjJK1dZHZmRWS3CMxrAATf/ELSatgOpLrVCLK2ZgIdQIhAIkxjv+2yUR5YpmJdbBSgUJ2z6QIB+3vAjsDyGorc+HH"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.1_1604204017505_0.6951702543585485"},"_hasShrinkwrap":false},"9.0.2":{"name":"@redux-model/core","version":"9.0.2","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"7.0.14","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"fbaef786fc41954f9fe6f9dff0e1c81d1c985a4f","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-XOI0JLjFyUM/ed1yOARmX3LsXkqh1VbIN2X5BP5YQfcBCe/8mg2GBVwNX84UAtC4+PNCkMHOfHnmITmo3p/zng==","shasum":"35df0c39f3b00331d53df961f34cf968d5a3318f","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.2.tgz","fileCount":108,"unpackedSize":226284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn3mXCRA9TVsSAnZWagAAG20P/R8XeKA7MrLh7rKTQ/yG\nt8ESknPIc8Zmct+noPnuKDdnl1pZcKWGuxGfRM4u72zr2iX1CDCYOGr70KEC\nd8eQ7mZFrwEg/rh11TQhsJpedmNAc6T/L6sfROB5WSz1Sp3zW2umj5fjjbHn\nqQN70rahI4pCI4f+TIgmI5xtZdZPOHgGB2/xyZ7SVV/y5MCHWyNghg1U04oc\nuvVRQz2B0ToYZHKNCnBWAQnfzbBWoxagVoJnI0hO8Vx33G0FLKjy6ofJzrTI\n3rnS6y5rjW56z8m2nECTC9ZiUvTRzgxByIlXq2JrSLKOckxpnluoqXc4VQ4k\n6UtvD7fnhVIIV0NciMbcrs7T+NQARRE9CTEktL7FyHiG72Ryp9x/lPXw0WHR\nKPF3aDlUYxSP4hQstj3/PMHm5BIJtP4XhZbDK1P0WMNMAFVKlaJFWlmZCAaf\nZwVWmlk9f21aOoyKoTnHeneANyxM4sHZ+L98ICt7QPTmLjtVy2Q45UMcW9KP\nflAl9/8ZXTgywlSEHRQ9NlszRzgB/lgyCy1XCPX019lhyU7TBy8cw+F9XGET\nQsRuDOYjCg62baIKgFMTX0oZtUqioe4lpJV8Fpk8+qTMnzjnGTUcLlYY4qQZ\n69haggzDS3r3tyHRieWvWY8FuxPxGXl9HmZAZMWdE+ZuBMs2W4nXECVWIPm3\nUROF\r\n=gaLJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZXwg2NLlyN4D28sWOHnubGOUHp3ss14T4swB7ZjCtOAIhAOz/3/RquGWIPamaIa+W0cUyiXIRJolyeed/Kz0uTuSH"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.2_1604286870547_0.30061189381056974"},"_hasShrinkwrap":false},"9.0.3":{"name":"@redux-model/core","version":"9.0.3","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"8.0.0","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"5b8f3c52f0e40e52c7405eaa50b16a3553bfe33d","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.3","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-G2Sqtardb/HlslNlLtGVSh1Y0nrb7ZVI42bAipj+a+U76lQ/xfeHqBfyh3VcUDbmysrXtO8lqPF0an0/qPRbUQ==","shasum":"1abf1646963203c1982a88040dc48e6880c8b246","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.3.tgz","fileCount":108,"unpackedSize":226388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzwzfCRA9TVsSAnZWagAAAQMQAJ+v+cTIExvASCHt5nXJ\nX7BdirsLziWB85AAiuW8Sg0gtfVl/efZ6RDoE/j7UGbyn/IxnB2nKilbBKbg\nALteyRknER1l2IYoRnuQChpLKFA1Rmbu18Qz3WcsgY4eYCxoX6sfGYC8LYRU\n5MEvlIMPbBAdtUzab2nNVXkzONXtcjlD+TmWcRDn7NTnWPSfifGZyRc87bLC\nSJWpkRbfM+ADeHO5J3sZHPAu9sKDzi9Vsz/SQWDqxsfcKA7p4asLJkphMIVI\n5Go81yKWl5lqNZ08hr0PSY1zw0g088zZM9AAYzmjTfmTG6LBId2f8mzzFc1/\n1RTMsKSA1djurLQG20j2T2QvF1P5NJi0A+attPfkw22W6EOOZtiqPWkeOpYY\nsw7smdvLkaj3hxHutUQYogiK3slJRbyFUBwggurS623iLr5padfqj7zXpH5p\nLPs/k2/63rf3eOwTDotEAy8dy+AkQrrnrT/TQKhfR6VE3ZHnnkVR0Fr6YIz0\nV6dwOjjJeGFabVLMAW6PBg8Qy+eM7XDKZo66/yF3cxPtPyAx5ZeTc+8l026x\ncGbv/CNAuK5BhOdUe3P1SkiQo+IIyid7oIxWg6iPG2wMRocbrTUrGK+7xdbK\n/wbtcCrXa7Y0SWw5B9E1lfVwjJv7NsfZ2tgYHtH1t7ASCbj64X2ssz08G/gC\nlMN+\r\n=+4Nb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSNFbw3Abo9r312mgqBXIRpTMpL5nIWSGrQJteBrVpWwIhAMOguCgqoEzJZaSzqquQBcwzHcAnHOvnD6bYw5gBr0G9"}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.3_1607404766626_0.9139418815761207"},"_hasShrinkwrap":false},"9.0.4":{"name":"@redux-model/core","version":"9.0.4","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"8.0.0","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"0a5635e444586acb0975b62ec6b7ebdf054d3c54","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.4","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-SQpF729K8esAwY5sgxSxMMemwdCv7poEqXSq7Yk7HMbkb0p7E+QWZT/XTDdz5Vhs5rX2TkxcadobOHzdzzp3DQ==","shasum":"67b3fd647e5ed2f6a84fd090934053a9efec6278","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.4.tgz","fileCount":112,"unpackedSize":229135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf10J5CRA9TVsSAnZWagAAXrsQAJkz3hWgQ6XgWz+POcvs\nbHIbiSG+Fk4AkFV1kXmqH054A1gGMkV0ZQHqybdydv0OrFc4Yrw711EJ9S7c\n2JMs2Go0J+uBC0WqvU/mXqB2wFsHaguQY4qqWrGKo/it8nYOLx/qo2cowONj\neRU7+Ixm7FqDbVcbP8sqoXUxAa01UEe4sU5kYtBKp+X7qzWc7T+oRmkzMF9b\n7p3/33oYIrxYtFzjOkjMQN46jOGVFIc96cSOFBd3JuAF0OFdkPAAY5Bv1mXN\n4Xpu/SASnZj8di/zHB9/QKshyRCBimr00gzoxxFNZL2N7jUi3YkTalF82XXn\nFMRhJET0u0HNvUpOkr4edCzbq91J0uIqdZfsCFql+tQVcKNnfkTdl94n2Dhd\ny05meRLLNNSxN6KAfhrPb1XXozAE2ejiEKMJ0OrpsiwLQb1ST6a7PfwFkFrO\nKTkxicrCMnlOM236vXK9y6k0Zx3pQepGPkRMqcHIyiwTe8W4sVN8orij9yE0\nlxLx0LuHgzLrc9GD+b+OE+C32QeOKy3UoHUOQedR/0f3g2/eoClLCKO7HE6d\nK6vMhaVhcgUOl8wDO5dOHhOfgwxT9PWAQ4z821xa0aw8S6AIdOG5aICQk29l\nSSwKcmQEC0xLGa8dvfRnXwRVLRkkcPoYu99hRB7IcQAtbLI90vhCfnOcr9M/\nkImu\r\n=ddQJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDS7YLCFDlVMdiUxdj/hbyG2HGHYlKSxLmdJGCLnW6tyAiEAzoMP+wBftDfSX+P+QAr0ow5XFHscyak1chx1Pw4am7E="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.4_1607942776516_0.9163748996410397"},"_hasShrinkwrap":false},"9.1.0-alpha.0":{"name":"@redux-model/core","version":"9.1.0-alpha.0","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"8.0.0","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"c090b08f4b5b57a97c9126e84a517e4aeb249457","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n# 本地开发\n* git clone 你fork的仓库\n* yarn install && yarn bootstrap\n\n执行测试用例请使用 `yarn test` <br>\n修改在线文档请使用 `yarn docs`\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.1.0-alpha.0","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-lFoJe15iDdBYdR6WO520/ZpjwrrC82i3jwz2hBfYkxA42NpiEx03IUvsgxbuBf3Xb3pAkSPNe9KTfODJnjguyQ==","shasum":"85502b32abe7ce396ab3e4eb57970e090e34dcd1","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.1.0-alpha.0.tgz","fileCount":112,"unpackedSize":233360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4XsoCRA9TVsSAnZWagAATS8P/jhRQX5U8oYDVjJNnFiq\nEsOKpKq7lwlCgBbw2bJF+/UrGyKGPnBka6Ydy17ck8xUchYuipDeb9sTgdpi\nUZf4zSYgGm8VFfqaJFoeP3phvNHO7rNHoLKpQD4L1Q+g8QNb4wYbfTpca+u8\n47gLmPPxhkAHM+ORvEZbI04fbujG0k4mCWsiidkC/Moj3csdg4YbyBoUIk6H\nNPWPQf4vfDWD7vqZ2F6drIcm+wXgIrll6sEoN0HqeTFLdLxIugVdLiTsEXvP\nwYym2EOwXKWQUK8GiO8DqXX6l0s8rWNt7rxRODrG7sBLkS7UXpzkC5qBDKRZ\nBHyRx+f7C6Ka++ab5EmoGnKUHZXuQJ4QiiHVqsIaFm5UlXlJxU/VqXYz3o7/\nHdaoL4H9HL50edLxb2p8/fQLrr/AD1xvbueK7yhRdySLW5U0bTtO5ma/bNzq\nan5kvZRUlVjYRAFKYcs51QJoeZla+xvYflDDoGYbKEs9kiFRUlpwM4zwh3bD\npBrfYKfesa+pKBy4Nz3rQgZ4b6yov25WP1uMZSA8bgIOOtTqrVizFXOWEHpl\nfSAa23OVkrdwP9EM8Xxs3Voc7qpCq7qFVNMa1g3QSIS43qMipPk5dy4iDxLe\ndJhzOLYQjtxqU8gU5D8jvKOkzJw0b787dbx72V9uGIUrtfjtU96w5cKz0SIU\nG20c\r\n=EW5T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0Dquq+R8bNZugHNXAkP9tPO3maVu4w1y9PkVdPkOSOAIgLRwJA+QA44Sa7cu3n68bHtnCpsMYPQrWEtdsFLEtZHI="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.1.0-alpha.0_1608612647388_0.2571805802136651"},"_hasShrinkwrap":false},"9.0.5":{"name":"@redux-model/core","version":"9.0.5","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"8.0.0","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"cb39d74a61a5f82a310b9003b9d9b75a129565bd","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.5","_nodeVersion":"14.16.1","_npmVersion":"lerna/3.22.1/node@v14.16.1+x64 (darwin)","dist":{"integrity":"sha512-Nc1/qPzpH+ZObTyCkwqOgWOn1RwiEEivm/0/H2mVg8qwugWDk6TnZM4HhC5eLFnBhTZ9X7vug/f3csjLVY3cVQ==","shasum":"b0e46b2c889a5bc7e22f76fe8e6c709dc309801b","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.5.tgz","fileCount":112,"unpackedSize":232314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8QYFCRA9TVsSAnZWagAA/tQP+wQi6Grk35Ejw9865l0W\naXfiu847JFlOtzIZB8NP34Ih0yeIPDv51HddOpH1adHlGZD9H9fCVIb9rwQr\nr+VypZNteGlXYJs7ZaPKnMKyqIQAjAi7JEso1ZqVVpUNHuYzaJtQbeB5X++/\n47stcVA0uz3gKEhWDl9Nkl1o7a7hPV8L/J9OqPEFic2hPq/OEuyJw5KMFwnL\nhdcB/26JcQ6wcEeLvItfa9hBKT63LFgN3S7wtHjOitHdSds4oAW7eLsQL4Vu\nKzzae7C7d5k4eP0DtSyZ7tH6rbT+qhDydA0cPE7UBQgyg6+tITczm2LpTzrt\nbkUpgOXkMmABVd35ktTn0ee5C16Qb5IplKdb846jCx5B2e6Alg0f2L14iWgF\nHmrior6RJSj/X1TVlDeD39WRd09aVR/r7TwmvY2Yo+d9YvCgtPY84Ysl1LKC\nZJQUyu/xMBforYxwXCKUu5JOexmbQXKp3FGcnPH9lk41LnZMdEVug8CPUeqJ\nV5p6MDviZ4L5yI8BsltJwxe0ubuXu3CntIOD8XZvvmjT1cqQHGwdYZtmPkW0\njbAWT69i5ijRzOdu5EHGi1O2fyOtXj+9Q/wP8zR9jDZMAJc4J9OplTSMwuq7\n0wwTK+IlEZknNaGPO6NJFHnOZFfUVCOua56u1mgxF921HS3N2QMvDML1lw04\nXaSY\r\n=iTWC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB6hNoKUUGxBNCT07KBnlFUrEMnrXfWQ/d3bfO8v9VNOAiBe5OIJTx8ZlCEeB4H89npEKnlQ/2cqhXlb0WCcIPUUvg=="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.5_1626408453781_0.3579096962283477"},"_hasShrinkwrap":false},"9.0.6":{"name":"@redux-model/core","version":"9.0.6","keywords":["redux-model","redux","model","typescript"],"main":"lib/index.js","module":"es/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","scripts":{"build":"sh ../../scripts/build.sh","prepublishOnly":"yarn run build","tsc":"../../node_modules/.bin/tsc"},"peerDependencies":{"redux":"^4.0.0"},"dependencies":{"clone":"2.1.2","immer":"8.0.0","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"1ceb4ebd21ecd4718d2255783a85833390e3ce6c","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"homepage":"https://github.com/redux-model/redux-model#readme","_id":"@redux-model/core@9.0.6","_nodeVersion":"14.16.1","_npmVersion":"lerna/3.22.1/node@v14.16.1+x64 (darwin)","dist":{"integrity":"sha512-a/n5ANgZ40rezDLwCrTTNz8et1IPbr/q9uic0MSOtuUBFGVN2Z5rvuVYid4P4IZ6EOF4ns0/QZfuRr2sN6T+BQ==","shasum":"b43dd6e530c20fecf6987f0bb28df750f0f6cbfd","tarball":"https://registry.npmjs.org/@redux-model/core/-/core-9.0.6.tgz","fileCount":112,"unpackedSize":232318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8STlCRA9TVsSAnZWagAAcagP/j2g7hnxspYkLjeqG9An\nIM7ctpSvAnetTqHst+Az1YJW/Tin3H1mpykH7BuVoVOpSGqYbaQFEVr/evpz\n3d0x5efZpc9HhW+e6wRwFSWwcl5hpQEIoHI0+V7YxOdJLUKlv4MpGM6ET6w5\nuv+d3PrdwWKLBySsjA0LZ6QHtzYSGFZzqcwv6NDfO8oyD17zpqxbRf1ZTAph\np62H8aLulQDCWN8VTuJ1hGrP2IHRkaswrXDLm0ODz7boxBQIW9loelxvF3M+\najwD8WMaZ6VsM7tE+z/KjWclZToDcSWH9n1Uxa5PB8EMUredYIGO3RTKQdHz\nwnba/YdkLcDwZHORbspKhCQdf5dOaWEufAZ1Y5ALSLpQkT1EqCCde/nC5HDs\nMLTCpdVu/FVlsfSkUddmVs+xvaJk69teCPf1WnjaMvlQkexVnhbT+uM5TgxM\nWXxVXSBfbEEusfWj35sK8sAbl34t3r9oe0F5GGXR4lC5hsu+EVPyuInsgtQ2\nV5Br4d2s8b7shTMxKq5GxfG4hEZ7R5j/2aUVkBTgr0CmlOXy1oKCWWsdJaWs\n4zEDxpmOZ0gvb4DE0weEQd+r0BoKtAFS+n5uu4CcwBXf5GjOai+UmJtetWnk\n8Q36DotfSSss15DPx9EAG6pdu2LZ2AzsSWh4MD7pFeFdj5VZJQPXaKxIASvJ\n1/SX\r\n=svFl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6BqsFR08CDD8hUSoEF8WO+nKM+sb379SwHVxqNQVVKQIgCjT/d+0AnuLiULMQHcr01WU0Hm3veO+n3tHU9/68W60="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/core_9.0.6_1626416357315_0.613793408886139"},"_hasShrinkwrap":false}},"time":{"created":"2020-07-18T01:59:32.659Z","7.0.0-beta.10":"2020-07-18T01:59:32.980Z","modified":"2022-04-06T18:59:41.203Z","7.0.0-beta.11":"2020-07-18T02:34:12.379Z","7.0.0-beta.13":"2020-07-18T14:51:31.840Z","7.0.0-beta.14":"2020-07-19T10:35:17.389Z","7.0.0-rc.0":"2020-07-19T14:08:07.106Z","7.0.0-rc.1":"2020-07-19T16:38:42.682Z","7.0.0":"2020-07-20T02:06:53.203Z","7.0.1-alpha.0":"2020-07-27T02:31:54.964Z","7.0.1":"2020-07-27T02:56:13.514Z","7.1.0":"2020-07-29T06:18:18.474Z","7.1.1-alpha.0":"2020-07-31T06:18:17.087Z","7.2.0-alpha.0":"2020-08-03T02:06:59.122Z","7.2.0":"2020-08-03T12:31:25.467Z","7.2.1":"2020-08-05T02:00:04.473Z","7.3.0":"2020-08-05T05:31:17.611Z","7.3.1-alpha.0":"2020-08-10T03:07:00.348Z","8.0.0-alpha.0":"2020-08-12T06:40:29.128Z","8.0.0":"2020-08-12T06:49:07.914Z","8.0.1-alpha.0":"2020-08-15T17:00:30.047Z","8.0.1-alpha.1":"2020-08-15T17:03:19.291Z","8.0.1-alpha.2":"2020-08-16T03:31:02.524Z","8.0.1-alpha.3":"2020-08-16T05:17:48.100Z","8.0.1-alpha.4":"2020-08-16T06:09:49.900Z","8.0.1":"2020-08-16T09:06:39.613Z","8.0.2":"2020-08-30T01:21:13.056Z","8.1.0":"2020-08-30T04:27:10.492Z","8.1.2":"2020-09-11T09:56:49.942Z","8.1.3":"2020-09-11T11:07:11.168Z","8.2.0":"2020-09-16T15:27:32.190Z","8.2.1":"2020-09-23T15:29:54.268Z","8.2.2-alpha.0":"2020-09-28T11:14:07.430Z","8.2.2-alpha.1":"2020-09-28T12:43:53.210Z","8.2.2-alpha.2":"2020-09-29T09:27:13.040Z","8.2.2":"2020-09-29T09:49:52.732Z","9.0.0-alpha.0":"2020-09-30T06:49:31.465Z","9.0.0-alpha.1":"2020-09-30T11:01:21.942Z","9.0.0-alpha.2":"2020-10-09T03:56:13.115Z","9.0.0-alpha.3":"2020-10-09T05:37:18.753Z","9.0.0-alpha.4":"2020-10-09T10:25:23.266Z","9.0.0-alpha.5":"2020-10-11T01:28:28.718Z","9.0.0":"2020-10-21T16:15:27.136Z","9.0.1":"2020-11-01T04:13:37.657Z","9.0.2":"2020-11-02T03:14:30.749Z","9.0.3":"2020-12-08T05:19:26.782Z","9.0.4":"2020-12-14T10:46:16.682Z","9.1.0-alpha.0":"2020-12-22T04:50:47.630Z","9.0.5":"2021-07-16T04:07:33.966Z","9.0.6":"2021-07-16T06:19:17.471Z"},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"homepage":"https://github.com/redux-model/redux-model#readme","keywords":["redux-model","redux","model","typescript"],"repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"bugs":{"url":"https://github.com/redux-model/redux-model/issues"},"license":"MIT","readme":"<h1 align=\"center\">\n  <a href=\"https://redux-model.github.io/redux-model\">\n    Redux Model\n  </a>\n</h1>\n\n[English Document](./README-EN.md)\n\nRedux-Model是为了弥补原生Redux繁琐的开发流程，开发者重复劳动效率低下，模板文件导致代码量臃肿，以及因action和reducer文件分散造成代码追踪困难的问题而设计的。\n\n[![License](https://img.shields.io/github/license/redux-model/redux-model)](https://github.com/redux-model/redux-model/blob/master/LICENSE)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/redux-model/redux-model/CI/master)](https://github.com/redux-model/redux-model/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/redux-model/redux-model)](https://codecov.io/gh/redux-model/redux-model)\n\n\n# 特性\n\n* 深度封装，模块化开发\n* 使用mvvm快速处理reducer\n* **👍真正意义上的Typescript框架，写起来比JS更流畅**\n* 内置http服务，请求action自带loading追踪、数据节流\n* 支持React/Vue Hooks\n* 支持数据持久化\n* 支持[Graphql](https://github.com/redux-model/graphql)请求\n* 支持代码分离\n\n# 安装\n\n### React 或 React-Native\n```bash\nnpm install @redux-model/react\n```\n\n### Taro\n```bash\n# taro 3+\nnpm install @redux-model/taro\n\n# taro 2+\nnpm install @redux-model/taro@6.10.0 @tarojs/redux\n\n# taro 1+\nnpm install @redux-model/taro@6.9.5 @tarojs/redux\n```\n\n### Vue\n```bash\n# vue 3+\nnpm install @redux-model/vue\n\n# vue 2+\nnpm install @redux-model/vue@6.9.2\n```\n\n# 定义模型\n```typescript\ninterface Response {\n  id: number;\n  name: string;\n}\n\ninterface Data {\n  counter: number;\n  users: Partial<{\n    [key: string]: Response;\n  }>;\n}\n\nclass TestModel extends Model<Data> {\n  plus = this.action((state, step: number = 1) => {\n    state.counter += step;\n  });\n\n  getUser = $api.action((id: number) => {\n    return this\n      .get<Response>(`/api/users/${id}`)\n      .onSuccess((state, action) => {\n        state.users[id] = action.response;\n      });\n  });\n\n  protected initialState(): Data {\n    return {\n      counter: 0,\n      users: {},\n    };\n  }\n}\n\nexport const testModel = new TestModel();\n```\n\n# 执行Action\n```typescript\ntestModel.plus();\ntestModel.plus(2);\n\ntestModel.getUser(3);\ntestModel.getUser(5).then(({ response }) => {});\n```\n\n# 在 Hooks 中获取数据\n```typescript jsx\nconst data = testModel.useData(); // { counter: number, users: object }\n\nconst counter = testModel.useData((data) => data.counter); // number\nconst users = testModel.useData((data) => data.users); // object\n\nconst loading = testModel.getUser.useLoading(); // boolean\n```\n\n# 在 connect 中获取数据\n```typescript jsx\ntype ReactProps = ReturnType<typeof mapStateToProps>;\n\nconst mapStateToProps = () => {\n  return {\n    counter: testModel.data.counter, // number\n    users: testModel.data.users, // object\n    loading: testModel.getUser.loading, // boolean\n  };\n};\n\nexport default connect(mapStateToProps)(App);\n```\n\n# 在线运行示例\n* [计数器](https://codesandbox.io/s/redux-model-react-counter-zdgjh)\n* [数据持久化](https://codesandbox.io/s/redux-model-react-persist-uwhy8)\n* [TODO面板](https://codesandbox.io/s/redux-model-react-todo-list-zn4nv)\n* [请求](https://codesandbox.io/s/redux-model-react-request-1ocyn)\n* [请求节流](https://codesandbox.io/s/redux-model-react-request-throttle-77mfy)\n* [任务监听](https://codesandbox.io/s/redux-model-react-listener-p7khk)\n* [任务组合](https://codesandbox.io/s/redux-model-react-compose-42wrc)\n* [子任务](https://codesandbox.io/s/redux-model-react-action-in-action-oewkv)\n\n# 文档\n\n请点击[这里查看文档](https://redux-model.github.io/redux-model)\n\n# 本地开发\n* git clone 你fork的仓库\n* yarn install && yarn bootstrap\n\n执行测试用例请使用 `yarn test` <br>\n修改在线文档请使用 `yarn docs`\n\n---------------------\n\n欢迎使用并随时给我建议\n","readmeFilename":"README.md","description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>"}