{"_id":"@redux-model/vue","_rev":"114-61abc35dda0b8d18ccbc205a3708e09a","name":"@redux-model/vue","dist-tags":{"next":"9.1.0-alpha.1","latest":"9.0.6"},"versions":{"6.5.0-beta.0":{"name":"@redux-model/vue","version":"6.5.0-beta.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.0-beta.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-I5aNBrGTo0FVjvx0ajWG9kJP8+z2fXcly+MdtMXr5QuGIljLVcppUnWeIoK3b2xautySB7g5dpkdq4UEqjHgBA==","shasum":"74dba925796eb8d39d8d76e5df115a5e7e1b86b8","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.0-beta.0.tgz","fileCount":58,"unpackedSize":70586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsXLqCRA9TVsSAnZWagAAFk8P/AxztFRK63o1IrZ3yi4c\nmOMFuO756xk/lfdmV7AWhKJ8i3lU37Swb5yh81VZq5EAynbvy2/BTfTwcx4B\n69Ptz9zGNZkcakdmLEgxiDoMMh94QMw975RWvBauK5izqTIOvWLyQVhAniIw\n2MZtn7SwWHa1wdG6mWOMekoBoYKwX7ZFV01tIxj2WPcbeRGEm2q+BGvdWrxM\nrEyixL54Qif/jXvxdAh9Q0HY+PZf3/us+A4CqByKAUv/sSO2QXnMfBtEGMBR\nFZ+o1nzWB9JRvmiWv0ToeYjupC+Z1p7aF3LB8Z5evQ3LG7G/is4zTm9DC+qL\nDXtLA9qupUSz8bXZjtGTLFfFbkYYECbgoNIchIG7QXpMiaPyoCrtG9lEqzjY\n3igx/P9AKNVUfr5kflzff0V5dwiF4uDs1h3SZp1BAZpOerwDmXz5a2UILK3t\nup2ymMgfVdQcaVr4BG7uYpBtQIFNJiUbn1uwGALfP2MBl69nbaKvS8rNuQGm\nj83I0sN4JbPlqrHddk/ddwUqYOKiZbyaoC3nzsmpVj2zKx5homUG7CukUgWv\nhF2giM6qtDv8A8djNFp2yeS2jOtGpZavFnKb331Q40d7Dnz+nWSS9kLbrFNi\n/r8NY3sTI9oIEsKy92Q+5aR+2fA6MeGODvJd+siq9RuCc/C5DOOWtgjWtbA7\n/Yyc\r\n=KoaT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGpBPFlKh8Uw7dv0hZKBYZ7W0ns7Zkxe8DGoMhWL2vUQIgDSl0vKP/c+463FgjQllmgoTZysNApuYKlBMCanyTWbU="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.0-beta.0_1571910378422_0.048189690592795875"},"_hasShrinkwrap":false},"6.5.0-beta.1":{"name":"@redux-model/vue","version":"6.5.0-beta.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.0-beta.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-g1pI8mk/Yp3UUPDHQKY4c4Uz/F0UNIfq+wy0zOKfCPacFm0ivopWvi6nFhfnF36tSGG2h75TiDXqbHtsOz5QuQ==","shasum":"6f97883efccd0584adc9324dfc1d4fc9efd68cac","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.0-beta.1.tgz","fileCount":60,"unpackedSize":71893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsXS8CRA9TVsSAnZWagAA1tYP+waWQO0hG2NrxUNSsypk\nEhZiIhbhhBNVk1y5O/HohqD1AYlTJGHPUpKMi2lLrbQH4iWENj7HI7+wDH1F\nn5e+gIDZGORjNN6f/Lfhmg3ALWrhSGAj6uTrehDiTgpMyvvLvcRQKjoAiw8w\nFsPTmtfqJugQuGnMep8B48vZqlxdLnRVutrcxOt/j8RZOf6wtifmuMZGv3aJ\npUt0KY/ZcEqaCHGJoX6aNfpmE0WKHc2TzBI7CIzFnvDa2YPbhgoezeYhNkV+\nlJTWW1jmIc9+mgHf9ZmlFla3TxCgEKLHgQsYXzAdLGEGQPyJ8D45i41DC2gV\nI2aX7EYV5tDvX5knCqj87OecrOd3+xYs8aAVskEuhIfM0YFwVphdpU4vCXhg\n9UCy3Buccv7IBAYJvx2NvEfaPtUBRME8T4xWU/wG8fWbsC05+LMDJ17sktAH\nBUyFLfY/7xCb1ciasqgSGXNYQ/Dtv4G7K9Ni21so43PShTlKBaZCL+oQs59n\nDWfo6BO4Ayznj1nEnBTN071SBg3GqUviPVfmHgo0MvrAC9dsSs40Dg0iN9KS\njZ7i7lB0MU179yLXTfEMFbLT82I6B+aZit8V/rwUo+VFy/b36nzlONZp29dF\nrzTXxNj0COJ7vNJ/n3Zuu1Nreh9OWQTudF8FI+iyg/CgOUlAj01JbxaaNUPg\nDrqr\r\n=Tp6O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHY4mjm5Blz6l2e0So3OqBhwQnJr22Yu+ngroNu3BugaAiEArGARck3f3lQEp4CHX5g0sSybowwZDCEm6Fl/Rrg0GOc="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.0-beta.1_1571910843834_0.06474809873765208"},"_hasShrinkwrap":false},"6.5.0-beta.2":{"name":"@redux-model/vue","version":"6.5.0-beta.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.0-beta.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-C+U7BKYejf8vNYteGoDX7W5To3OnQUvyOoox2KG1vvc7q7S+e+K2vmw+IEJwDmBu3iLnWwjcBA2TOaacuWaUuQ==","shasum":"7e9f4c54eeb126f05af8be92b8913245a455628e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.0-beta.2.tgz","fileCount":62,"unpackedSize":72830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsXchCRA9TVsSAnZWagAAClIP/2s+TfCAxZ/0zNPtMxJA\nzNpTNPNSNUf4jEFUgfrDG9PdmahffysoFwHTMzCHrJ3IwL9Cs29UZ2VdkF8z\nXfyDNs4ttunPPWD3ZCvO3dU07P6U9r5PEhWXb9Xgqj2tDuqDqBMSDaIppxlK\ndKCYMiBZxYgLBPpMkv2Z+g7cMpiCKe8IHV17je4cmG1bvqhrUN3Bmk/u9fu4\nh3HB0mgIS2iwuiBsoyw2DIBfFwrOngqAPoAgYLGb8yXQXzmXZMBAn2ZAjGiY\njlyTXplA0cEqz4xw8WmUAXkHSddFRBaHlRZJm1hVn84XMaTKmougriG4U76B\nVvaxDV3uiVnAZdfM/sT32yFoFehDaBl7mhzRv1IvTeC2tqRck0RHPySqgk5r\nKcPkzvxxJVOzORq3bj0NRZWrdCTZIRFAoN7tCryyerD56eWdBlqFiGqu2NSa\nFRn18dpw9O+FttTTItumsbK1heasDDxhUOaLLdgb+LzYSlpF5tjyYevJMUuP\n3m+recLFvYiOa2uBl0xCKkMgNwAv26ZFUt9ZsKbGsQYHJp5VbjK2EbTblt/q\nOHJ8b5iO+xRw3DwVUojwp7cN5GcLahS/xVVI2K90Fqic/rimshuZAR+3j5NT\nAkGVzj3UJ5+i1RptanAPGqe48CcS/6vlmIx4mgKtbiD+DfHYZfS4vXlnMKRJ\n1WJb\r\n=+Rh5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAYhtp3BZCfA4DaLQVIGyEgcxwqkU/ldXLjWHm3M/iZgIhAJ7O2MN/J6yxOZYtISOI6GjTNcJPN6xHej5UwFSFTekx"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.0-beta.2_1571911457256_0.22632309768509407"},"_hasShrinkwrap":false},"6.5.0-beta.3":{"name":"@redux-model/vue","version":"6.5.0-beta.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.0-beta.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-xPKGwBAEjncMBzWImhCrie7CbIS9rnIZg9jZYf9IPyIW/CGhBHfyXyVcTTrKgz/brl5gG1QVWCZ68kibzl87Sg==","shasum":"873465262edb8ce42e7c845de709b7147b8a09b9","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.0-beta.3.tgz","fileCount":62,"unpackedSize":72740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsXi1CRA9TVsSAnZWagAAWoIP/0DAjMba/C4bnDfKuCAH\nMFilglGuxikhqH3vxGfh0rlqiHTyWexu5Oq+xN15n3SRsafTB2e6abXmdBNW\noIvjxEjs1FXRsM1qclBAov/UXk7qW4k1XgcDfkjmR4MDeL7Cpj+xIcMaQw5N\nQCMRC0czimlaNKwYlleKZxWVP0aZ88fnmiUmAuvfwpl4WfR2NFS+hGN7ta10\nvezvdxis8/UpYUAMQP0etwXswv0PuwBGFGyAPu+4/JhoxudwHYO0pFK97fTL\nNqrXWiasog2HthV83Kn0vI7T3ygi0Xw7a2nhA0CvV+CKWRlwU0s5Cc6uDuq2\nhxMzKMmD1XUdasSHep1+kbtPtiBnB/A+anBfOY/7opXBvbvu+mGeXHI9s93S\nDpMDv7ca3XqG7dG8eLrdZbv0QSM3Ss51zNknn/azSw/ga5P1GL5rGvhTUjoM\nNiP8EyT3Y8nSA0v6jXSIxwy9Q7jlaikRMsW5U3voiBOTaGEpBBJjC1HONsQZ\nIl9nGBbWwRqCZ0sZfjXlPJG0Ewf4iDlN0ZQS7Q4SDaXgvFc3TXwPrg0CYAb9\nOxD2ZaBVcWCFO3W/Q7HQihAfpgfqAcRj+BuVwAd4AEdueJb8zjOPuOyXGlze\ngIHVQkkU8XhBmlq8L9AyHeq+RQaVERWvn1jIc1veglL3RxH5YRkRsRVglAKh\nitVM\r\n=3q0u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEx7aTP67VBqTO/ao8THBJB6LA0zzCBKY+FSQI26g+ESAiEAktCb0RynT45UUluQIf7LgHSmXyqWMy6pzJ5cvDiMp9A="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.0-beta.3_1571911861044_0.5611507795474133"},"_hasShrinkwrap":false},"6.5.0-beta.4":{"name":"@redux-model/vue","version":"6.5.0-beta.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.0-beta.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-h8Ba2w7O7lg9HrFmfdBKIKsWRYAvtQOjTTWpI+dn3iQWXl2q+HDpShJyd5JPH1znag9MlIuumIK6WOQuENvkrA==","shasum":"15d9bdb5f9da51daef83563345a4c39b051492d2","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.0-beta.4.tgz","fileCount":62,"unpackedSize":72649,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsXlrCRA9TVsSAnZWagAAKXIP/3p0kmwaYbN5sqioYttR\nL2D19uTsD63fJ1fK9bxHq50xobraQQl7BoghX1Jb6nvmRAsKOOUPT92ZKrhb\n74gU0tL4ceddmCFwY2Pv8H7sVZK8drfjOSco8ytttQRwD9/oi0Ns/DE3zXEM\niVlF+aaYL62Byyy/L6nm5YgKl5PbsXyGkKiY1tdmJyIPu42/w1yMJhsTE8qQ\nMU0X2pGiPb/fJ9ITjX6+6znbRuf2G+9ZJGDRcg5oFww7GHfXj4MYBxoo7ZIH\nRf08++nTzZ2XeQXI5CUkWlomYLVcjP4KVUjzcXmgjvlgantZsLDf7+9j9b+z\n3IYc8zAUsvAwgg/SH7hvkXWBCwN6xJkuptfhW1tbY7CDA1uTS1ltnC5uw7m4\n74O0Y4bLjz3L2SGd0TKLyrdkk0kHZoP1OCA+G/gasLVmy4qC1tE67XdT+Xby\nZJbgQESH68A4edNNNRz9BYBEvcuURoy6ACWQoaaZotwNPUGo+txyD5p8SiQQ\n4DrAWsrpEirdos9ByySeyrJFs0Di3x/sL+4Cz4McZsKZYCdRzABR127HBkgK\n/VcCvvUTgcs3jD0DxGu3/JDTg9InU1hC6aGYC+qWlYGsQMsLEois5i/HUuBc\n0UpuSilsff3051VGs+fn3JSj38duNV7RiNiooRxZpxVe0CsZZo1KgBsbgL5g\ns1wp\r\n=33l4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA40V1njvhe3cWZOE+PPPZwhK1cGwvg/jAnR0jRFNTupAiEAn1OPA9CprqNDJjSLrV2Rx+bdHPstDzwKOzR86rqQ9EU="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.0-beta.4_1571912042707_0.13019667212954977"},"_hasShrinkwrap":false},"6.4.1-beta.0":{"name":"@redux-model/vue","version":"6.4.1-beta.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-lTn8nRBNC2VPWOFH1sqfDeJcVXsmrWnXIfdG+sOnUtHWAniQKH7KUwu3WxuN0WMRX/1FLKlmLhfF4ZqLu3C44A==","shasum":"fcfca99952db6b64aa9c794bca41352c13fd0a8e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.0.tgz","fileCount":62,"unpackedSize":73656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsbtUCRA9TVsSAnZWagAAnNoP/09aL7h73cQIbO953hZD\nZSbtOOmG2fcdpcHAH5pxpUDTgTC+/dgUr7WmcKia6Ncv1GNeZQfTdKFYD9VV\n1jfI+/GruywYCjgwuxa2xXjVpuK12KF8bAw2UeegvyGfT1dnuGIrzu9L9ZXB\nYu1h6Bpht9fww5i4zXGrPyEiA2TiWpEZf4YF4n6ijyGQyIvW26O3GH0qlHb8\n+MVabM3z1nesIkbQVVKdTCcS96sZorxlnxCkezr2Ol3L2Xvfnumc91KqKHey\nUbxbnPzxj6AiLsN5+tx1k9vXMN8UvO6nEAgcuozNfAUEhUuZYKb/xpA2JDop\n5MvPlYgjZhOWufbnAAUkK9UMOVo/EJ6nNCimO4UjIl1LOlh5sHxN6kRi3BV7\nhA24KdC1+1VhAiq1EPIK0K/OEhd5hR7C7Kly3OxLts/Zr55AR5nR2Y4ec6GG\nX9KiR9s2kOhR0xewv2dHOq41oU8dSQJJ5AMNmvt/VpmHFaTrIsH//Uoa1D5b\nXiVKt/gxKyDhhQzvIq75a7GdHOv6zoXqpen+5GpbFMbn1T/xCcsXhF+571YF\n50Efc0B6l0OkpCL5SvC7dhmG8ZW7Rg0Cyhe6z925mOoEFrw3JBtUkiheZOYY\nGrFQxD0Z4u295csIx5rrdbEY0IIN24S6s/UP7aWWe3uRNQFMusajQn4Mw2ys\nC1xR\r\n=G9WL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy849PSua91mILuyZdTrEyeWuBZ1I6fKpdHNu6VP5+/QIgKdAv2mWeymCIhen9XvI2J5iD9DeLeakPEHpLFi2Aqy4="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.0_1571928915551_0.42520035100811926"},"_hasShrinkwrap":false},"6.4.1-beta.1":{"name":"@redux-model/vue","version":"6.4.1-beta.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-4wMmeo9PicCe7waraOb/xaQ3aIazC02T4TFVDEohmhdIhvfxNy1fI2tTRlfzs/pOxY6WNQniS8o4Xu6WPgQr4g==","shasum":"5dafd5ddfba9b352e4d409d04a6d15525903e95e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.1.tgz","fileCount":62,"unpackedSize":73287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsb+ACRA9TVsSAnZWagAAFU4QAJpOHRLcZGv8l1y9ZBuH\ndHz1LBzLDwqJM/Ps1XRipRHaL9w0FioWFhxaV3BTVURf2tunMMWGORGbrhyd\njSCDWi583qybAAoE1/ok7w8x+tdmDEuL3HdBXqUtvK14H9Cl8RYUOC0ChgwQ\nHUY2Bhd+T0kdi36SqlX1z87iyGpfS8+Z+LsDYSdw0vp6lu9Qm7gSk6XJjVZC\nKt0bTsTTeCSIPonW81ex6io9ZS/d3ZRcYhw8Lvc7Cfwh7ht0r5wFvF5K3+J1\nuU/F16998WlMR+CotKI9JBgRRpQYXcKb1q5il2nZHfWiK/IWlHGfz8576L0E\n4W07wjvUpT+7jsoux1e3te9tz1UlJ5tNZLPfmbf+k5mjm9HaaihbM6VzRQGj\nTnN1iX/SomJJ2jFtmIifrEjIo7QR4mNG3aoaiMpr1dD3WAHrmcCtvIbOv2sM\ncEwGyGzvb205ChUOUzuMtcSHECitWoJwglFWuRS5sRYW7LNp59vFZJBBwgci\ngQtU642E/qxxPVbDKqjYohAY1gUem3oFIfVU29J8xlHC3DVl9tbqlX1wroYW\npPjqYvlg16F1bcHyR2FxRZGq7qo2jU4rH+ocH3fYc2NYAB0EnDhD+NPWDqBF\nuT+Hgce5WRfviBGh7hLkaOZfTFJ1sc3z1vBx4Zu3h3pBHaZsPjBmFtYYC58e\nfN4s\r\n=aCx0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDojS3yWnTySoP5MRg6FM92+DxCMknwp96BdQJArpjIOAIhANayOEOxYCf1KsLeREGScLJS41ySbrruO5qoyyKcnpVR"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.1_1571929984367_0.29996005768157197"},"_hasShrinkwrap":false},"6.4.1-beta.2":{"name":"@redux-model/vue","version":"6.4.1-beta.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-J2CBsLCY/lPO04rhpiDkUamnWbHZTG7Wm6QU/FuyeXoyEE+vlhWFe89Izz7boMwg/a7shXt88TusZkChFjWYCQ==","shasum":"63454304a1a64ee1c617b24404a45bb97c72f01c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.2.tgz","fileCount":62,"unpackedSize":73807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsjDHCRA9TVsSAnZWagAAWgcP/2DmIYUfaa8CiVR7WfYG\nuyKExQyrgoJsIUchS0D0HlMYcK92p7a/8Ck9HJ+0LyFgxtRDis7+3i51vMiD\nlj9gQUsni6kAu3aImVVEaVhyEU+oNIuV4xOhrM7bcYAEG/dqULYb1yzv1Yq7\nc4cCWxecSLgOcSUEfwtq7cXCpsSemp29qitJ30gVXJj/2VgIDStT0PDNSHya\n/HpIJOZ40UtiSpMyPGn4FeJiL6zIoNMnudipw4Y15TChmMkOTAHDdgS4T1RS\nzcwyf5V3TqpDJiDaIXnEFZbGfguzETLJlchAAq1l58gMmWfi2Irj42mep/qn\nkIwOPVcjeO91PM2nisuTImpxOxWhknXGBF3K8vL3phy930Ckd2psk7XATQql\nXgzmmRkQwpyAiYDtuiycJCBAVrqLLh/G2BrATotMQaWi68al1odY0bCoK3Bg\n4ub0pjxbpKyQ0cR6DwmPodZAhfShJYc2UmocjPtk25s1JXCG+u3IhnYFtdaU\nY+7aGT4LGjjl+1bzHCknpI6x+eoFsAmTO5KmGDjE29jF6g8eMlCdu9/Y9675\njIEJjaaER8JJLSiKPofytjeKPHoFD0byQ8AY4w8SzSw4rGjiFqm8KGCkzOA2\nJEKjEwv4NwjxZdotk09Q6ts/PcvV8QWke8MVugoHU1R60QGkOnLSS7ffQqcM\nEZma\r\n=VGoT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBExHJgrO1FLv9hXNQNDK9s2NhIX5pzaLuBlw7xxrHzcAiBn1lZrNOaZjOw5Jj7QvcC1SmUAhjkWD7BIvoFdf/NvPA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.2_1571958983232_0.8393382234952385"},"_hasShrinkwrap":false},"6.4.1-beta.3":{"name":"@redux-model/vue","version":"6.4.1-beta.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-vW0SOxw+8X9+XTymms8h6HMAAlM6NxoE0KkqWic93JGRqcjsB4ppCnKolhXLDwRRrG4s5fSQ1mvuMGwUH/30Fg==","shasum":"155a7a5fdd9128e2e456aae6c7c8b88af18b24ff","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.3.tgz","fileCount":62,"unpackedSize":73833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsjDmCRA9TVsSAnZWagAAbB0P/0bF5hJYMlsAyk/4wBeB\nxoKhdKZR5vO9WgL0WRQZpLrEPVIi8+ckRIbW1R5RwWx4/ekGst35eYrRPoKb\n24NkJurVaYTa0cZDpwAJugwmnshqGHRjcjt3CEhDkz+M1sEOnvnVBf0ktOLI\nPy0hhxZTOsrVtU2lH8qHK+r9f4w5FYDLLhxlsbj7gw8rnCnm5kjUxKe8XSho\n9Bjkc2upNLWGEADINsL1rxT2XkPnKUdZYjisR/7fmu75cEpM2ATiYqhJTyDB\nHr9PQr52VnmE9YyHpfoBOawx5gXJol6/knU+NhxZSIOXjMv0NVIhfFznQUdb\n8+qPOhliC+Te4uDwIBHNwu7eUt0ZIm/lN8xH++c3oQlgtqs+l5YQItiZIFqe\nOZoi+QWvQCSmH2zfQYtp8aHONMFBsrqgMc70ytjHnDuVuxV4Xnwl6GEIVz38\n2iFngHTUK/y+yObskHNwL2d8B2jbOugTF/WYVF5PUx7V7oBLOAny6Tae9dNb\no+og1IMDqqOYuN9OHgYFLW7KbWgfx2ZYpeKNW6P4gDwZOpX0G/B1Iyz1DAAJ\nekN9AuyxgQCGcnWcvz7omRo/8E0/gUcgKY0SKBSn4vF3/79jVPDyUehkXKOY\nXtuFnED+LXEMnfeeZfflE0Bzn91BvkmxpiTVS6VUO8FdFle2cW9vpScr+AEJ\nfOso\r\n=DmRt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcNyGa4dXJWsaYIrQdXqFAFQ5czoMvma4Jw5UrR1nsMwIhAKp53bFawevSr3Quf8W9rYLM/uJny+0wk2wkgyPjMI0j"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.3_1571959014144_0.28565780215963366"},"_hasShrinkwrap":false},"6.4.1-beta.4":{"name":"@redux-model/vue","version":"6.4.1-beta.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-vge7phW2mCgLw5jbPuaNhWSqW1FeZkcgknZervaiJNdEkFfLsntN6QUS8enW8xZ5VYB2MjagLajIjmMwvNZLfQ==","shasum":"27a37a87e700d5322fd614125f707083e0746e55","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.4.tgz","fileCount":62,"unpackedSize":74381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdskVpCRA9TVsSAnZWagAAQP0QAJYb62JnaLMn66mEDWcQ\nKC4pKt6R2ukdwZOrjAB6w4dTaAr9H2F3LmoNzMnp/lZ4XgQIUELpI3ycRboS\nyVmFvseDJc5tjanU4SBOSkbQZetvIKumZNjNqWZtLBMw7e7x7eXobFtAubJ8\nzV1d4qCUbxbN6qg16UyVuiWz+3xP7qR2A11xHzj8TEzXLpyhYUM1Y19/4TOO\n9r9zg5h2zvyhlw5PazyRYdcyUoLSb20oPvz95WXFfWhfsQaQE09eHNKuega/\nrijQj/HMxn45Ys54kWVy+fTHAofEDDY2L1TyvaB9uW/1BystJPsNdXzTz8jT\nldSxz3iguZIn+rmg4Q3hnW/c/PQNphO2o4x2LE85pVB5SfFZa4pQ5O692NZq\nddojCvxlN2Za0+8RcyY5Aa6I04oHn6mKQbaiW5KTDOTE4duM/qkGX1MSi54G\n/JRRymDt50PmirmP9cvgatNjX2yzubUJ41GTCrGQLHFGfd/JgkvVErpOOsz3\nw4e4wGjpmsGS3zjXP1MjE9tvjUgPmW9/W/TYkN1PDuUvGSGCGGTY7daiAgBJ\ngU0P+B6B73gj0bjwlVymDFMDQyyoYmAUu4JnbQbGk5m3n84X73tGrUU3pHzY\n8IZLPRRE2W5cSwdf387mH3RxIupLWBGbGQcUfQHNggFkStZdnrXN6776B3NJ\n8LmW\r\n=5LAg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCK5vYoFUQF1y/O4ZN3THxPgytBcEslWBQl/QzDCfivegIhAL2CVc1JtewUxjwh2zj3MbCAT7bCzFOFOgFFw9LHJon2"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.4_1571964265144_0.16105915471857069"},"_hasShrinkwrap":false},"6.4.1-beta.5":{"name":"@redux-model/vue","version":"6.4.1-beta.5","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-1YATgbNHA1mfIk62aJpcJlwyz1TwFwSwjs277jvITaLi6ISR+9VwUXL4wHVjwKq7U9U1GQDqugDWNULm6OJa0Q==","shasum":"699862ecc63d9d3ef4e20245ae21e0f07a591800","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.5.tgz","fileCount":62,"unpackedSize":74661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdskYUCRA9TVsSAnZWagAAWhcP/iKSbxfKKs5yn1JumERP\nESeauHPR8ju2d2dxEZCpb6D90eO5SYvLUCjwhlUtKiv7u6DlvRwEfwU9iuDh\nCZvvXHMyfRgrjNVMq+dLNfBLNtndOpQsIX1ga6CsS0lZCp9/vg7h1S9NDZgs\nPLiUsgbhe3YYy5ZIZV+ANJxp2gMyZOwQpVAre2jPI1hoJKnyvxQw0VyuP3lg\nH6pg/V11mQ7R/2lcJ+cMA4UDiauRW0iw1fIctI7lKn2NaRJAGCaiQAg3Jh2J\nmPQTCXuyTODzqh4UTgTqiGTtLcB9gDDOxkyBxCQ8bwtraBNiIAn+CTYXIjR/\nxp8JYyy8kkAfAgZOnL6AauuFFbfsvmJ3Al2mdDnU3Fm7R7LLjG2VoS/ewyan\nx+JPAVL1GU8CIpG5DJ0HRBveZEI7mHEv/XN/xjqijWHVuzpChg0o8bwAHrLR\nhbN0Zz4NKrWJaCCWsKj0JRqM/CXVCTsIX06XuPYsmVnpjoYPWpbBS+obhdys\nFjgtkzEcG3eqYzq7U7iZU2NiLIuym2moSeAx2lZLcnb5QuZJaXto/ZnyrwyQ\n4fKnZYSgGGszdwvQrhBStdTjDh8bUS2WtEg62V9Wj7zYjrMRrs5jKr9ODA5Q\nqdPXxwiZT8caE+lKBiUCsFFbXwaJCKZz0hi5lYHAEhEGof/i3yOGnLRDfo2z\nuiTF\r\n=MdrN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0raawz5KYoADTOoJcwJmRVhsC9x+ZiR7owUsiQpEiJgIgIHSTMB9jwpLDzkkMI4E54d7o8jFk1Teiw6S96nwAls8="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.5_1571964435983_0.8816743355068468"},"_hasShrinkwrap":false},"6.4.1-beta.6":{"name":"@redux-model/vue","version":"6.4.1-beta.6","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-EJb9vM9kvT/E5pronRFNjl4scwaVoA4Z2bInaloMecCLkZojifAt6vZXI9C9zxs1r/l+oJups7M8YPL44x3Qkw==","shasum":"d6db2015de992a8be5363c476197f583e6c3d251","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.6.tgz","fileCount":62,"unpackedSize":75117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdskkLCRA9TVsSAnZWagAAsJIP/R8ZiDe5ZxrUOCxSSxzc\np6yfHH5dqADYvU7sN4o/+WRRsTRz8bURHCnohBq8P0WKokzw4zKOwhRjKGge\nxSV/uwITu+2eyV+T9sSnEzbGXU2VPN5ZLsJVUHHmf5M9+zxp6XgdhUOAO+4L\nAophveOsau/BL4K30u9u+8STSRMVzuGk3oYO4gajkrceP1P3SePJZ4+yte5M\nvgD7HhmBtJ1uXr6AJ5sbiGlNL0Snfl3pynLPXETHXxPZKVOlQzFPd+GMbYkV\newCaBPSzTkj+JSxGCfkcgmXKS3BfXnysk8RnhFFTvBhdmSzbx7rwWx2rQyR8\nd/eALdgRas2PyQE0FTtw0bHufjLXJbIOeGpl7WG/8g4TnZsB3eD6XBuQmEYk\nyquHWp+Q6SxhoKNmZ5LX4AMNgUME/C4kjNdjEREoBq44c3HB0YPZWQXDD8KX\nCU0UI5V+XMUW/7dchaqz1EkPqOGxiTr1t5rlWqr2XOd7sqJs6hEjMshgmpLS\ncVXSfqrTpcYiba/eFYjzZi1uwdXiWPA9zzxlfTzAGZXssy67KHWFt/iQkgCe\n5J8KvmvXkCSqSqg1C4LIJQJh3Sp83JsUG+DccFlUwG5vwdiOSleFkInmOFO0\nQyErOp/nUKjdPoSdfrBua2svkXjYlNEW4971JkAfDq631GSr2cA3rbupNWLy\nkn4+\r\n=/XjM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIAWS2alx7mtbMS7c8dqyBDNAK4NkKjpIZFf3uKR7ZwtsAh9Qj0Y9j/VnQFCORqctpNu42LuMsPiVW2/VtTdDI1jU"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.6_1571965194776_0.013196729872879454"},"_hasShrinkwrap":false},"6.4.1-beta.7":{"name":"@redux-model/vue","version":"6.4.1-beta.7","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-VFKEoFOcV4eKGeIB78hpHV0ro7ytgpNiMZr0We9rQNorkX2zj/midIGN3Tk6elv3Hlj6IK2VSr/x5XocV3rd6g==","shasum":"26f6e6f37248059a2317e047fdb4b19b0a3ae72c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.7.tgz","fileCount":66,"unpackedSize":77606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsvLtCRA9TVsSAnZWagAA6goQAIOqO12hTctesRmomgNT\n+wriraqlYUjcD7Wjr3l8oqiAsUOhG3NUK4nQURvjtTxm8B7R2N9QOl96Hppn\nMTBPp1E76OCZ5wrUlKdEc5K6CaQdE4W6E/rda6Ry/s99YdfhQrcoDqNO0byp\niBM5F8/ybs9w7fTh1TGEACMHHl0PyQvcF2SQ9mshKOl24HIa1XvE1pxfzIoS\nP6MArSpbdoo32mzb77RxxfXun1+PEUc6CrsA8azm26frJzFxLVzV701EJnql\nq8D/XuQNJ+8RRVETuUuHFesaYeTWAbXYxw5cqQRIY11NcEfqmTupqo4eTE/k\neqLGyHFL/yP3ddSqvFjHyg5eU++QfEFisCoylMDa1mz9xrMx23DH8+KwHs5d\n512feMHw0I7MXG8u1WAYGT3iRoaJJCe3NDBukcglYwODnza+HV/5RnZ4pY6D\ny84rG6MhVPpIci1nmIhmZp+ViO16jOJlrlLp8IPT7TOyC8m3nO+9d8PK3Mcg\nzteg0mkX6B2wfXR/ZbQW9ccIpjX0doo2M5aYCpaePlTIE7ZF+g55n8dIqPmm\nYPippNc5MStUhS7etMXuDFwHttARmB3cLYacSNwhkmVbPyurAQr1E4Oh3Va2\nJJId9UPD8xtM7lKzSQNSNlHYzB4YeqzeziE05MyjpWvQoUVVkNDxrDHMzA9X\ngFVf\r\n=jDfQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgzHDls4GLt2pTov6TJXLKu4JzQNKoiTPLch/8oE64RAiAqfreQzMJFSy1hQVf16MxsMtI38FP3hM/E5rxx60luvQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.7_1572008684415_0.3331480831057678"},"_hasShrinkwrap":false},"6.4.1-beta.8":{"name":"@redux-model/vue","version":"6.4.1-beta.8","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.8","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-d9yfYpoimi2Pyf/QxQswAy2dSPq59Cm37AYq3wYLeQmmH7BEjqiSF6ZYONUwCLNbP7b0LbvKkufdOnTKFMH2JA==","shasum":"2cba21553533e1a659e5052ca3e6fee187ed7b91","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.8.tgz","fileCount":66,"unpackedSize":77633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsvPWCRA9TVsSAnZWagAAWvcP/AoPngePN4KE6u1n72M/\nZO00x1Bx8R4VLqmrYtBCWm4tvGAyKgdM/zI87F6Obi5j/PX8qareThsUDdgP\nxcPA1CYgy0sH9grwGhH+noDGaZXmqio9LNsaeyLNCDqyrGbuo8/kJM5CUIUB\nkQwdXpG3NxPyAibK798mU02g8uruRp3ACpMaB+KV3Ay96XazX294BOQ/6NMX\ns8G8h3m+uEUUVl2LQ7vc+9g78FBeg+xh8xEJr0IIbhlP5Os79WTQuXTJEIne\nlYkN5SFbItR6D4LtUtAPssfiRosFv2534iimTf9pvs+kbM+lfqPAfsbss8Qo\nJitggdQgM2KDprLJFjaIPAutWJSzyOJAlrEKj5lHiyjh76t8rJrF/azHFzcP\nWtP1007055sHbUNbKCtA5jVNgIS/7sRUttSiZ68ESvh15H2ZIbToCAXigzw0\npZXAkYskYLjbtlhOoxueGlAU7FmtPivi/jg4CsyWR+vW7S2alztV8lzy4u33\nK4LaY8uOtncnvFnFE4jUrIQVNRJ8Selj5tcP03gl9v5suk0wHrSpTlUMJ4Fe\n8Y+ejH8ZKNImw3c801cPsYAcaXZIU63Z08F/+Gb8CgVfq304p6QEqQH0ozSb\ncrNCcmdkbAoHBhYFM9i1fQyy2Ibs6X3i8VoZx8FY/uTbDBzfIChiQoRl+Of7\ne99w\r\n=TS7a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHIAZA3C85Fx0NXff6JwEhntbA+Otu4OCMldFWLWVIPzAiEAq8o1QymxLMPTGuDkMNBtgw4EW0pA9CzCe2YdUJ5tSww="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.8_1572008917908_0.23437586389028753"},"_hasShrinkwrap":false},"6.4.1-beta.9":{"name":"@redux-model/vue","version":"6.4.1-beta.9","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.9","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-+rmZvi/WO20lGiuBheetIXcgXoMhm8+uJ2YrAyyESr8/wCzNokRrIxMNjK+5o+JddFxJorPI5DsNFWVG1JPWhQ==","shasum":"30d4a53e4e65ba5032555f620cd149cc3221c06e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.9.tgz","fileCount":66,"unpackedSize":77742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsvubCRA9TVsSAnZWagAAQWUP/jQ1bmGUCXJa1DiQ6S1B\nnJbjgdA/OdO5EHRe8m+WXT7WdL799WGHSd06BU9SaSXGJEgNZKnqp38/pzDx\nE5I9N8usV5R1VEcmvsrzXo8qJDrVvyMzUyeNxyFrqWKusYiGs6bQ5sWOJ6nV\nuKJzRYhdkMFWnppiOccvDDryOz7+TtEQkCJrXf3bInMZqx6AqhSAOjh2hy/z\nq/wmFLHVBZLoVinZ8kDk2pCJCVqxyLShoOEawrA0BPlXvgj4eQiNwUbDcQex\nocLr+1vXTyrD33GSY0BdhOTH4ANECqIhBzLq+aS1hKlSkJqxPILUJ5VXA3ie\nQjjT79Uc2fgecdhqvv7+pwsVgfEWuPKtyOEnJPl/Qz8yNlwgrdc+wlAGvIyM\nh49l4GZMAelI6zYFZAKVDxSUfVSN2mTZXMop/e1CNzfxpmYR9pW/LZX1lyhB\nEjM6Re5XEBYkcDh4vBUqQsiuW2LPpGeT5kGT1RDYUzCqkK6tlvvxk3AMF7TT\nGB7PIevfp0OTiOEMXDix0s1UrNqxoqTsN6gozwTTFm1G4CfEq2AB2VVN+RLX\na+YrTRfqpy3mpR9oqRA5J2vmLGxNem6rkMIwUvc1empYmzuXr63Wzx7Y+pJl\nY9iLvUySsUoNJY10EQCBvN8q7n4+oG4LAYDLlTwR8jNurgIfCHZtwBg2cSud\n+e4e\r\n=6rOv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHF9o+3do9xsevO41fMUhq95DUjAFDQQOnjDMsPzQR+qAiEA0X5Nenbr/q1sOgYCjuU1NjD05mRtPN+h5zRFYTZYDzc="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.9_1572010906615_0.43494920678514837"},"_hasShrinkwrap":false},"6.4.1-beta.10":{"name":"@redux-model/vue","version":"6.4.1-beta.10","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.10","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-oOHPHWy9F1PGV8saQz0gL+7L/PJGERYzjSGj+P2Kv4qUIliuG98YszekZO6JyyK/fFuFK7Sq/WKYWeX2FvRCJQ==","shasum":"80aa43e2a7823e3be106350def1c1ab40f193313","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.10.tgz","fileCount":66,"unpackedSize":76259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdswDNCRA9TVsSAnZWagAAFzsP/jaYZJ7f414opfMEiT2G\n2TqIKDKR4xwYhIDzjKdMUupyPcMM6gQwPAwAGK+vd3nOCPd5+XK2DurO4Fda\n0NSwpCmc5L8dVQb0qOC798d4bzYFHlwHoqyeeBWnBjnQ1TpmxdcAgG/8+ssp\nAGwLaED384OenIUyQbvPaADAhUys5F1LBjCCNZEwP8rcQX0gyrt0DS0u0Ue1\nh3NgwVkCoNxS8gIMCMuMZJR7mz9Ets/FIDgCU1tG7M/oZO8lVLJVkfU3OFol\nXdcEg7mClw8HVhCxNIFofT6RcR9Wk7baFvAmBazUI0y/yOIRmX0dN3d0KMbd\nuw8i9LoyEuK5158RSEzG1fhFuO7CyqUnBO3iX2KzckDN8x96akHRAN+Rtgqw\nvKXOQSbJu0gKPlLpXwC9eiJ6lDdSFhxQZqYBMd65npwfsx9rAhBhOkq9HaOU\nKJqIipvJxZ3Gr3SRn0S8HbT0aND6EvIf4HEkRazmqCkB348M2VxWpuMYc9qR\ndLfAkHPtcza6KojHeg+P/2lkdzZr96+3TQsorLmsQdCbS6aJFRWXQPkIig1A\nBYrwI01gJ0YtrzEmdQhpIbX/l0V2oeo4MiuWsZsM0pXwOIu9AQSkJNAC0pQD\nkEtxppbhJlqJjADBSr5gD88tMn+f6k4/88ydDCxuYTrv5dWBZgMBsJJCBqvc\nYjQI\r\n=gnlm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjO2RHACDGT1nlTiWauAodOZqJS1CYo/d4ZlXcsy0twQIgZKOF+E9b3oALkTJ6IRmfaQGxtyVkGzjX0pmLto73NNs="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.10_1572012237234_0.7774684100031157"},"_hasShrinkwrap":false},"6.4.1-beta.11":{"name":"@redux-model/vue","version":"6.4.1-beta.11","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.1-beta.11","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-0vKul+FtaJ6LCyCvC/9vUeobk7SCu2ObfvanRETGHz/8FQgbJjCuhXXnu2eVxI7G7ikEEmSZq/+7THakl/8vLg==","shasum":"136db801337c3c1a9b989e42a415899edc1dce48","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.1-beta.11.tgz","fileCount":64,"unpackedSize":75871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdswPcCRA9TVsSAnZWagAAOrwP/2KHi8/nrqyIaOBiKjM4\nQpjIESGVoJ6BD6gV+6tZvv5Zo33gpQmiCYLasulFieAsNane7J3X3lS6R0DD\nWSPR6QS2fa8G6CE9Ca7brRybNjbVam49HEXmNQ9PolOA0vlL19NL1UMuetnA\nQBzHPZ3Uc+ZgCzrXgwa+iiNIjP2ZAbaYJaCQSANbOdoFmjl0h7VeQfXA9xdv\nElqUdxAmcUb2Dutf8LF4o8seqFA2ds6eSJcpu2lFpE0L17YwF+ZASLL2A65H\nW3xpUJD2i20QFpfO0vFGwvMYYbvuWeLFVW3CWAPkDsZ2QtlzwDZrwW3yJl4d\n3KjLJ9LrW8CDXNTwwMrF4YuUWFOy2Us0P2fLcX2PyILqfFao3tyFypJsAmWo\nCOqA9EbZPF7/z+L/nBywnQVaa9w9rZGIyNBi/lF6W/YorTVJLxsf/i0/sJxZ\n1fZDUbrIYMoD/xhMpcLJrVmLHHJ+Q3fFnKC2Zw+KJOmkCzmty2RdI39UK2Zd\nb0nqPccOEuH/GGkIoefoKYQGUEB7HarOHKHJeXK6NeFJ8bqrYjn/g5G7k44C\nE/0Kegs9iMVRDw6o9LdBRDaHN8jwSWsw574WERHzEsb/wn8L6qOSkyxeWobU\nPlAm32//qRFFMgj7MQ8+Zzqe/qYEO5iXmWZLDynESUc/KLbbKL8ktoPb/khf\n1vZT\r\n=sJ4x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsQpAP/0qooljtEpz0BpnuqxTbRLXXA+tzzX75X5ikvQIhALdYB+CBWntmWWJX6Zdn5SnDrddUtIb4jjArQYSc5frE"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.1-beta.11_1572013020227_0.52553011347036"},"_hasShrinkwrap":false},"6.4.2":{"name":"@redux-model/vue","version":"6.4.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-ve6H61DgRAElwyYUtPl2rbUv4Y/cVzPHOYAB9AQL3M8kG7Id/bbIR2b2i7NPMWPNI81rDS3Z2+E2lSARMu/SBg==","shasum":"2272f3d2f7949f3e76699973f1778cd5d73ee066","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.2.tgz","fileCount":62,"unpackedSize":74455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdswZnCRA9TVsSAnZWagAAqDMQAI/kptj/h3MkQklrxbAa\nEqMgAsa6tvzH4MYk5KpEYcb6ITrj6J4RENuhenCpJUp6hJbYffnMwn26S2gp\nn8B0QxYxl2OPxoxVhY2MytaRq5Ujh2ummPTRIy/XzG0w3Eb9pmiCiwmOVDCC\n7V8/Dpk0PS2gB58ADntFuqxkReBFHzC/tFEq2RCI/S1NBEhwdkDXBjHFSw7R\nIC2wslYXTMlNW5gz+mo6ABlz4DCups8ZTtpeZAegfWLutlGEwXByqnPAnhjZ\nfaRSJigELp7+hB42JgVlpr4clqdUJSex4z9wwz44eZQObU5lNJQ9Zva/rhgd\noEFeQy5iX1LvCtMdmD6UBUVCP/b5c0QMSifHbA/1U7cR0PkkREEY75z5u0yJ\nYQAtzLzcpndFP85AmHHhNk23Ckwv6effujVJoOV2EULCBwoL/t3a9hKORC3/\nUmUHMnnehCJPQ7zetReLDhbpqBOmvFu9nOJTTq6OoL0Ef1ROXYxyp2bSEz7U\nvDVufQG8Do3TJcOSVVz0ZvDUqNik0NU+dqn/8Q9bT4QHww2k9eeH1TzPlKup\nnEUwpYmUbpJwcPomuTODwUvczLUt0xHH6Xn88MvN6RYZCiBvYwgdPi5uqoka\nVBpbumlVYCRbZcugfyKjm+KYdyfVSISSorFtBdfUA1zYd3JBwmlknOzX3fvn\nx26O\r\n=QF4j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEI9yt0c++v1ZXZn2ND390weCEREUujDajUx8I9O4Az3AiEA6cQuuf6pnXJz6o/I72ImLeh0Lp5DLc3qJJYlluijjfg="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.2_1572013671104_0.6930115281486309"},"_hasShrinkwrap":false},"6.4.3":{"name":"@redux-model/vue","version":"6.4.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-LbLSalDy4ij9XdoVlf3UW9h/kvlldBCHyUy5PNxZHbzrFqC4Dc9ZUtMK6gUkIdiIf4CM93uZAWrmWNTsqmL0NA==","shasum":"42cddc3180ef4f795f19f566bc65694b2802a91c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.3.tgz","fileCount":62,"unpackedSize":74585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsxByCRA9TVsSAnZWagAABWcP/1IlXho714tgVmqDaRea\nG35/BTRqKXHb74MyuDrKyDwQODa5TUfctnyRdVEvJRRQLima57aroT6dN3No\nS+n1kAlw8aeKY8zwvn2WgD49EMCTCW1o/qRUe19RBtaELwJpxBaPpqoAUiko\nZjUtw8HGLKOf2PjxT8k2JhL1nvdqmu6mgqcWphUDNg2y1RWTCJ7e+moEr9zk\nKtXd7u800Bvm71yiHeMUkJ5in7lQGXS9WfhfVPHM5KhR9ezwbpXU+Z3kotGf\nBK2CZpWHsH0X+w3YJEisyiGYnVvabieCLfxjT4J5/3cmCRlAD1d4odgjz32U\nyefN9lhDZd1z6JG8sshzQ+w/hYcolGPDXZEUmjNRSIut1Iu7Yn3EgxUZHLh8\nphPeG+zbMoIl0k5JCEkaXqmZ6V0Gdd1Nw8CeMf2g01gSERpkK/PMhcX4QP6U\nGoBFtMd6m+FpBGlEhtUe9mauIJ+XXn00E2VbsrLAVlFkKIgnSBU6E/7lFD1N\ntYe714so97xSB8Y8UmIw6QPDLUvVX4BKYj7LxTb5c6WBeyjN2xZtb54DZ+A1\nAjeymUnKUn4bCoNnCp7tglDEJ6E3NUuBKWe/gYhIyw7RrNnCgD4ZL6uOo497\nS6qEn8HTK56VgWGM5j6brr9AiRW7fQpMGQFAi/Ec4irEfHzBQhnnkFVkmeaV\nlG7V\r\n=dFi2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZUJYIsYcZSI7paznQta6cxQE/S1oPU9PEFIIwY9fTVgIhALiq6z5kso+HRK/JFJkHGWq2/4KZeSkdVmzubQfjIa3+"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.3_1572016242041_0.5078717370139894"},"_hasShrinkwrap":false},"6.4.4-beta.0":{"name":"@redux-model/vue","version":"6.4.4-beta.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.4-beta.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-MStPTCIPi2JNv5v7Kvp5zbHJ6ewW7vbTLOpE2wYQz9hURXt2cxKOqpThuz73JvJ6NhMDKSXNt8Sx9BJ/HuPT1w==","shasum":"d4e0d84d9d3174a939c0e8dc9d404f02a5f0a3c7","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.4-beta.0.tgz","fileCount":62,"unpackedSize":74673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds6PnCRA9TVsSAnZWagAA2n4P/RLDixVBFNFUQ5Z42lo3\n4hGjEkL6OiNQB+3n+33qp9yfVComU2gggN08DJGnORUHKYm28cR4r1rMNU5m\n2N/fATwaOEUzoSdk1IVryb2bXMiASshxILzVssBFon4fjw2bN13/7GIJRsd8\nESccbg0xc9SEEmkJhXikjl1lHAxr7ixu/h/mUS/xYe4uCUuU3elfyDd6WZdi\nrwdo2OjtcTauSzb0vUzr7wNaUel31MOFdufc0WNlcRYocgSFneYXYosUVh04\nT8Lw+k3EBF5fgtTOvVsORIxEMDseH0MA3y+QeMNGZ7/vYjaS5Nv54inQIUQw\n8aoYL25Dmpe2ROhskBUy6varfYr+oEx1wg+JAKEAGu/E4j2g4DI3Z1oG4me0\nAi+nZf/vJe7TUDxlrYOiL04FDgNAp/MTL5OuKyh95/V08zWH86nhk6Wpr2LF\nWtBUJiIG8z8ff1zBCj5wZ5f7qQadJm0tg6G6s3QDcJT2lpRNMeg8IdfB80hZ\nyN9GmIgCQrDp/ijl+eU+gHlztJvewEztuM25g1AJr+wKZAFRFzi3xHnQGbXR\nZe7OpdECF3wFtfyyfTseB4TwHe/3osiTfAb9fkogWYNdTNjIvie1bPxETsDk\nqnOXFI42HB6fypcnr/3ULV721UMlLJ2mfx9zrAEadznATO1VMbVQawv5Ihyu\nyThp\r\n=GJEq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWcew2F4NuoJt/gQrKepmiyZHQOWm7dZOzfq39zRJ2DAIgZ1QRgOKgal7icRumQ7R01GQuvGCFmp0nunE+h1ZLF+4="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.4-beta.0_1572053990481_0.6928153475113386"},"_hasShrinkwrap":false},"6.4.4-beta.1":{"name":"@redux-model/vue","version":"6.4.4-beta.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.4-beta.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-4LyfGhCq1/XW1ZSpIJKgKok+wk1UoTXjr4eDaF+OcF2392DCzqPnc1CjWkazUOs3wPbpHN9HySxj0HeEfXIWjg==","shasum":"6378def88f92b20280a6d9775735b50a7158ab1f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.4-beta.1.tgz","fileCount":62,"unpackedSize":74747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds6TBCRA9TVsSAnZWagAAMkwP+weqpKoquh59etDBKu7K\ndYoVhFztA9JhbHe8tqJHJafBqcrQVxsdEh8SVNsHuvCtRorbS2JemecvMszC\niViOVcZNEv4iWOl2PS/thLZCpmqW/fPYdRapy6FDjSi5jKg1crrOMRVk8wzu\n+A2ZGUTckeJ7SMy1vMSaw0B1mBJkWmn0vF7BlGd+6vqL0tMxwgTfmucTH+Ze\nDnKeOyXKy6WrqdY3gTm0rCSK21yLStyf1wKFIAheX6qP9laQ7OUKj9bukBX1\nnMV/J9wbPPu5xJdXrI2+iyM7IgNFwMjV2WEHbAwwhoOpJuKJcE7MkIuy+fDI\nSMDS4omQMeubfIWbfliax94gM/ENLjqvwuL9n9FP/ifLoQLnnv6kzuCwV9P1\nUBs0K/U+aVVOm9dYeXzUn14etLVz1HWiuJewTMB+xwB9IH7zz6i6ishy/5Hb\n+JJwuJ54ndYPMFxAykgSPGWnQeRF7tRkF2QzPcJbvDBkuuRNd4oFUC7NMVzc\ngsmRAQetUZH9wtjtpEzKVJI/IJ6p7FWCdV8+G5KmWG8fmU3D6ajK+y3PRwrj\nPWqPxmKj5LNuVbiNUJfVq/1iWoU6z0D06tGrBJs50qnug/qXZuau2BS1fxU/\ndqZSVpv4ExYnAsJ2z9NwBjqQQpeZLtxRGJg19wvRtXrtOGv3sVCt5UHpYuG7\nxtrz\r\n=stIW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQMEEwFhoCZzi4yQCBysf5v9bvrtyZtmoEcjZcd2NxsAiB+N5+rdsCrVDFjePRMHfSGG4uj0CWUlRjiIkiWTU/h0A=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.4-beta.1_1572054209040_0.30032811235457424"},"_hasShrinkwrap":false},"6.4.4-beta.2":{"name":"@redux-model/vue","version":"6.4.4-beta.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.4-beta.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-Iaf8/uQhtBAieVDPS3alcFD3egkiz3L0T0RXUZs3Jy5+SwMJzvcRwZ6cM6oL2Jrod2j66PjbzHprbHTTGZLfHg==","shasum":"2cf9886cbefbca33715add20efd82417d5c92765","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.4-beta.2.tgz","fileCount":62,"unpackedSize":74723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds6WUCRA9TVsSAnZWagAA5OEQAJfgdLxHMnfx4K4hslXC\nDAajyc4nvSYJK+gG0x/vrq9Lr+Cl5oMp0/D/tpI4Yq3zOVVuM1XGqC3h16RI\n0n8X55Lep0bEupGTxg3n9n3S9i1XGJ45R4svv7hGpVFX3v0rOUcsUmYF2gKm\nVEzpAylAfh/cLj4DpZy0hBHod4awh2yvLsLa98KfygaN98BeSQFVcbPJUPX6\ndZRWWv10yFtoejpfap+PXk8H85onUQhDfCCAtkDgs+JeMB5SdgnkGA8qqenJ\nJ8UKX2P5w7gWpl6+euro14qxpoy7edjRNv4fARBNdYCIuTemETeMRxcWxhO5\njC5j6zejXhM2oSc/drGYJz8hZBhxEQP7KgZ8qCRiOkKgMVB6FpmJsUc/5Hqe\noOXi7BUBfPsuh8FCWGxgFt/SWNKCE37++inQYfG/IJuzS+AiV+0MKBUirX7u\nN+hQGl0bK9HWWO8FDdWm3sz716yjpVxIuO915YhEiYzQMFKv6/7f0DBCdMAx\nsAxtmHiRbCustgXxRW3HKZEBrYJGKpV/E3bc/gQ6XvKSyJJztNmZOTdOg2Tv\nMSiWPKP9wiNSm5FyBWeucjSuatUbaqCuLpgP076+XhMynbGdeazV+uxskVwJ\ntmPmXuUFov5dYGqgO8xHzg8s+UGzYDLhRSgRpnAWnGujKdOLqNdfT7iAvUA6\n5dqx\r\n=aoTI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3FnThRg1rp8gKML/ixXtI1GIVnagEoGu3DqXUPDrwrQIhAMqDFerV7p8CirbbvIc2YPGUERYwke95HrjW32cvNmTt"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.4-beta.2_1572054419967_0.6458446779637881"},"_hasShrinkwrap":false},"6.4.4-beta.3":{"name":"@redux-model/vue","version":"6.4.4-beta.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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 then cause low efficiency. Additionally, the business code in your project will be larger than expected.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. In addition, it's difficult to build relation between request action and middleware through type definition.\n\nHowever, Redux Model has resolved these whole problems. Simplify development flow, reduce lots of code, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.4.4-beta.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-mVON8ToXHwK/9UAJ/s/2s9YJvZvglWIxwLrQQlz2xiozOmnwA/pecKOS2xkGblDGaSePB+WyW9bVhCPpJvXlLQ==","shasum":"1b18dcf10bc5dae7f49e069d1ecb7f6f74af6a3d","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.4.4-beta.3.tgz","fileCount":62,"unpackedSize":74673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJds6ZpCRA9TVsSAnZWagAAAu8P/iCZq0opDg255zU7kkbY\ndj8Nc2Vd+8YVRxk6ykE4TOpiwDO+urkpU/dUFvEthdtQ8ztJa7wiIveBgJ+q\npPOkgYi/17Evp15t9yQVnHvHxjF06t7PBALw2Op3VLgiUxqp2geG/BdRH/BO\nvdlU8K4bXHnNRN8+M0b/oC3tWW50j8N1nLSqRggKbUupu/NCqxvR2KDYHlRr\nxqRQfCrDK3wmfZ6n7rTUeV/vbfgw+uuqltpEBKxSSigu4ne/YgKG/9aRonUl\nm2Fn+FUpdAd8Kv65UTCgI073dhTG1jpx8NmNRHbrSQDb0P4fcmkKD9jv8bJh\nxnJ77j0Ll7WD+v0Uk6Zq0PyG5QixisB5bmuyxAiO74DIuCnbmtOT8qgeZTW+\nvUU3Vt92BSPB+HqW8h40UINULSOWx3nVVJs+p0hebSq1FhLuou9wXL5DpZ3m\nKs+bpwPub6c6ipKwtZm65RtNK8OMIlO7ezLle3RIld9SBPZXp9dArNHDeTKU\nJ+JtKDQrRlJiLQXrKFgDjyFkaqfBmibUemE5hROZ/ydmds1H2qHSE5FeApke\nAYVe6b3ZLPR+NmqynmhaoK5cQcTCTzWUTF3JI9g4WvzzaO3wX3df3ZQSqgMe\nCy7CW/5fyL68yNDb6hCprDahIN1mFW7lfv0534jNsouMy98rV7huGB3wpaBn\nbf41\r\n=u9Xe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/nbCNsjieOFNsysMIlaymp78yD+iNjEDCQ2mjjReBeAIhAIVeHdx86k6ycVhRtw17K0riHllGBX4WUnYNNrfsYplL"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.4.4-beta.3_1572054633452_0.9396557873089186"},"_hasShrinkwrap":false},"6.5.0":{"name":"@redux-model/vue","version":"6.5.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-JcrSQIN065lYnr0BaIjSqkTwXSi2a27fgQ7lhmXn7VKbylGelV3+IamU6d+jwwWudnDub9CRtFdjipknsKPa0w==","shasum":"6141b3739819216ce9a580739b8fb818a5da1707","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.0.tgz","fileCount":62,"unpackedSize":78044,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtp4NCRA9TVsSAnZWagAAuK8P+wXa22/KNa2qdn3NVgTb\n2J8FKIP/nQ3Pn588xiI0iip1/s/9N18oxmqqRP4dCBVnKdPUElXNQzreSCFc\nEsQcuOk8fqKx74bd+iEo3yrrGqW8ldtbcHXFjVwbSW0A/rlUkKDvtNLk/Bjp\npAm8y+P2vPjqGrLQURCpICx1RQQFOypwt5PEyb3JGpwzAR2tbOpcRpnh47kV\nApGZh0HG7IdlG5Z0EJJDfVY7DVYciWwOgZIZ1ROwC8/H8l3e02YpHlWKEsHo\n77ozYbK2Aoa11WVhoN2WcCOtqnnf+4/Rkrx82WsUlYYvCy+qz5oqaeIvHxUS\niKvg05stUWcwspe11VRx1hTftibTb0/RY1g2tU0Qghmgncd1isSRm2jSNrfI\nH0jnLutbGg38W+COwr3vgybp60M0YCxiSn1t9xwhwEh2nPqTPAJ8HmngQXVi\nt7p/wyDzPowzF1bPqSkv+toL8EaW2lZunxvyBeI1/5EYxJ7sdRAVE9RX8FA2\nKc+Q63z74ysMYldLRuohMfV4dJZTHCioS8UBPxdUE4veV0mOUC2Hd9MbOhYH\nrXsG1h5X2r5YzLC6FImbLuhL7P9Hew3MsIH11n5sCVRbNy5TKrkLOSPEq8E9\nmP7q1QeShcHNH38LHH4zBydS6gG0RAfqp1PMYVjOuQtIpC90xyl4/3bXKvAg\nQg/e\r\n=XRiq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBsNfH9MgF2sRUTmNYidrcCqpjQlNYu6c45AYQOj8SeAiEAlCbT2d/nJ6NqBZ/xlKtiiomvCrv9RckVr5oetoJVetY="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.0_1572249100962_0.32728334940564996"},"_hasShrinkwrap":false},"6.5.1":{"name":"@redux-model/vue","version":"6.5.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-8uxUbSczDyRWl6iO3AbX9VVtk3L8IIQgAN0GXsD1rhQ0amzuxaNTLn7gJsBx3q2XDhJJi4ebNkilsgFTMmN0XQ==","shasum":"9934ad70ccbded8f5f7f440dd837c2b52c9b7375","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.1.tgz","fileCount":62,"unpackedSize":78049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtqhZCRA9TVsSAnZWagAAfhEP/1SyX7LHhaTYLEDQHqL3\nbQe8g9dkcoMI6C61ifWEDeLYCkAVg7EQEO9I7K4RStq7eecmokQy3Go73Zfe\ngVVhfcV4fBprC55ANzvNv0ceoQClb+cgf7o6CV/pPtbuBqGoo+irLdpv6cTf\nR/DdUa9y7Rsd6MhSsLSmDQms6nAm86+TcKGe638heb7lyj5sUPhik5lg3Yp/\nrT1g3B5GEMkRZ25DDaWaS21g30Y9sx9FUZ+O4MlXUIuXkQYPo6nfgVJItbYL\nEY+K6977nfg9nwPQxhwwhsc6H/xsMLrs/UtbsFI6ifFM4ss0oK52IAmCwHfH\nBXI/Fmg/17RYOjeD6IzmHf/SUxOk7iC0VN41LY2yG/1Z6GZ+AxDq6cGx1kG1\no3EZFUrhEOElhSicKjpOCrB7rZkdBIH48MrXuz1FUMzWyCWF3Pe4/xw3J6j1\nRmY5aTzmITrJIXs1JwuAE45Q+MTfRpbf8D+hlv0eFmlBjEdP8PtRVq9F4WjA\nHaNg0ngDfEwcEJgnJrrbOz7PKnFImWYavg7rCqM+fV+5kw3vOpuslvUg+nDN\nuFXQUFqkTRbhQXIE8FWTrv2NeW+0eiDYg4mGiGU8eNvxBS2V94UOPfwzoTTy\ndsDXv/1k1k37C7kHBBMwxjSxDTu9OP6BYdiUbkxcL/P4Rw+7OkxYONCx9tbM\nNtcW\r\n=bDPZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBFYvfwRzsM0vhoY6mGru1G4TLt4RSyouRT9NoR5wGJYAiB+ZFdfOJd9/eVrFgOoewQWu1jPECknI00EeYZhXCgBUA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.1_1572251737140_0.948337374143887"},"_hasShrinkwrap":false},"6.5.2":{"name":"@redux-model/vue","version":"6.5.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-lRWj4PR34uhvFptBha9rfMvaVJuwE4HtrTBLF2g0nKTQC/8Juy551NX9ckWD9qreR+5zF1wE59pF0K/A7aMlQQ==","shasum":"683d697d4fcec976fdbac58795902d8d603ab880","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.2.tgz","fileCount":62,"unpackedSize":78024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtrSJCRA9TVsSAnZWagAAOdQP/34WKoKiXSXl615jMZxc\n6DVXjHtGY/EVSVbiazy5MrPgS3sxO7fOytU1em3zrNUpM942VeiJmjnc9n3U\nEfcLPPPr32t8MegEc7dEy9iGfvIrxcmY7gYcvjFcGwh1ld58m4SOkLL/sOSG\njD0MEW1ZZYnykAHMis7f3vbVBsO7ifC/mHB46YAhC5XtFii7/plWqn704rZE\nMCvpJ495aAmvYsbNzG5ynlX9bnB3WFv5pDeD/lltbJJ33uIL5k3Tsnzwrsqw\npzIvoO4KRD+svFw+nrqaF5wXQAIcgNJQrkacBR6E0sIXrz82Fzgo/d/d2bnE\nMIcNbpIL8r1clKsMBfGdO9B0mXvmPoKYSFH6IlcYOzXjMKVj2b4wRnvIs88O\nZuP19Fpivg7Ii5mJGWgTKwJwAoxkOE8KA/7PTjI2vMKPQINXwotDiQHhiAZD\n9u6fjzZhMkG5zoYZgmn/IKpvQQWOaWecgzlWNGIGCas6uont9UMOQNavzCxt\nzafmpUdfwh3dv1pbb21OnVQXFo5lLV8PgMWE1j3X9cZgjpMWu7wv2VwSS1Eq\nz4qf8w7hWrjyw5o6BXUW4F/bCObWz+mL9oR6g/TMLqsog/YvcahqggjYBIc4\nbejwRFCMzB829+JUKRVJKicET227H/jVerGC+lB54Vtw6Dk3hBa68RbP/oG3\nPd3k\r\n=CV9M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGU7Hv4UPXW2MF9HGYV6bFU2A+CdOaM716YkmBnXYRFrAiB9ZSx5xmtDv+mNc7CsQqpV4uLMDrNNkMPtJMOLx4DmqA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.2_1572254856648_0.1601492227866752"},"_hasShrinkwrap":false},"6.5.3-beta.0":{"name":"@redux-model/vue","version":"6.5.3-beta.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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, and then cause low efficiency.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. Additionally, it's difficult to build relation between request action and middleware through type definition.\n\nFortunately, **Redux Model** has resolved the whole problems. Simplify development flow, reduce code size, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.3-beta.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-No8hg8ixPRTFOT8ido8oe/tmImI2eFZAjvEP0mjkhoHLLCdCqeWy865eIyaawJgH94LVRdth4pC2k3Iu0/T7Ig==","shasum":"303c48df0c3eae39d40725e1910639b825b0fa2f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.3-beta.0.tgz","fileCount":62,"unpackedSize":79205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduAJkCRA9TVsSAnZWagAA3cYP/AvJ+azsh9ogJZC+tdc3\nqN4FF+wIM5JCvCHZOse2eeZLgJrR7MM9TRJFlv+CIaKh+XBEaR6wMf8MkNS7\nRYaPB50QBBMVe/3qRorVQqupbUbRJRSoOBCuPqUdc0tW2PNGmSpxCIpqgxaX\n1b1UtkNuHw8LWmGQTPUZZQNlbphopsWhEX1VxOuMa1J3kVZzojMVZYl65YKz\nh+9PVMgHN5bubixfczhdM2TAeIIAptzyunnjateCUzodgSw/y+ik7gTro2BX\nNVR3Evk+sDXwbnWJBBKEAkUFMFCEfE/er8wiKaRbKvfb1CUfrKFL2o2cwt3f\n4Q+76QhOC8YxjZcFlCTjewpFZgQi85V/cNIytI2Wpty9yRByXRdJps2lGNNK\nXNNaE3I2jY1213DgXi23H4GJzI36s1Ph5iFTrhHLnhTwn7t/n/kzv+mCaCTN\n/UeKvoc6KjuJjvrCeXaldfXqLnmPuQwBOAxQCBQnRFu3+iZ1nJ23eCSZ0/tV\nCLIXobHROWNwJmI4B8UB0h+Bo+QYbzQ6YHnoCFowtWiu8NMWQIl/s64BFUiC\nSmGU5fDZoBvbWGNtL+8QuVjswVgGUlMhqEDXzehdosdoDsuQrcAXMapowVt+\nqeBhlewwZC1Hu8FHfMQ720Yh2czpvIg0iVf38COP86d8BO6iJ5DbCfd/DtvR\nktB8\r\n=l8yw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFqmzK9AIL7UJgyhqg8EMXQwyTUHRV8fEgixO5kfaV0eAiB+Xz0d6MCcBJDNh7NVJt1ePUhgA+IHaY6dGgx99bKa2g=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.3-beta.0_1572340324126_0.15210788155262445"},"_hasShrinkwrap":false},"6.5.3-beta.1":{"name":"@redux-model/vue","version":"6.5.3-beta.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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, and then cause low efficiency.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. Additionally, it's difficult to build relation between request action and middleware through type definition.\n\nFortunately, **Redux Model** has resolved the whole problems. Simplify development flow, reduce code size, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.3-beta.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-kPVY4Oji4ixyEBjVvUqIxiyDFPUQyU4E7xmfsQj4CyCa+kiDUJ4ED9FdSR93CUadeuq67rOoBn38BSVndidcbg==","shasum":"85cc7f3772ea9f9cdb3aa4e5de36aaffddcae1c0","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.3-beta.1.tgz","fileCount":62,"unpackedSize":79709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduA5QCRA9TVsSAnZWagAAGtEP/33DGk8LpVKNcl7KT9jg\n3XGGt/wBFuRqhLDcPZNartIazV7UN2eidB43CMILQyrcU2iAs3kZ/U5XqkY3\n1uzfLlFOFHfnufnFB9tTCCkd2bnTrSI/hZBoGNfDnTC9S5NbuPsuUlGKsN2Q\nlmfW+v5kpGA581cVRW+16EMhE32sMiRVNe7r35F0JfnCkXW0EFtsm46csfJ4\negYapes0qSNL2W/6oeBIRxZ57o42u0RjVRGfj866gm5ELP9c98dCZ7M+3XwK\nmEUWPx9AlU3A1tUeM2zcWn/Nd2zAoXJTH294IZ2A2sJPuN7Rl4OsZw6B2ZaH\nNHCv8+8Qg+YerB/nfcm6uhZGxJotnh60yiGJop0bHok48smXFi1mGlXZRc1N\nDddNSVV6RLFS83Tf6GrEvNARYauTxDXldY34CL3sh/FH3q3ML1n4G1RBRjoR\nSbMQrxujjMAWVVHEX7aRWhT+1UfRyx7T0FDRo1vFrbN3DCs2UBWm1crUJAtg\nP3WKmpEt+a8+0rT7K2tx2WuIUqN3RVc6vAy8lYN/ZQN3cVFIDuPOK/5boIMU\nQsA2pfhXC00OldTihPsMs6TEZCCOpTtsoq1i22fVHCJGNJm0sAszUZzYDLvH\nfoga8MN7PAQwmjRLFausUddICRMRwYR1VPeBYwTP9AhCPPXK/dNNrCwPYOY3\njsyX\r\n=pLDQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtFbx2x6lj2mvf59dzdfGDm4u4YLefwFSv4KxgJizjYwIgCNGir1kxsP49cMFNPAvKlylz3P0isEwTESw+vwDoa3A="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.3-beta.1_1572343376190_0.6075662784754616"},"_hasShrinkwrap":false},"6.5.3-beta.2":{"name":"@redux-model/vue","version":"6.5.3-beta.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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, and then cause low efficiency.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. Additionally, it's difficult to build relation between request action and middleware through type definition.\n\nFortunately, **Redux Model** has resolved the whole problems. Simplify development flow, reduce code size, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.3-beta.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-FXHmT/qdNlAlk364Ht3QBQ3h7eMyVPs95Skxi9x3OLhrdIigDilli2mrB2ppij2+iXIJvcyzmZ+6+IIObeHPDw==","shasum":"8e1330e97579ed4ab075e55da4e48576c9ef2ed0","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.3-beta.2.tgz","fileCount":62,"unpackedSize":79898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduA7UCRA9TVsSAnZWagAAzQUQAILRnKPO9z5mwdG530hF\nkqW/TyEUMNfzYfFarhGnM0FBBvgyOTh5PePIJ3n+uEv2UTH+8/Q/p/d2hCyq\nv0ZMawsWJzbfQVfsnrPnknISSlT/zzJfPC8yatHPxxG+qbrzRQB8D/+nHX+i\ns0eqYI1rAUDZ575F1fd/elLY5GIhf52gd6ZixIgw+HrBIuWd//tHh7HApgYu\nEAUfAXXVmT5ZYCYisJa0ZNs8qDoWkCnn762tdk6yY+bF4DM+6l5oIuMZZlr2\nCw8B5+iMVnOEcxK5qlyKUg1H+4aqIxhF/TifDxEW2MEVpbY2pf5FYM45qX1b\n3nDCCcR2FVz2rfWYPxkh6DeOQ64MEeTcSa38FhRTYQ2YZpx2x/zzzFj6FFD4\nvIKmDuJ5+qi6vDxeM4EhT8ML44XN2vCr7FHjPAFjF6yjNTck9wtljJ9UVfgO\nVZPBcS9OS0lJk3C/nZ66B0eqJ2sDtQTcILuL6dpygmjVQAeZ5nd7D9xOtlYn\n03hP3LEpSoNuIyemAKZL/DeE3bb6NyMGWPb7eLRrKqdLwREPL4X7HiFS7Jgr\n6ND0LQrn+feIfB6UN9TVYPyotS6y+GTAsUZwKoGNa8p3cznOdAd1fHhDaRRo\nmHlupL8eXeeA7yScvFVymdMiSoaXem8aeD9VBPTorIB+qHTImAbb1dUb7f+X\ngLUz\r\n=knHp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdE5hpWZ1AXcgQV9xB09lkQZmQSinWUKmMwYjuFUxGfAIhAMrMmMmqHB+75OwM6/Kl3uCd1of0APJH/CKSCO0cAvr9"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.3-beta.2_1572343507813_0.027267165373642266"},"_hasShrinkwrap":false},"6.5.3-beta.3":{"name":"@redux-model/vue","version":"6.5.3-beta.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/fwh1990/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^4.0.1","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"readme":"<h1 align=\"center\">\n  <a href=\"https://fwh1990.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, and then cause low efficiency.\n\nWith typescript, you are required to define type or inject interface for every action and reducer. Additionally, it's difficult to build relation between request action and middleware through type definition.\n\nFortunately, **Redux Model** has resolved the whole problems. Simplify development flow, reduce code size, smart type checking, and so on.\n\n![License](https://img.shields.io/github/license/fwh1990/redux-model?color=blue)\n![Travis (.com)](https://img.shields.io/travis/com/fwh1990/redux-model)\n![Coveralls github](https://img.shields.io/coveralls/github/fwh1990/redux-model)\n\n[![](https://img.shields.io/npm/dt/@redux-model/web.svg?label=@redux-model/web)](https://www.npmjs.com/package/@redux-model/web)\n[![](https://img.shields.io/npm/dt/@redux-model/react-native.svg?label=@redux-model/react-native)](https://www.npmjs.com/package/@redux-model/react-native)\n[![](https://img.shields.io/npm/dt/@redux-model/taro.svg?label=@redux-model/taro)](https://www.npmjs.com/package/@redux-model/taro)\n[![](https://img.shields.io/npm/dt/@redux-model/vue.svg?label=@redux-model/vue)](https://www.npmjs.com/package/@redux-model/vue)\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 hooks\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) => {\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\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 Redux connect\n```typescript\nimport React, { FC } from 'react';\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nconst App: FC<Props> = (props) => {\n    const { loading, counter } = props;\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\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# With Vue\n```html\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\n```\n\n# Demos\n\n**React Web:** [redux-model-web-demo](https://github.com/fwh1990/redux-model-web-demo)\n\n# Documents\n\nHere is the [document](https://fwh1990.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://fwh1990.github.io/redux-model\">     Redux Model   </a> </h1>","bugs":{"url":"https://github.com/fwh1990/redux-model/issues"},"homepage":"https://github.com/fwh1990/redux-model#readme","_id":"@redux-model/vue@6.5.3-beta.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-Zxunnkq1/lAu6aXird+sGSB0lXJsPsCKdyALoIEBGjhAX35S8GwRH5c8UEdLP2vb5A67iXIlybPIMqzzWveicg==","shasum":"fbecb31b9c859b0f387df89f428f2af9af797bdf","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.3-beta.3.tgz","fileCount":64,"unpackedSize":81617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduQHlCRA9TVsSAnZWagAAFtcQAJdgh3K/jcick+UX+Yqf\nGFCMkjtpSLPYLXhQa3N1EF2JK4XDe1XGanL/ABvXO6R4wPhR58zTD57YTkUu\nWPNmizYzAczo9DAB7j6CGQzLPWaq7YG7A4NWjBmC/APdyUgBs8agK1EltpVe\nlNy7arlcELR/pHbdXVTKfqdqGSLpp6XaNXJOobYZPPqtsU0y3n1QS3xOk2jS\nLel/0pBxb42uTs7Dl8VW0a3intLu5zp0pYhoZlHuYC3eCP8E+wJakz3EZ9ZQ\n46SdIpDQF98ldL2dxFdAP0EDHVxXT+N66592kZxcZ7noW1GNeID/RFcSdt/t\nkqDEMmqGJttjfmnVnOO3HkgJuB+W+ln96s5w6YQgotHagO9hr1OMDrgZYhWI\nKOIYfywq28wq2LK08THE77ygu8+k2tNK7s8B6OuuQnxUj3CZ08w/WZkfmWXX\nx6tPg9+612n7F+qibIIvcaKfYwZbfAy25j2805RktdLSA7QtruPLxqOcf15H\nFpqwHTiFEJZtTAS7m/w8OAt/Q0TGdbiR/bTqtHAw3nXlIguuksu2eD+8D/Ke\nxILgpZ8S/cFuizEoSd/zw0Xu3b/elDzBZpmmmxniXN7MdE74pAByZgDjS19O\nROkDRew7mnLp3xlOAHy0Q+Vhw9fgCWChCTVw2XmcH/8EnZMEcilk2XcoPS5H\njE3X\r\n=TOiF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDU8GwzhUPJV2XwUAI5v59OIj5F+10yhdC8gS+iHolQIAIgSY4ggRjLWWLAG9vmjAess9trQbq8M/Dr21MyvLIMGPA="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.3-beta.3_1572405732450_0.10931492086120453"},"_hasShrinkwrap":false},"6.5.3":{"name":"@redux-model/vue","version":"6.5.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-r3esnSUhM7EKQvf3HD2Vz4TQ1jxouIMsgtN+FIPWLicovHrP6VCeYAN09hd5WurNF5Rvfzznic73jmSFbQCgsQ==","shasum":"93242b646fcbc0c721c96e17ae47e1a8614a2aa1","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.3.tgz","fileCount":62,"unpackedSize":79092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw+sjCRA9TVsSAnZWagAAAdYP/2iyEXpasTlC9lEIapxE\n/ow8k+debG9IlWCfq5OKKIvl0uYy2FXBqQlqeudIkfrxDuIt+sIe42wG8Q8+\nx2306gWwTHTYHwunKvAO/LgkpUZ3N61PxQg1Laq6CxdyZ8t3UocF319qOOya\nneXCUUM/bAQVZSOAt11hHfHEqCgifpoRXjeZKsBS6veWjaD42v0u3s6NebsE\njjXly993l/mYWi45PBO2TkXnzXM7uCnvOrAe9lbmubn0fJE7jzcfr4PojGG6\nMRAOX6Xrc4tPv7jPab7ALGsGkn/Vw7BBm7RCBLYYUi6RZ3jBzLrXZmlX8nlU\nu8QfjcMeGq2EHjstCkQzpYbKDV68+lVVi9OnOhFDVXrY2Tjexcng2KWrUaF9\nw+sIyZ27O7E9zOOChDxIc6DpFLA+X50uXLmenjW2+U8vWVQKpbM0R7omsgNw\n6/VU7OOLEZzHmXKPDwdx7wv57PjVrTEpuy0SgpeWXPYOEeGQ/OhZ94B2UxKN\nWas1q/eplRzEZnVLF/K6KSGx0igTJrhC2RxPJxTw24Be6xs6jZWZpfwD6Tzm\nVjYodEqx8rE6dAkeOpT7VNDU3/E0LxFpR+HQfyB02pDo53FOUBzksQh6PCHo\nhGtm9mL5H7T/FD5+xNepiJKwMqz/QCjNONkTbZAM/mF6ZC6eSnUYO+Vk4USh\ne9ts\r\n=Z1d9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJ+IP1BXHNhD88aplIVAaGl5uUs8RUk2qTOesouN+bzAiEArTEgRSZYJdlDdj/dXeS2gjE+l8AbJ7iSWE40TRA47YI="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.3_1573120802580_0.13144987445280099"},"_hasShrinkwrap":false},"6.5.4":{"name":"@redux-model/vue","version":"6.5.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-KrLjmYgCtowx3PjlMmFD2Pfh1YEji7Xw9KEaYY5g4RtcT0qbTXhejkxUC9FdGU573zxAHHNPHeB4LTfhbrtfPQ==","shasum":"42fafc471d9b7f410a1f77c33ae13075428df979","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.4.tgz","fileCount":62,"unpackedSize":79408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw/ABCRA9TVsSAnZWagAALaQP/RR5gSqKfiouIybrlyeJ\nkm7GphHCS3VlQkTCBLhhr/jKr/zNOIazoMQ0DlsbxrK3EOly2hOnCIJ/jBFE\npHRuiW+986fwXqMbBuqQs3o0yLrcGuweHxvhLS7Zv49CvOdtIMHqMk9H4+Oa\nwj4KidRPYlNmWOmv757IMrOfI2A47SuiiW0B0AFDjM1HLprXGQHmOL4qeXax\nuyPyQsFUzVHGZPEwD6W6+6UmoCeEUz1xPfQqFMYPWir+etcPhzT8PetYxXpp\nkYmcDes9S3vipYb8t14QKZ/liDCpUfF8SIM9AGHjewHuIF7zvRppnZ0NYpve\nveivFQukxtSW1ilL7Igma1WfpQHPfqZcEgMHXjfHfrrcE/z/ZtsjAm3E1AY0\nuqk/2uxr/KSi0NmyR4ZrB4ggtQxTzY8J7oaUILp3zoE3ifyqm56vOWJLN6SM\npeOb8KfHr2aLk2nhTPatDq0YXhlD/HEeMPPqfS5Fcy5WDNZNlldOdig4EmyW\n7zMR0iZoJCS+W6pi7wX91GKK41DfpZqVRCGV5tfAFBH8dffLOlYy9PXFyfvV\n3gxppHC81538c4QWQszwsSNDaHyvtYCLUqhzP7CJQz5YFRFYAEVyNojUpdlJ\nnsaaRBz0zOPK2hrklbMRDXDmy/ht744oyUqePEz+H3s8+/d5q7ZUqkY+BYee\nV7Ol\r\n=oxDC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4rszERrg8ZjkTg7RToXyLDJb/JpHWwXhA3DrJBpPGHQIhAMtexcEu77tPWrFxk0Mb2JmsBaYn2RpDvZ+yTTxq9sLV"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.4_1573122049160_0.07576527882033601"},"_hasShrinkwrap":false},"6.5.5":{"name":"@redux-model/vue","version":"6.5.5","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-iARkDh/XK3vxR2czQkDev9GCe+4cbwJNfLaY49SGOrzkNHR36iIbFuTwbJ6DdTdx8yz1sh2U5lnwZqpSjEBczw==","shasum":"ce770f8b584000d175563cb07b962398f3f9a1a8","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.5.tgz","fileCount":62,"unpackedSize":79559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxM+ICRA9TVsSAnZWagAAFLMQAKDwS03LpePJrg0uh1qE\nieVcIp7B0sNOkUldCb3iYygcEnjVzK1+wxnwX5UVM44+2lO8VZ82eFsaSJHD\nDoNR+okNRU2Zx+L/f8kqm4Wgs5hs4PhraZFdtvBbeGEJg19pI3c281Zo56dd\n95UOzgU+XctzVebeUBYl6HoLvGDcFEfORGv7HfUkxgK3RtpPq0aDU63fAORL\nBOOBXVapHzinDI98zP+brjythw9qA+ijXxm5wB/wtTak1rlIG4zrmwFZtgJb\nu3+/IJEkSmBK4Vo0fuvOb4XDp3z/dA9AbpM7vKdfcE/cNGWQs/aKMB+3YG0R\nn1af5PBIRH5kIuQmKucModUr9tlTDt21lqw3Wxv/IH1vcPlO7/kcKamJZ3Ng\n9+ng544ocHX3z/eUHlUktqpKXwBbrREu8ew+7Lehj9j/i6ATj243u/ohZjUh\n16Vk8vNKFqyEw0sTFyWNEypjIP/+te0ZSC3vV7W3wQPAuMUcTQRcTE9Po+zR\n5ZtKpkiqHmdTz+pgv7Qs9//JVh6WSjLJ+BJZk4UmHcfNPU/MwDOgskdOrczR\n/7CW5kB9zWZ0lSmGA9393Dv+UC7L8PrvRWUR6rqtOw52Wgbdf+sAnuwr4jbd\nj993vGjSMVEYA+tH4ze+xqdM7amPZU/s9bbVwHgtyo1hARaKtcbmPOlyGWuF\nSzNx\r\n=p4Yw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCr9JgjQ+24oKfsrk+W2OLLUeuombXIlU3F1xoePsfXXgIhAP6OalA5nARL0vvobdsK3GH89tCY6RWIDQBugSkWV405"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.5_1573179271661_0.6259957271160668"},"_hasShrinkwrap":false},"6.5.6":{"name":"@redux-model/vue","version":"6.5.6","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-XRORwUBLIJJe1zpXTV9fNj7wQ+9/3xhDbwjrVy6muUZVBQAHNeu/CzgBjE22uKSsBgkKmauTb47mU37h/Q+cLQ==","shasum":"1f014b48030cd483f829b0adbe662efc1c6aa829","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.6.tgz","fileCount":62,"unpackedSize":79677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxNXuCRA9TVsSAnZWagAAeI0P/Ah01fGOXvwPiBN/3gfu\nAapaLf/B8b4wEpVIAXWmHcM9Xuk3ZfZAed87EWjg/KmzjQnzQR6VkVlH0wlF\nAferHMETFah5Vo5psNZTZddSQ28J8Og38gye4XrISFaI+iPJMLKQqBtRmOaU\nZvFhUOa12HE7NQp6z+JImyOm2b80a4VNnmDRUWSQgmg47hdGp42IhdN2mP1L\nNC9FXcJzLxJ6hNKTZh9FQP18yLuYUPgiNQf3omJenNxA4Wn9MnGqXGf7gO4x\nqI2G8l38dTYZq7AzcukDqMrK6AYlM4hhbM2PNgKLyT2lSLhiHD395oAamqI9\nlXhdPRdeFsFq/pEKtDKaK8fJC56BkZU76inlLi7f7pareQgf8yPcdfCWya5D\nZYiNVvUFM/xbNOSV0xbDoUo8ajPFqaAr7lRoRj6SPgoup9IsRh0ycK6Ifz3D\nJ+PoICeo4bPI6G/3hQ8nOYSQk27nNIGKzRz5L7BwTkky7GPgj6pV2T8VX7Gw\ne5Ha8gngc4QY3qKtlWf3VIFEHtOYK0O0rQqWRTTxEqIxDFcqfAd+cYkWSkym\nCgkTbZ/ngqSUOVeS+p5HShP+mtFpD7qVuk2ZWkUEpOMjGhs4kvRR6v9BO6tk\nO67phMIi88Jazv8LFi6HzLkROgDlS43+wxbX3x38rAk/fb2IC7ty42HZTTpX\ntCCz\r\n=V0YH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfHCoV8FIhtstXcnhX67MyfGnNmkeRZMY6LToOQoEFEAIgHFDv6kmkkbnfMk+1We+EzPMCg1VPXW3TfaMTUhGrr3M="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.6_1573180910589_0.958318991233124"},"_hasShrinkwrap":false},"6.5.7":{"name":"@redux-model/vue","version":"6.5.7","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.7","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-v7WGlOpQ34vSNN288geoEVEG3JC3UiYGEkm2FqSqUEScauaZ+lUonm11Kg2oBReTiV+AWxr1raXSPlCXcSHP8Q==","shasum":"b248aa0126c8ea542b5ce9b20fb0bf395383b55b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.7.tgz","fileCount":62,"unpackedSize":79559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxN3vCRA9TVsSAnZWagAAIqEP/RJ+LE2InrMxHJb5RoQp\nqD/ALYTjLU2z8KZFVWhJGcUV2UDGxPQQdN9D62baox2303fUUcBA8XDpq0Z4\nDxnY1KCgBUDxrVSTd4eJbJETh0InKPTnq3s43Gz6QF5Ivb4tmdbgDWLrkW81\nDY/2rYzkZcot0AxCxeW4uduzKXEhdMW9p8c7ljUNk2dgxW+KQuFoT7qVXOMl\niUaE9bPYziuHd+ljtJODSrMBEYodMNjq0PpvNPBCrldvPK91eF0zWSem72EQ\ntiojL+48WP8epdeYQbNXM72Xu720VmyHF8ZOdJ5Mj3Yi4xYXPuY9HGK9+6kW\nZGEeul0A0kQM74ZRyAJKwLqz2mQSWlRT6EJ9rip7HFLLCfKduEgmCkczrDUy\naMhlDtnYPQFrFFXjgNoM4M7SQKPf6QQ7BJcdAYpEhT4IWfP4/SzgrMuRqWL4\n/8i8O8AtOhmG04LSkUmPNhlQVOK7kzn53sYv/ungUSTrnmyYBDZoewODedlH\npi2QVycusy+ywYmpCbaADwyeMQB/7wk63u0HcyK0bTwC1lqTb8g3BA3i6ppQ\nhJXtomOj1Slk7LzBHW+m6iUJ+J4J8FF8MyKPi8NzULFnZGhUMX2f/tZkRMRy\nHqSKka98MaQN2wA/UaV1vXIfDwmNUTUhK6FVyrzb9oZ97uyVpJo4XaT5bnL+\nGIFP\r\n=FJGD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZ06/FF70hgPoKDUU7Oaj+9zG4ClnqxYqexMbRH1+GIgIhAO85ZdWpMg/wATAMTsHGwEg9v7BOdsneTecfEZmjxZ1h"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.7_1573182959408_0.795184836273565"},"_hasShrinkwrap":false},"6.5.8":{"name":"@redux-model/vue","version":"6.5.8","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.8","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-v02G30sW4Wm+z2ioY0RP1p+vYCqpEYij82/taTF3u4iQ1DJ6YdGbeeIJ0k1ccU8nerJ+TrSyqUgjr8iUJYWztg==","shasum":"082e1483ef028f2bf82ccaca63eef6a683271c40","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.8.tgz","fileCount":62,"unpackedSize":79570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxN+gCRA9TVsSAnZWagAAn1cP/iIcz4K44tUjki044tUw\n1+TuueYYolgkAI0EphwL71vOq3k9L47UECa9sxb3eX988H2R1azpNlw8AUXi\nFICK0H1IjLvjyULHr6PNnaYc/fe8wCfFhKPJ7I7NyQqyf2lROGNRCXqFgrzH\nuKfQ6OL6OTA2aMP1DkU/cEqEPC/JdVjJFGKOI9bAD8twDIvVGP/ek5KwVfgH\nwnbZ/dlCw56rGZIm4mgYV1qRpUbWV1PJULpYX4AS+3uJsHla+yaLpvy+RL9a\nPa4Op2wPrABEtRbf6YI6gXrUiNcyuDR56zSwCEM2HEaJSQAR61aBAksqijq0\npZL7gnd83MroCUscpxGtZuWVG8Odid8h0x8D0qmglemfBOGe30aFp+ZtEIYq\n9JPkq2hwtNmEHyQfWOfuIx5rOzXq/YQJEiV9Jj5u4Nq4HZodfIOwBrwlLYUA\nsbTuoMBt+bUJjQWGFV3zg8+Pb176Rg0A6u2GkU6GcZoDCbtUYoD4YywCJxZO\ncwY7meV0OGYCx3ljZCIISg4SwLzO8AkUPqcClkHz7CwOIpSQLngxEwOtpIwT\n6QyMFezK7eUtS7c+H5iNig1IDk6BlCfgXxPFq26YKiza+RetqDxMOU60UQun\n75Rt9Kl5FW24l7haDWBArqjaQdvJ0BNqAV13JcgCZm4rlD61zDn+Ns7ZDhPV\nWZo0\r\n=TJHG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+NQaOO+dL8cdLAA+5iFfLNxX+eWwP7S3OjgQ8jxl5QAiAQdx0A5EsjIuWBnPJi2QSITieFLYHpMmY7wLzRBnXkQg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.8_1573183391859_0.3518923724904781"},"_hasShrinkwrap":false},"6.5.10":{"name":"@redux-model/vue","version":"6.5.10","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","vue-hooks":"^0.3.2","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.10","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-6KNfZnZJYTlnHZ54+kClknNa8cFwM4cipl7cQgMKrBzWXLwXnsotj8ihH9MRQY03Ry4bncPpx5q2D0TpJwN24Q==","shasum":"668c87aca82e2acd1418ad2c4a014d266f3ca06e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.10.tgz","fileCount":62,"unpackedSize":80018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxTtlCRA9TVsSAnZWagAAqjEP/0NLKc0sJvFS6hJxBm9p\nBAISi9ifVBhTA2CBgnsUC6CRR7DjqYG2MC/7RjuF+PGqz98yQKdN3526Sdwb\nHFAlyiICD/eIT0ZkLZl0ho97PMalmf/Y3pnV8cxhvFUTlrRfSkXGXzchagn8\nTjF2FgtqN0zHSRTh2TyF9AGZXhYa3ndsu1XdUBM1tFM/MJNQ4/IAKoMf+rXF\ntOBgOOu27RZ4prYTAsqlCYuOpsvhCY4vuHyl2MWxazWTLDtJ/3I+7uSj0FhX\nyAANpIhjOjHExmzdC+jeN3qzy1Grt64TzVP1iY/wxVQA+Qx/UJiQrWwoACG/\n1y1WTHsZ53GyyuOCfnZu13dGrT7zMSm0aSwffUdBCTZbnqYny3pKCix398Z5\nyB5wJquAqnZj3pUSq4xwWyNZvIHxRQXvX97dhHP93LVizZpPezGOmTJcJH01\nxsxY1qqQ30xSSbw0CI3yyUF2PWc5MEJTj0B3t/HlC1ziXs8BaS4ziQTypjVC\nBcYvqiTO19Tdi58XZX1yGBQCZAqt31DXgtOCi4pXKDNFD5In+T/ORNA572+s\nHTIVEBihNOydbg3ZonLVqt5Ucm7Nx1jDlPRV/ULSznn+mD/Qb/GQ7aFJOHTu\nGCc/hv4yqT30ZG+S+5IRgTw8ND6Kssw2oPERCdYOU1TrJAqAmWDjkkKHhkQG\nShze\r\n=QIyr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID6/t+THpGIGcMgTqsxSKttwmKL40AYvqJUNYKcXzaRQAiEA3M6Bzr6gnUqihDrT/vZTDicNXNRIdpOY+Qj3YrLVqoI="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.10_1573206885391_0.9003414514961865"},"_hasShrinkwrap":false},"6.5.11":{"name":"@redux-model/vue","version":"6.5.11","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"description":"<h1 align=\"center\">   <a href=\"https://fwh1990.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/vue@6.5.11","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-NigVxEMaJPN2oV2evLeGozhj8TvSDTZHgGs6hJiMFCrUHkj/Nf6Ga7Bibbd3lqUJmcRPVRPzf1kjhxuqxZRJew==","shasum":"46c6c7b02f4e9c0d866355d34a10e27d174ac48c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.5.11.tgz","fileCount":62,"unpackedSize":79776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy3kmCRA9TVsSAnZWagAAHo8P/iTj32DrylVaxx9bDIEI\nmca7tffklQPaGxicTTacM8ZiSbRXkTtQkS5WUse98l52zGxcvUy0OHFZ3TQZ\nj3BvJLfVMSOeT2Y/hfJejekAQLEtHp2iMAVl/uAav0EGrpoGBkyNGRFq16b5\nZKtJD+KSIfFMKQclLTf67bGUleoCAnTwJBQwg4mZ/EHe9De/N0teO/fN0TgJ\nBX76jFhRcPBvPHCPmY7PCSTdvqs1dI7LtJigSeLxR+Ei54OZ9Oj/HZVtB3FC\nXe9Zqbeckwt1iJPcvf1fj3U3zp4s3dwmjoWcA3iaUxkbawAlMmXbIROpw8Dh\ndKWlJvviTo2npnb0sW5OK6etFhD3977gXaA2yVBW2nFnmQaXYhNsZU1kJN+0\nh1yCFzyEj6/aUznmWG7sL7sqcBmbLKMCKPK54m+WvfOzH3eYe8KsVGNVcw1R\nyZFo1tbD1ebtupihiaAqRxdiYemltF9w5NQRCYxjlIVx3FAv5ETc3Gd0h0Tp\nE3+qtaOkn4s0MWTbftMfDDb/3LQrWO9dGAmFUIMDSWMxOjr9HCe7fgQmgzZQ\n9MiP1QCBa7m3eWJTF0bQeQn2K1ysM+DmIgOCFoDQDqJEHO0k8NdVXjLR0Gbp\nSgHa4Y240fMIqGyIVIhBUYYGxjT8yueDLTIZJUGnnQz7hgTz/lyCCJ3C9VtY\nyZKU\r\n=Ne6e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICS9gOBirYyCdQ6X17zVjbFE9AeU5qVR4/bZ2cGvc/RhAiBW8l3BZBNLsY15W+BJhB/BTdJmcRf+TwuCN+GF5hyp4w=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.5.11_1573615910298_0.7328506655376377"},"_hasShrinkwrap":false},"6.6.0":{"name":"@redux-model/vue","version":"6.6.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"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/vue@6.6.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-4uZBwJ0SC2jeh2SWBV9ISXGcZnqL2eF13ZMliDoKWcHhexIcrjIyic/REJYLXPuj9zuqli4bZUeFt7eV9n7eVQ==","shasum":"0ad4214603312e5b0208e7e36a32657ecb5a380e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.6.0.tgz","fileCount":62,"unpackedSize":78831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzk6rCRA9TVsSAnZWagAAUzcP/REQluDBX+TnFH/twblH\nD5hnML3TcaL/5cRenqiOo2JDopmUatcqFaOcdbtQFl+ZwV2bHvZIYVv93RAf\nMWYN0Mq6+IYJqOvz4ADcieh17L7vvkM3g1tcSNdC62ymfZ6tXeu9RLFmKOSO\n/ZAUsrBM1DALuPivVcTKGJ9u2o7CNFxmGUfgqkHQ91nqeWdyyT7ExfarCqH7\nBH/ImpT5oOSBFBZZkTmumh6bcUTuf23cXdvzDM7ECE4m9ayQny6koCExmiHk\nKH8C/VrzmMV40jFLQrZkjqXh2o9pnk52dTr4/Dpm9JHUPsBAHDQP3DIPfWQG\nx+I8dOXH5ybVr5HgaExoMCgEnTbbJNRm1BBiDGHEah6BBYizdTolN85Zd51/\nj0GChQbvIddyos0bYpAuhgwnuedoKgHrP6Hxpybhmz4P2N4hycKx4c1xZs2c\ntQu5dcLYEL6rqCypQojMJIQpCk7mVdKyVgwR119RZ8Nblw+9XCUvVd7DCXs6\nFS1B9fF7fCLAcCfhtaau+UVU6t08Ma1aWJmPbPpkNIPnYt7FrWopArQib2XJ\nc+WTEGCpM/Y8KPX4ViizNwPCnWX6y9upPmB+1b/T8PFTtO0eaDppM6BnXnNU\nCrISztaUsYzc0RNBSTwX2GSAG8Jf4G64/K8/vlS1qM83EBGVBmPA3HpGYVYn\nTcdU\r\n=JLXk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPwlK6OiIZh7LWzO2SuqCg1c2dl+44W4E+tek2zODvPAiAGiDB+1pgiZgMkmhtILynwd3ZhHaSH7I2K3k5F/VN9kQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.6.0_1573801643261_0.6630148547789705"},"_hasShrinkwrap":false},"6.7.1":{"name":"@redux-model/vue","version":"6.7.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.0","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"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/vue@6.7.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-w78nI6NNt2Btc0pONMQqRyO/5s6GIY15spAyoHo4nxqLAoMcI9kEcBO/Am08BCh2WJkygVGxxlp3DUGJeOsCZg==","shasum":"2900f4a0b55f07ace8593bac0d98aec4298dbe5d","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.7.1.tgz","fileCount":66,"unpackedSize":87199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd255BCRA9TVsSAnZWagAAQKUP/RbjKGUkc/bhmpGOnSxx\nY0hwhoWujTtVbG80T7sSLJWgvQ0QTqjU0luA3e3aYUOnB+jbmpocOnw1lVmc\nq6qrAqGt7Oi5VSjYA+KbvcxqHrnFo1yFCJsD5mrDqWG+7bcmzxP1ZEjT7kmE\n0yCEfUh7/4aJxDy7GItW60k4nzQDGl06GjuHJwPaWgLm/XY5Hs5DI5eMgi+S\nMq2cRolaMlXjgIjIX7BCklzlZ29kcfHVi0XEizT7Z2Qq/AfnM3bIEaamAkjZ\n7EXoQZulN6J2R7g1RjSMr0UDixhp5u+S6IlZdtvyx7FO8yrX0W4FHKxWNr16\nPhSf9U5/4XT88fBeAgZU/15JS7uneOpHsRA75VBgWSA5/5j6MlAB0ccg1hip\ng8hOTrxe1ton9VXsgFCfL/aybgCOwaLAn8EIP380qWNsrK3HspZNHyiE59+d\nDbUSzkq8+hSmXgfy09bu2pRaCBtbsemZzWSOFKZ2D6otwJhHtP/L100mFSap\nPFsuetGukmmxQriB7OxFaNb0JQdFk/f1OsFwLh0tVlYD00KQZV18D5RGap8l\nU3vkb4uwboGXAsNukCEts2J51OvdjjDUCnK0R4WTyjeYPQrZ3wRFmxN1zLeQ\nUA6OtuVaL0bz/z5a0yRqZMUqVuaBf79aviFKECrrnlOX3li6ImyT6JNSdLjD\nhr3m\r\n=TdKG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNWjSLdOuL34xDiWgGs3x8P6cyKAVUKCRNovVv+wBLLAiA8y+FhMi/nfAhCtqzQ41law2MvOKv/G8vXcvd7nKzwKw=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.7.1_1574673984822_0.7722523292412029"},"_hasShrinkwrap":false},"6.7.2":{"name":"@redux-model/vue","version":"6.7.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.1","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"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/vue@6.7.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-zwqk0/ZBSkuK1Mu0BlBIrwc8Ub1wnenCW6R8gmDmUmosCCRBTKbfF92DZW3klq7XHKXc023SZ+vg3ZHIMyICEw==","shasum":"48ddb31c9d405dfcfd27c17655276e04b37f43f5","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.7.2.tgz","fileCount":66,"unpackedSize":87337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7zWlCRA9TVsSAnZWagAA1zEP+wRT3AfrEv9NKVLnesgv\nPQutbK1LgykoRbHlDmsLZ/CrtlClHTPPKLEenY44GM0AebAb19MG6mvQ0/+f\neTsXZkjUE6b9xUcQeXmlo1yKpWWnjjli7sCe4bwk5NYe3hoFlnLIudFheWmP\n8adADG/2e6EYMuJIL3OvIumFLdWgn7X6XcWDJHG4pA9ANP80bgmxGr9ocoRn\nNo8RK9uvWNGf19xqagv53V605oZQHp8DxGnKfiTY8kbtR4pSuBzi6ZUksHvz\nP4I4GpSo4Vgp2juoNpUHgmvZ26q8GzTUCuXznG5//gNQY0z9SjB/4OHsMbqf\nEaraybbipaKWV7kxdgekF213Nk4h9VUKqPXRuAARWa5BrzUVy1JwtFk/4Vk0\ns7rp3+PZXF/dKZA/+sRmBtn9y/totzm4NF2YaZQvyjQmHlo+B7GUsmOFU3Bx\ntIRsLA8/KBRqO6KD6BhudUQ+mWayYl4mlCpOV4CfJkXfHJk872k5a7xWEeMR\ngcsLBSGaISawHJHXqtBOu51iYQJWF+lGV7dQChQJy67q4+vVFCw/5oU6m+Om\n+LCztVxYNFE5z3JjvjG99E7Bnxmswr0NL477+FS/oHWxv5Fm3/6rMDISggR6\nh0RAF8UT+azr0Gw0t7jR/BRDezulspesRAioCO0/9+SiTOzsO4xYFKSaWl5x\nbziH\r\n=ck6X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDb0E2WfskYKmhnCYtako5wswpHjcAWB1GoarJPkO0qBgIhANygjEuDDyeYarisdOaCh+PT+9ew0QXKJVtbQk13nt4O"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.7.2_1575957924783_0.3217779890786916"},"_hasShrinkwrap":false},"6.7.3":{"name":"@redux-model/vue","version":"6.7.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.0.1","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"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/vue@6.7.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-uAz7kgY/AJD2b4nT9DiDo08tmMlOt//wz621K9bpieUmZ/+ejs0K+SMLkXNkd4I+1h/1mk+TtVkdJIq8r28IVg==","shasum":"f3bbc87822fb390969f99c4d33d737f884179d16","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.7.3.tgz","fileCount":66,"unpackedSize":87403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd72ImCRA9TVsSAnZWagAACTEP/1CKAIUB9KmSIp9YqmBM\n9Kd0KcfzlMnVdUOFeCRkLRglmCXrKJCXUDWhIvLkCsm2o2W12FN3A8OdlMFR\nO0PgNIu6fLMVy2v15baHNfNbBHVfRukHKudHAZoTu7UXNqHLTqSon7EAyAsQ\n9sQAZ52d6KvwG3aEEXgPMxYEFY+xCoKPW3iTk9nZnG43PIlafKy+3/4+JY59\nmjK3VVTkV3FbbqUeIo4P3Ew0BD++ABxYifMbecDeHQYjL3JuCXB8WVm880LP\njSj1W/+yk0NC9nsqMS4L5AKfOF2BMFtZB0dgYeQ0HZFlq21Lf4hdQnIM0BHB\n2xHmnsvLEb9fGPYtI8kZnXoU7lXjVQTs3czpJn8R03FLOrFk3xhJemF3+dMH\nL4rLGUCXF5fLuy6YARt/7GS8jykM9ci1Qx5DewCivIGHhJ++Ov4ShQ7058Wd\ntJ/yvU8CxdjSCN/UYbJLagW5BnrlSGeMHfS0Nx6BeJV5k4H6ov3WEkoZiCRl\no1XMLmX8Jiax6bW/Ql8lfihuXf8+Q4sGFcZAZQ0BAZ16j57BtBIKvkjRWKLf\nbxz6G8Kpkxf4/VXaL8RE2PTL9NMfSK5Yf/pmbVvIKElCZswzfaeDxSLz2U2K\nJhkrbPH+sq5QeS4Luxi/MaooT0PZUnz9h9zTNS3uK9jqVmDR8GoJcwArL13B\nGO6b\r\n=WtOR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGopWL5R5yFCbb+8kjuLKmDXXOSjCZfXIi95bfZ/27fAiEAwo/Gfekow/nioShF/E5RWYQgFSikcVQCbe+qVjMezBo="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.7.3_1575969317967_0.29858030057910767"},"_hasShrinkwrap":false},"6.7.5":{"name":"@redux-model/vue","version":"6.7.5","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.1.0","lodash.clonedeep":"^4.5.0","shallow-equal":"^1.2.1","tslib":"^1.10.0"},"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/vue@6.7.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-zu+JUriMTBQdTSMzezuxeMiKgkbg13GdH/v5RWuHENk+UFLC8hPwXlwZTzpyVB/2Ic6c0h3ZVwnVyp8sH7ZdrA==","shasum":"0c52a4ab0e8d25624ee983a01e64bca3f801285a","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.7.5.tgz","fileCount":66,"unpackedSize":88116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBEIZCRA9TVsSAnZWagAASaYQAIug322aMh2ILPwVNypb\nPS91RINc+t0kOwuwueYRdAJLCMqKC1WzMEUzrP+EAIHQxmsmK7p9UnZuaVUB\nSyCEcXRvw633rHz9vRo88CsqDoe7Sh/PRPlYSu9ffuKWeUJ7fgVq+3szUczM\nXOzGIRUHvoR2ek+gT/ep9d9uxO7uXq21aGMcZU2OVpLhoYuYC0+wMSoUbuA9\nqeF3af5dkc15gOM/oDasPYVkwRhajOK6KNkmWvZmem0+vBxkyYo9FmvjS02V\nk3MQRI05COkFLHsC2EjLnRD01ivjQWrFG7T7GkjzXHGMrdBIM/vFaHdeoGcg\ntgyDvgdKATGt9nzfX3uXfunPYnHS4xV5ibSgK5+5uAJyDCB+JlfSRNPl14sV\nB0L/8UxavobcyEdiHEfo9HhHo1Ctok+yCw/cXvotIWsADNMrVQS0EuZbbFCv\nOwNZBEGmzVYma+KBye5fTLSjzfkgs10crWzbM5VgZbFj0T41U+1HREuc+3f9\nwHTyPPL7cWmqu5Jey6xYowU0UOEwBn/vzt8k8E0KQaSBRDN7fXKYGMBpIQb/\nfmB2MB07N7Fz22Yynlk3scszEv6DRQvxFZAfrg/+AEY/vcAtkMDzjGhyB/6r\n+S7tDVvwWeH87OpyBd46q0VR81U0AzAbFieKpI1njHFtn5E29FVfRDRW+D7u\nV0XN\r\n=A4yk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDXVPC4BJFFPVaL4ztJNMNnHR5wiXlZT8IsNKbZ3H07YAiEAlCqsHsiQIw9Y+OSncUPPRHq3n4zlyadprna1lemNbBk="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.7.5_1577337369335_0.598493004918347"},"_hasShrinkwrap":false},"6.7.6":{"name":"@redux-model/vue","version":"6.7.6","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.1.0","lodash.clonedeep":"^4.5.0","shallow-equal":"^1.2.1","tslib":"^1.10.0"},"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/vue@6.7.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-4/6jmYSLCH/05zXMskqEdVeS8GfGp03NsicmOl7J1+du38E7SCx3hpyipbQDs2fQIeSbmee72pzhs8+V0Sruxg==","shasum":"4f3bbb46072ab57ccc0b6e0e4f865007bf7d6e2b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.7.6.tgz","fileCount":66,"unpackedSize":88427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDx/ECRA9TVsSAnZWagAAj4YP/2a2kinFgJj4dz0kUZBX\nDFn5qZSHOwv94KCjzmRTDEkL8PWimy10TGI46Bk96lC/wM8adAW0226YFAzm\nfFK3dj+Q8A+YuokIxYUXpO5SlijS5xjVWkOyrqU6T0i3Kn9IERkdS3BLsOFH\nGNWYdnqaWIsbVapvdswr7COCoOUmACNL1ruMKZoITHeyiE/VFCEyDgLWLqjL\nnHWgyq+wgbyq27X9TrGK8xsYZwXyEEjIAObin0P5CjaurVSCVbgEedu3XeJu\nNP/hcbPGOj02TIlhXrCEbtT6KWSQwFsSsNDNDczy3cKQGzXpr/UkvgZIjsFF\nxS5cd/OL3+whlnzuEhbnZVbTzhqG9awWl4r+DDY7GGWG4JJRfZ5irSHqQ5ug\n2EsM/kLTjLdedQT/Wxsuo1CmXcMv1OL///iXEQxUs114uckX7WQZBmHxlZuH\n4qHD3q7vnSmFby1A6VITnGOavASLSwgNxR2Ktxfdo6nBr5Fs+jz/UzgBMVZk\n0EeeCrPIUlHQ+aNK2lLdHtW/6+kV4WSZgF2XhtEHHUutsUYA7iX7YFhtbbj5\ndysUgzXffdVILuCRoL8NVd8/h+8DohZR425ZpS5vCpsF+lUew19Om7wzTQNc\n5EMNKcsYkR3BAAZc2QirUKBfmLly1FQREDWWF544c0Vv/9nlAGc/t+FhVixI\n+Gdx\r\n=Fj1I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAIPXP3gaqv+KBWXkfgfqowYxN8tcoFpb8P1K/zZMMPVAiEAjLX0TmEbxSq6ROUda1UC0tbgwzoQbH6rO2Vrbcx5Jxk="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.7.6_1578049475916_0.4358962034818388"},"_hasShrinkwrap":false},"6.8.0":{"name":"@redux-model/vue","version":"6.8.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.1.0","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"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/vue@6.8.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-KGZTlDnREnQTVlzxOl9wEsgeV2zWT/QSmjkXlvIxbEEcRRaUe1b20E14l6vMCzmVjL3b0L8QZ8Im1jLebiGrMA==","shasum":"821f65e45d8a9207e5a6bd05fee408d3bd7cd4a2","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.8.0.tgz","fileCount":66,"unpackedSize":89957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFHQMCRA9TVsSAnZWagAAYJ4P/RIE6nSFbZ4y3GHHA9TA\nVKdgxuq0god+DMQD4ldNNeD0Gt9xAQJic9zycyB8Ht/8rmrEliFl0vq2vYBl\nrOlX2jnTMo63oydrgx5MTJcu7+RKpFxkt3hhmNSJyVVJ1IGGWprjON7H+deG\nqcqB/k/D6ZiltnpW9vOO/cH1BeK5VzzvjMD4gIzCngJdlgdAxKmBZyeNNIbQ\nffLM2V1yz1O4ovwRdwOtrZR0PhbkahGScW8Y9+uIOd4l6foeATJCXbMkh8s5\nYWsg2YUtIqTbTzMthvZF0lArwmxZvbKR/Rx5PdkCUPT3719EUay1pqgQJ8MK\nCd+exl69MFkZvzQLXM7DQlh5uKKr3zR5nN0sh4LZyUhWUJffTITQnMXsJfBl\nNJfDq8cLrcFRVP5kg/i2KS+3huJ4VdrsY6dPuKe4tliUtYeLqe+IGHlYmwgT\njDfEcioKG5XweBdi+lsfBbACcN+BkwKVbnARjet4ob5ExcwXX/CgzCqo9NuY\nev667eAXNULt4BElGkzVspWKESNNqTzJNob1g+woRLKTwtwzWN6ypQUTYyll\n56TEEfXyyiKhDWasv8xfEGrruLr8AirT4uF46v0iWL2oykQZYNXG0tRGPLhx\nZYlP9YF8R2yFOXAaLU55U0j2NBtVtYm1U8D8mOXhZHw6so3q7SelA9fVGmPd\nw6KI\r\n=6tjd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1K5ZO8oygu0R2Nlc5B+oHau3YfnlzbmnVFeZU0AbZ5AiAFr11CQZyIBgbPsataxp1iVFIWX1fDKQFCqoZiucec0A=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.8.0_1578398731979_0.8548970286809401"},"_hasShrinkwrap":false},"6.8.1":{"name":"@redux-model/vue","version":"6.8.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.1.0","lodash.clonedeep":"^4.5.0","tslib":"^1.10.0"},"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/vue@6.8.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-QyiOsMCCcx9nd8pJIYan5LmQcmwxxruDOMNg8UoNDhrPqcoya4h4DII0KOibtIoLbWIhl/Le+Bkr08wFh4/ihw==","shasum":"a4ec464d526760a2bae2214693fcdd96c8f8ac2b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.8.1.tgz","fileCount":66,"unpackedSize":89965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFp3/CRA9TVsSAnZWagAAyb0P/1B9hZZLzC9ErTb1sjUs\niXrXuu8/ZBFWPDPHii7BMAsrcYmu0AwudmC2fK+pwNeFlarQbwnm4j7MX1gN\nLWOLiXHW3m6ihbVWhMq4mE9WLUWz56JaLrz+EM5tDUyy6facbzuNgwkQ71uA\nxhvQnM1WRbNK+02g8iF+fxol35D+CoUQaC92sSZ3F3SAkqWMg/f5Y6vhQtsI\nkq/efzt5pVp5rGYKhSfyNtcn9F59GNOZZUYL2EOypxCCXFOkXGjAFLtJcnS8\nwowSPwrvmOw6CHVltfHXPqLsRJS3eJW82/pbydGd3UIhFmEHJGHOH4Y8e0nn\nFJ/dTMbFymePeX1pu5246Q4asiY+VvygRoiutsVNBSjU4DnZCUG0oSdwhXSx\n1aTFbiDqD06kzRSoxzaCx16YktO+w17O+nlyTexqbz+60k0TTE5W7dnfu4vY\n0mvxreogVU38kkUBPulKAukX85PDk8HD3xN+j302MCBxd2GoJLZc+x3nkCrQ\n1dP6Fg6NMWz4ru/3Vwl9ZgMobIh6oWqyREhfZU1VGdIKMuQ/RltqCcjbuymN\nJh5QMmkm/khsYohs5EHO+05ZkSKQ6xMc9oLHlentkhSq1wP/y0MIc0gupUe2\ncpx4PqQqzgKwwZ1fFucrU6kJd35Qadewe0IkYPw9Sdnw0J9U4pqTfQfMJpg3\nFFZA\r\n=cHrE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICCY0/9nqHg1i1qFrg45HNgFMB2+WA6xP3EjE8SC4+LcAiBAkuC9xw5gAuNCST3Oce1TT6OjW4rzD1I2LH16ObhGCg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.8.1_1578540542461_0.48436838164245133"},"_hasShrinkwrap":false},"6.8.2":{"name":"@redux-model/vue","version":"6.8.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.1.0","lodash.clonedeep":"^4.5.0","object-assign":"^4.1.1","tslib":"^1.10.0"},"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/vue@6.8.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-rijkikHmiTwKSbSbgFpdW66c308TVaAOjFHyaE3UlPvFGVkgPOdwpV2ie5vgVI7S+eBbewahCZ6zZd/D1TOcZw==","shasum":"49c83522b480b2e9c4f2af2ac7d69ee5ac9d1173","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.8.2.tgz","fileCount":66,"unpackedSize":90185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFuemCRA9TVsSAnZWagAA7isQAIpEVmBT081tfompg4fl\nZek7wb6H0IBv99zBSbEyXedZTv5/DQh0GBAJwtn++pzczYsujAHqx7ut3WJl\nFdZP5zMEi02uXomjCq1Ayptx0N6TPRJpzCpBSTvLu4Cg4jtVZAG9Ymg/2IeP\nJwzQtB2W/TfK8Pl++P3kUhPiDW1P79o96beekmcFtPakGNgiyt1RgSnxLnQF\nosVPhpm6FQaqMZNIEG7+Ys7IhDnHX/UTB+b5Og+ziQfSFYDzoDA1atvIJMqz\nhsSAoX7jhClW6IUqbm8nqMVUw+fQB96AJaWIQfNsYMFjonBtt2qS3MpHfjCo\nqb9mvGjYusumcJt6aRG+CE/EKnu/mf1hGlOCZnaaMecUn39uMvWSVcvlegES\nmgQZK+gCn7kX9Ml/ogeGGgVlVA1D6gfsI5900t+CEfkN1PpAgTQvnR9kvTp5\nG2p3ByxFqIu05W2h21jC+Tu1UqsB3YhmvP5fXoCy2rmz1WGBuGDqcCuqb+qI\nRzublaXlw6o9vgV2dv/+DU8T/vUxx6tyIx8o27vc23oa2p27D2c/4k25ttRM\nvuuKHDqdduB8hmb3nGz79zCUjB+kZ65fwp6eNvzFtLR6cG99WAViQpVICkMm\nXcaXMNg4WUnTA9y0VHGJt/pw6mV9ZadeTESLkuyyhlt+Tz960KriS6PXA70g\nSwoN\r\n=QbMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTrnDaNICj7QZUDEIVF0o2tX7eQBM2TZY7arC7cr8HBwIhALKMfYAztmPGldhvcSVp4pTByK5SS/iMxAXqEQcmkVjK"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.8.2_1578559398129_0.9359769990589706"},"_hasShrinkwrap":false},"6.8.3":{"name":"@redux-model/vue","version":"6.8.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*","redux":"*"},"dependencies":{"axios":"^0.19.0","deep-diff":"^1.0.2","immer":"^5.3.6","lodash.clonedeep":"^4.5.0","object-assign":"^4.1.1","tslib":"^1.10.0"},"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/vue@6.8.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-wPdGPXk8LY5NZjSPiB6+RDymAYCEgJkOUbVjBbf/RKD7WXtvbhG1wj/JfGCcTpdm+9jeYn5v76WYBcbJzMysmw==","shasum":"60023a7f4fa6ae71bfe8303406d7d2ba35ced1f6","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.8.3.tgz","fileCount":66,"unpackedSize":90075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTVCkCRA9TVsSAnZWagAApMIP/3rTLbOlY3JsPjUWTnt/\n1c/syHnF/H0GTZx0YIKLPFPF0PeZ+Ulc2gy6413pADSFqgl7B+n3IyFsmSyU\n/Ithz5bHTmj+SDxuuUtY7rLq6U/FJpprJV5Qi+O2BNRpk0idkd2ZS55yghj1\nDflfWApUmzld8Eaxa6IQLbk5xK67JX+GJFAp+4zE3Vl0PYzwpgwwm1DpLglj\nkPKtf1qdFOoi0YhQgltB8kvzH/TORQ9ltjI5nbTRZVho0+7piZKsOhoXqM0M\nzLCQmN0uBVvOJrg38TMfG5bbyVpndZZ5b9vY7850nDgN8+pQFdnQtEjGWwJ1\n57m4odOD4TKBNHdusFmy0s1434WVYHawFDlTcyiRpn01+59Jd2eRv8GzSKG8\nnnRfrYPg6nbpOMfKOcn6YM+rKkusl6bYyVrjhlufADLdoOg963zPr/36PA8M\nqjnlIS+Ekk+uRPzsBk1bmVjA//4ts4qaAV093fVy2YDhBbvrXLVIjaK0uYYf\nrJhU27Xx6kjsYD7rJ9p9qUYAY3/9ZF12Ss6TkWeG70OUC5hh6sBvTOWjbsYi\nXx9m8YTFETvrjfujXxDt2a+SB41LtnJ/cazuHGZlgayGFdZyB+5+I2t+BsNx\nRhDrBTNLHxT0yLoCm6DAwm6WhkrVjRE66WerV1bkjfxulWwRy89Z9w6BjX95\nYAtK\r\n=fdGN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChLPY1seE2/Eav34LwX66LnagFNf5GDVMqO/0CCQRAbAiEAlo47nGGZU+3JlWQDubEP1GF9XN0qwmrqf6iC5VRi3xI="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.8.3_1582125220015_0.7501315894408771"},"_hasShrinkwrap":false},"6.9.0":{"name":"@redux-model/vue","version":"6.9.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*"},"dependencies":{"axios":"^0.19.2","deep-diff":"^1.0.2","immer":"^5.3.6","clone":"^2.1.2","object-assign":"^4.1.1","redux":"^4.0.5","tslib":"^1.11.1"},"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/vue@6.9.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-l9Tz3Ndh04RNnDVw6LsvtfxF4uByln9pYDyKNNfQePZShMaDrXSduWSGctbSpnLxnl1oxkiUmcjY7S6pZSNpyA==","shasum":"39d53178f1e2565f507bd185c486e2a8c60c5170","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.9.0.tgz","fileCount":66,"unpackedSize":92607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejaKDCRA9TVsSAnZWagAAhYgP/25KbbE3JiTZt0BS0UJd\ntmzGtsogpkZ2ETCj6ktJGb4B4e+h/IHrxgqk06Ju4bI364trMNpySKST7a2d\nbDT/n/yoBMoMn8JXuyVmy0QMIDFZmdK53l6wA4h2ROnZpWS+L+pMTN2bpLFu\nm7RMfpx5fFltgIJddPRQzCA54NF7Nawa3Iga1EXIp1FDUshrUGdjnOEunWbI\nCU/n+VQXSTyyXjXUAqhqE2gPepcpttjGfVdODPX9O6bF69ofnG0zJ8Lw40N6\nDVYMvY/0OPuhzkorHldfuBEIGObTAIAzM/HY5MAixInW91k0nCJvDfudF7+D\nDoU/VMuG7FuKtCGeja/LVW3lXs2y8EHFVhXv6AbUDjo9mAbwpgQkN6y1aEe7\n0hfhai8U5PQvJlwXz/RQ8CpDXMDVBJ9wqJIeYf14qQEdJajjbIfW7ObpjeUf\nctzA1zz5fmMuxuaZUvWd0OcG+j/Gt7mKLSV2kSC9+xy8NZV9RANXRXJHdmv9\nOZ4BVe/OvKu4apXonM8nx5SeJn07QV/fYXrZxQ4C+aOi9bUKb6r7kpO9v3JQ\niQhSy/INYusIz+bJC/Iam8PMJAI/ZpEifNuH/HSScAfkerbFRFtkSUSgze65\n3j8oBhjkt5MVFbPDfxP8iMfKfnqVWK0m+ADuA8b1RP4YjKTG/JhFzexLATG9\nEY5+\r\n=iPAY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKK1H2cVtrzkT/1bNS6A3yb8PRGGVXPW63np1kw6mH1AiEAokjVYh9pYhZoLAPu6uA43BmsFqrteFL3RSAqYdDpuqw="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.9.0_1586340482639_0.8247133654004704"},"_hasShrinkwrap":false},"6.9.1":{"name":"@redux-model/vue","version":"6.9.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*"},"dependencies":{"axios":"^0.19.2","deep-diff":"^1.0.2","immer":"^5.3.6","clone":"^2.1.2","object-assign":"^4.1.1","redux":"^4.0.5","tslib":"^1.11.1"},"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/vue@6.9.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-POsI3f3+0oX9789sZ8uSnPkTdrnSfJ79Pxb2o1Nkd2OjsAb6sbiWMhvTA5EKximipL/50yJAf43a6LCc+BSVQQ==","shasum":"06ecb8675453f8d6857054a0b0e3491dd5d7bb4c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.9.1.tgz","fileCount":66,"unpackedSize":92713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejbDdCRA9TVsSAnZWagAAid8QAIzqxGXomOSULJjs9rFW\ncVESeYkc1KIyf/Wip7iFipFZ60LWC1AS38tGRj5LGl4U3NLEFCegNY0glXcD\nzD0lllOWngzxAX55m2+aWlLqv359rR25yeT8almvBAs2ff+eiI+UteSFFbll\na3bRCr9SWt8TtrJ3Y1RXJR+mYD8vWeoYKsnmPu5t7YhsV4Fd9kfd6V10Dmhm\nr0GI5kUiG2KbqsHoi88PN5zNOsoFO+ZUlzn3Vb5twesW0O0mKi7dsgOp5ZMo\nPD93/SjSRmwHpwzPr2Cr8lrrVQWh8HG59gufeTNEJrwlsw2akOQdJV5N1KKo\ncWxelROmp+rwLTGarDo98Mx1HbsXx85WFgmCQ+3yUPFRkUgPK6L+thGiPXJF\nYV7gt+g6JXOabK0eqdyFuOKqw6B0I+zk2V/E9MwAUih0btRNLKVRYm8u1eca\nvu6fhIIq7nI4sVp2rmDuCZ3pzI4GVdCrF0ajSrjQ5d5Lh8h57bFOiOnHu3v4\nhjr84aN0dYdVFrbiZTEbg1mC5KKz+8hpAYBE/CwTPA58eJC14d3KlVq0YA1Y\nGLCc/wei0Vx0PprMUPU3ZEUY+wdctRsHGQw9VUGNbVgar9WoYIpl9580kgIf\nzXxewEN8lwPCA8S6hBIpKgeN3pQXXs2CMzbo2R+O+r0SVZNQjqJkTubVeGgW\nXpcc\r\n=8ZRD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCM9WnDteIzBpolvjclvue4BVOkQcw8XM4fKsjfKTHjggIhAL/ADgb4XA+QzuwgH7ZrnIfBMUMhmcyB/bv6UGIhnrhS"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.9.1_1586344157142_0.7111644111145343"},"_hasShrinkwrap":false},"6.9.2":{"name":"@redux-model/vue","version":"6.9.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/index.d.ts","repository":{"type":"git","url":"git+https://github.com/redux-model/redux-model.git"},"author":{"name":"范文华","email":"531362022@qq.com"},"license":"MIT","peerDependencies":{"vue":"*"},"dependencies":{"axios":"^0.19.2","deep-diff":"^1.0.2","immer":"^5.3.6","clone":"^2.1.2","object-assign":"^4.1.1","redux":"^4.0.5","tslib":"^1.11.1"},"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/vue@6.9.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"dist":{"integrity":"sha512-VID4keCHlLdnkmWase2q7VLNh/gztn//4Zl/DL0Bk3Tda7Sttg7O1lQpUAKxBb1NRXGPbs0TtvmxqGwUfb+Eag==","shasum":"8da8c367319d92ee30d7e9df3e962d8701a23cb7","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-6.9.2.tgz","fileCount":66,"unpackedSize":92645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuPFsCRA9TVsSAnZWagAABucP/1SXMzeBUggxcpRMwmg5\nuqjKZlGjLYmYRrn+la2b6M7SXiU+PGmlUmpatoBj7lrehV5GYMm4TCVFX3Y1\njs0c621KzW/KOZG+F3ZvtFtnjQWSZA6xNhVy+XU8p04u9eDc5MQvHhjMMGel\nGxtrtiegdCAkUXtKyMmWfU8cJjaD8nEoGhK7FcAcTKeolFjYovfGOzdw8MQ9\ngVTilEz1hQkvftfYJ82hVwU8541eA+KAd1yrlUK3HPy+0qO6dcEhgo6NEKKB\nfUmYLssUo69eBDcNqYAR6R4nbu0POW+p9CrTi5c/d/mrQO32M7KS6m8RMYrC\nvoCeJSVokFt1WfSlyK3oMBhW097tNgCWZXMgdsBkN2xfRQwer3TmX262AMYb\nOR7gjdRg/5IKGcJOumTF2xTUBGUpxjSZ0UansM+o028HHwKm805UB4DNP44C\nRaPwniav7KjqFOsn+KgW1gHEyJgJOfm+aELvTua2RoW/30tC27HeOM1CMkvl\n1cIupHKvTAiCWUnAsjUIL1rNFqb9ITdBEAmqy3zti6o22b7KGCoy7X1GYcba\ninTbuT3XH8fxDc0WPF913hCtNai/Ts/JWOyW9wkoRuPdnOhCHl1/CqzBs699\nlLLfcnziCs1gujyiakH6rJJanUeEtUwEruKJT79Lo6SHabGZaPvr2njwnO6p\nbn0m\r\n=TWlL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1vxJ/VzuVhEteUoXtlEgxdMFSGTLWIIcvmzVCmbXFwQIhAKDqETMiP6VorTG6JUAFsnMDu70B3ARqROJnqynlEpAf"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_6.9.2_1589178732518_0.25489273453515837"},"_hasShrinkwrap":false},"7.0.0-alpha.1":{"name":"@redux-model/vue","version":"7.0.0-alpha.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"sh ../../scripts/link.sh","preinstall":"sh ../../scripts/link.sh","focuslink":"rm -rf src/core && ln -s $(dirname $PWD)/core src/core"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","@types/vue":"^2.0.0","public-refactor":"^0.5.1","redux":"^4.0.5","typescript":"^3.9.6"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"4750f4a2a0b0d24000167a0137c33d6b6cb59195","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/vue@7.0.0-alpha.1","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.22.1/node@v10.13.0+x64 (darwin)","dist":{"integrity":"sha512-V9LPq6+Dp9tJs0Nt/ErMjdE7uvJcuCT06Tf5KwNxC0AyTv0KCUYBrSNBk7DAsOqxas9bCItQtLq7Zq7gXi2WGw==","shasum":"cb82a7019978bf5f941f788cc325321a531ae5a1","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-alpha.1.tgz","fileCount":85,"unpackedSize":113881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDVO2CRA9TVsSAnZWagAALKoP+wdgSBTPVJtNJlt603gl\nMJuWocf8NddzDi7rAg2iXVkVP2so9hXTGBhGkq4HyGoJuI8+gjk5BPK0iefY\n33ZujFmpd/dKTE6Y7hdyKlZGuSX4avuvc4K+WQrWrc/LEAT1nYck+4IJpB9Y\n3IIfbwHzqTYesfnTl9M81R0lcwT7h4iFL39/1ljXbbJFAtTniTYq2WLBWgYt\nPFfl71kvQqQ3TymgGjGbv5NcUeCKKBF8QxDrxg/j60LoPNqA6pqaFCgYFQx/\nZWot6Lr0LclA7MONxWL13w37Us5vQ82bzZVwht/xi6AHpdPr7RBHLxeGxr7Q\n+8dFB+XH1kjzVmMUwgd8bxtXde8G+VWSlyPnInKPi22YAP09nZLllSRSkcX6\nm4SyktnQ7RUBLWfXEDW6zSkdAzd5pVVaCN7PDy7gkcMqVBR299ZaqtfpjzaX\nSihQWWaoKZzQJPftfIuetrybsmHME0M3qaXzHGNaKd4+zuA3HHQeIrA2D+a+\nrlxoROVtOiARKN59Ajue4Wecghexx2A6HwKI345TuBqA6nlQPQgGqVlXCuaE\n8GfJc79vRSFY3YTxIFq5yy15fmfVsFSYUnUdraIwE9JFoAKu6Et0BG7gLEwn\nHR5XhKpJw9pJnw8DeqjMWNbiacb0712jLfKcHKsz/m+hhY2xBJI2bJKjC8E1\nHl++\r\n=R1MD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHKi4ENvepOojfzCrKdDN8t2eZSAfyQRO9asB1/+nFAFAiEA4bxiecZNOMgfBMbrZOyisIS4ppxNF3cn4Gn3YWaxboY="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-alpha.1_1594708917712_0.26810105809771234"},"_hasShrinkwrap":false},"7.0.0-alpha.4":{"name":"@redux-model/vue","version":"7.0.0-alpha.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"sh ../../scripts/link.sh","preinstall":"sh ../../scripts/link.sh","focuslink":"rm -rf src/core && ln -s $(dirname $PWD)/core src/core"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","@types/vue":"^2.0.0","public-refactor":"^0.5.1","redux":"^4.0.5","typescript":"^3.9.6"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"303872b4185926f62a091191196d70ba8267dec6","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 hooks\n\n# Installation\n\n#### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n#### Taro 3.0+\n```bash\nnpm install @redux-model/taro redux react-redux\n```\nFor `taro@2`, install @redux-model/taro@6.9.2\n\n#### Vue 3.0+\n```bash\nnpm install @redux-model/vue redux\n```\nFor `vue@2`, install @redux-model/vue@6.9.2\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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-alpha.4","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.22.1/node@v10.13.0+x64 (darwin)","dist":{"integrity":"sha512-cuGsbBVO39k+8Y0kSnLtHljV4co1WJNbioeajFNvXvGHX3cG2bCGNarRkyhqLM8vFv+ShetBPbLrxZsqH7Dnew==","shasum":"10774c695ba3f40ff5afdc73e0d56df7a1f4d00f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-alpha.4.tgz","fileCount":85,"unpackedSize":113881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDVZlCRA9TVsSAnZWagAAQOkP/iTgPIuGMktDaF0nLFec\n/Npzna0i+inAr+zZbxKyrmD6BggSIxH8/rPyKtlBVsGFD9iXNbnTJKWf4noU\nsa9p82uOYFLvRBlyIShnh64uAXL2VxX/qkP7CfOxHsRw+n8TeHf5wsMwQgKs\nttHjvDHy9TfIqiOl4ykKgrXjqD8H/rf0lV22e9cxoy4QWxcwEZm2dZeaI3xe\nGx1K2K8SAO7M5PJxKI7HizyxDK9A2lhSDnjlTICRKxUUDMyasMhgL+PMQM58\ng7RxWjVRsY6x7h3Qe6iTTggauNb5sleW4aB8APFOq8Qf3RltJKoupU/Hc3JK\nvW4Fio4S1p/7GTKqJ0TzVY8fZaRzbMe1dKIEVhp7Y+HeXkzZIT6mKHmijMtm\nWdWdCWolNQKSLc+8v5+KaqQbYlBriNRLUTz6NiTm6vjnzTAdVXS1lnCuktt2\nepr7GBfgLxsDbkqvV7bjcFfnucnydJ9SddQfXa/gLnPXMh0YU+VTuNphQTUM\nxNeXgDE4HLBE8BOhck1kCBBlkcfK2lKrny2+63c/i+RvnHPnUdIsAfdlgsFK\nJlCfq3Ypa8yHcOnHNWyxvOzy3qv+FF+jKDsnGVy+EiA8AYuoHoBi1/Np2cEm\nrC7FrncpIzJdu1q1Vc/4VIisSF+1y4vZy80oxn+kxIODOOJ8oFhdHmV+SoOd\ndqBQ\r\n=gJtY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdiniHCx0YqoTtr3WF4V0rw2cR6JmMOBsQi7vkRVnqCAIgDsNpzBHpx67uNgmYrWfMSQch9PzxUt2Nnz3OJZ8Abyo="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-alpha.4_1594709605521_0.6005418145456876"},"_hasShrinkwrap":false},"7.0.0-alpha.6":{"name":"@redux-model/vue","version":"7.0.0-alpha.6","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn link","link":"sh ../../scripts/link.sh","forcelink":"rm -rf src/core && ln -s $(dirname $PWD)/core src/core","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","@types/vue":"^2.0.0","public-refactor":"^0.5.1","redux":"^4.0.5","typescript":"^3.9.6"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"322e687b0807e1be08ae630a1b8e81a22aa2148c","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 hooks\n\n# Installation\n\n#### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n#### Taro 3.0+\n```bash\nnpm install @redux-model/taro redux react-redux\n```\nFor `taro@2`, install @redux-model/taro@6.9.2\n\n#### Vue 3.0+\n```bash\nnpm install @redux-model/vue redux\n```\nFor `vue@2`, install @redux-model/vue@6.9.2\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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-alpha.6","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.22.1/node@v10.13.0+x64 (darwin)","dist":{"integrity":"sha512-DvKewPfxg787ta2R603fOyRwzaU5kwgkdkXDHlVk0T6vcH96p0SGFSWtJp50mjvVh8wa/viiuKU9qM+EoHhsug==","shasum":"e218beb3d8085eb986cac2dccba9903719f3b0e6","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-alpha.6.tgz","fileCount":85,"unpackedSize":113924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDVsTCRA9TVsSAnZWagAAif0P/RCT+eaKC/FVxirtjB09\nGK38lqZAlb0jwH6cCDjm3iIkwgs0vXn8Ydeowda85cmP5LM5Y/OR6DVvaWwG\nZQnSlVrFwKbqKqcI3fhDmLM+YN6tqXtkh8yZ2jSzUU0Jbho7hFyXGk1aUgjO\n5vaAAdrm55s4/LTeq3o2gjM4CdK4oopVNuwq5BVyMA5hJ0cgrWgKJmWtMkcA\niYswOgCU/TP9euZ/sjZ7Ce9sPfbQ1PQl6Lq4jlKST7BlsaaJqt8Fd91J2kYq\nwoG2eiPJjf8djV7zTl3iyLdkGVKu+e0HxNhq9NySRD53dKD0tJOkcM1iS22V\nuKAYYrw8Kh5pODYS0MerV7CzxdlntY+DyCUCjYjv1ZvVFEAsGh77SYNdaHoH\nk5ax6Xh5aKyFw/JchOcYJ2zMbtq9/d5I+GMOVfaj7564akRFzryWFqjVDwB+\nnVf3OHeCMz0RDCZtJIdx54cvwifd3QigfJvUbVHCV297LYeZ6EICoj86le+r\n9+JXsJuHrVQAImvjeJwHvK2rkdcQkswWqXC6i9gULiV3Qr/e/JoI9H32Qp4r\nG5jVcZQp2AYphRZoY8nMTNrlMayu48foPzkBzFTJdSF1vme2cuoDDbcBCfjQ\niPxDO4OLuwo8rVt9ZfoQStjvqaUOQC2PhRACmwGuFgFf6I4p7Sa8ncFuwe8O\nw1Aa\r\n=0t4u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4nDWCJ0GvXn02OXh9ukXluZ1SX0unP5URZ23giCduNwIhAKSYbZFvgfOxX8ziCirbSQNnqZEMIVPYAsaWVgxtH1Q2"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-alpha.6_1594710802814_0.2801329772057821"},"_hasShrinkwrap":false},"7.0.0-alpha.7":{"name":"@redux-model/vue","version":"7.0.0-alpha.7","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","@types/vue":"^2.0.0","public-refactor":"^0.5.1","typescript":"^3.9.6"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"0d6caae29a658853836180e3124d3b37dd382310","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 hooks\n\n# Installation\n\n#### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n#### Taro 3.0+\n```bash\nnpm install @redux-model/taro redux react-redux\n```\nFor `taro@2`, install @redux-model/taro@6.9.2\n\n#### Vue 3.0+\n```bash\nnpm install @redux-model/vue redux\n```\nFor `vue@2`, install @redux-model/vue@6.9.2\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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-alpha.7","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-qvtAwlCgGoZY75AaUqUdPcIdj5Ac+4MFkowUklirHyGBKJhAbNBrjpUhd4y6Tk2ihpRGAtStdYtyUFuRZv+trw==","shasum":"fb4ee9ca2a3245007cf1cdf5d9a9159a5533e663","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-alpha.7.tgz","fileCount":85,"unpackedSize":115158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDzaQCRA9TVsSAnZWagAAQrUP/i5JxCWd+kaHToijel0C\nKOi7NgpCjkmL337RphXGTgz2zpAOg4FImHyOhjDSL4hhh+wLzI+GJdHkLdjx\nWtbJ9UFG5IWCE+MQFp+x6+/p4SItjIDSeCSfYuvlsdsZUdhXS/FnX1FOtOXo\n1THl+02xXGa7J0Q6gubGyOx/Wh8JauN/+ZMUNj0Cp5h/m9Pb7IE8bzxG+CCT\nXa5e2+pc6FW5HvaZBeYuH+EkCaeGo4i1Dr0w4IStFaM6/FqHPZVll10yuQ8E\n5AvvHhw1YvpYfV+WgzQl+iNIwY8XCG09E6W6HRCj7RotlwcGYW8x7gFL4oAf\n0wzyL4seXq9AwP1bIKRrUdZe3ASw6NizyxG1fM4JlrqTdlGb7r10CGG1mkVh\nxVhnO1iqjRxdpGNYZ+cPPctPI74QwkuQ+4LiQQSd3HVlEfgUhF/uXjTbWp3X\ncRdt34k2kxBXe3lpDPATTSTcT1uXQYU8va5sS/wHUqxzdWK1MaWwSvEVgKo9\nphg0On3oEl6f+C29zZcvLIec8sucnaurfdzEjuxM5CuGMunZXpLZMPDIjFVb\nHzL6i2hFYb2n/qHw/DA84t20kKrGE6//HIhT7cZkXw/USFSuPcdsIjS8jEfO\n/tLurwItHyzJlF3Y72B2mLGN0BuZtEb1vQezGNyuZLBeVt/joAgqMmga+NaF\n6aHv\r\n=+wDF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmYdvQ0uy7MzV/S9ROaQTABlKDRaJG4sQL7jIjMaM7XAIhAIIoi63zFVE/Zl+sTGPpw2/ybnOzJt6WxVFXLvidnpaj"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-alpha.7_1594832528446_0.26458558380727615"},"_hasShrinkwrap":false},"7.0.0-beta.0":{"name":"@redux-model/vue","version":"7.0.0-beta.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","@types/vue":"^2.0.0"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"4a4f8e5b07cd652da146a31a193eb69823f0394e","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 hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Others\n* For `taro < 3`, install @redux-model/taro@6.9.2 instead\n* For `vue < 3`, 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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-beta.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-b61QdhxB3BU5EIBb+hhaXEuEYkdojOaEojIu3YT1ScjperntttZwCUjpL4Y3DuX18hN6KoyFfhw7rgy90hwikA==","shasum":"d82830600fe5d5ecc3275660160cac74b912a7c9","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.0.tgz","fileCount":85,"unpackedSize":115371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD89SCRA9TVsSAnZWagAAJG0P/ilJLYz2VB0gkinJEMYV\nBS6/nbzyPIgzqvd1J6jhKzHR1FT7cx0fYvgcCpNNAKXNW+w2oXougvP1zEHi\n93o0FK+W2C8C4Qz5dgwyerlr/ulqVqKSpLbMxBVweIS9mV47KjJpDtdLlpxp\nyzGm6s1jBV/bxS6YfVYSP4BpZ46Pl1As6p3m8YuwOJMn1OO2UzcmSGCBOya3\nHj+sKO8OjxnLN+dHZlLJ2oKof1QmKiOhtSE1xqh4wEoqBaJnZk3dAeaxtw12\n3YJwydVRCVZGK8pLvy2a9zqrf/jhVSuAKGheuNIhcObDMwmoVs+E0zyQaAIv\naeSUX6MxYesFY0+PqKaf6K2gOL7/8hNVbVVvb69+JPSktM9dqjLG6XCso9lv\n93W3w8T+9pjNIrEOPXiv1elIfllcoWLyjK83BwesPMFHqQ/X1wR0Mfwkhv4L\nE/JXYZD66Hr4gz32BfPDvoxVdWpte5LiW+wUNlrB5LDk+dSaf0YkIqFx4iPu\nhCR5pGIje0RialPH+EbJx1/yqnO/hCPFBBRFUz9M3VRgKyZj83t+2/lLZE4i\nUgg77nqSrPwGfVke8oMRRUH9VNRrdWWoNDLrkrw1EeJxYjSaGBXqR6IQp6yS\nuLexje9xF1s8SU0NnNNgKjYnR/YdG+bPEAiHOHqkOi8/atUrTkkbHpWZjdOX\nQOat\r\n=gZ2o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2r/JDmTxO2GxT2UIlVC6mM5w2L0+iUOND8u6SLAIbsAiA1XPef0DlaFV3osucLREXet9TKvxPNXulXTtL00uK/lA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.0_1594871633804_0.7200751500560378"},"_hasShrinkwrap":false},"7.0.0-beta.2":{"name":"@redux-model/vue","version":"7.0.0-beta.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"b842f1adb2cecfebf7055733ce7315d8410825f7","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 hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Others\n* For `taro < 3`, install @redux-model/taro@6.9.2 instead\n* For `vue < 3`, 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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-beta.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-NUeMSTKGSBOE1rS3gjIKKFE1BJl6XTxSmVEkvpZl7sWBiz4triKTKl8fHjLAfYDSBYIpKWi49SibgoMt05N4Vg==","shasum":"5b36a3be21f704f1d83e02ee221b19905be3ff31","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.2.tgz","fileCount":85,"unpackedSize":118178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfECt6CRA9TVsSAnZWagAA8PEP/3wVIrkVZ7jZpcJo4W2d\n6OrKdf9MOBY6vagWfUQGRzhrSFmJ73XnqZY3o1l4PYeUCCvJj7mffHhiPiTN\n2qke/Qu0qKAZk77gRMgACltTr2TDBRQ2LSx+2LWM3xiU4QRT+B3boJbUz+MR\n0d6rAL52nCQermMZqh3dzYYQNR0g8Rq1o1xMKHk6ygUtQpd/LEaQruD6WY4v\nVfp4RJJqO4wCM1v52K5fi5nWuWzryFaL5GsLSFigq/yWfSo68MFGOaCBiGos\n3N1OSI+bOqncVk8K/H/3YovEUF+MhXQrpMSN/Rsz3foaiK/M0fZJ3oIAw7ei\n4pke/ugwIWdgaz+7Ob/xcDvu4Lq2PmcdYYhkOjH5dW84ZoJutQvvSOkgH7xn\nCP+Ywbem1XiJX2mSBfXQRmjcPe6joxb+ga4ttX9PpVPFSMvYEUN2E8MTyrQr\nxsO5h1GSNGa/JcmkupKIdIwulhvO18VavbYU9ralUL2RwbySZIUWZ7jsJJ+7\n68ECvtsWjCzz+HZav+pFh2f6k4IXZNL5fLP3x18HcQlcrRN8RyMnp6F7vDb/\nUTZt/36BXbqMuKX+cMSzQKiehwOQgKjr3E3XbIeykLHBf4kV1wvL77Ka2S3z\n7zkf1LaiukzGccrR9wuXl7Da9rFVQ+Xi/YIDrU83zFQhEnQs9DJooaRm9N/r\nFXSD\r\n=+8A/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgL+7Os39aDIte0F2gEmCwYgHTEiaj5nYRzazgGUZfuAIhALbkptB5le6Y347lSsO1u4GxYFlqXwQ7vWhzHME/gIes"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.2_1594895225766_0.5149540805841901"},"_hasShrinkwrap":false},"7.0.0-beta.3":{"name":"@redux-model/vue","version":"7.0.0-beta.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"49f81302616ce29aaf53ade32d310e7fc9bef0c4","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 hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Others\n* For `taro < 3`, install @redux-model/taro@6.9.2 instead\n* For `vue < 3`, 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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-beta.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-oRey6gt8obls9/XsEYifzwnjr3zc8yV4u+NlvNrwUlbOagd3bCb3Ag3vNFt7C47KOncuEcHPrqPzooYpd1a0AQ==","shasum":"9a57a9b5a875bf8b824e8daeb0b528c738a1aca7","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.3.tgz","fileCount":85,"unpackedSize":118297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEDL/CRA9TVsSAnZWagAAihAP/1JsfKXT7ZelukoovBHA\n2GdpoxdCbs0jbwz53rNDpgx2uyMdVe5B7pA9rquvtZLbby5ChTxgqpc8DOs3\nh4/G5x5U1m9EaOfxxwUo2z5o45CUuWUM5hUU44BfL9vAT1JJXXr268mjPFO7\nGRLl9s6rZqYqbQC0XBQkJiS9PkW6eWTF8yd0cc+HqOu8cy5mWSjcEOcoNw5r\noy5ByAMsC7DwhV8pAKtYD+2PKAert8LB+smzBw3jlHSrmWO6to49QdrQXBdE\nqeFZJsWdXXJKxogmpANH2Xv6xcbk1bm65yYPl+K5w/8sdjcaao7PVpvydLWa\ngosclTYjuLWUbPGRx4Lu/mOXyMcCTs66H87Ucc/6nU1bfuCFL0JobLun2Cok\nxueTY9q/BMZEVirLxTvQSkv4xrZWBgHiDneYjnroKP2Fv6cm5EqucXC0xfDu\nf2CD/uZFNVjyP+4BtT6Udi50hz4xJGt+a9IcWRKnCgU8eI0R4/ofaLRbWT1t\nrCV7dxqxGrs7v3/di0u978WaX2+m7jXq2Dqx7ToKdd+vPk/0aVv6up6+TUxj\nmgFel9rmIR/uWf9XHOQjICkshvFcx+0HMQT6Cn88vY50ojJ1Dp7zNpeNcPyo\nxjKZVC68YIiCMfpnvkPioR5GabkccBhuJ3D1ilR1uSqfGbkXooSuKeplSQ4r\naDyL\r\n=1YIc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICuoMxlWRYBJ5EXJOnuedl6MhT1kPdef5X3b8Uq9YGCUAiBd2JRRj/2kodJ+khzk28ckx10VN0B8OqSReY+UZkR4QQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.3_1594897151468_0.14275470020747227"},"_hasShrinkwrap":false},"7.0.0-beta.4":{"name":"@redux-model/vue","version":"7.0.0-beta.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"5c53e08e6b1b9208ed81210d373da11fbc7c7a0d","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 hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Others\n* For `taro < 3`, install @redux-model/taro@6.9.2 instead\n* For `vue < 3`, 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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-beta.4","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-1j5WhUoNMti/Esvu6atZrYse5mrXWWcptqN/HnWx27yXk++nhomTyJCHiU1iraesJEq1/OaDRSTTzKpKHmvOew==","shasum":"cd3301ab5616a94881288a228097c7c32c88e0e1","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.4.tgz","fileCount":85,"unpackedSize":118384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEEzdCRA9TVsSAnZWagAAofMQAKEAkNET6K89iAyKU80z\nZBA++XsKDx276c4WJhZvCKjOw/q06ijprsFXrEUS0hm9eYwKg8Jy9g8EmqaU\nyvg9w1YZ5J++dxlrvQSf8ifSf2DMNYwlO/18vbCctTDB6cUjUJAOezYZxbqv\n8f0RAAY39fK2w3o7o8g270w0BqoyJJ2l/1IuODPfA8vVOZ2EagXIJBE33geK\ntK83pQ9G1YIAORL1rsCcXpNBDiJuRoTKhuqCGdfy3iBS7RNdyqt4d7r/Ie4p\nNn+gcQy0pDYXWcKigLaYjby4DlYyS0LNY9tUX1coGscUUXhwWxx+WDS3+nxh\n6TZdgVr27iuG358sOZtLm9FrBjipdIt/1hf+Z0c5ji57pCuLdQVsp9zh+QOj\nq2lPnkjP+FVuRoUA9C/s4C4qXu/iBcYZJYRjZkyIr+JQ9mp29u6YZsC5+M4V\n/j8mUB7VlWqTa2b+qKrS0Rp4De+ioB/TkAiNyxnx6vEfmHOZSCGsGdcuR1T3\ny6oNCaVcC6mlxB4I+HzIY2b+wHNifc95Gr30AF0QJbtZUej/ihX/xdrKVK1/\nt+9yu69KJgZN49HxQ2CftdUko1IRFl6t7sgBNQDpmIZSUcAXNZRzpaSKwOBn\nxGSUTSknq7dO/fdyI1g5p/AAljwIskcEFmTlkoLfpdgif+Z2olT1c6qz5uEg\noDDy\r\n=LGji\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB3NwUO5umQ6chupy3pztsVMzVY/V/1/yl3+WOqLLD+qAiBG7+2dOrAq1MWx8rQpcFF3dS84AR0N2Tx5GlNMQ+pgbQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.4_1594903773004_0.3395294707734826"},"_hasShrinkwrap":false},"7.0.0-beta.6":{"name":"@redux-model/vue","version":"7.0.0-beta.6","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"c717831e0e85f186407ae413b432dfed1fd7838a","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 hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Others\n* For `taro < 3`, install @redux-model/taro@6.9.2 instead\n* For `vue < 3`, 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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-beta.6","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-XdQSSF+Irr+4jODofqDoG7tza9FRRrpxUup6yxGVEgudCz+ZzBm0E6r5Z5v//AAdYEQKnUsJg1ulSbcHU61tJA==","shasum":"b3d8d7124885f234948bbdf6162b870878eb3935","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.6.tgz","fileCount":85,"unpackedSize":118447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEGj9CRA9TVsSAnZWagAAljkQAIk2EmRfubA3wO4vJSgX\ngTvOf3ag0UFkMZ3PbJaT6l9eYIXfP7WAxgKsn2K0l/u7Y14GzOHwKho6mhwf\nR82hkBLAxOaud67yqdMrpGLL/HGhjXjjgdYjlB6dpNiJF0TajD+ewK7xYTvp\nBqgZHRvXUFKHpwWwQ+pyJAQDtyLhUvPjht9pUKKo2QHbI2sVl5JbnUER2loq\npKTNpVkWReKPzvCwTdlTCMDGQnfUbET4m3ZGvNKgmmfE4joLxyd/wxXW66vM\nFD1FlxrcrtzVEi+C9xxVI1HfSNo/L3X+XcqrRZjwuQqVS0nbpIHYcUtpTzMP\n7KvDnXNXTjC/G+HpAKjUSl5RcWEycPNqWdgIbKni8R1ejGIMfdFKJg7zJnbn\nIv56WR07B38/DdxUnL2M/E43G7KvCu+IMbjBnnyXPLLWJV4szZQxwFkXfV2G\ni94xs0MB4MLIozYaLSEQM1QM1a4TXog19RBgw92NmxnZwHk6NgshWecps9nw\n/TQ+kEf2QtDxXhrbGW7sTrZCJ/qfwOqZOED/TIxI5SLiqCOxQZba0LGxfSBk\nc34Kq61fhh7urdgEZDDHRsW/TCSlM+hK/OHwCyAD6fyhIX4YcvsedecHEufi\nQRa/isZmgtW7mlICYNoSUQGTVy1ys97K77ig8FL9N+pDAi3MLC2vvoMT7PUv\nGY7b\r\n=PdIM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCovtb66VUV2BNL6RGCIU0coTv8tGq4ElnbinA1e5v+WgIhAO97IiLoDiX/YzqGF5spCpcyEs+U3T48TAMvXsBjVaU8"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.6_1594910973093_0.40513781535607607"},"_hasShrinkwrap":false},"7.0.0-beta.7":{"name":"@redux-model/vue","version":"7.0.0-beta.7","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"3247b73af8947bc69c6f306e55893cb465d14d5b","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 hooks\n\n# Installation\n\n### React or React-Native\n```bash\nnpm install @redux-model/react redux react-redux\n```\n\n### Taro v3\n```bash\nnpm install @redux-model/taro redux react-redux\n```\n\n### Vue v3\n```bash\nnpm install @redux-model/vue redux\n```\n\n### Others\n* For `taro < 3`, install @redux-model/taro@6.9.2 instead\n* For `vue < 3`, 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 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# With Vue\n```vue\n<template>\n  <button @click=\"increase\">\n    {{loading ? 'Waiting...' : `You clicked ${counter} times`}}\n  </button>\n</template>\n\n<script>\nexport default {\n  name: 'HelloWorld',\n  methods: {\n    increase() {\n      testModel.increase();\n      testModel.getUser(3);\n    },\n  },\n  computed: {\n    counter() {\n      return testModel.data.counter;\n    },\n    loading() {\n        return testModel.getUser.loading;\n    },\n  },\n};\n</script>\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/vue@7.0.0-beta.7","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-XjqXupm1ing+n28C7b9w7N5ihltz2NQP5wknYgUOvgKV3kyO2/7rdRghMb25dTrortN8xm3hIb7eF+oF6z4tjg==","shasum":"3f0c41c5c6906d06bd314387cd98a4e54e705974","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.7.tgz","fileCount":85,"unpackedSize":118600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEHxcCRA9TVsSAnZWagAAfxoP/237RRdePdagNUUsjB+6\n31Mm2L+CzhQGRxgd0/SbtL5V1Qtb9m71y5/EzpElWInqyZrkLxtcZtEpXujw\na/4im6aG6Bc0I4J3goJnumuNwIBuCX9ScMrWAKwlG1OJ9BqH0kmx11QnfdyG\npTubK71qUH9KaAANhoIE+LFeS9SGRtwhguDEHxFMjR7Y8w4j4S4bleoo6fr+\nqhkHcx3aGyNF1H4Y1ZSgG/2jbvuMZgb66dBNaSPZbGruBSUM5am6qeRRbFbS\nnMcgWfhps0T1WtkHeeStuc+5hTF6n+5jqeSP9UUSK7o7rLcIZkRwPsl8IIUO\nlGp5ZaMqYwjMROjui8PN1B5R2fAA2B8VvMe5EpGfNrx4WeHrvo395h7D0A+v\nFBJZ0TFMSrxhiVeAKuA7r5cSvsJ2A0HNlJ/sWuinvfKk5LJmupCOPBgvDMn4\nF5uCmkKF2AsA9ACSuOiywQW2TIPXnAw2wOZ8SnJoj5HLcQYAK5b2wXqga4r2\nK0VvjVmYPFjymWBQvaw+ff3DZghXakFIXwY4rVu8eINIRusYXJIoTXMCQByP\n38NFoaXl7SJY/91pzQ5rb8ID8pZfxCeemUryNPtYH2JMxTRqIkVAmKdFkkpf\n+nPZyvx8gVmYNkF7Kj+1SW+KbPZTpyMkU9pm+spQ34u4DbVMr+NcAGirg+Xv\nhjox\r\n=cyIW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm/H7IlIOLwCMKttwKN1LmK4BP6mUP1AbNZpZ/1DZCtQIhAPmobBiz9viIq8t2GasjqcPaaZEY48eOeLB1VFVmLlSO"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.7_1594915931750_0.2507015747167207"},"_hasShrinkwrap":false},"7.0.0-beta.8":{"name":"@redux-model/vue","version":"7.0.0-beta.8","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"b4c36fae8a6e240672e92f1d6165c36d52ba9af3","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/vue@7.0.0-beta.8","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-kA+TWAVqyyehDzlh0K9kv591XPKdzlyuuWh87HECzW9X1MCaESCTASZquXszmC7kF8pEfyrYdYrLLtUujOY8ZQ==","shasum":"f05ae9c4e5a87816e106218f48d119626b568410","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.8.tgz","fileCount":85,"unpackedSize":118217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEVYjCRA9TVsSAnZWagAA/qoP/iB5ah/v7J+q76MSV7bh\nHwGXja7W/QZvdcWISt/Ut4OYKYBcLIcukSORxx9+IcPdfPCjLX5ZgaRN+1Zi\nGvKeXqcT2KMvyo8xl3D3JcuQvpL/5fj0s8WLlNnk+JxvLQMoaq2eTvgWv6oC\nNMXxmSzFosnj0y3NyDOynIsYJQVWwYi26VK+Z9REEA982nJPQNhOc11fNjEi\n7UtUfdjacdA9IVO/HBnn2kbhS1Eyjuwu0y2gVPIEl//y8y9CXqM6jTPgq+Dn\nL8vOjHqtbYI8Rz4YrnjZoYL4spX5zT/NYwo9hNMdRKaEobV5fr7qTsuDFCQ9\nGBG4o+44X8X507s7OaJtHoKX+UmqRGVsepr3yZVIPMghMmE02o4UlkiDrthH\nxx9KtBHh8RpKHIEDp4dk9k3TXtfWCm9W+SDl7jAPcLVt9lmnnL0xrEFlDnCG\nxPQCdtlMPirK67ww8gPYTMDlscXP14SsQHRYglX+Q196dP+sDj6YqqTfjT5T\n5aK5aLfPRSN84uwcKVot5mR7K+6BCPdYV4f7ySgtX5ZSPbDxNOGcRplcAj0/\nKRc80shK9qEwO2hEtH4MeRoCsl7SmiMCKDuZ4Hr7irR0DvWxhyM71vKgZBqe\nstYtx0G4maIP1gVQZUaetLUx8OgoOa5mGWGLuoUDl1YVx9fZl9rcefkwYr3z\n6NTs\r\n=RuC6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Rh1+spILm2PKCYJs16wHJRU9KoMJrEcrAEAm9BewdQIhAMDvUCAcHWuAzGEhkXiOWUYRfPqp1Xd6bq4IBnvJRVoR"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.8_1594971683208_0.6508357893046184"},"_hasShrinkwrap":false},"7.0.0-beta.9":{"name":"@redux-model/vue","version":"7.0.0-beta.9","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"main":"libs/index.js","types":"libs/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","prebuild":"yarn run link","link":"sh ../../scripts/link.sh","forcelink":"sh ../../scripts/forcelink.sh","clean":"rm -rf ./build","outdated":"yarn outdated"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"525a8fd13577b2c9463ba6fb9b88ba10a5ef4f6f","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/vue@7.0.0-beta.9","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-MnnsjcnWV+boy8w2FpNguSgllKFTuhuHjcmW+M8t4YuhXB6uZqgL6hyzrHT8ppuXhI69KWsFedGEZPd90BvOcQ==","shasum":"204b67d90b45696a0e44440f4c41235b22cd6cbb","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.9.tgz","fileCount":85,"unpackedSize":118091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEbXTCRA9TVsSAnZWagAAvlgP/1WJKwae8rNld9YN/UNp\nlm8s5BYCS69Faqx455nTPztGPq2z/gGYAmFivP8vLo//RPvpapxCO8YtISEw\ntMksrL349J0oInSuc6toDAnZhMW4Ji/b0KC19RDOqltbb0hLxMjdwPM0EvIx\nrnKdFGjF6XmaKU/fp0q3S88owZSGaZJ7Qg3l5E9opKRE+aPhJvr2eBEDx9VD\nDrIy2szNCa7P9L1iBXRXviJvcSjxhUJXDB0qGL9AYli9weY2QWZ/UMxwEv4r\nWhB9HjgQXEgMJORci7dtOWty6huNjD/BABmqxndvflnkrUqCC3az+/7LK9fI\nS88Vrma4nlOporetwkfEck1sixZzkvBBqwIXfo64wd24rVwjI7dlAJx8B2D8\nohB/DP00mg8D5EbxhQouo3FoDnNRYKrV5Tr8ohwusqqpbxTRLeQAcpIF0iZg\n4xJl7ZuvruhQf9Cuhl184j+hx4IbbIQtZRhqCOnorrxO9yGjLUv2XW9y5TiZ\nJaCXLMyZzkYBwBuquKX2r/Xm/AkCl9EY6UTyEaFzPCqRDHWq8lApQFfO1YtI\nsWafhvRUCnvqyl06gNn6e66JfL3hRvtmXiz9VvpCrQC99bmr3My1Q3/n+N4i\n4V4FTZfU8E0RiWDEdOSJ41tNS3ei7RnvUasfgjF+016WPMLMowkMcA4gJkM3\nLAU6\r\n=PocD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9gQNwoMKt7t+CpihTjOvERX+nExL8XKvRECfsYhJAywIgBpC4x9hUUq9N7va39tDnf3sumyuwjbluINUjvpsJSsA="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.9_1594996179368_0.9484689066465477"},"_hasShrinkwrap":false},"7.0.0-beta.10":{"name":"@redux-model/vue","version":"7.0.0-beta.10","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0-beta.10","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"3064a85b8fb698b2bcae88262410a1ae4a4e3776","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/vue@7.0.0-beta.10","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-x7B9T2azzdyxg8SGFy7LL4PiE0VSIQMA5/Mnkkjdddkg65OFXgxGy2PZ0gLwyRvDfTq7YB/Kbvt1YDazPH3Icg==","shasum":"acd36cf3d9ee4cc1d1c8b313f3a516063dcfd334","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.10.tgz","fileCount":23,"unpackedSize":26897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEleJCRA9TVsSAnZWagAAc4wP+QD0fDMQDvnHhLI+bzVE\n2Kh5uDBIC+CZB+wy8sn1uK7fXhyidPtynXEKjG/is/8c+uMW6ms2UeWhimbx\nhZB/ki420fiWp3FIc32Kb6fwzz03LsydnXZO9J72yWSSEv7yw6r5eEz75b61\nKdYTexWX5JnvXBDrYt7zUpE2D3K9Me65tXPqljAxJ0YZ8t21fpbRTH0QLZhe\ntwXv/iwjllNnY4hGmZWmIkty4lq0HwTudhWqr7trzCERYu8Ov9eEOQcwuvdg\nllCj/m99/0jvTlVuta8CwtJ5IOuWEe+/R8scoum4dn7mfKhLgEcoGe2RYHT+\ngY36ERy4y/Y6QpTkXDSqW/Den4FGhaKj6OgrqmJt/JpVu7Z0uAVhO05Aihcm\nMsll8qAks4WLRUrQVY1b4ePgdJxi++HWxTKzoUgsZhGODYAlKrUuErHjug9g\nv7oo74kLsG53sPRRC6gdhkp/f6hpcS1pW/nqLIP1UZrAiiVLHtvRz2zT8G8H\nZogOdC8vXoMQ1jlwOA6c62rcjFwUxaMWJLQPJiDaVprMVzh6/iI4di7XLlMW\n5E2/Fy+0R933vnfIepudYHhqENbcqnPJqadDfZM2N/EHpgwISfyaxN/sST+s\nW5nN9HrxbJ/6WCVafuuIbWwrrhREVz1SYWiJTi6hn+7vSJKzMcbDeeIU7uwU\nBcAj\r\n=4Ltj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEiqhQuXFWxIDDSJbdaJF4Qab8zY0oSDEycoddwJv9yYAiBZ6t/DnKM0Ku+hD2oq76HvB38c8huBvH9HlNohvtCrLQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.10_1595037577067_0.5565644274940083"},"_hasShrinkwrap":false},"7.0.0-beta.11":{"name":"@redux-model/vue","version":"7.0.0-beta.11","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"sh ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0-beta.11","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","immer":"7.0.5","tslib":"2.0.0"},"devDependencies":{"@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"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/vue@7.0.0-beta.11","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-4VHov8rZRbbnO2uRtL53ua7YW+Y8p51z+W9CuYN1U2LMDl25fr0wnMt9sp+FzkT6GSD7IGNwPG1KOeiIQCiOow==","shasum":"4d27206ef2b97966eccf318bd4dea3835e79b275","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.11.tgz","fileCount":23,"unpackedSize":26941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEl+qCRA9TVsSAnZWagAAo9gP/1jZsF5IH07nZ9Yfb01k\nmldVOkvLPYDSIWNAFtgL/Hef931bhFznfQc5jetVs9gJE2s0oi6dj5i8LYt4\nlGyQXf1vkI98CilOD/ZsDbRDjOAo4LfQUzpqBgsCeBVAG/u9DotxaH6EmwAZ\nxsKwblgfl7Ocpra9f3CpH3gB+ByX8QvTzvMXtk6ZAMqHrTXxnH37M2yvabOU\nJw/yKs0HFubL5c1DAcCRiKY9iTHrd8QxLtSokufOq/4C4iB9TVdWDMZQFyM0\n1Yq0fZ10yVuCA+JydwDNyL2EttEfDEw9upLN66m2DD64drd8468/VjNnvaKN\nLbhvPK4RrD7DVj5QxILf5vsvsuIL1h031+65TpvEFjnWNkA2w089cNt24yTd\nrsnmUWoOjgiMSzJ+w2nkkckqfJXkMnnxviHP8PyB1a85gEZSdxCX3NIwkZIa\nhrKuqHaM9LONsehWd/yu28YpWyEBYFs3/MCUeOvbqrzGi2rh6JthXAtmK3dZ\nnakRx+KDA6CI7WOivARX6OpYDkzUpl+uL6p3Dd2pri1EKad8C0d9ZQ8SS031\n4eRL55HbfF56yxsZc4emETaPYb04X4yEr6ejon10+n+Do+eLMaRL9QWhnuqy\ntp14LSh0XH1ScPwRidqdVbymRgoRDpsNa9AhxXMxoEXvAcP9ug99aaOirNb8\nvTlb\r\n=ZU7w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDROVeEKAF439LEna9/SZDi6k7amZJ+N+n7XBBVGaOPdAIhAJBFxf3BT9uiliaELJ2M2HRg4r+P3G08Dlhz9DXNQC3Y"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.11_1595039658104_0.9535526966654346"},"_hasShrinkwrap":false},"7.0.0-beta.12":{"name":"@redux-model/vue","version":"7.0.0-beta.12","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"sh ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.0.0-beta.11","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"483e3f2dc50915a54cba1185cf57313e112a3374","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/vue@7.0.0-beta.12","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-uRlq8djhuNsmOd6sDIm4CQP50ZOOzM4rqR/adItm48BORfFlX4ABDUkqYT7VQ1S62PKdtf6lw9BUJA+V3d8hOg==","shasum":"ed6e6615e799c8b8bcc3f05f6a8eb74819ecd901","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.12.tgz","fileCount":23,"unpackedSize":26949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEmHwCRA9TVsSAnZWagAAHiMQAIqOu7UsWeNhrgdAxTEj\n7ai0jBjq9la1kO2PYKMTc4/wH2T1IJfuqbSgVSWiPwmJc3CX+UsccLVOWgtv\nCGz/yC1GqkRz3LXgxJE0jcfu6JItOqmn4sCVtUIUGyTqkl9kNdYPqeRljave\nwRjTI4i2yUzhTrSP0x/KWuXx7Ml2lH6VtBz/L280EO9oaQl5lbJwOnFR4TJQ\ng8l4mGiDYnCH4rSzlelTIcvRWAW5peRIMZ5gLP+KBjUp6mkMwrQtHI9cklkk\n4dAMjIlxo04t/4XoZkHHY+xElcWCevLjlcSkrQT9S7IQrUwTnGaHJj9OjcUj\n8MLiP1GT5u+iumB8paKAWOS8KVLyTHq2m77gW5C4uNcUZmqazQnruubEthRI\nEKcxHAxdEkQbsTNm/p7M8AreWjnAl9dDjJQ1peK1Rk7JWn2oOfAxBlh/Udoa\n2VCw/5ftHi6KrpAAmcpJG5zNwOLXj9IIl3PHM8ZgwR3VtrZIUGsk7Mr89OcI\ndKAL9K+MRyWmzgu1ds82FmuEta8Bl51e6+lmhsBm8xt0OAHZyv4dU0kfTXkQ\nO9ZFQw/A5RWYKsFbEOLjyHUcdqkfmP0mdTMPlu83jRIShZYxTAzSb7oEzVjK\nVDeG5qLKX9lcdBZxsN8q3c3h1aDBwD7f2K+vkWgUF35ll4J59epT9xvoMUNw\nMH36\r\n=fRVg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDttt8B0T85h/zCZ16ztVBE4nHOTYNeUoK/9ORj5kZqcAIhAPtnE0+7QGMwvtLrHBPTWfX/rOF2n+BorEQUmsqYDOtI"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.12_1595040240254_0.10194428445027737"},"_hasShrinkwrap":false},"7.0.0-beta.13":{"name":"@redux-model/vue","version":"7.0.0-beta.13","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0-beta.13","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-beta.22"},"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/vue@7.0.0-beta.13","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-H0SfaYLRS1zMRIq2jVNKVDqiBKqxlTPiopNGxZ2xexXHqwOvtWfddasbmAWtjJHMLLdLcjD+a9OWt62+yienrw==","shasum":"6f4a8c5a74bc0f6acaf73e2c099c9ee1cf972fa8","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.13.tgz","fileCount":23,"unpackedSize":27027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEwx3CRA9TVsSAnZWagAAsGkQAJ4pnglrrAt8hlqeYVoq\ndJzybGm0TbmswI2GB67tIcAJ2yEqkyDgg58VFd/E3G2l4/R9FnU8oxXYK2Xm\ng19i6GnaHKaT3hpVH51Pusit9uK7feq2R7lveCIzVNFEOIsLcR3ayrTw0aPX\ne6P92zzAD0KDNRhgNA+CyInSz6CiEpwFYkqdwkKMyNaGELocswBjo64d+QDN\ng7GA9yMO1S4pfO8qloQKk4/zM9sofgsm/6TYWZzjLP6LtmEAjuGF3Cidy/Ny\nEVCUGE9zbfDD0a+FUhYeQ1+NdbDJmCgViqiieAajxWSBLYkhAa+qGr5bD09S\nnXZ9U/WK3OiIHvPOrlN6aacqxT78Yzp0jwsS9dgbZaj3bJJ4CoFJR1hHeYbA\nPOmkbz585/S9einIUBZmt3JbglV40DTyu6H80IYjZMy6zJFQST9fsq0i3wCu\nJT9TTBrnFSAgeHHm76pS53smqlWEY+coBoVPCSG5Kq9npG9AudipgmIirq3L\nqOmLy5XuHlMCVmCmzc5gfnC1Z/w5/BgIItC+lNuzZ+HiAxXcL+ab676M3B1O\nG3QPBItSMLs7J5poEYDHFNUxzEd4gWkff7e0n1DWHE//qlCvYjfpl8FqoS8c\nK4Z+BeERAQ1myydDFc2JM+xL5cpVKSk1gyItyub0w4+IO88Bh0Wiy17DbBlF\neMQl\r\n=VDwM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYP4Gp7iRiqnADvTRr0kOlXMdGW3NWa+ixo1u9Fhl/lgIhAId3j05CM/SWs+9SAEwppIUQNA93Gumy4Tc7pjJ5wYaC"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.13_1595083894917_0.37997537258948877"},"_hasShrinkwrap":false},"7.0.0-beta.14":{"name":"@redux-model/vue","version":"7.0.0-beta.14","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0-beta.14","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-beta.24"},"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/vue@7.0.0-beta.14","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-a5xztADtduAKN7tZVeC+jWAp+g1jH0iyh2AD2X+WcKMKDgFsX9jcLAPKKpnyMfnhvSjLAUX8xya7u9zQB57ECg==","shasum":"7e780d343a395731b208580077fcf3923bd1a156","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-beta.14.tgz","fileCount":25,"unpackedSize":27956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFCILCRA9TVsSAnZWagAAf1AP/10cIXUpwZ/J7YQ297ll\nAaVbBXF9Py+uC/kCypnrL7d16rWgfTnPCzZaS5ZrP/TeoewiOm46U7Su1xaD\nTGgsxm+jIQPhK7Zy+qBCaXpPCqnhAFcGzWemI1OsaH8a2lTjVPnvVQC6Yf0i\nx1DMJQqs3/qIgzAFpXGNzlnksut3msirEwvv/V9GMUkrFN9oerE5BcqyGSEH\n/ipK2e82hqIGdx3/A7RdsWK/lPiR3n7mukKH2u08FNzij295RM6ihYJ/GRnZ\n4RCVTy5QIMRpj6k+CxP/t4FuZJGa58nGrQqpGNaR02bRTikPHps76a907Ue+\nLF4Ij0pdpKmT85k2ihej/l0xF5oKs35oVsBR7aFbd1h5TWFCjdtBvhdybi58\n916JgX/EZdtpPVfNonlKHshe5RwA4R8IwSX0q8r+YuiUPIdErgt9f9E95yt6\nEQOV8B7Eoq/PXuCxcO80wHTI0WqCKsrmUX1I1jYQ3qhtfk0Xzdif4G1gSICi\nS3rRe1CeCmZndJsU+9ob5AaEKv5fpjxdW95I1q8L8pJ8GJA84Q1UpCig1IHQ\niA92ZnmrCiti2On8/IfUxuTJDX7KVOaXSdMXCPhVFJpwAnTLSYXrmWFbEWK4\n/OYmskKg8gA4xy+e/9yfm55ubPgSOmTI+WwHm9kqM0QpXzZw35UpZskQgomF\nZw17\r\n=iPpG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaDkvicwZREoh/iBxpwuOwWWBKbcw0H4XrI9SzXWTZsQIgao7CkwiKezRdNRhO+SyC6jexve881B/6Z6TD9Z0vvps="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-beta.14_1595154954860_0.39979570790097685"},"_hasShrinkwrap":false},"7.0.0-rc.0":{"name":"@redux-model/vue","version":"7.0.0-rc.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0-rc.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-beta.24"},"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/vue@7.0.0-rc.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-W0+Z+zGwBI2TFahmyRmO1OK1wIKNnN5XGKEBBQeqMgKdR/pAsOtJKG6T4n+cAkTO9AV3WvEjMiOFR6hdGzEt0g==","shasum":"aa50ea0adb7ddd07736080a78a160817c74129c8","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-rc.0.tgz","fileCount":25,"unpackedSize":28443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFFPMCRA9TVsSAnZWagAAcZEP/Ayw0KmOaZACnnGAFF10\n8w71QptUVGBfinjXH0r8YJutGAIzfyKpYArFPX4ZrQF7Wu1zC0cu09f4Q/lm\nrEuh+lEyWYWWIm5XKVOpd1fze0eysn+wZ7zN5AOOAFBdn46C7nx98tLDC1yZ\nwVJ7EtRvq/lx0g9bVPEbcbFlfKfiRa0jhO5PngZB7iHJyX4kmrnaQ/6kQweU\nwzgNFPBNCrhHvT+s8c6trff6Tn6T1JV/Wi3Mp+hnUwGgjSrall2fo//zxKfK\nOVhK/EK6XzVxY0vKS54jPPbg621WMVARQSOiyzPdOjFzCeb48+EZ+l+foG8v\n1MbSlZS17K22Y4AVX4sUQRga4DUibx76cSAOwlP6lNzIm5Sk9NOyboS2HaKn\ngafgt3aC4o6gEFnQOzFWfCo/sQIkApJEvVVlNkhkfD4MJWziSJeLJKUtGQto\na8pax7toOtEJvUlbNatn1CxMBUsgUWQXUX4evcJe9KxBTR7WrJyYrIm7TgYd\n+SPbvpsadk9yjWt9GtTyDmKMxqf/OjNT9TN6/yTo5cKFNWFA4G1GJdyyQzQJ\nz0E0D7pKyFUSLd+RI800XSBWev+XY1cM/FcOfg6Xb8I75IODZV4t9DOg6cmJ\nyN8S7qEPX6/qfYUSqsr3uGDOw6uj5Eccb5VMuc5G5MDOplo6qcrahDLDTJOB\nipx+\r\n=UJtq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXJD/idoHBawNMyuSk+1A0wM+nfKV9I5yXDCAWpE+o5wIgXHJAPjDoJ1q8YdgLfqo+Rd9+5Jk750K16QJh8gCLzDE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-rc.0_1595167691735_0.7273263557736"},"_hasShrinkwrap":false},"7.0.0-rc.1":{"name":"@redux-model/vue","version":"7.0.0-rc.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0-rc.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-beta.24"},"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/vue@7.0.0-rc.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-yFwXWar3QgLlCTnKbCIveU39YDJgolp42QVFVcYvc9VI2jRxfQxTOYe5bfwQ2dthmmKnX5nsWBIjiB8OblCxBQ==","shasum":"d628109d888545b641b2c050ce684f062b4993b4","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0-rc.1.tgz","fileCount":25,"unpackedSize":28443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFHccCRA9TVsSAnZWagAA9wwP/0UIeKHZfTPzL8HVQSaY\nCNnJtonRaOjbu8+dNfP4qwneYHrl4Gp77fmD1KRAobHXmCKfkPJI+m0qXnzx\n8YeH8CgwvZQ7NQMOLo8sC0z0kpVsSnJ4KFKImzu4axyr7AScppW5Q1by/bX3\nrZzq0EQ8V38lS8ZSdRWMGZULbDPe1k8CkKWr1M69k99PcrPrwadGZec0AM9G\nGF3ljkLlZNMvkA3YOAZrmU6bolkeuhSmMHF+31mIssbHddEn9LucmBh5FTfV\n+qWc8Q9k6GwhvgQs8BG2HiZEVwDF32PfjBUDo0APima/f0LjSheu/rhhmAjN\nSrCq0rGxdFOlVVPtjD8zLu6hkbPg2I3ofaV5Nv5geDi99RQ6aV/onyczkN2T\n91PBNdvBYBL3rhJqsSAXgRt545L7p3wx4NwLPYhze+s4MZtt+kS+z5uNEod+\nQuj1BgqWXog4HA6V2f8MDLSAKVm1vXd/cbIdphERGdNwvPnS1VhZC0CelbE2\nsbeUQaaruXnL2Ui+0TC4cq+ZainCrpKpWGul7fmcLmCYt4eaMp3w745fl8Tm\n3kV9coYVE2VEMyJAZ+YfVktxACZruhlo3jonplc+K/qJH0la8vDJIthoIf6u\nYgAI3hKJdc2PfhZzS5PLRiAX34UPfmvBwiQnFvbatAY6oA2exPJmSiYUf1lO\n2jAo\r\n=mTRS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG4sMk7JTvDAg/JRqyfH0IzQQuSkaAY/zUmxhqEQRWKlAiB5YCfHlkY3PU7Bg8Y/x+FtiHnwINNrIsPziC0m1LQslQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0-rc.1_1595176732119_0.09192945428319699"},"_hasShrinkwrap":false},"7.0.0":{"name":"@redux-model/vue","version":"7.0.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-beta.24"},"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/vue@7.0.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-TY9DGP7p8qg2JVDOVPpK703o3Tn4B57FmopGICIP3BXYeZwKuFabssVu+33UpWsC/OQLTzppWUKVtuKustIuQA==","shasum":"c3d63b4c0e6dde84d2fd445c1210369a13a101aa","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.0.tgz","fileCount":26,"unpackedSize":31801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFPxBCRA9TVsSAnZWagAArfYP/RM/PFRVzUsBJMJAOWl2\nduvjxwu2UQzTeSY1/y0HQf4kPHLpOkVRkS9ql46F4c1LjsAjBI8/qK9VMDoH\nD0kN4y7ZTG8vTdl7s2gi9c1otqcX4zz1wK4tcusOX55iZOIwxfZ7t5ozwsWu\nziAZPu6cqeKkBBtfQb+F3HvvfbjFCsQixpr6vhhfp/gMIcN5ny98x9UaOAy7\nO09Kd4RAVjTYIgq4PrPqQ9GTQ96mu8GcWS6mIKXVqNHdFzAteu6wRSDeOAII\nKfh6O1nhtHV1Ibu4XR4GrIhtsl1ABQ8eiJ3Vnns+6llZjqqV+HdOH05nZbXY\nTtnSI8e7hG+FQ30VArvjJQXUvCBVS8l6xNxHshcuV+Dz3QwXUJRsIstetbQo\nDlaYGxkoQjO1inXMaow5sZlER5uQN47hoXvOl0rs7uFklkwuORHP12He7GkI\nDrPUA8pRMvyfu8QcPiFHyQxfFPlWW3ckkxj9Yzgb+q4INA7jS6fZiD544YMK\nrZiMUPCBQMqq04k+dI/lFgw8BA8O0H6wF+8G1KhIFNTt88+G8X31Fow93+r0\n9DhmDr4I57rl3c3OniAsxpy09h8hyW3Bd++6gsVz00Hpnz+dey2grKM1V3C9\nef6LxwinlH3YxnOGZP3Zs4dw1z2UhTMW1o4Vta5xlzC3ryDiI2S60TOrM578\nAWjC\r\n=BxT9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfQoKuSEat9PA1x+yIiEQqEOEtbYqu1g75Us2GJcrsaAiEA2azWOHTX5MlMreFSMs9MCPK7KNJ7Fdw0dJNSaqN0JjE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.0_1595210817352_0.23058028809617337"},"_hasShrinkwrap":false},"7.0.1-alpha.0":{"name":"@redux-model/vue","version":"7.0.1-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.1-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-beta.24"},"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/vue@7.0.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-/flQF4WkjXDSDJv9TXA9Q6fRXAId2hC75gD0rrlqRHwqPYJs9Ro5zizl8K4QA6s/yfVSQhM7yqmoOzSLVwWXZQ==","shasum":"2102db9077d26ca2e618d2f00f72286f570b357f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.1-alpha.0.tgz","fileCount":26,"unpackedSize":32066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHjylCRA9TVsSAnZWagAAqjUP/31WIWrRgGfqU94scfvF\nKZpTJixRS9zDPU+bHkZj+iH8jfPIhncR7nF43ZFEjTzJXEMRTUdhQYvsS+RV\n8Oz782N9aZnbfjqdfoJMMAFGSbQTVslxdtMwRvDZi+KF7hKJFUR01xoRLhVL\n9wfDY5rdJnDpBNAmXWrVx4DBff6EHjxQAV76DfZd6yPlKZm5X5CumXWod3CK\ndv2AzVolQ87+AWWq56pv7NjKZ2IuZTQY/WdzeXTepUSE6PsQSiYh3mL+FHYm\nSu/QbJLJeLkCSufgwfzDb49wPkMKJ6UvAsyKC12fGiKF/HAUFdZMzVlAHAqe\nicsFqBAgi/22Z2m3AoFQAuPO0Y0eiJbp86zj8CFb4o0gdILS8wLQgp8CSrdj\nwI2T/cUp9G/HummfDCVmwSYEWLkTwoFX+GbIdauuRmPozQ2+ZOBjYTe4GJZ2\n5NdqLzaKvkBLUWCumK+qOtOs/8pRzVA3zu6BqER559z2aef/MOXaEAWDycGv\nkhNixN6W7HFnfmdtz/af00uY43DgL3PdZr37EedfwFahCCjt8T3XkQdvzopQ\nOSJzeOX9QF1HTcpNvEdFWDLw3vhpFWntRCk/w12lt794cO2yLI1ZmL6Fv10S\nNPSgtvzufNcUsB5PwNrPKUetZD3FfvszG8YffNkgkshEzV7pqZHWZz9W9cSN\njdg5\r\n=gOkc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETFCt+xIWyLmuylNNMBvAbkMS6JufG65q9gGcFs6vTqAiEAliImFsbdmWd8LGaHVSn5k2AWuZ8/f6uEiPqNFZlBqnU="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.1-alpha.0_1595817124552_0.3296571605941985"},"_hasShrinkwrap":false},"7.0.1":{"name":"@redux-model/vue","version":"7.0.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.0.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-beta.24"},"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/vue@7.0.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-7whQI7NeIg3Mghp5Vxt8NQgX85CaxCiwyJOOTIJdbJNMK9Jk+a769rrdA7QLGr1I0LM5/4y+yxLvuzXU1CH0Dw==","shasum":"6c4a4451f6eedccabc2ad44ea5b5be3785dcb5ae","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.0.1.tgz","fileCount":26,"unpackedSize":32466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHkKPCRA9TVsSAnZWagAA+c4P/Arn4eNHaNcQOQ9gHwwr\n8PrZhN8oD9/ILzFDCBhcM0LIIPbJtF3taIQX8il5vEEpe7hmGhmEnnGP3OPp\nUz256bQAALLOZPUv+Tg3nN+l/1flbDk7SCN5KkelOvRjh9kpRHPJ5AyfIFbj\nG8o+kzyJIe0C2Vxk9OKo1vMjQHY5CvKNbDfTuXvEafl1bJcc0sbw3tyoQMXe\n5fxg2EsP2VnmAoawqvknfIbGpJisMY1X9Gh3vZNuOnad/IRLl+8S8R8/P2G4\nn1pxbWrZ0C8kfpIoPcbMSzv/7GHms63lGaE1+SX8i2Pr+S5AF022ksgKvkzt\n2XjvKj4iRfsLBdxw+PT2qSKQ+roczn+h5NBLesATdP9Pku7uElApKGwI7WnC\n4atcbwsoSi4OEQZEeicUvg1s7879xCVf1ktqI08cQHzaE2YXcUZammwqzY62\n7bP601mJJvdi2KKvOpoQNdwnNzS+J0deyHvNzwhBbcnl5M6WJkPR10TL8si9\nbkCQgLjbceH1D4hYwI9OwB2jiUDoTRUeVXFneVDhw0tf5+EIR8tuu41Hn+IR\nWWA8WwG5AqoiSWe6Oww6Yl1oPr+aTXuZm3M2ldolvTE9w/xxNgpFCULDl1RT\nHzaMP7k4v/8fNJub6SpZVlOVel+dL1cfLmkRrxFtI8X+JWYYPGx3N5NNpAuJ\n5BB0\r\n=I+PQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFc8PDFIEXmVh9dEhVCCSXSFD9oUgyfKwW2D6RSkI0MAiEA4VdpAybugfbBArxDgIRGsTXzuW0bIZsUt5UoNoFyvIE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.0.1_1595818638503_0.0684320453916285"},"_hasShrinkwrap":false},"7.1.0":{"name":"@redux-model/vue","version":"7.1.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"^7.1.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"3.0.0-rc.4"},"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/vue@7.1.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-JTaWMZIHjF/BeI+MWFzMk9vv5U18vlgxxfKtv/m8qb5aRA28uoszr9EnUNqGlKzIZmjVauyWRv0WrlGsDyurgA==","shasum":"345ad3b18a4c83752bc1dc12792541e73bf89932","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.1.0.tgz","fileCount":26,"unpackedSize":33956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIRSxCRA9TVsSAnZWagAA3sUP/A7vLDKaA0QXk0Qx5Tsf\npcIExKs+GmYP9JmpuOfVxtSHpTldmTy9zToF22cziCWKpYcENmHFVz/XOXyv\n3/07j57z9L9afFazOIx7bNRHmppm8FTVxCDe7aN17U6VP+VFsMMCExVrrgAn\nK0PAFCDcA0AjJAQnHfz9WoNpC56azTQcPa/LkkoRMcFVwEF6S8O7Nv7ayr2O\nocH/w8+b8nUfoR2uid3hEE3oe9v4bRUZhXetqq1vj7xyK+xHz+UQvxhhK1lO\nyMDON1jMg96fdq6KYAK8rxlnwQi8/Yl3++ICg1UoFBME7IKz5zYOZjhGouw4\n9GyHi31/AAM9ZFlv+DWLqAozU66Huw1Sa947T6Ga6PkiVb9h3+pogQBCw+uB\nqqmeAbctHrhoxTQcL56Zg+UTmQYJm8LB+puxVb84R77TC2Dr3HmmBcWl/svp\nBCXB/6B61/uZCq5gN/beEko1ljsSyBLlxT4X5pWjDkFtyOWjJYeniFa5Qq54\nEtiJQE302lC0GAy/FiXfSFHEq8d3tgggJP/lBdTKhf8sIt6ExU5kjXfCv/ij\nxjWhCq3MxQz7MbiHqlJXU8iR31NslsyolD3MGo9AxCCa0ZE5w7Od1TWQdyKr\ncO9A41rTJ1reZEoN8SAs3KP21mnqSqnlMj9LzH3yQAdPToyhIzxHtzmxJhSU\nhZ8r\r\n=q/bo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFOgYX3udd8BhklyoI/Jh1jW+/xt4qLLT+4xHr89QZlXAiEA0i1ibc3P173u9wXUw3zLrpJSVzdlkQj8ZNx5UEHnLQs="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.1.0_1596003505030_0.4456892810048141"},"_hasShrinkwrap":false},"7.1.1-alpha.0":{"name":"@redux-model/vue","version":"7.1.1-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.1.1-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@7.1.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-QAalu1c4m4Tu6BT0lP0My+Ku+9jk1fqsqvdBmY+6gH67shsJuEUel0Glt65QfBTYREQ4w/FawO+tojL9EYQKBg==","shasum":"f968efeaf2a91644ae407fa76259190322c0dc14","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.1.1-alpha.0.tgz","fileCount":26,"unpackedSize":33500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI7evCRA9TVsSAnZWagAAJYEQAISRt/eSLyE77NmlhxmD\n2v781QdayptWvUFxV0c0FajjBsT99T6qNXF+eCLPTlIfFmQpasJABvJG0EhR\naVQ9I1qkrryssHj4CHZaZVNTQpcdOvUZ/4ecCKb0W4ju3xKLVy04xfSwhW/W\nb1O/h+AIPJ69hetpOX/ntUPxwwpqMpeM+nGHynaGN2bAqQk1fv2PXCRP51oX\n94A2kqOrd0GfOYKkBmuFYmYzN2wAw/SW9VVUBo4FyHdb8kdnzpGeRuAQAYVZ\nWysebZv/Gg0dMgF4tfV5N6UkhA32hrG60yg3nppVAmjIiJoW5vwGx5yFRYUb\nJTT9j+zvjZnE/aIXcLx32blD80mDEZFRd6w/9Gl0SLOyQAmGa3LF4MnLW8W8\n0tMJBw7r/VCNnSp5b9buwdQ2PzL9AaiBQWcHjOPXj6ak5/rnMgPHkun7O/mE\n53MXgcgJj89zaWeRvNpDZVzw6w/XtvwNoP6WVGrISmPGlBD7l9Jof1Qp5DHs\n/zNCRihUiiike/1CqKZUlMhsxrMM1hCNNhMEr6QavYwhGOHxTsi0SMfTBXJo\nMyAVdrut8BZj4sqmXs1L8LYD3a1ICOhlDpA8nHS9xqpt5kUYxUNe3Dx4rAm4\nW0CD1sN0vYFC29eCaeMzLY8qlSQ8Y/nsUiY+RxuDFFSzN14VXnCez2Hhm/qD\nYIgg\r\n=vFcN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDawI5R/IABL4xJGW0YvSo/rFWi/mvJKfNsTPvVRluQqwIgA5vlA9Lw6jdwA8yJNcxziroQtvsDIgIpR9byknKpxs0="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.1.1-alpha.0_1596176302845_0.9734918258155227"},"_hasShrinkwrap":false},"7.2.0-alpha.0":{"name":"@redux-model/vue","version":"7.2.0-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.2.0-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@7.2.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-sMfWlGdFmtbhuVSvjU9AwSzuK4ScG975FlDHjaRlhvZcf/v8o2Ksr7v/6TtiQ3z4I9zSqeMtq0IGr09HCz/nAA==","shasum":"974413b9de70e83cb8bec52ecb962d5a73d27900","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.2.0-alpha.0.tgz","fileCount":26,"unpackedSize":33364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ3FJCRA9TVsSAnZWagAATLsQAIPgHMDabAAVkMYEfahV\nLIl5FwHnC+NGNp1a88GYuTANRh9AZUsECefW+mgRUzugMzJW3GkqxUyYn36V\nYuiDtBLnMTNOuOSwnP7dqiqtsA7Fo+YMShhBJVrG6Gsb7GADVNRBChuR6CY4\nG0d7Gbm5ZNtCrlN9Dtrde4HYVZ3fUwaPEPasz9RsjzvPWHKKM2Pbl3xfAK8d\nsapLCfvJz3v8ozke84ViMGLquzv3AIg+ZB2vNaqwNmxuf8sWgVZIemENFv2v\njdbS84gzU0xqJiOZLBZ7HZeCmLzskQ8OWuiS6N7Vm4CpVuapRukmHHgwpLKS\nYXJKdVOsIIBXJrk5tW1dMLhQfz8LiYd9v8IzhrevehRhf0uLhuec7cCc+aKe\nW4e0Luvo/ti+y4bWVnnu32MnsGK0ikNcl6a2kbn5/A/ldP2h+kNDIwYemSGJ\nw6r9D5eVjRQOA0Z3d0f4YtygoCEsVMJkELENdSI4LWL4B72SE2ZZ7nS98j8U\nwpFUZHyRUe47yy/aNotrcErHXn2IisO8wnwBH5zJUlOkJGhioEYJtkYNWzWi\n9yleSdllpzHENoN3OsA+afQnZ+UYBArMECaBSNbFiGdhf2yUw7KRWOI0PYUd\nAf4uYubrlfN+nbpCA++iCzU48Yk6FFAj7/OEEaX8YhNrXCPMKVXxiqsNnw4D\nT4yo\r\n=C5cH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7H9aobPlKZ/s1TI7bZtRq36i4KZ34Xe6DTn9+Cf3ZyAiEAznJL7nGeKZDmGfKugt8PsqXlrbpyYPEoqjZNUsShqnE="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.2.0-alpha.0_1596420424656_0.8264676000006912"},"_hasShrinkwrap":false},"7.2.0":{"name":"@redux-model/vue","version":"7.2.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.2.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@7.2.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-fXYu4ZlChWu+i/XJHz7UzdXw+vAAipofGSpjG3GQpoJ4As4Zb4xzKjdAAzzsGPSg1Ho/I1IX8DItk3XfDzNcIg==","shasum":"918808ada2b127cc427562d891390248bb9a7877","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.2.0.tgz","fileCount":26,"unpackedSize":33716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKAOkCRA9TVsSAnZWagAAejgQAIlvmmgMDxdlgzKU5drK\n43qoxfVItZINdJha05jFeRN7A+58W+rFHLAGMkWr9ga2FeUHsH2IXS4JKMaW\nLb+hAFWX58Vnyr0PlVf+A4P/OSxnMBU0V9CoV6oWx0mt7jSzQ7GEODlfP9hD\n07uK6WtD+f6WUz1PL4PQ2t7YoFU2X0JguCxLgnt3zOlOkgNEVHSf5UwWTgUm\nCojAXNrPAlcDtze/bPCHDcSEg8TxX9KEbPkd1LI0/bnnNhU20Jg7ttvLJvMo\nQeHvvFXTfd6iCQJE8xOKgH3g72N1PKgkERDXpN+PfGJ2iOf3SDl6+aDCDkLQ\nhLPzT1Bsp62xyxbyo0/VtTLjEls6RS5vmXKTAGJ4/tDrUVltV1aHhavM60KL\neCQE1+HIhK1Lwf9AZHmqJc++fa3rsibFonKwdtJvxWjdW1mdXUcbW/Hv8u8Q\nnCwnTngeEl9W1V8MVpvEIhYd0CtbQo94mU2nINqAjRRZSaC5XWiGoH/K/cVa\nEaZrRbBjCyd1E6ogKLwSOnjQG3dHPB8xemBQgE9mYn2qAsfNWLsiEsKzKDEq\njaOt7/f3yqvmeyZIYvXq1fUCR5KmJ/wTUzDJUbTzHW4AhpOhfB2jx8U6/oF+\nyWHBY1RLsYmZgwnqTqVzBsVGF/kozLHLgHHPw2ko40yeoGGJuiQ6CxMB1rSn\nKPJa\r\n=o9g8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQStxVMwGEdgU90UIdIAeaagKBy2rawd1eynn2SBAnBQIhAKQFwinkGcBPmWhSvD6dJRS6jF9mwMmf7Q98KtUME2bx"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.2.0_1596457891661_0.7701787716802133"},"_hasShrinkwrap":false},"7.2.1":{"name":"@redux-model/vue","version":"7.2.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.2.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@7.2.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-4jTJzRfVwQ1Z4VxymlY2LJ/6SWrRLXS4hZnIiyIAQNG82AU89t+Gd6yH0x/OQNiSsQcUIz5WUbUNPx0LbG7N+w==","shasum":"526628971741cd120a3d5358c2e22a447c711b0f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.2.1.tgz","fileCount":26,"unpackedSize":34039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKhKpCRA9TVsSAnZWagAAQjkP/34xRbSdrfUwryNs0dh2\nBDWVomV4WlfJieUMLhaNtDm3sKTTHIaEmc26AwPXhMZZjSauWGhteKYcqq94\nzGyJhkV84mF+c4d7Hmyleqs+SAdTgMeLlCDnWY5IglAGkUbInzJekXJRNP4q\n9enl7/M13/Qb7mkSWAtXkxqpEtrlp4+2Rnw9odSH6kwruf2MwT5ZuEiXZn5C\nyPA0xv6bB9OrsLnb//cela1l7KBiN7SRFBIEaG0cW9ME1fgztLzRHT8z7wkZ\n+oNlfyDOHFqhiRLhgsIbN+5iWY6pyGBQoXsgk9Oo7D0gnJgZ9RJ+kdACvixt\nL4IvFsQdKXtu804GRDj0I0dkDCwbRGG+XrsW24EBTzd8/5vqWgdIjkveNc5c\nIvDGMozkSz32b3KMy014FDmS6/TlemOXlHn0A+hIUhfXv9AFApKAps6MyGad\nQQxIfux+gx4XQfWjRBarVAmkt31zfSwZn48B649p86ogEzfr7ii6KdeVeNsl\nyhOkKOYwqmGOi6gPv1OYijx4hbk6ueUi0aRVgIjOEljxO94Wq6qxKPwpoytG\n4mkgUkWBRaPWnj1SAU9p+E9UPEX4P+Tg+aVFFYv3xb0mB0VQXXJzNUUdNEv/\ncxccDVOAd4yJ+ZVrbeI9bgy3zE/OzdAw3OqHSpyQ1mU2bPujEy7KiGELmwmD\nx5It\r\n=iYyE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfCaG6EypsFAyKZBh3QMYlDCh1QiTtXCvIEXJNb6rNZwIhAL5UbCTiazicNdOvY7mkTah60SrDmuYIROurloIeHDvi"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.2.1_1596592809385_0.9460910785803605"},"_hasShrinkwrap":false},"7.3.0":{"name":"@redux-model/vue","version":"7.3.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.3.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@7.3.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-VdhU7Ue1yhIQSiBfp/p9+Vje5FUv9Ynd8gRw2WE6EvAXTL63gq2X+f0ZDOmxEm1OW1LPhvqlFVa5vDlMg+vc3A==","shasum":"a6892ab4ae5c5839496f0c9dcf395d06d9476c33","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.3.0.tgz","fileCount":26,"unpackedSize":34401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKkQqCRA9TVsSAnZWagAAzy0P/3mUR7SL7S93FDbenJo2\nuILwEHS5HlKaRuET2rX79Yeh0+XhKWf3fKcOYbNaX2sPjznPemb1IuBP895z\n9UyO/86LSGVXegzbm8yS+b4X3YcYUoVqQnDjOt5plgcWa/KAzwi1B/CZ8565\nZLsr0hQAh5OKV5QynjgtpdJt/HGaCYV/FjfY6DOuVSaVsjA4l9Rd1w9iGS9k\nZ3r0BJW4cvRCNXJn8cFnFO1/rzPJOTheYGIVqSHWjQPIMGSW9FQwyT7wMXiv\nNlZJDKR5wwKQq+gpXLtCTkECd7RnvjFCHegu22vHwNIue3YqWJzZfp6yV6AF\nMYjg1RDIu3ZQy9pyHaEA3Iv6Cqz67IhbyjYrOc40Ucd/g1LcYQ5d0WqKEFb/\n4+ASn3qxtTxO1NdLJBW4Ns6qJ/mL48lVrvLqmfNOSkbeUWnSKmwFmS4BFVlJ\nmVqRwmILx5gWwtLQcJwvWP+V9GFXGwxIIUe4xz4CZgUjkdPPkCB7FuYqsyri\nIeV9Yns35UXNzu9/qXDIKxuIDnyPGAhGXd5IGIswgz3rV6DQ4YQtw/u2PwWu\nWy6DUjHHpgt5iuKbdJUWiX7pPsec5EgMCppF69kKKwFyyLH9GITUXmGN5ZpC\nA56LR2MH1ugGGY6eWkCSgP1BWoe4z4/1E8bTbuftn9RcbsYcsLtbvjuJq/8+\nyxxd\r\n=xc0S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQO69BqIozYryJiZ6ghvPF5vzKGODUcnjvxbBxswUtZwIhAMo4SxJbS+9dBSmtBpenLN3oA3xB1IXGuByWc0C/zYps"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.3.0_1596605481696_0.9579876071516544"},"_hasShrinkwrap":false},"7.3.1-alpha.0":{"name":"@redux-model/vue","version":"7.3.1-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"7.3.1-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@7.3.1-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-of/LaqrygoGTp7QuxY8Uoz0qW3EL7iVp34rAj+7TZW6gwAd3E0xwaAlezr1R+wPHUaCs2qZpYNDxRgZCbd7WDQ==","shasum":"e306024e774e7becb739e11ed333afa43d5dfdc8","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-7.3.1-alpha.0.tgz","fileCount":26,"unpackedSize":34402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMLnZCRA9TVsSAnZWagAAZZ0P/AjAgDZd5U9+cSftIyoh\nU5Hx3vMM2D1Ya+Yc7NHXaii+U4os8CYi7paPaCkALv3Yug6bP9ba+QDmgwrL\n5tkhVlFVtyL+pV3ceB0RGtP2DsH0PNvs692i7M4mJnTil5SD+6a9E+vVv9hI\nDikws+PZP6YytHTKOb4Gnn7NFvYJ1fkutk+Yu5+0HQReQR1vHniJppWfichC\noh43twebYlLvRC0FNZm/4+AGqOpj3B9+eDUXo2fr5LhSDaMgWik7a/JVvW6b\n3XpRF/ZWSP16R0NPZXbvA4MuupC+PbMIk9zLJgBvAe0yQiupTeSL8iZwEoUT\nucijNlV+JURvnQBZcH9vLMkepMmrv5CIZO1lCknoG/vKsmZayTsmOxvhkgas\nZT3nf6Q5bN75B6Ac9hTTMAHK9bPRlzMJV5RTOMysJOqAvTLYJpGKHT155K8o\nCekZe0OueaQ6ttQ1FD5dG7gfHWWEXvAlpAfUrBhoNrkwGZKH8U1AF2kYbtC4\nByB3QXNblnEf5nyMqYNs9X+5kxXN4+A7HIg0ykOB/1XQEMNWgBKZGjhGaDa9\ng8Lsm/jUO3wpxH5sxvXHGPa0mLNn6vMi2heCv8M/rQzDPX63vhz0qlp5DdUc\npqZrBwShWDdcpqFTrXI4yl79KQJ4Td+EYc7TPtOPAmO1jsAUqJvcdikj+HGN\nLStL\r\n=ymG0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEpu0oeM2Sg0Ry9xCIhggqxr81VRwZLJmiUvAC6UUEHgIgeaEaX38XEvsec/3O9FJQMaOq/hM2uTp2OU/BzBugS6o="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_7.3.1-alpha.0_1597028824673_0.4629154363440715"},"_hasShrinkwrap":false},"8.0.0-alpha.0":{"name":"@redux-model/vue","version":"8.0.0-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.0-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-MlS8sStJtN08d76o5lniEWNFUpsbnVtA0/ikKP5YgFPFDNIKf1HgumGNHeBwpqAUk5H61WqWbqFH9VtZKWeJxQ==","shasum":"f7a41a37fc5d24e682578116a600155399e6054b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.0-alpha.0.tgz","fileCount":26,"unpackedSize":34998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM47iCRA9TVsSAnZWagAAZuUP/iSMj0GSOKuvlMqDO4S1\nr8uO5csTJKtQwzz+VIfBv4Ti9/jx/H6Dlcs7Fhp5nGoE9xHgfc33miJYQaCt\n4ulZbCAlCsuLkGRURBxPRvWY5St1WhSSluuxbPymFj4BxrZWOKdWnbXFvg3H\nK8NxjZncahTdPfkg511i0IpqohMdS2sDuLVRUqcf4Or2njn+er+VuNxjrfX7\nPLSiGU6rmB5e2etVfE5X/G8DVGG2MBgkr9p4ISarb3CUbO5LVW/2f4OjW5Zi\nPd7lXDvYMxuhumurEhh0w0Lqlupu6vsNIt/+pBLvlQEhxH0MGQYlTaWeSqnk\nipy/H0J7HPHglTawaq6ICw76tSFmgUIV6xL9psbHlFKuiJzAXm8LhRA3QCBW\n2w0J0dkQpCu18mqOk6WJ6/XEo0Wx3Pg4VnECtngRL3c7AuW/b+gCLkgZzoIJ\nVteVc/tecK+vrxLmThGQIj/VQm3ZcumJqbxZN5D3ckJf/TjIN+9FofBI1DUH\npy7+nGwle9nGcTQnhgDZsT8dzMuLp2qGo4kiTtHp0kv4ur+nYVuoIR+pEyFT\nLrQxFogD/f8v54fUTazV4N6C1h8oyhwUS2Mp5ptn8YDkwYjRe29dS06H7EJY\n1kI1xAdBvpo2l1ydogAAVKDamzvB7roXqAFMr4xapVCP1F5ro3kihnytyaEy\nIPT6\r\n=jflt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA3XETS5vUrhnv0lZhhdjAxsrMRrkOSLkPliAhSK1oxiAiBHX61PwjVwETC030c8oNi+pzrHSiOVwZq89hhZOGdVAg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.0-alpha.0_1597214433966_0.8436366642996567"},"_hasShrinkwrap":false},"8.0.0":{"name":"@redux-model/vue","version":"8.0.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-Nl6ZP8kTFiz5qUFn7SxyASsbstHsze/e0sx0WsGZrKsFCx1CWrOhV9D/onXINI+4h0nvc8v3XjUDlgiE8drYtg==","shasum":"87d95f6a71450d751a3558e0564d9462445fe9e3","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.0.tgz","fileCount":26,"unpackedSize":34982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM5DoCRA9TVsSAnZWagAAIqUP/RDIKEewp8AkvWPI4kC2\n7Bub4tYW0ojIH9D2gocTEn/fkINcJH6Xj7kwRU0JAEtkEk9WTmo5/95RDCMK\ny9ria8KMSAM4/s2c7wv0+cR/7pxXvfyYs6iiiaQWfCOdLWVeHvZC2euDG8kc\nH1p91hgqLubq3Ghn8wQSpUMgxmffDSgJ4s+pPmZdd0FbzH9Mn/LCfGM1LBWf\n+gd3xcO2N8HVossBmgNen3RutpIzx7qBWia8xCt/UbHoUn9CWGVp5AgE3uwe\nkI0AUlmXS4D80Yjvr7maTkTnMdGvwvK4rv4bgzotzXHu9dFAPBoZzDxCTWN3\nwTXHPyLEo6dIUS4QRpTkz0u15gdGhfv0kqQXU815dlZV4jvYm5p3zUMilT+z\nf/P1fyJZu0v20O4zv5TtWUhu7v8gk1wJilLYolYnax73l9SikmdMQZmIaR33\nLaxQ5IFikVS7Gi7GTWBoDK/lGWuZaLPdtLMAwEVZVBYoAMUlDQeKOtWgDZzi\nW8FUnKhAwNtc9kdhpW1t53QKuYcLh3SJgEzY9cf0CWV0+uDPmytsxWhgd3gC\n8UG1W0pJ/CiPTzb8d0E79W0cFF83DfzTe7AmD9jbrz394KB2AtLApq9RJJh1\niaInBteYvwBXm5gGYpkkVg3UuYT0vGGAPQgIb3Dmk6ecvgp12LOHb/gwwKVM\nELto\r\n=mq/T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPfzCQ+kCP97jrK7yd0pIGcNwXkouWgwdsm2mngtLr/AIhAMK8j9LF2BFw2RRBd6pnlC8YoBfW6MSVYiNh5xPiO3jj"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.0_1597214952348_0.5861711747066463"},"_hasShrinkwrap":false},"8.0.1-alpha.1":{"name":"@redux-model/vue","version":"8.0.1-alpha.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.1-alpha.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.1-alpha.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-G7Ai1DoCte9pRaEmPPjm52GgFcnolh3ZuqnACE/ZhtlfihF5+Co0j+7eAEqBF4Rw2jMcRxLJAEKcwSfJ69bzww==","shasum":"6be541b67a8a8031f6604a78bf5f31a1bfbe2fb6","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.1-alpha.1.tgz","fileCount":26,"unpackedSize":34968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOBVcCRA9TVsSAnZWagAAoaAP/j2xCIXqmlflC0eJfO2H\nLYlCAayMDdMjlIn+wbPVLPPNwbVb+0RHp9swUEemEIkNwlc52vL0saJuFZEm\nVqiKpvdxkctZGabnfxH7hKpmNbYKyAFrpcsPQ9U/hnzHgR9HdevHXtW9S+9y\nBiIIufVZ03Mb5wKWlgm/SXoLgT+GgbNGeWVeVZApuWMB7c7QyIojA0epLSrY\n7HdOXuaRXIsXpyMBb2OSGSm/2D6bcRU3lrLFzil9ZyuXhwQj5ON2aYSSH/18\nfxMohbMdJpubWEdaMwVbzm0QrXnrFDQeZC+mNOTiGU0rPQyQjAgLrBnu7agd\n9JwC2zATicZ6mToreORnRsr5YtifiXoVKnKxMzV8HH6JGzrBsnb2HrZnf2Tf\ngtPsMnZZrhDSK3whr2I2yFWll6HmLy4M9Gyp6KZydujQlMemjiEs5ClhogzS\nABwxKl2VpMDixffiELC7YQwPkDM7G7LBJB/4Vj4sM4uKtdb+DAAfb6Nqd0j+\npJRM1RqK3hiZt7PkqL5Yrovvvvc7Z0yWMF8CG5DMmz65PwPZ1Lpoe3yysYrq\n6nOH64kOyVWLwbLevPyPoY7LNyWst4LSnzD5bBDruXocVz3A3A9LtlIybbzB\nADhsq3UILDFfF56IaH8lGd3r7XKn6HQpES5dQeC4fDyRh9g3mDp2QVDueIoC\nNLSs\r\n=F0Hh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNX/tIMMDf5l/ECBARaZxD/GQtpE+kFL6ygf5Mo5nCSAiEA4uE5WhOkG0VzWtQ2+liORS8e/mF8tcWKrCQftmlZBP0="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.1-alpha.1_1597511004210_0.5686109556434371"},"_hasShrinkwrap":false},"8.0.1-alpha.2":{"name":"@redux-model/vue","version":"8.0.1-alpha.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.1-alpha.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.1-alpha.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-MzkESmQhMjmJ8ieYMZpVWofSVD/Tlk1KTuQXNOhDdatPWEzp5rCpCuoA5k2ufNDlQ0D/pM5CK1ryKiT4gyVLiw==","shasum":"3f26e13a89947fef813488eb049608bf27541afa","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.1-alpha.2.tgz","fileCount":26,"unpackedSize":34998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOKh9CRA9TVsSAnZWagAAnJ4QAItfuw/YUWM4NWZ4Hq4P\nJxth78YLTVIFV7QcOMkiHtKD6+LpnealE1gDty9dFg8GUkFASdxdWsMrpr+t\nbC7z7EWUC873bbLcuRO+cYFn+WyKSkWfJZQxOLZJhmmwgDpwlZpWNprnUuQh\neiY61H2al/J+lPhtg8arkt5WiP0rzy5unIdSXtBJOnBrTaDZHIc3rcPGqM6I\nfaMJ8xwt1cqPrAhlQS8k6IOtNfjT+T0vpnCWTGZFk5/+nzFXuO4fTM8OuRUc\ni2Z5M1blYDCrupYwUoR4/fJca0GgvI74Ao9lvN1vHqFpylPw662aixlHx7fx\n+CoCF7jc1L/gIStux71lC9YdOdNkK9SyVSlKwUBQmTOrE/KL/AejjYNReaLy\nPJwZnHW6CWfnU6FmTG22jYTxR/SYRBjDOQwH3XoIlI3QLdtN1SQlUejUonpO\njKehsHxv7OKpKtysVBwkpSN1VzKVPPaEuBNI95iSsETWlKMp0U16xLSl8Efi\nLNmBjAOBYPDUR8iaKLhUoWZPobkABOiq3J39QFonh7mfOT6/7AjPiw1rYNSB\nX6M5aiAQ+mbzqjm2xkG3t82uQLoBuCzKzWufbgisCMX+Q62GKBfv3equ3LQJ\n7hyzbfP9d1HBrgduWsqqUjhvJeD93b3ZLfNsa5K99TfNpzzXe3vQRIpwoOo4\nCZo4\r\n=4Nke\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjlpzzqRLL+XmN+6bOjpXaAsJ/Vei6pMLkUJwDSPWIxAIgWgQPxtOC+TDQLKDYCtFmPVUBs0Z56FIIuq+hRII87L4="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.1-alpha.2_1597548669013_0.3953850991742798"},"_hasShrinkwrap":false},"8.0.1-alpha.3":{"name":"@redux-model/vue","version":"8.0.1-alpha.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.1-alpha.3","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.1-alpha.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-92gd3vhAFmK8saTqQl1cmkR+V7b/PCpzSx56JR9deMgYeTRxlLV4mXF3Z7QG6DfLCNZh072hhuTQAIXo90GBSQ==","shasum":"b9a1022647c52e4768a56793916bb65cb36e6ac8","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.1-alpha.3.tgz","fileCount":26,"unpackedSize":34998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOMGCCRA9TVsSAnZWagAAVU0QAI28jdloTL5dKbVb+C5R\nUdFC+gilvRVzcdPV4UiBxo/X6n31lrmx8n9CFuhjlmrQJIXTAAxJ+tqPQ3H7\nE0YTeYh3X51FOLo2q+tZ56bMGSJ30jvQBmXx+4x4LaZgWIm+zPrZh3MMPk/2\nEmFxfI33U2+XFD0sy4J31kESW4hIwsTewq4yCWp7XhmAJ4OzTJBNc32X9KLB\n+QoeBl+EEeCwlXO5izk5F3K+4cOI6QHDdA3ZaW4bbkFQOIMRi0+po63WP5v/\nYyoXXMhhRhYWc+1j31/4wVPhJyPuoosEw75XDexMrRRiimmd46WxuXLAyizr\nYGJybz7BmLU04RBbHLWjJb2a2Jfz1dZQmatWsmMBuTcTcmuAWQk1INg9Y/e9\n9Pkx3UU3yrCFS+sJYcgveeeY9S5OMwgDCNcJfIHDxUdqR3JK/SrnGJPJHqCp\nNYUZMJRETx2UPDTlvLwaSipaRTOPcoknATuqBqVhDsW4EPPHvhRwa5AwG/W1\nEY9oZD43IQUtqocLcfORUKx7bI9MN5xz/9n+e6oKnZvufSg4nA7pq9iTD0Sd\n3RE7Qy3Ntiexpxw7pwVRC9Th4QDpqs7cRsAc5kmg0dyLtz8C5/NIJ8b1XAAY\nfE+TdDPt7OJzXKN6uRP81ZD6gRmJLseahq9rgCzec7EmOt/Wu7wmo5Ld13Ng\nS4i8\r\n=8HPy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTwu1dCE9hgAWcyw+DgdoWB+roa1oWvvrwKJSXgfVtRgIhAIOrjOxrcONrl8ljEdagzKVkLcvkEc6Hvf12Z/XFpRJ1"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.1-alpha.3_1597555074561_0.4364995592070071"},"_hasShrinkwrap":false},"8.0.1-alpha.4":{"name":"@redux-model/vue","version":"8.0.1-alpha.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.1-alpha.4","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.0"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.1-alpha.4","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-byJnckLT0VoqEWD9pPBZWeGwTgi5P11dIDQcJHq+bB+aM8WYEDptbdMXG4Q1FfW8cztwK3CXpUJmv+bcg1/3DA==","shasum":"2db55bf9717b409f89dfd827dd3a71aa9de06e10","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.1-alpha.4.tgz","fileCount":26,"unpackedSize":34998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOM2yCRA9TVsSAnZWagAAVkQP/0oXdv1ujslYv1LDHJZP\nlL/dTRonNtpquQ6vxRrVjpEQINPLTzJ/daiPbo7d7W2R2LXcKfRsVrz3eNas\nHsqoYJ4IolNXYxO8u1kGOw2V3pRFhw0cAHDLQ8kREqygQJRK3dlyMV/elTfj\nhk6O0JWOW7Swo3XTK0NPz8psVR5QUw+RkjFHc8K38zQ8j545SG8VUrTUR4x9\nFUVrbpnyekG0Bt3q1eJTDALguVuSvOQVW2mnFCFdVhJ/CqAyQzJ7r1W0KYWc\nvhdtHo+CzMgMtvkHMw6YtWs8ql76011TzYEEix6ezIXVkkCqFss0Om9Qbw6F\nFPkDm0HYAUlzyLGCprTLZCtfQ85HFyRL7b7ZZBrGLCPSIliVeifQkGVL8BrV\nFAiH7UAyF6JfEKAuuMJcUMUb/Jpsn63mYKbAvUo1iSzPSDd5QAbbKb2M8TPI\nvOM+uZAPrmyWhe7LVezmxFQesKiLd7cZzJ02gHwh/YOmWZjG7HPXoEsjRJjd\nvixtlnrthTVCaCHFv0oA+N1vWTmTnLP5qg2HZUU/yxriob4TKn5/Te2v0off\n+oITRHWkL2D/CiuO4rUOWSc9vMRWIRwlSY9wSat3Pu9DXfVWASvvZDz6kZdY\n/d+6QyzcC/aLuGNKig1VEPediReFteMo1TCaA/CbVj42xHE0dQRcBvHryt3t\nS5WD\r\n=RwWE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJkgMIRgMxVs6F69zyEc6y+juMYATkGtKDd1W44a+U1AiBdMxKn/+peN2NkU0SCI/LJIACtmBrkbmGt8jPgcWIdmQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.1-alpha.4_1597558193620_0.5082906090607686"},"_hasShrinkwrap":false},"8.0.1":{"name":"@redux-model/vue","version":"8.0.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.5"},"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/vue@8.0.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-mo/sZmkS/onYNbvoW/9cKr9z/EqVqlr/2T3LKWMcIxXiPM6/9MuZANKvifTneoOhjwEevMIVb78D0/ei15H/ig==","shasum":"ef64473fa482ddd2ac84c6b61ffc6f134e5bac81","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.1.tgz","fileCount":26,"unpackedSize":35154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOPclCRA9TVsSAnZWagAA7d8P/1Ka6LOgwB6HSfC7dnOO\nU59nqLQXhaSxtS0mAIRRtZUMQ7eklFVqs6Ssp5B3epi1s+Uwnp0ST/BA4cv0\ntd+bIQy0bsdYHhGlzR4Mm9kMBEq+DxcULBS0VDott/FJSIKRaIkO3VN/CMEv\nm3uyAB/P5tjhKGzfU+zk1S0olpY0jt/TLUwQFl8FXOnphUkArTuHkpWOT8wS\nBiUh+0XgCuR5uA3S4rdOqF3z20eFoAwWgo/ZH8EyRzkSilrIrW6Yo69y2dUK\nVJD3Ce/z74lqKozE1u+MvsqIBixA+D+VYdXbIbz1mN/vrmfGiU4vJPW+Jxji\nmkeNTguewL84os+8pQBwMW/Gz5asd0hivvZRwQID3qhUNaLi0HPrUDuZ2hI6\nzq/tHz7BBaUuMZ89CY53BQR8YsULGjTSay0Oln12hl9j09N9VOf9B3sgyfoj\n2GalTLEzfQky516EfVi7UI03A1ugfvOUlfXUusLjToD0a/CVZF0E/f4LS3ge\nv6Ewo3X763hXY7cfnmX5o4Ja8YiOTy431XlJR69K1j/8+syCtJaiC4CD0BC/\nVI2uMUJ9pyr/pqoUlfHO9FKvEr0G7Eaz+0t/NdyTk/t4p9DuAtDHFiI9aH+g\nu+4aKeVAPwkW6hlAnDrX9xQbR9L88ZfklLjIaC3iBTYAbKjxAtbXdFDOgWPM\nFY2F\r\n=sFzF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeYPRJ6Itejfrg79DyARDg9iMmmxqI5rbJcoF2tTLtRAIhALLIX+DyAkUzqjjtOsbIlf2dKejaFqvlVLecBpiy/31/"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.1_1597568805219_0.11920421215060983"},"_hasShrinkwrap":false},"8.0.2":{"name":"@redux-model/vue","version":"8.0.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.0.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.9"},"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/vue@8.0.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-aOSFDygtwFsp3oOccWxHcTtjAXWTlmnpKGfw+08ioMf3RXI8Q6j6d0glQz6MsNGpnqZAaR7oz8N3Z8MQ1WDPeQ==","shasum":"e4a5c6a3c63d33afc2565d59e7876b08b6349e31","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.0.2.tgz","fileCount":26,"unpackedSize":35850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSv8OCRA9TVsSAnZWagAA4Z4P/Roto8lTY6g3O4uQBvbl\nm1EkH5DqAmgaBzG+6QCJv5q7skKZpH9/8ori62IH/YJ+uEbt8cNCeqZADnIk\nMTr3M2jtVF2HVu6gnW/gVXprdHJtWSsC08PtwBU3rKfsBRbq42v5VQAewANc\njwQbS6nwePwIdJ6Cm9p3NAg9QohwtGvxqNjF5zXltMkWOQ+i9h3Cbz9VtTp2\nhuYqtYRBwZZzhUi86f4lICKNLBPDE+/5RWiE/j65E3kg8W1w/+5RUxceSjwy\nZ/7Opl1vfu7bMMeEQEG4j7td98AaQ4Paj/szdfUGxqH0BX+Gi41To6x3mUZO\n+HcSzk2zexJurqhssgbjaW/oWD8VH7N+SQeODiC6pw+rXmXMHZrcDITIqbKt\nxpEi79/Afm6rNaiAD9d6fwtDl7rxR5OfAm6q3nPGMUtdPUsKTQsUcDN2w0AC\nsKQXYZspRiDLNjf8HukB4J/ukH4Xz2u4rKla7gJV0cG4TwirvVN7l+ZAYDQB\nwNWRMjXh8hGOcRtJe2/IYruMYoRea4d4vPF5PUOLRt8uOQ8diP3R9EvfPSeA\nySQwA3n8NxvJ2QeFST5qyVqlcuis7D9vaANquwjxMhPiHdDVigxa+3bCuSvH\na7btAOa3cRfkqSjM7KusLxGVzHfF8Ib9JdKbWZgF+CF8efZDog/pdWCk1SXr\nS55T\r\n=7q0e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEcRV/up9tXMK6X5Ism6nbuuIL0iSA2US7V1KT+krmzCAiEAyS1QdOsWWcst7xdWCCx8otpdiyWzpZQI7W/R/6QDzKw="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.0.2_1598750478173_0.4109544803236329"},"_hasShrinkwrap":false},"8.1.0":{"name":"@redux-model/vue","version":"8.1.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.1.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.9"},"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/vue@8.1.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-6TBmu/tMMSNofFQkMmGbdJ+mQ9Dd8L3MlB3D/oIyE/tdir+Hj/bsrzMsNfd1lMJYtFQnrzo8JZoZKERw9tScMg==","shasum":"c9b784acd89e7932f4bdd03d602676845094e86f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.1.0.tgz","fileCount":26,"unpackedSize":36223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSyqlCRA9TVsSAnZWagAARXoP/2QhZMlLL4WwG9phhaIh\n5dm3jXTFItBtClODUGmoCPg+Bz3ldU/EYdpunb5O0xiyJge/7/os8CVcl8JZ\nX2B0ddX3v7VIR7TRaWQ1pRi/PAtAt8Z5prS/q35wkRJt61L87ndCt38lUDzu\n/8UdKDcz1pFTj7BVMcx0Watnl+XUpbIcDnNhS1XDBRNyk2S0pwLULDQ87QDH\niS9OoytaOQrKUXe9Lh++d/hgXbjVtQEkCvEQAl2blwg8HWXTAAA37iHjD2h/\nwx5j0zcuztnX5uB8QAco+X0O7H+pqE8b4v3uipdT6QhXvrkA/UEq+aFwkIN7\njeJbr0a3XFjL8K6WYTtVnNzK75n78a9q+hyAEB2paA4Rhk5nBKx8VvuzYwwF\nMHFb1TQF4N5Fe7rBF/Dc7HMUSJ/+cX+ytLP2Uv5i8RY6NTzpOEXy+VNAElMq\nIVmO8iYdLnT1wHFdDcLv0i+iYq2jB10rPo4gLGauH0yb7JC2fy3ROpLQkuJw\nYl6/nGlTuXpnNZj0DGI7j0UeGnouHPdP6O+laZz5yk8Gk2WrrB+X5I2T8mv2\n5KuABJR8mcY9nrwSa4RlYwuTvTbPco10pzWdno1qAQO7vRmV4IEGQeHg3Wqr\neDAcmsIlOMwkllkYDxUqt8xIwoAJL++llMZJEXLM1JhheCuXnNgY4nYacO3f\nRbAx\r\n=eybt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpATr8YLz5PODglLcT3V5vcm6NshBkALtCnISJtWh02QIgP2Qk8Fgbkfl1tH+iPCTH0Q5HAi1y6H9YkQtEwXJ4gdk="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.1.0_1598761637287_0.4805073348688069"},"_hasShrinkwrap":false},"8.1.1":{"name":"@redux-model/vue","version":"8.1.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.1.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"0.0.6","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.9"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"81926de20592ca5d149ff9dfed8e0feb3d3a16b9","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/vue@8.1.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-kEMwbZJdP/YLoGLN50aj47FFh2U3gX/4ty+oayu/X2j4ka5enS5Xhj3+Y9oe+x1NE7jQT+UyBPVwi+fq0QdBbQ==","shasum":"e2793e2ce5bc5e3e43270b39bd1a5260b296c3fa","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.1.1.tgz","fileCount":26,"unpackedSize":35685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWxaxCRA9TVsSAnZWagAA+L4P/0b+30nYWJ/79rjbrV4z\nn+a/tDgH+BdeoSr/tzJ/mGl9kHGTUk8DzCKlSOZPMtnxB1/ZgWkh+SrUs+ME\nL4nEIA7KwfDB3jmlJ6zNHLd6NHhbN8Rdn1hkpEg8Xj3YbRYLJoFegqWp9263\n+5l45JLP7CXcIWaifqgAeciDSKXrdb0kRRBt/88AdHMJtxRLx5gZPhLvyU0q\n8Jgo+9W6xoHlVeCKGbMKHET835U8fcMFqcDVgSBUI0XaFoz4H2tJUE8uc4cG\na/ZSU6LYwl/K9JRTnrgXrZBKnWtzeusxoyQyJhbVHONWkYdFkvIr9sp30Nb5\naQONaWnKEPYph+6T4E+l2KyCtzMppOVYsy4O/Ml9JioojjcaU4+3K3wpJWm4\nOXLVbk4lIICUA3jqLQDc22Q3NuYOdoLWxe1CBynAUhz8tRlMb4CQwh5AgkHW\nIwGxgJUpafD9XOocTyXN07K7smSa4cn/sYMitU5SiBs5D6sqhx//JJfbqv6J\n9+GEO5W9D0wpXC9EAZYkR9mD2ziQfhynn+kfprgzpFrxg4ZUg2X25by4iaza\nGSqr8apRNeRpkmtQW5aOO1meQJtGmr5uOqiv3hbBE8x+BC2r/IIitr5hzhpk\nfPLyfej8HhHII1zuXySnH945r8A11sib2d41FuIJrdgMlSbIjDQAOYpOlLSd\nBDBv\r\n=uhTB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXnaA7jLz2AxOVnKPS+YMTUeb+FTF1L4ADY6Jxs1urzQIgWKzUjyZNG/qmpd+33liu9n/cb8MKtGAvuQB3E69aeYM="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.1.1_1599805105235_0.8611543823380348"},"_hasShrinkwrap":false},"8.1.2":{"name":"@redux-model/vue","version":"8.1.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.1.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"0.0.7","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.10"},"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/vue@8.1.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-80KLbv083ar8FoLxMCIDeoXkFGlwtK2MzWLPrTsQ7XuVmckxMHwv26a5O2mEATs9fDyKat9K66PEzkp/zgUwTQ==","shasum":"ef5de2b95a6dfaa3c72c024778d49bc2b6a80a1b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.1.2.tgz","fileCount":26,"unpackedSize":35855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW0nqCRA9TVsSAnZWagAAwNQQAJhRUUDCENP7wOzXeQQn\nnyXJB8mxatvgrmo43Rnk0ukkKbr9RoPsTbH26GzvD8M7wUCdmFFFOcNmNhJQ\n3zoK7SF8rXLKty5KSqw/NuCwYExLoyaQuqeBMj6qWotJN2s3cayD9vHvhlQX\naNbjL44aXA4Ix63EJB7W63d2tV99g1z6pfWe8fn+d2rdA1pi6ZlC6IgQoq1v\nVKnqX5HjNTyTOuVOSpbl/qNgbd+lrSpz46MT+aWbg0qPKSRxohsV7RhxJUSK\n42LhsSJtD5AKmUUyZlbblVjOHa5OzhMP8Q3LtS84xEK82eJ+wb3RBDuPvA+C\nwN5wXRUAqQsNGuPHnQ/GsQoNl4cVtsfqltdSufwEQ1CE3aw0UDBb4feRZHng\nz2UWPp92NRkDTLflo6xD/GCrLCyZZxZsofL72H8tdXMzvB7NOKoCFUPUiDZl\nnYod6XOVeeAQGsp8Z2h+Rt5wuVJeIxhubNil3NUSOow5vAke0a3mYPRjAghA\n3zqRTAHGIsf7F6v864g+0BnA9ZVgFk09eu2FBrrBGacBVtRk41YQb85+TZ2l\nuGOC1PkPNy/L3ct88xFRYwLCaHBy/FhAEkpi/E3mvgPIf1ZXGWwZBKTUCIfX\n042XkqAdYPXoGZmGr2U262x5R4XPP4onkmb4qSqBg+dpQiiqUs8+QLJRkNBf\nU9lq\r\n=uKmO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFieYPiEnZw855mb91pBbNHvjNe6hEEPO7GzOwp3MiyZAiA9cSYsnz6zGKE4+GZHwqwHB861Wdcpz/WnIwVyhMlG5A=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.1.2_1599818217845_0.06563994819936969"},"_hasShrinkwrap":false},"8.1.3":{"name":"@redux-model/vue","version":"8.1.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.1.3","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"0.0.7","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.10"},"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/vue@8.1.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-YmjBEHnI1rOs4qBRtJmel40xfJNhECJs/6W2u8vUMMoVE/7f13VYQnKFusPMj1/oeM6LUpTcOL2bg9hJLb9Saw==","shasum":"b533387044c933be3ccca9b65d475c98693562b4","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.1.3.tgz","fileCount":26,"unpackedSize":36177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW1piCRA9TVsSAnZWagAAV3gP/iuPC8MC4qT81ZqhDt9z\nvqlTzh8mNfPggH8AFzOR46+3m2bYuABJ1RPhd2yro7POThwDAN6AEDAorOuf\nu9uwl2hOBJU+tN2G3cvRllcFRpGJMhOJjcPW7XN/I1SJlaEZTx1EPHJcRdBU\nTem+1uzDNBxi8nYfi408eAoVjzrkTKT45A+uWlU4Pc4JUL/umJtRhhN63Yu/\nUPi3n8ZZR0OWHPOqYrYHFv1sGxyKago1hplm0dqiSJuuzKt2Q/L6gQniilZo\nBcvbmmszfIiKyHDJVfGaRYLH5xp1BWKG7ndroUGZ5lG4bpKyHOvcReYF2j+0\nx3u5vcUlt9Xp8Z/KHOjNu6P7sx0AQRoAZB/AeVhUcYpQuqdDgqUCtTlM7sZ7\nQKVDzUsYV20AnlI1/rpe+sCaWJkBMmylvdbffVT3ezhO2wrEM7pBg/WyY4wD\ndXr8JGmHXAYBvhZsd9t6Fq3Y/45SRmOuCJjDYxMLQT3+9HnL83n7M+ghTtzY\nEPZRu4QDlg/c4D0helo1/Zai5VPkOJmilesmEF2QgSfwJmDq9rOein5cQ2T2\nQRMcZuZvY1M6qk+uAFAup5YQYUxqGc/lysm+jEXO4vBC5ttPpOBKzjgcWCBQ\nPj+cTAfmPbUQF3+X5yxljeY2EYlrVONnXBHovsx6q5ya4PxN0unWMkODhyCf\nwiem\r\n=XvoY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu6gvh9EhLBKfa9UeJf7pVFNxXdKmYTeyEXCClopWjhAIhAPNYSTtAEsfivAAcnJJ7dQ8HGU1Ailzpayrh/PlCa7JO"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.1.3_1599822434294_0.6324256831956774"},"_hasShrinkwrap":false},"8.2.0":{"name":"@redux-model/vue","version":"8.2.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0-rc.10"},"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/vue@8.2.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-EPyu2E2kcTU5wEMBQuywhgYU1+A6TL7jUikfvIRkcYh9FJrXhPOTyxpARag+0Jp+wVJYjBVIagJMghRulN5uEg==","shasum":"f455875e6b388098b58ba29ebabb1dde2fe73f62","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.2.0.tgz","fileCount":26,"unpackedSize":36253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYi7pCRA9TVsSAnZWagAA38YP/ixLZPb0UN4QdzGifIST\n/3bVn/jlxD/9zDZsOx9IWG49ob4JbglhYoxKHagmGbb+64xTyx4j32k8Y9PD\nox8xgPze140ZcicllRnTRkeqRJhmlT9PGzL/IM783bpmc1uRGDYDeh0D/+jc\nzwUq0els8yhyTf7o3kSnHJkGq/hP25PovzGcDmliDBsKo5gkY2CiQWoTKpXL\nRp92hhFWWAt/hJilelHUCwWFDDxyuSUWJBDrRbXZFykI85e84aXUGCPh0qVi\nsfajZDW2k54oRROnT8v21VvXbKwVYeEgz9KV8FxXUfWDI0xQL23qEGFZjX64\nV5NXXpBsarBk+8RIsmhd9y75CaIdEDLuZBWzfC3B4gm8Dkh3EW2Qu7FC4SKZ\n3pSmwqVcFooinL/9/wFMliL+QWSDTVyPUtrb/SCCJm5b2xO4Hnfq0rts2kyC\nOfN2cGzAjCEVWIJskwJYF9LNEvjC6A6pC9ZRWhk9otLg6pohb+9oL9+Js0du\n6qLgCEyqMGz74O/AdxAmj3Da2aAs/+MAwBWDc2lAaTM4h07W+zjsLY1wlr00\nJBfkptZC4LE4b0xilb5zceV/KOdwU0XPkTjBkAmontmW6l3tusrMXNHHJDwc\nI+Nhwlem6neRLJVEkL9fFvMZnVNe1FdpDI7piAwC+Vyq28EoFThoAOO3Jd5z\nGU4s\r\n=lSt/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRaskYEv0N6W/IpW9gRBaVTbkl8QG4rPFGjmdWeywSsgIgfYU6FLlD1P6pH1uDhYMtglEoFbqvyAYCzskHsQcwVKQ="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.2.0_1600270057465_0.08020324221905417"},"_hasShrinkwrap":false},"8.2.1":{"name":"@redux-model/vue","version":"8.2.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@8.2.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-9moYmFpUKwbAz9aWMHlcIm58//bWzeRr7cO+rMKZe/WRfjUj0isZG45NH+1HS7wwv0sgdaU7iiGyIYEhavgZ9g==","shasum":"1ec1969ead15321342913e6f96fb86b8cbc44a0b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.2.1.tgz","fileCount":26,"unpackedSize":35316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa2n5CRA9TVsSAnZWagAAdZkP/0ZYrPpJPRUqgJ9n9R7X\nhtq71ADoBQCjjGHI7EpvFYBWt4eDk6xserklijUwEyALxFsFcC2EEfrkaoHw\n9nRk2MzRYWxu3K0t/mdVSYVitjpBtsgZ//SPMs3zcYzPChd1t94YzA/b3N4C\nOFCD7703u5mL7o9fqvRFYaAOzB6FBIV/SGTqaW/ASQtd689SX9AemG833moV\nnCzJdnYWWxnyqSjxEKiynZJyDQ/Y33/go0D6A5ln2uRD7sX7aqRzkzY0pBXw\nhYq0TAcvpDiNxbWyLeCvpY2U9svKj27TUa56xYE+qh6S8z3thMRQDGKON0qP\n5pTzxGbu0gfwrUbL1RNY7BfKX/r0Tr0SVYJ18jrTI6gUO2+FndyFqKDJq752\ni98L+KwnFoXRnE+70YCMA18JXTVB662Vnz+zQtdnSaEGAGCcovWh9KCuu+0/\nc80/YgjD+ZcxEHJX9Uz2BF+ydxiM3TOssO2pVA5OktU/j9PCcoZSBKeKVlCz\nMvuc+dMANOICZ8cEjHuhU1NR9LTPetyAJapAxxLEEUB86Fl59kPBDZT4eqhw\ne+YTddsdZlgfYETjRajCsHaMH+RK0HvAzvF/obec50hPCsWeP6m2t20Q2tJB\nPm0WSOjeUVaiQqEvJ4FCn0E+nBSN+Yy2+GRA6mG/3r7c7D8l9HMIf3KbcBgm\nZXC2\r\n=Mcjn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYs3E+nkc1l4ldcl8c4+pPBxCodFGBCAONl8WepoBxhwIgY1LfiURuPb+ipa8WQRswzWnVEBjI0YdM+Faw2C8bEJg="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.2.1_1600874999719_0.5455730719697629"},"_hasShrinkwrap":false},"8.2.2-alpha.0":{"name":"@redux-model/vue","version":"8.2.2-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.2-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@8.2.2-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-lCLrAYZJBKPLtO9RoVaT7HwKvWpePpHxJfPNiAx0gSvPyfcvgQFVBoh5DXd9MfY4kF+m8Bp+Hue/Lh7wEyh9oQ==","shasum":"20b5508ff1f53be944b4c1b32af951ede6abba8c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.2.2-alpha.0.tgz","fileCount":26,"unpackedSize":39549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfccWECRA9TVsSAnZWagAAOIcP/3tlU6voHjXd8R47C9Rz\no/bw4upkwGxYrHXHTgNMLO0v6ZUmH5PWHguFumBkGqzSzsCS/Qe0tHr0frWO\nI++tjJJ9t5j1+PGwubSx2NSXxRaEKEeYUAEwIJv9GsDqiHVdIkVDN/VqxtPR\n1VgtDeqxhLMMFCSk3qQeXCBgGP9ccX0V+qoWGVRwkT26HABK1pg5IY8CRoNf\niQghewXUokkO+2YbYaPBFbbHVR29wenVXQvhME3qJ8bM4p7hXaxZYsz/cH3E\nQmhJzOsLQM4sYavaXHs6Fu2iCjllWXRPsJr/d57tfB6ObLBkZjklfIqbrjgu\nuTBE/GXGJBvAm4PgAKpmOzSFdeoON5V+WTNn0dRDbxOW9kAdYW1erUjElkQF\nl3IxjgelA5YCAF+VvnGVlPjptW+IQJn08Uil8ZzaJZEwJmr14dLq24ZPthuS\nffjJre0PC6uecUw4TQJl8t8mQLA6jCq6TOfOQuVcV15z1aWrvxV4s8e3iNVw\n9vG5wdR7CsJeKTkrZoetGH0pXp/OgYqtpwDq3zlhWgpYcUiTdWtYXhLhb+3z\nf2Hl8Ma9L+sFIjTT1EaxAXzpFWX1c+Zwez0cTwiDYynNBWbnWoczi95F7exD\nQfnve0sg3hOhGtfPdYAulDwst58MyesS+Dw8NMmDXUapn+tN9RPQoxQFRWCc\n0U5+\r\n=nFPU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjUUYPLnprfwtzPtI+jQpv8OoZu0VbNjhQN2IBn7qn7QIgX72rYeelD5dmEuXdY+GNrdJZAZFcB3+FcqiPkEfPIso="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.2.2-alpha.0_1601291652013_0.7993328576714327"},"_hasShrinkwrap":false},"8.2.2-alpha.1":{"name":"@redux-model/vue","version":"8.2.2-alpha.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.2-alpha.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@8.2.2-alpha.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ud+iwlGeOCokG/tqaibDewnRkwbxD0M1T+fVG1+y8Tk3bYH0hVoHiXmUB4w9WSa6Mwot+n6OyuWRRy3yw84kpQ==","shasum":"cfdd17629cf81b7ceeda43ee93b917d8cdc76e5b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.2.2-alpha.1.tgz","fileCount":26,"unpackedSize":39549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcdqOCRA9TVsSAnZWagAAzxcQAJ9CEyXG3vqd1QHxUr1X\nwmL+Dtu8EuTGAgClTFzldEZcsNaxt7VcrEjdxV7mvxiOIN8gbBdLrFbCZAZ6\nieV/KA8buo6kH6Yapa0ivWsLpbZtjBevO1CjQ7p/sHgV/5B8amhWS0PAp+RC\nkTCBZulblW8mnWOEGGmgk/BZvZqWbqUbpin7OQHj40HmApOknkwTVVYywzeZ\nED8j47f9LBzOmuKGIqOVEov1MgT33SiX/9QCNt17FrXlf+LTGeJF041+z1Ei\nNKiDRrAdNat+N5R4sYQWecvRaT8mJH0TnQdOCO+YOatYtN9cIziHDOpUhJOn\nNKzD2L0RDJq7TKOx8ngYXSijU36i1NXhqduFHzTC7rSsgX0kt5uMhLF5KxYn\nni6ZscwfMwE/1t3s/lgzhshTpzUaBM6GIhUH2tkuzRWqXpwX9xbuG60yzsZ/\nEvumoDqchIRlAZxyT2YT0x/UNlSVPB7Z1Sl3sxRYnylGt5+9f7Wsw875eixz\nZRsauuZwNwZowVmh/hEuCShag2R1UXkhxCc43ILd43I7xQBQbqd1jQObigre\n+AceGKfUtAttGHP1gHVucqU5EOw2N9USFZHoRYkPIzNErzSayleNOvLmK+2H\n8+jLOwmEuUXhvgDRBnJJ3u7O4SGheF112Qog7tUhDHso6Or6k+CEB+jwH25B\n2IVq\r\n=uziE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRhNZ8UHTCMpxG/kggUzR53SK2aSUnmeLZzauygv3IGAiAgv+wKOmecSG4Vv2i3IZeS4L4J0smg85A+EGA9nHDBOQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.2.2-alpha.1_1601297037655_0.9906314972165946"},"_hasShrinkwrap":false},"8.2.2-alpha.2":{"name":"@redux-model/vue","version":"8.2.2-alpha.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.2-alpha.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@8.2.2-alpha.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ZxaqJptYwXJGCDnXrS6YW8PX108uxnYRAlljhabF+X9QHyBU8MZkN9XZ06tLtqJ03LpNyC6dT4V2xsGEqMYTaw==","shasum":"2f845c783e77c2d60a382eac64d4214d14bc1f78","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.2.2-alpha.2.tgz","fileCount":48,"unpackedSize":62927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcv32CRA9TVsSAnZWagAA52kP/2vDpTnhQQSBdbdQyYju\nbESAobrt4oaHUFphZmane3rsv7bXGVyHfYSPKGDFuDQSLvPETyNZrz/gCrbh\nCQhqy4Jrbw7i/cPyw7nzN1J6OvS0zYGwId03TSS/k3+4NOKR6i71bBNetj2z\nz2Gbaov+Tu7Hlu08BzfRAaovoCaBFtyGOUwwyi+TULHyecxWPvbKc7GvHqRR\n1ivhGd2+AKxaYaZeiDuZroMdBug8s27p3Lbls77ryXHTlAR0aygFXMFHhzdV\niLYrvY9QlJL49dQBZb0oLshIAkeMTUE4T2xEj1eaO2/edV5rukgkA6cAIaY5\nJD39lnuebgRRRV8jshy9auG+MZcF9HuMBV5OG8F9Wy1aHjWA6QI+VboOvnwK\nsxpJ6lXPLeLgpQP6fo/3FQWie1JkysbUMprv5m4yFyZQfKIsQME5R9NxcVoj\n89vmlZJC7uXBvJVk8QqAlZMhSqVMDmK6+pCI8PEoyYNo7z7ns9P4bJ4v9DL5\n0D/lERf2LDInWsgwY5Lr6MpO4pnOQIix9tWKf9/CA5Lv5BaKyASAfLt97zya\nc7vpmOfQsGiOUQB/SdhYzNwp/TbZiYq4znTFo7JgGwJ+EK1xP/X9X5jOy0wV\nedeZC0vkc4iBhve3864AQzVXmu4YqPQWjWgLv0fq0TGjtBP28J6BiSOVElqg\n3QP9\r\n=+wPt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFeL9K/KfbvkERn5v6SzbmrpjBA2qaiWYGSKx1KflSGaAiBHJnPrWPovweMP7FErlP0Rmlww4iUavztBhBj3kWcaHw=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.2.2-alpha.2_1601371637656_0.6909881361356451"},"_hasShrinkwrap":false},"8.2.2":{"name":"@redux-model/vue","version":"8.2.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"redux":"^4.0.0","vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@8.2.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ni1bQpRR8ZauvqGHI7Cjalm8ELxKgrehiSj5fNYBgL7bLjOJjgljBE5BA0fzQqHWQAKcgGbgQtHU6ixo78JJPA==","shasum":"6002da51fb15a8d3fd49a1b9e8fcbcd439ee1264","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.2.2.tgz","fileCount":48,"unpackedSize":63230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcwNHCRA9TVsSAnZWagAAaS8P/i1SRslUisI/RnFmMeeU\nkOSGU/xDCNgYePuFZJ9JxVxiIE3qdDzOOxBFSjgFZVfXpnUjAskgn3YXD034\n4xTUkCLGgb94x/33LDU2uLxtsevfoKQGe3HDRHb2zFX3qM+bpnJN3wdnV0cD\nAmDi7E/DWNvaux8GMvbzM1x3rluvqlruQ4/XZ8g+AtNDekyFbBozLv29b/fn\n3Mm9hmCsfliz7rCxBiKSMS5KqHIuIb5HZZxyo980qAimgXl01n1eNNqYGrEB\n9qrj7emRPADdZdyQ2KBJnsR0+5Ey1TbzSkTG7QBTRssF81Wk+Nr5pK+GPiee\n4A+LupyQfRD0O6GW6/Q6ErSaCe7YyJtS0x3prUcZe1u8uMbqoQC6ie5rzOSd\nMr3r9gYpoVJI2yP4PlC847KAW4sLLjBBcPDTaNTU+AVr9TTpiuLdEQp7HIe9\nf2YW7YnM4Gg/f2d0uoRQme7A5XawAVkM44Ajf0Txl06tSsHVlL3kaUnsR01I\nQ8hBmHOfoArADqJYP4IZvLPPrVD9ZKdmoI3Eb9oNCiyyI2d27RWDA23nCCTw\nGsttFmMIH/ctJO9P/azSPNU5Z05nbyhD9dUmrJxC5z8EKAhie5Wb2uudT2fk\nTAFb0HJ1RivmSYNqbF7yC21ZHS2NrceP+rMRKpSQgWcLaI29+pHLTmeoGxD5\nBRUz\r\n=xB27\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBOwZM8OmBcn6lNGwTcPSyter+vLvzSkX80hBiSJlI2lAiALpkVkHD0axq6MQd0NmGF9smikpY9U3Idno78IoCo9KA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.2.2_1601372998649_0.5290779860741555"},"_hasShrinkwrap":false},"8.3.0-alpha.0":{"name":"@redux-model/vue","version":"8.3.0-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"8.2.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"df331bddfa50f133e583e7b39c8ec95a40b03a74","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/vue@8.3.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-rYc5cCA5j7SbYEVldKYeLlY0sUMz5TZlVr0Iahcsd92/AMG/dYfu5xdBkJieNoZB87I5qxHmM9wIC0tp3A/kcg==","shasum":"108f62c06530eab92cc27e403db7cc7d968c9c14","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-8.3.0-alpha.0.tgz","fileCount":48,"unpackedSize":63512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc/3dCRA9TVsSAnZWagAAt24P/0sHeuTiFc8vn6oR7L+u\napuER9jZMgV3meV4ZKuiBsmtHEvx3fsUSACflbi4vQsmYCEMdV/4x8fzcifc\neaK5u22zYp2YQWDtRlfhpHt4D6amsuU7sn6Fl7dSueXhjnbYM6+ZQK3x0JhI\nWN9yzZ5IuIk5o1yhSRLRSpaeMBpZLt5ChEPkDlHrB10BICVANXMO5BajQ+RG\nlCpt0jA5VILo3sIAKZNUfwpZK+TvdR5dKU5GuMAiLbfZwun4p9DqTH4s50Uw\nA9y8O5gafQXAB9dg6A1pvf2XsjUC/wSqipmugDJA/o1gJ+8HAEyPN1pq5vPK\neA9XcApuFPO22fXkgoZ3CQdZMsc+/08+BnK9ZbHHnkoHrcdDdCnwsGV7f9iT\n3Ld07P0Kx9xmEK6/CvlpSELUYFxeNeDo557q6PGNpIyJyBsZHmx/Nyzx9U/Q\nqoSi+SLeuWHenjSZyNhpTzqFkxVG9tPdNshI/V2qBWi1Zzvz69RpboXQIAlB\nWDey3FVc4fdCHJCZ6Zv/lLchUF+5tsY4KJ7XCHugguBXd05odj6JsK057/lV\nkREnrJXtASriZbk9rH3pslcwnyBe/KeVIwp9LtvK0X+IJJLMATzlVi0jrBPq\nbBoAiPpu1zLksKoRD+zWd5FAdmPzyCToYyo34gcliVVrnr1vaWm6ETN14p7F\n58yn\r\n=dBzl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQMTugKTvEYb2KW0HbXbmnpjWVqPxk3Q+Rq1trfxqVKAiACAudX4/0N6VdxhK2cp8THDoOSsw7ku9kmSAEKEHlRvA=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_8.3.0-alpha.0_1601437149202_0.8483834386221378"},"_hasShrinkwrap":false},"9.0.0-alpha.0":{"name":"@redux-model/vue","version":"9.0.0-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0-alpha.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-IS/YaVzSW9z54Ixr8iy/Ek5FmepL4eA4XGRmT8GB7mFAQ3KsP/PYl88WeNZzSYspVRCksvYM7OoIRnSFAEqPTA==","shasum":"93db18a93087d7a415b65e65d48239bd67327ae2","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0-alpha.0.tgz","fileCount":48,"unpackedSize":63329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdCqACRA9TVsSAnZWagAANw8P/jLngSxEN5tfluLqvISx\nc1fBK+E+IlSphmt95GZFQS1Fc8Di9YUHqIqJEfn3ZMy6nRDCav4ABYF3OrKc\n4SPs3Sds6M8caEgPDDqjknfbc5DFQb0uLkQ3G4J9z2CN+QpC6TYUn+D9YT66\nyYeTaGM/zzvPHHfnA0S5vTiVKLrXnqLJWGENmOuFDFjvneA8GmPlcDDr9Rco\nOS/1lcTeocBqrO8lvCEX20Lc8qprxx78ZEpsOHaB07ej7vmkvvOshSQ2Hfz0\ng9wVk80Dz4Aqu5koEAkRNfrIlJedumKXmM05+Xzq1iL8FdF9illlpKH+qd5f\nXDMkcHKL8z7KFPcrVFteq6m9F0//mFiQOZORDcpJ1VG+wfOvLab6FBorWKbw\nxsgdf0wuh2F6pcfZWYAzH8P9lRh9YIR0rh1iCN6z2bwW6XSV/jsCoA6C9PMa\nI/Dhc+NCn1NpCveRiOUgZ9sq+KB930FKE5nKqFWtkjo4aijjL/rwp+lt6/mp\n2Ar0zsUsHaUEh+dSFFJd6Y09lVW4bgRe/4GujFcHoZC53vV2sJjQkAt+nAXF\nyz29isYwf8WWYSHYiB9S7yoaE5plFcM/9A8VeYWz8YzkvUwyDIAPYQIWSgiY\nNUACPkIg+4N14T50l6jeFs+txV2DbGA1L92LWmKlInFGV1F8AG53/3tCRxay\nxmfV\r\n=ea88\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHjJjFVRFHKxDNbE5aRvN2oBKreZ9bwVpPKO0FWQgdr7AiEArp7c9ccp1If/vc9B6l8CgvlR7RsHKzM7X6ZW045s92s="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0-alpha.0_1601448576301_0.18346328746075247"},"_hasShrinkwrap":false},"9.0.0-alpha.1":{"name":"@redux-model/vue","version":"9.0.0-alpha.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0-alpha.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0-alpha.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-g9TZXByz59nsCJygMPFMso7ZIjabPpqUQQ0Zp6p3KEDTQ18APwSOXCUpt0u6TU9FS8NjsCT0/ryhOIT/kMfP/g==","shasum":"d3a6da27d06aa449af8e355c1cbccdf2c3438fa2","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0-alpha.1.tgz","fileCount":48,"unpackedSize":63596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdGWICRA9TVsSAnZWagAAW8EP/jNrPUc/G2NcxMvOXLAX\nfMXBjILsDen2+2cnl2pZCvZweQI24rbPrTyVDCEbZM5c1lJgS69ZtBXdBpil\nFf6pxUa12urWY1mkuQiSzBYkaTvjiQhSG6F7qElGgBzWs4sTLbVAdZFlz3Pu\n6yY42HyTWKOqRxIFXMYtuQwDGjUuYvgIPY1f1r5Z0YQgODHuxX6EoaOqpQUH\njRimtyhM7bn0R9+P9FDsCGh6bD3csPNdnrlf2ftghFVjzNTJKxi4jbDyu2Vo\nFCRPaJSJ44IDvxvmKnVdMU60gO+ftwvwRsVxFZE3KE7yA+23i6+p1Osk5TM8\nIoBQ4mWWKJA3gX0QVuV0fWce47ty67AEXH/0jDSJPSU0O0uRO4qSKMNnYa0S\nLt2ElKFOA4Mzu/4g3JNuL3hVQ5Zgbsc20x9cHAmLF4SDJxjWFgrbzkR/Y24w\n3uhQHUDe4owZAwKK4hbzGzWA7Q4KLps/RubJVsQi8OGUVeEX3UEAWGqYvXj3\nKtbgf06xmeQbpzLgHUejKUr8Av35fl69qsLZsA6symTKuiFgbOpYlBOfAAc0\nFJxIjexr+i3rQtNMJYJhgI2k6PNMhmrRu0VlMkG9YMpaRpVTPaBLuwaFkEUP\nIwmdbl40ILISGMseP5mhi8oeYqXx1/Q496TGrXb+V7zsR3V4f3ArHMPzttFl\nQ9UM\r\n=SEDG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPTwfACIrbuXpUXy3bk0o1cJLZtLB8T5WBiizdsu+KlgIgOb2g48EviXUTOqOQRVCWWtYUDvBhUYt5/L9Im/zgrBw="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0-alpha.1_1601463688446_0.6527935169119508"},"_hasShrinkwrap":false},"9.0.0-alpha.2":{"name":"@redux-model/vue","version":"9.0.0-alpha.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0-alpha.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0-alpha.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ixc+PNYKjA2Pnu7g2NL70/vkW7ogrNbeDyeBi2l56ACtoeDQKA9JS261y4gCp8XADbKw6zTlteeam/79IO9mqQ==","shasum":"347fba45260bb7289e1e06dea760f018234e5b8e","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0-alpha.2.tgz","fileCount":48,"unpackedSize":63575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff99hCRA9TVsSAnZWagAAVFgP/je85i0kjL3+F0pPKcqn\nIK8Z+ecZhR1PuCmE1XYqsmyt1uG81C4Iu6/TxNF4QZXJLdi1y+kxZpBwVPFT\nXAjSxnNP3Dl3OE1yfUG412FkUWbODazyU9VLWgcGxVRuD3K4gOyqifjBz+Tm\nwHNIYG7tarXE0+7OZgTj9Vjoc28ekpQkuwHRp+hcch8c/LXUUQscChlzZWpJ\nGzyeJX7YPHWYJw+KSZ2jnpHm/NrSNTZxlszumu2mR8uPb0ge7VIqNnbIQqCZ\nO6ls04KgWye0SlGpRaTfomNMIIy8PdbbwhLBioknsRpn1H1sPl78R/gdjVEf\nFF6xqJOTSNpYC+WUny52VB19T1wBguYLaMyeEBWsskP9mpw3ULVfe2RP4V6P\nlT6KT3QF9TQtp3rSK85qQpMG3E61ChK7qjCY55mPKw/JbKgWJD8d9MDJIxpw\nj77TwVclKB48nT7TMwO/IWagSg2JVhUicvMpPyVMKneRQhplFilkt008HDSV\nrMjtV6A3Lz3WHjoZo26l6gKkJ+oM9aUkMUxN/Kb4Zit44mByMWB5qHkN9tmn\nHOZxtsLQ43zIffYtdThnpghn8DEiDyRq/4CHD6VCi84jGqXz8Y9v4K/JdBsc\nioVyh+4Q0ls//Zu2eBFj89JDumkPzWkEC5nPAfcHIinBBhwmkVXrdKyN+AGQ\n0dnr\r\n=yZY8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNFeaAk7sM1YwXk2o3JWmeESCOmUjeQ9RC7mpElXeMwAiBByi/dSx/xzBauDatnRl4K0le6UCe5CEcDfyGedgxCxg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0-alpha.2_1602215777373_0.8930987260750707"},"_hasShrinkwrap":false},"9.0.0-alpha.3":{"name":"@redux-model/vue","version":"9.0.0-alpha.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0-alpha.3","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.1"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0-alpha.3","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-rCC+VlQ8bJNpPgt84UzPpjnj204IzYzdswhutDxMDZiXn33FjJMiUdEtUgIdasVVMndfoTBX4OKE2BXd5UBjbA==","shasum":"ba9d9281776381d478bd39f7fc611037e115cf6f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0-alpha.3.tgz","fileCount":48,"unpackedSize":63765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff/cTCRA9TVsSAnZWagAAfSQP/j+sFMBvgUVFhKvWZ77Z\nMkA3875aa6ATsDT/ErhPq/9L5fIcmYTVXmBBJqgjkIA0Dfn4LyWHs9PVLmlJ\nyfAyvdyAbI4u6tG3q+VaPxfDHIBTrf8bU9WqdfCb/A4lu5kNUZ0Nh9xmDISg\ndJ+auWRwfJDFu453dpD1wiKoyA1e6D5W3DjsvkpM+AnHfVdMhSX0hN+4WZbi\nUVWh9z2hTG69RLuVTioM5WoX1YA+Oajk8nAGL9pUf7LTNkGYCkNBITBUC+ZM\ncK+nLjYd0msE0ea7ZTln7yruQOlXDoOEMYw9NAdF2Oh3gOdnnMgpXqCEmUjw\n8M6qRIv1iZikoXUwaCqVL1cMxGwIg/JMYAQvUMYh5SNgbCyHLqWc5BRYRMLw\nBEzgsqOZd+iE/1viiaTlLF6xFB/I4XQ9svEGqE4YjgwZ9t/l0/okF3EdT+B5\n2WPQAYVfg5GLkvy5DMfH49AENCVm8XPDYAc7AEjfKEbdeWIasj0lmR8rck9g\n04CgOxLcrV13kQn3212UaPrgs7QUtBfROzMNQUfw8DfmgkfZrBU3I1kUg5vr\nupaEhIRZsHCzEIXQcfzvG25jQrwkkH6JFFKUxzTByYGNOUfHrhaTCxs3aDzG\nb/7lVNGEz9DhXFc/NsOm8Z9VMVIEMz3rccc++/8We07Tbd+fZgApEbBPFhkB\nc0BN\r\n=zgsY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBGWPdtOM1fkC0smQpDNwx/GPi/Sq/8U8EXfFIqohL2rAiBStJhvhSYRzZyGn8phDrrFSdvJt6R1EVJ03CORBfPYlQ=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0-alpha.3_1602221842983_0.9131752778596214"},"_hasShrinkwrap":false},"9.0.0-alpha.4":{"name":"@redux-model/vue","version":"9.0.0-alpha.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0-alpha.4","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.2"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0-alpha.4","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-8cxHmlH2pvIKOZAZ+exKgO+YxpPc7AvifGfPvHsewltmyAsl+0pSfTdC13a9BRz54ywvfM46telxReCDMaYNvA==","shasum":"14fd92e01da999d373c2f4364dafc7104197395f","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0-alpha.4.tgz","fileCount":48,"unpackedSize":64010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgDqfCRA9TVsSAnZWagAAm/UP/1yF2+3Pw5gg3WcV5/43\ni+uAvmUuHjcnGPT/4DPuqJF7B8+/xo+ZxeMOMrSiwJVyxn0e0nzSG1bVsj15\nZ68CeKh5Hm9XPWSU2LX8mRl4MB6rV9Zo7Wz89EJ9b5778mp6SopfA4FkT7T3\nNwFuBW8Pm+kdhzIjCiwugqdvyjy4CCvhW205LbL0S4WZhTrH6+9T4AhoZPF9\n7ge0M62nY33luHltWm+eVo7msBTu5l/AUpleqMWHiP7tgSnxl+n5wFtCjlrh\nRChUklE4mkCEcO3rd629Y2+49BC0iwcVMT90Jp4SoiEa7stDrxrATNYnUjF8\nk0gDo7fE/7WffjIzFoZL/RDCAzh9Q9kW1i7aAiPcSswXhgQR99AEBxD6S2C2\nroLXu01I3ZtursL+v6jjm/4t2+tHW+qGcyyLSrdsSRDztt6Bs1JhRiLT5RL1\nynoJSZlkFCs3yhhgSIWhajBzRT7CFgPBgvJHrzUKKmdt5VB8JC0q17lBCS7z\nuye6+/mqzGgn2r8VkUQobidFzGpd0rLqIh1F6eqL2Nr8Am3aAOQ6cBBlDlme\nUq+iCdbvYYZV31FAAQEF1ZmglctVNitWE2CsVnLmySQ47fFkpR9TI6Hb1SZ5\nMXlf4SfSphPyNcBA2x0D8GZtbV4H82Pi/PlKTZlXg2aig4Kt6a6Z674ByymV\n3DeK\r\n=W5jH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXe1dtA9ai/vG8N+5cPOiTdPZ0doO6AET6YkILvoINaAIhAK/CCEDgFTJEhRdncDOw51re05sjYRJH1DqP25Q74d8k"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0-alpha.4_1602239135415_0.8688486935688255"},"_hasShrinkwrap":false},"9.0.0-alpha.5":{"name":"@redux-model/vue","version":"9.0.0-alpha.5","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0-alpha.5","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.2"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0-alpha.5","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-YoMG9HbDsAftdMKnNYTJ4uFwSK3nKyLvO+6UOteyCjOhUsaSwC0CrqShdrkMgBFqIW8DC0Cl9F84BlCOboh+uA==","shasum":"c665e3b24e78f23d2c669b837f98517c971641ed","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0-alpha.5.tgz","fileCount":48,"unpackedSize":65081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgl/FCRA9TVsSAnZWagAAFIkP/jF9o1v4PnELhDhMSZlX\nznU6YFydJgy2BiPq3AP51xJEfkMoXQEol3yt3OGRnjQE7NDTT/eKvPT2fWTu\nBqmf7pJktKERFPPBIK/7CJrMNhj3l7jVScgrtHB4DSWZWcYQbmUSpa1xSiFc\nzNoqByLZO4I2Shaglo10arUBo/FWSy2PV7wF77GiZ73iRdQiCL6yuiofC3p4\neTd1uS651+f9C8gcPnO8ttSjvF4Ibz2Feg29CiMJQiAOSrptDNxMs7KPG3xi\nlQOAXRdznAIUiRw+Lx6PCcO+q5JqXVxG0tr55Ap6RVnGiD5B1NfpCR+4hkTz\np1EdvWCzA0bGrcjj56VlUuvM2V4AhFSPB/57tgoXstUDv0uRzuHzmg4nht8a\nFeWTmk8R7TKBLRCKiz/GmH6FCCOkzkO14EXp01clwe5KqZ7acp7Te3EzE3S6\nBoC5hpd2PIQUDvvvjMc49GmOnxLwwpq/bNXSVW0wDUTxjMg6OYhSNxXXVu68\nC9E7EppEac6o1kVSKCKMQzifZMRCdwiObzPDO5eZtYRp4l44n3XOibr/9SEU\noP3Fz+nMP4bxBTI89n/StTOTKJLllkS+f0tvOgIRsfHfwRSGf7nvmRy/3SY2\nUFeXY1trKGV0E6Ga4cqj2ALpaPIqrXdkYMj02FcyU7sxwHAMho1tgZqnkxjD\nRXL6\r\n=KxVE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQTYvVNKsIQF9NZBCP8LdPOz7xwPVH7Nqynwfoig27vAIgM7e+hEhw4zw9YeYJEU9n+7cZGnNui5RbwunRkE1GaqU="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0-alpha.5_1602379717203_0.18331531645667787"},"_hasShrinkwrap":false},"9.0.0":{"name":"@redux-model/vue","version":"9.0.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.0","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-QyDa3vums2YEIMaudGz0vo5OzaBM3dgiVu16txUpn8LsI9i5WCBwv4Xje4UbH45JflN8Lr0V+PsVHFS3hAVy8g==","shasum":"b09ec76302eea8c1c24d436da3cb7343847233a5","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.0.tgz","fileCount":48,"unpackedSize":65208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkF6pCRA9TVsSAnZWagAAuuEP/js9t+hQVV5BUG62VnlL\nH64H8aOtY1fjmHd5L/Zl4j9hh2qHBbYhbMpePhpQSLIhgQFH/T1+REdPvS/A\n0T+D/vsCF8bNT5IT8a4v15xbuJuCzCar1efYI6GEoJsKAJJHGCJoLyXHaNfo\n4CXZP5VJJug9R4LCdjJor7Qj5HoAUj+Q/D2w1Yawl0iLDpQZD60biNxUkgCe\nIxW9zyskusfJThafbcjr7ipu7tMNtCqEGdmlUcFYOHOQMfu7wI5YlE8itum7\nn/TDS0+XyY8c8965qAw6SvEsZWwo1C7uK+BiDbIsx2lkAIX9jMY+ASRZFk+m\nGgpM9d/63GyxXFMxGQt9MN7IgMEZYs4dKukR1UfdF4MJEYI9BXMTnht84Qzu\nBdl2m2xJUkoBsFy6GWdVI5CVhxzEQIWzXWadHnMnp1BtKyfDesEP1p5GdHBT\ngeBEf2rX6E25AEXjV4ovpVxd4gbAwjrB+xpXXz0Df2uvS8yIWsXYaToRRG4i\nABGWeiA1JOMgL+59dxrYVGj62Me+eg/YDsMjCAvz9d6RCs3e+Y9XwX5bEE0v\n2/5Gg/wBHMGbkitYqMlAhvF0V1nSZFJ9SRzHkQxXweAybIcgTgCBmLsi3LzI\nNh/b2E2G6el+BCr/Y+SKzm/KaazymI6cEWXa6NnF3IkQXT8ElmiAr7wIQdjL\nUb7H\r\n=6yNi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBHldBsgueajln7GVZERL66yyVltTmfClblnYnL9/7FgIhAPxRKB2SK/eHtkxtonBP49zOxjdg6m3uuobtzeN6xcRZ"}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.0_1603296936874_0.22034017769411518"},"_hasShrinkwrap":false},"9.0.1":{"name":"@redux-model/vue","version":"9.0.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.1","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.1","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-ykq0+B2LNuWP9jvvmxQejXuQR6TBHY2eiSNql3QIKDPKQd1PQgBNGE8RfkOmwXG9HlltiaqMj4QOMqwAD+w0NQ==","shasum":"3947b0e84d9971c93f5631e4289aec190e28354b","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.1.tgz","fileCount":48,"unpackedSize":65273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnjX3CRA9TVsSAnZWagAAAYcP/35oyeMmez2XosN8KH5Q\nhv367TNRSV3ENVz2IBLdBSCeTdUX0mZ+LsgYpn9p8ITrRLdl6rr8LYiLVvQz\nDDf6Jv6EhLBuQ9BVyANaBMuF3dODR9i93HJlG2bbdHXgnB73liHp1AdUD9bq\neJu/sapzrPZgvyEqKoBfGhXP6hrsbHYg6zzz4Ti9+U3oV22HxRPKNW2VwN6G\nVnbX9MoAh3cUE4CCDSOAGrKtZY+M6j31iSyqpRYs9Ie4xI05DmILk681d18x\nU11FSLiyMn7xqyWwwEDgy7cfalrGkBXvOEsYnuTPoQtObfDVP5fHlVueGQzt\nGutYVqUiaUyn6K/3dvbaKcV+D/AnORh4ylhN5sUjjsuUNHrfbi8XJ1aab+Xo\nsAEzlr8WJG+TUwzVtuog2joq0HsZD+Iwvtbj6+3wyj1ulk/9GY5KpglT2iYw\n9Q6btK8o7IVkKmbfByciyKhdPgP81fSePa+LoVXbvgWyzNAhhuz4v78iHzJC\nWA1M8Q8PWkjkAfkepz6GRSNuzzi5t1+tidA+PKXyvFYOsrgg4pZLgBfxwbN4\nEAnH8NyU199XGXgqclUb47au9vDVyLxGAamVCHHJ6CnK8qHEBaYjK+rQAPEd\nMZbueJYeD22K6jxEg/8sbamLWi9WkwDup8GqX65qTXT+sWqN6Hv01CowZot4\nKXKL\r\n=2FQL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID3LyT6SF5m8QgA1Z2d/7MY/18xfFakIzFLg5YYFju/dAiAJUx+QPCSAnV7TzPyFMJi2RhjjVSybb8/VruypHL0heg=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.1_1604204023119_0.2058945859564718"},"_hasShrinkwrap":false},"9.0.2":{"name":"@redux-model/vue","version":"9.0.2","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.2","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.0"},"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/vue@9.0.2","_nodeVersion":"12.17.0","_npmVersion":"lerna/3.22.1/node@v12.17.0+x64 (darwin)","dist":{"integrity":"sha512-LdEQNAAA/nS8FaFvMRPEowFHIlkwW2Ep1mW1ViqO7TPeIvnbHwfjOvWbnp42CE3bCNBpE5VGc9ZqvW9XiIYBaw==","shasum":"0ee8c14c14ebaad373fd3e565484874b4e2609ef","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.2.tgz","fileCount":48,"unpackedSize":65319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn3mbCRA9TVsSAnZWagAA9JwP+wUDHTSDn/Hh9XndH9KE\nnkhahA9Ee2QXBv5Lxg/k3L0Amznesk8pjTmIKTSWvEESam0mJ59ak0/UQyVr\nX1IMyxvP2mQ8/vZev+sd6PRV9AXaSS7XpEUF547qh1o9woQuQw2wQreqcyy/\nykW4axRFXiTLRZATU6DTTFjX7QfO087Rf+tOgLdJezqHUu4kLPMI33HCDtQp\nDGQRSaDPu3ut7HJ/4ThIYt6S3m7N7glnM5nTjiS7S69redBO71HX17OSoMje\nSGV8Cc+vXawjpOP18ZFCKhuJgHOxEQUVWMCF6mVuuSFnLHNo+EXViZ9O/eQn\nrP9qfRokbaEhNoAfHI3hOHJXDiph2Kl7F3lQeHXjVdm5xdlWXD8sFNU0735R\n0QbSuJSvzNK6YTUyUHxe0MOvsddjuKQNL0+HeT1DiU1SAueJ90DwdtnXUVwb\nKUfRNw9pENhuszPfEzdHjHdnF4gIOgA7uZAEOJ33jnsX3OtmoWPG74D2ti2b\nRDNQLA+lJrc2B7w7Xut4ZOoRJ9FfmHcxC1qgnF8Xu1YKiRAHYm+Gx/w1/EUA\nqR4Zcom7cSDEGMyciiDzFoEUtf/lgvhV4krNK6V5YGLQUlJZ0840HB2QBqFz\nAQgveH9bAYzmHfdpilA0pgOjeHDq32vyyGpzIZQ9TF1V4v3z3e3nB+e8F9/u\nMydU\r\n=Bp1A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICvfASLBq/E8MHSDZjv9DaegTbX2C7ujoa0pY8S3Ha89AiB089oZIkXJvwZbdC2R5gZgLN9sIa3JFPc0XYa9Dh/4/w=="}]},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.2_1604286875526_0.980842545739651"},"_hasShrinkwrap":false},"9.0.3":{"name":"@redux-model/vue","version":"9.0.3","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.3","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.3"},"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/vue@9.0.3","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-1Khcx9ZjtlFAf+hWLZby/I0YkWNhpRuOcGFATnZtR5KWDoSjNXW+4flnGBKte6TxQxoyrzD57OW96DATl7vFKg==","shasum":"91ae8c791dd25543984baff14d7a7fc615d8979c","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.3.tgz","fileCount":48,"unpackedSize":65558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzwzlCRA9TVsSAnZWagAAyNEP/2sEtbkyR8JCajWDXb4r\niswWjfVVSwwG9hGtqtM+7e0qStJ2qAB98M6SFC+HP4j0o8yyirN3OnbmmFrQ\nTN1DAzc0LIzxptT8QFP3GllDbJHVSnMyetqsvdKexAdxp1LziK3TNPV8sKhN\nbGnj5pg0l5sLxYukwoJmrSoW+uF1OZvYTmihSGLwG3CDED81yvou7+QLxP8I\nkkqwXw9D/UiSxMoQc4jne0+SAE/5B2PIap6Ko010LJeU9tVwFEi8dqC4uRio\nNUKv07hli9D9E9N5eyknSmnGfmJk4m4D0JOXTm51djgA9FsgmMkMfBIeVpId\nC6twYCCqdLhAgcBT3xHb6rzE+La2+4T9pBWSAEEgPGN37r2Wevhmv/x6VZmN\nT5B4M/BfjLkYTAX4hpE0bl478nV1ZU/gpQtKW54fJh4mW8nAcconRBNjRm9i\njYDNrk6T7UgWrHfI65e/asAb6BN2/V0QoGhJ8CK0CrR9fXTiwMGzjsSgm4JR\nlYB58xDEZLwf0iIBUHPFlV3hKsgvTmHAIz4hTxFv2OotvdblkMruowsox/b5\ntZXxDyg1NLz9Kr2tJOZPovGfd+nt+XU497kHSYchmfTPIqktMg5YPO04/Wvp\npixdCAK04AD0CXwEZ3xu0ARztMk6ulLOG0yxR600IJu32ZoAMmSbRaErJfr/\nD2MV\r\n=Z5Eg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFK00VeSCwMcC08JBnrWOLYHbKaEN/FlK0rPJU7WIK9QIgdut+jnd46DP+t3+z+8GF/Xoc6GyhSqf4xWIXw7nIn5E="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.3_1607404773159_0.6164018387972501"},"_hasShrinkwrap":false},"9.0.4":{"name":"@redux-model/vue","version":"9.0.4","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.4","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.3"},"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/vue@9.0.4","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-k5U0LkVdlsAgTF2V528rVUFfbnGcPpsy7iaIhO+PgcFhWRCPpASWTgrnkyyiQaXao5VSBiZEAiy/xFvjs3teSQ==","shasum":"17cb0301fff8ec06e20810b05883704826de4360","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.4.tgz","fileCount":48,"unpackedSize":65624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf10J+CRA9TVsSAnZWagAA5j4P/02dLoh9Yi63YtJtTl1U\n7MPP2mhbj2YNE7R+eFQduZtkD+lEWiknk4R73Ru3cXT43juc00KdGxWixVMR\n+ee9Lz00W0xPqjKKMHa+d6vSA+sx7Bh+liVeuTZYti5hp3rdbEv6W9x+zqJE\nl1Y8t1beKn6QMmc09elUGn6jPFfFDFgNVWMejSkm+TCVM9VKF6dQAUy93XHa\nL8pHVlNCd+Wi2V5I3YOQ6592eNXg6AS8iCxh9ZuF8u3TP/NbFcgMpuhNsDge\nU5/KwagpIYDAeYG7UBCsWdhqaxp0mx11v1rsX02nHVy4G6Mx3ZISs5jCOZVs\nx7HyBr6XJSqwtESnVvm6FQC8/ZeehOaNvE2SSolO7xQT+EbB+nb+ntvWoOj3\nHjd+OVsAbl+PNl+TWzbUOUBj8fl5v4GZIJy+jlTbywp2Mljdw0h9cj02MBs7\nl5M2SZZnbzO8DrVAhY3P2LggtHxZk6Ht8/zQLS6HgOj+CDsuaJx7zJ8AI0JL\nFSOQ8Eju2DZU+cZYdkjp/7OL9Br87K60uh7mZN9HTfPyFj7Db0jJQ7nWsfmP\nMjKLqVJhvQYrPNhGo8u/8w0rzU0GfavZgJEA2oIRw0GisTg1b0l9009LBL2R\nnpH+tIgd5UZDlfmMRtsFvKQzBrY3PoGS/heFbWpDLnJsxUCEg5wEb+47uPo1\nnWOA\r\n=xnJK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGxYb8Y0TpTfmxg6GdEgxU6g8pfhe+kzUDE3r6k4KUMsAiEAkRfV3cz6RlKZOvnGdpbd6aMEGPMT4Z6vVt+9r6hD4tQ="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.4_1607942781616_0.4627836440190869"},"_hasShrinkwrap":false},"9.1.0-alpha.0":{"name":"@redux-model/vue","version":"9.1.0-alpha.0","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.1.0-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.3"},"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/vue@9.1.0-alpha.0","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-LdBnAATYEWnQRLjhIDCuw8yMBEKMV6/1Zs3tTJRrTuZjcNG30M04Qk/bhdmOvwkfsGUeDd7Q5sFkT7qevVN/LA==","shasum":"aeb39210a875445fdd9436c2f628dad1fadc0a7a","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.1.0-alpha.0.tgz","fileCount":52,"unpackedSize":67340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4XssCRA9TVsSAnZWagAAyDEP+gMlUtFcrihHJAZiO6kR\nBybKOFmsJzporZnq5k2Fl12cCNi6eOGaNxcObx/pv49z0oUMfjm+yEEIxnqu\nVLkclc4TdDZWWnpdQYNi7uHA8H4h0iGaSUk22OZKhNHkHqkobREpMIy7dI+m\noQnSPdOwWisDdz82h4yivqE5XbFXPShWT1A4BueckuTpOTeAnbYfHhJ59btP\nx0oLYmnoZdguyngFITI1RBQExIyR0wj1/GKQ15Qtq53AT5gut//QWxYTne7y\nVxPqgDB5GvuFn6kDmK1gQKIDNgcDkqca9qRghm7udS/DGmJa+K9e+TLOhtJR\nyDvwZYOmUK7SODVr22CmGy8NoP6HeNSG79lZdvy1lZKmjVmda70N4oUXt1UK\nTnQAcj2JOZtyyxl2xp8gYvm74g+kNcLChgzyRddFQZ140cOQE7wxcmIBtV7t\nMd5Fj9S/V+k07GSGhY/eTqbvjZDg2OmtRXwVLK1T5Af4W2sP6g9LK3ylSX4S\njtdRLgPnegovp/kKT09tdDlQEulHTplV7ujzvfDhZMHHY5+66iNg2nPD1PlV\nABWysoWlZrRk8z5z9blhvlrTXhvVoEWTTjxIUCGMaXk0PgazIr5dzwd6TrCl\nwwpB1x+29TcdH8sxMWTVYLC+TwwlCfkIi9yr1aNHMDVt0cpfRq5LzNwuaETZ\n9X9V\r\n=52Qj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0hPjuEyiW+FJKeok4yhnkmqjp6nXrRX0hBoGyM9uMtAiBuaeOORmD2rFiDzHVmjPt4Rqk5EDbs2h1A8tAsjwRvMw=="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.1.0-alpha.0_1608612652217_0.697134800829124"},"_hasShrinkwrap":false},"9.1.0-alpha.1":{"name":"@redux-model/vue","version":"9.1.0-alpha.1","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.1.0-alpha.0","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.3"},"publishConfig":{"access":"public","directory":"build"},"gitHead":"13f20b74db312d0a03493240f8ca3ac66e5f72c4","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/vue@9.1.0-alpha.1","_nodeVersion":"10.23.0","_npmVersion":"lerna/3.22.1/node@v10.23.0+x64 (darwin)","dist":{"integrity":"sha512-nQR5cf2PJjYHyDxlC9l74ITvhYWZQBrEwF9OlrJRRBRWjwQae6D8Ig9q+tQl0y+vfpNK1/0hCX60lP4jLjaMTg==","shasum":"24d1880c5fc50252379a043b49b3de6f9f26ba51","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.1.0-alpha.1.tgz","fileCount":52,"unpackedSize":67716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4XwJCRA9TVsSAnZWagAA+0MP/2Koh67C+B67N7HHO5ao\nXtH3RNLuF0IjAHAAmMP2xD9+qHTEwa9Mohoz8RoZKK8UwPrOxYNqW9esCCzl\n/qyPu3P420iLJLzfm31WQfD+3liZ7s16a3BMA3D/AMBlKMoyvnjyc+/aqKPq\nEDIp4lL4zBYQfEbPmWj7uKqlpqwE4bxgR50ElNIOPAofpkyhDvYDpDkJnc7n\nRsIThRZss+EQJuBrbKVjrEkfjfOvGt+9HG0gacBSi8U59TKZT0wb3C4bjrhJ\nyAAdxWqLnaRI8/+bejeLOEOyGA+ahHjWPMed9Ca3z+n1ne3FFX87b3qC2RCK\n+k36iSBz/m5DYbSbpz/Ru9FXDiUOLIFZGmrbE5igPGvTBlsgYE/hJLpLSnty\n7mI+qWb1J4J02RUV6kKL9QL87XOBfX2AkvCxf2Tn05HCaOFMbxeU+e2Lgew8\nNjAuSIFgdT+4MTxuxPrlTpUR3NGT0yZ5t9LtWYzsnrCeiKi1OV7d+M74enh9\nzkwO4aZGz3KCSLZk+QDReOUw/oUZckXA3WXJRzB7Y4B/GRN9GkRL5p2A8514\njvz7tZrtVf6w8a9qGjg+vVmACrtiP7/jygPb4dOjw26NMoC3bbJakGY4MV8N\n+jbWpSVe+ignS/DEa4kIqbmDUNhknxfmIDXXlQYmI4FfWIsvXUL+WF1HX57l\naQOA\r\n=BX2a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGtnzYRU+KWmaMDMv+FsduGs6HOaZIGfYlm5YHtIss9AiEAt1fCME7aFXV6kzuP4KIRhTcC7+OskjhYgBPGR+xRJJs="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.1.0-alpha.1_1608612872994_0.5861587939677275"},"_hasShrinkwrap":false},"9.0.5":{"name":"@redux-model/vue","version":"9.0.5","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.5","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.3"},"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/vue@9.0.5","_nodeVersion":"14.16.1","_npmVersion":"lerna/3.22.1/node@v14.16.1+x64 (darwin)","dist":{"integrity":"sha512-ijtIyV5Dnb6cNG7ZoCytVBqXLFQbtubxS1borfcaeetv7XZSs0uBkmjxbLfBS0JXf7NGMknW4rsv0jlofDVdAg==","shasum":"37a3df13fcdb4cdf5b3d62a4d7b595e28bcc5789","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.5.tgz","fileCount":48,"unpackedSize":65831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8QYKCRA9TVsSAnZWagAAS8sP/06lUnO+xMbLbpFvuo7K\n1ZIrjNPUsoKlUAY8H4nyiBzV6IdRVnMVj9SoQCIsOh9OtDlQFRSBX2GWj9sa\nhQD8eW9YNLVmKg6bv4bG4wNjSK0jbe8G8dEKVNJ1mavdmeEGIKbPuutpUgKR\n9qaazEdBml2i+2LBqe7pe3r0W3bproygw2q+fg8q6skmYIJCw9Mz1UsnzgXf\n6NuMq3Z1TB3rP1eCalikyXeVV15xzxnFNXcJayViEqr4S3m4w+RSRmrEJzHp\nRT1Q1LNqKocdoSnflgrSu9I/jvA3PbuuaES/78NwnFAfIh+CvdzbAAtcc4CT\nrL7DFDDmbn8SGXY6cLmuqhDEHSMou5WJFZyZnpBVjt/nHSuXGxi99wQCEcJM\nBBELM7HJVLqfilqgHoRu7/tF4I4bd96XclyzziZlTw61wh7jp2FcRlCh74mr\nGM5pPfPrDWKx1yYv0nDLeIkidzdHAyCu+ju8N8Pp35xz8HuNUL6HuOiJyOxC\njs6c/Zi7ie5Awk60k4l4iBOVEjegXOy+mrA2bhXhHF5yzMC/7EOWJbSTBof8\nMCBN6mRy3B75tEcWJpz9tzaILGT3a5pBJncIUMUyJXMUpYoI3s71Uo2ECY08\nsq1cdQ9ln2V4gVkFzQZyKi/FIq9LsGrvFHg+3KFmcmBPsrL42yMkWQP4CLjN\nx43p\r\n=qofc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHx2eL98JrhTOV0vcLUWWawpPmPFmY0GvTOKcTsrTFfnAiEAtbksH51uOAEqSi21J5qL9iya27trehaILUWhiJezJE0="}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.5_1626408458036_0.9264222068185184"},"_hasShrinkwrap":false},"9.0.6":{"name":"@redux-model/vue","version":"9.0.6","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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","relink":"bash ../../scripts/relink.sh"},"peerDependencies":{"vue":"^3.0.0"},"dependencies":{"@redux-model/core":"9.0.6","axios":"0.19.2","clone":"2.1.2","deep-diff":"1.0.2","promise-listen-catch":"1.0.0","redux":"4.0.5","tslib":"2.0.3"},"devDependencies":{"@types/clone":"^0.1.30","@types/deep-diff":"^1.0.0","vue":"^3.0.3"},"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/vue@9.0.6","_nodeVersion":"14.16.1","_npmVersion":"lerna/3.22.1/node@v14.16.1+x64 (darwin)","dist":{"integrity":"sha512-OLqofQGAIy3HUDGVyU2sbYVjQQY1ezVQXECdNN9ohDjICXaPdcmAW2WRIw3brflchzNtptd6pBEt4uVzYkgxZA==","shasum":"1b00fa7dd724b0f958bee67721dcf0373030ecfb","tarball":"https://registry.npmjs.org/@redux-model/vue/-/vue-9.0.6.tgz","fileCount":48,"unpackedSize":65827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8STqCRA9TVsSAnZWagAAeHcP/A21q7ft3d/iyysACTRD\nswXXOEZkkk0OF11WDNShOf+VDuptzR/gIWJaF4QZ1P2qynUU/ncyDSWUBYDB\nHxd3UzLIFOA6JRBsXmd1fBBQm+OjWKCu1U7Mqt22vRpVT9Ji2CbkSONChIdf\naeR8FwM5UB9gfYia98DbGy+UXtEDbE9QGMh9pN4q8j/HisxRWAKjLbMH/5D+\nclLGcyfcjkf6k3alHliQoXk8J6pV78iidmNleP4DdnuYKJH8jZy3HXEVVxTu\nPLlpPvi8xksEOUznRmzD4POxPRbr6yEyNK8V6n8GIuMIjcY+zhUxvVhyd/TA\nhx+TWBnPSGcOx8EQlLacys1/h+4XWXTDyjrIrw33mUkkwvhQgJf5auUkZgU9\n+Ej619pYp+1GaJ+Vk2uBAmpH31uTbGNKomLwwPHLMqxyXwyJDi8aNEZS3t9O\nwsOLFFEK0kzrLVtKtHN6RvqcT5z3WkSr5WE7lgllMY86+QeRbEOl4Bt7xC12\nVYkWwq1Fk1VrRzyPr0BRM+D6skdCBClV6BHnoz2PBf7sXYVLzGB8D1E3cC4S\n6j+/pr1k2ckqI+6BL/DoU5pOWJ+Od8PNRgJGV2/kULW0V6eToECVxmIpVntU\n4GDiQwk6YMT/OO2iemBqsitKE2+upLAcy4RV7va63Vsh07RF+JPaypj49uhd\nL/MS\r\n=K65O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ1yuOKnxwOI5Cr7b9Vu8r9qro0/sK5kXempvpVHXZnAIhAIfrHhahTrKeIO/MePSrmvUUZgdDXI9v54kwNa/WFw3n"}]},"_npmUser":{"name":"fwh1990","email":"531362022@qq.com"},"directories":{},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue_9.0.6_1626416362226_0.8057721369757105"},"_hasShrinkwrap":false}},"time":{"created":"2019-10-24T09:46:18.211Z","6.5.0-beta.0":"2019-10-24T09:46:18.610Z","modified":"2022-04-06T18:59:44.548Z","6.5.0-beta.1":"2019-10-24T09:54:03.992Z","6.5.0-beta.2":"2019-10-24T10:04:17.432Z","6.5.0-beta.3":"2019-10-24T10:11:01.222Z","6.5.0-beta.4":"2019-10-24T10:14:02.854Z","6.4.1-beta.0":"2019-10-24T14:55:15.705Z","6.4.1-beta.1":"2019-10-24T15:13:04.487Z","6.4.1-beta.2":"2019-10-24T23:16:23.370Z","6.4.1-beta.3":"2019-10-24T23:16:54.275Z","6.4.1-beta.4":"2019-10-25T00:44:25.563Z","6.4.1-beta.5":"2019-10-25T00:47:16.232Z","6.4.1-beta.6":"2019-10-25T00:59:54.909Z","6.4.1-beta.7":"2019-10-25T13:04:44.525Z","6.4.1-beta.8":"2019-10-25T13:08:38.083Z","6.4.1-beta.9":"2019-10-25T13:41:46.733Z","6.4.1-beta.10":"2019-10-25T14:03:57.403Z","6.4.1-beta.11":"2019-10-25T14:17:00.418Z","6.4.2":"2019-10-25T14:27:51.237Z","6.4.3":"2019-10-25T15:10:42.213Z","6.4.4-beta.0":"2019-10-26T01:39:50.671Z","6.4.4-beta.1":"2019-10-26T01:43:29.182Z","6.4.4-beta.2":"2019-10-26T01:47:00.111Z","6.4.4-beta.3":"2019-10-26T01:50:33.621Z","6.5.0":"2019-10-28T07:51:41.071Z","6.5.1":"2019-10-28T08:35:37.275Z","6.5.2":"2019-10-28T09:27:36.837Z","6.5.3-beta.0":"2019-10-29T09:12:04.239Z","6.5.3-beta.1":"2019-10-29T10:02:56.348Z","6.5.3-beta.2":"2019-10-29T10:05:07.976Z","6.5.3-beta.3":"2019-10-30T03:22:12.642Z","6.5.3":"2019-11-07T10:00:02.854Z","6.5.4":"2019-11-07T10:20:49.312Z","6.5.5":"2019-11-08T02:14:31.816Z","6.5.6":"2019-11-08T02:41:50.702Z","6.5.7":"2019-11-08T03:15:59.624Z","6.5.8":"2019-11-08T03:23:11.981Z","6.5.10":"2019-11-08T09:54:45.570Z","6.5.11":"2019-11-13T03:31:50.485Z","6.6.0":"2019-11-15T07:07:23.401Z","6.7.1":"2019-11-25T09:26:24.973Z","6.7.2":"2019-12-10T06:05:24.912Z","6.7.3":"2019-12-10T09:15:18.106Z","6.7.5":"2019-12-26T05:16:09.650Z","6.7.6":"2020-01-03T11:04:36.055Z","6.8.0":"2020-01-07T12:05:32.115Z","6.8.1":"2020-01-09T03:29:02.634Z","6.8.2":"2020-01-09T08:43:18.324Z","6.8.3":"2020-02-19T15:13:40.138Z","6.9.0":"2020-04-08T10:08:02.770Z","6.9.1":"2020-04-08T11:09:17.235Z","6.9.2":"2020-05-11T06:32:12.645Z","7.0.0-alpha.1":"2020-07-14T06:41:57.884Z","7.0.0-alpha.4":"2020-07-14T06:53:25.619Z","7.0.0-alpha.6":"2020-07-14T07:13:22.950Z","7.0.0-alpha.7":"2020-07-15T17:02:08.541Z","7.0.0-beta.0":"2020-07-16T03:53:54.013Z","7.0.0-beta.2":"2020-07-16T10:27:05.868Z","7.0.0-beta.3":"2020-07-16T10:59:11.636Z","7.0.0-beta.4":"2020-07-16T12:49:33.163Z","7.0.0-beta.6":"2020-07-16T14:49:33.274Z","7.0.0-beta.7":"2020-07-16T16:12:11.892Z","7.0.0-beta.8":"2020-07-17T07:41:23.354Z","7.0.0-beta.9":"2020-07-17T14:29:39.523Z","7.0.0-beta.10":"2020-07-18T01:59:37.177Z","7.0.0-beta.11":"2020-07-18T02:34:18.243Z","7.0.0-beta.12":"2020-07-18T02:44:00.398Z","7.0.0-beta.13":"2020-07-18T14:51:35.056Z","7.0.0-beta.14":"2020-07-19T10:35:55.045Z","7.0.0-rc.0":"2020-07-19T14:08:11.902Z","7.0.0-rc.1":"2020-07-19T16:38:52.244Z","7.0.0":"2020-07-20T02:06:57.468Z","7.0.1-alpha.0":"2020-07-27T02:32:04.723Z","7.0.1":"2020-07-27T02:57:18.756Z","7.1.0":"2020-07-29T06:18:25.138Z","7.1.1-alpha.0":"2020-07-31T06:18:22.961Z","7.2.0-alpha.0":"2020-08-03T02:07:04.902Z","7.2.0":"2020-08-03T12:31:31.829Z","7.2.1":"2020-08-05T02:00:09.528Z","7.3.0":"2020-08-05T05:31:21.879Z","7.3.1-alpha.0":"2020-08-10T03:07:04.823Z","8.0.0-alpha.0":"2020-08-12T06:40:34.218Z","8.0.0":"2020-08-12T06:49:12.492Z","8.0.1-alpha.1":"2020-08-15T17:03:24.333Z","8.0.1-alpha.2":"2020-08-16T03:31:09.259Z","8.0.1-alpha.3":"2020-08-16T05:17:54.698Z","8.0.1-alpha.4":"2020-08-16T06:09:53.755Z","8.0.1":"2020-08-16T09:06:45.371Z","8.0.2":"2020-08-30T01:21:18.310Z","8.1.0":"2020-08-30T04:27:17.405Z","8.1.1":"2020-09-11T06:18:25.367Z","8.1.2":"2020-09-11T09:56:58.077Z","8.1.3":"2020-09-11T11:07:14.492Z","8.2.0":"2020-09-16T15:27:37.637Z","8.2.1":"2020-09-23T15:29:59.914Z","8.2.2-alpha.0":"2020-09-28T11:14:12.165Z","8.2.2-alpha.1":"2020-09-28T12:43:57.773Z","8.2.2-alpha.2":"2020-09-29T09:27:17.780Z","8.2.2":"2020-09-29T09:49:58.755Z","8.3.0-alpha.0":"2020-09-30T03:39:09.306Z","9.0.0-alpha.0":"2020-09-30T06:49:36.420Z","9.0.0-alpha.1":"2020-09-30T11:01:28.559Z","9.0.0-alpha.2":"2020-10-09T03:56:17.557Z","9.0.0-alpha.3":"2020-10-09T05:37:23.092Z","9.0.0-alpha.4":"2020-10-09T10:25:35.563Z","9.0.0-alpha.5":"2020-10-11T01:28:37.367Z","9.0.0":"2020-10-21T16:15:37.000Z","9.0.1":"2020-11-01T04:13:43.239Z","9.0.2":"2020-11-02T03:14:35.659Z","9.0.3":"2020-12-08T05:19:33.265Z","9.0.4":"2020-12-14T10:46:21.809Z","9.1.0-alpha.0":"2020-12-22T04:50:52.331Z","9.1.0-alpha.1":"2020-12-22T04:54:33.171Z","9.0.5":"2021-07-16T04:07:38.173Z","9.0.6":"2021-07-16T06:19:22.421Z"},"maintainers":[{"name":"fwh1990","email":"531362022@qq.com"}],"description":"<h1 align=\"center\">   <a href=\"https://redux-model.github.io/redux-model\">     Redux Model   </a> </h1>","homepage":"https://github.com/redux-model/redux-model#readme","keywords":["vue","redux-model","redux","model","typescript","web","h5","html5","browser"],"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"}