{"_id":"@7pound/westore","_rev":"1-afe2d659b00b5fa1ccb9e5c28ce7f9d1","name":"@7pound/westore","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@7pound/westore","version":"1.0.0","description":"miniprogram-westore","keywords":["westore","miniprogram-westore","miniprogram-ministore","小程序状态管理"],"main":"miniprogram_dist/index.js","scripts":{"dev":"gulp dev --develop","watch":"gulp watch --develop --watch","build":"gulp","dist":"npm run build","clean-dev":"gulp clean --develop","clean":"gulp clean","test-debug":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand --bail","coverage":"jest ./test/* --coverage --bail","lint":"eslint \"src/**/*.js\" --fix","lint-tools":"eslint \"tools/**/*.js\" --rule \"import/no-extraneous-dependencies: false\" --fix"},"miniprogram":"miniprogram_dist","jest":{"testEnvironment":"jsdom","testURL":"https://jest.test","collectCoverageFrom":["miniprogram_dist/**/*.js"],"moduleDirectories":["node_modules","miniprogram_dist"]},"repository":{"type":"git","url":"git+https://github.com/7pou/westore.git"},"author":{"name":"赵 🍉"},"license":"MIT","devDependencies":{"@typescript-eslint/eslint-plugin":"^2.28.0","@typescript-eslint/parser":"^2.28.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-module-resolver":"^3.2.0","babel-preset-env":"^1.7.0","colors":"^1.3.1","eslint":"^5.14.1","eslint-config-airbnb-base":"13.1.0","eslint-loader":"^2.1.2","eslint-plugin-import":"^2.16.0","eslint-plugin-node":"^7.0.1","eslint-plugin-promise":"^3.8.0","gulp":"^4.0.0","gulp-clean":"^0.4.0","gulp-if":"^2.0.2","gulp-install":"^1.1.0","gulp-less":"^4.0.1","gulp-rename":"^1.4.0","gulp-sourcemaps":"^2.6.5","jest":"^23.5.0","miniprogram-api-typings":"^2.10.3-1","miniprogram-simulate":"^1.2.5","thread-loader":"^2.1.3","through2":"^2.0.3","ts-loader":"^7.0.0","typescript":"^3.8.3","vinyl":"^2.2.0","webpack":"^4.29.5","webpack-node-externals":"^1.7.2"},"dependencies":{},"gitHead":"a6b05efc50c857deab6fccd8fd4d7ec31a516af9","bugs":{"url":"https://github.com/7pou/westore/issues"},"homepage":"https://github.com/7pou/westore#readme","_id":"@7pound/westore@1.0.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-69v0h55hxJu7YQeMBgm7jqJ1Il50cHpF7cLslwRRXiQnIyhhl1mH885rp7QHtfglB2w3eSOTb0a5CkQNfcwSJQ==","shasum":"4c9e088ad638c38562d5af03e84ecff06fa6c002","tarball":"https://registry.npmjs.org/@7pound/westore/-/westore-1.0.0.tgz","fileCount":10,"unpackedSize":22688,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHj/FLcbcWbXQqD4ZSE1fTXS1Ese1x09mH85WyT0ZMVNAiEAsdp9q/MmcJ2mIVIAxjCPJoX7lba6bMYmrrRfZKq62BA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHvlLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqnqw//eHdPq+zmMJ2Pm4HxV3o+e10qNb0MKiQMy52uFnE88gCk0hj+\r\nQ6czNKi0JqBpEQyAPexKpNii9cSxnWt2nLoNdVVWCqalODRSVrBnlCbZv36X\r\nvoGXHKLWXunDAsG4xo9IMJ5AkQDbQ1iOtPOOd5SZMucsLSHq7OGzRgZvEoKG\r\ntu6QZCUSLHkMu1XvYlcb6G6RI6i4lE0cPdqUeNvyxEE87e/EQ0S02+wHS7tu\r\n0LxPzIY4baqY/jkUEPnmS5t6D4smbbpQw1rHtfxZgwj06w6rAt0fP4M3sMrk\r\nJ+xgaYJRgEtFvapwoxswYFyHb7ESheVYgCSqNs+YL8JrxUcIwfQZYsl0Gh7l\r\nZJd6QA94sZy4uK4FcgqXO+doz78e9laztTYoEh/1KIVgjuJ+qyBUD4mOUjM+\r\nvF33s+7JT6huLuZE+LAYv9Do3HIMZqtRNEjsY+zL8JVItBclXpkLhD5HUaO4\r\n/AviggHyYlCdeeJu4OdF3ZOAeVo18pbYZPwjXD2Z5pfIZJ4PtxRX4YkqxSNT\r\nZOV3PSq0W+Cl4Qi2Ag+mJW4JkUxcA1b2ON1lliL20mMeip0D/EpKarUbh0vK\r\npdUZXM/9cTCofhrW3zDrzhJdgOFB+9RTu7fCyJ+0GZO5LfTqtk+LBQZ7Ilin\r\nJrHDh1JDngdwj71UlckbTU3/R0IuMrYCpIg=\r\n=33DU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"7pou","email":"7pou.com@gmail.com"},"directories":{},"maintainers":[{"name":"7pou","email":"7pou.com@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/westore_1.0.0_1679751499324_0.05037782387905243"},"_hasShrinkwrap":false},"1.0.1":{"name":"@7pound/westore","version":"1.0.1","description":"miniprogram-westore","keywords":["westore","miniprogram-westore","miniprogram-ministore","小程序状态管理"],"main":"miniprogram_dist/index.js","scripts":{"dev":"gulp dev --develop","watch":"gulp watch --develop --watch","build":"gulp","dist":"npm run build","clean-dev":"gulp clean --develop","clean":"gulp clean","test-debug":"node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand --bail","coverage":"jest ./test/* --coverage --bail","lint":"eslint \"src/**/*.js\" --fix","lint-tools":"eslint \"tools/**/*.js\" --rule \"import/no-extraneous-dependencies: false\" --fix"},"miniprogram":"miniprogram_dist","jest":{"testEnvironment":"jsdom","testURL":"https://jest.test","collectCoverageFrom":["miniprogram_dist/**/*.js"],"moduleDirectories":["node_modules","miniprogram_dist"]},"repository":{"type":"git","url":"git+https://github.com/7pou/westore.git"},"author":{"name":"赵 🍉"},"license":"MIT","devDependencies":{"@typescript-eslint/eslint-plugin":"^2.28.0","@typescript-eslint/parser":"^2.28.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-module-resolver":"^3.2.0","babel-preset-env":"^1.7.0","colors":"^1.3.1","eslint":"^5.14.1","eslint-config-airbnb-base":"13.1.0","eslint-loader":"^2.1.2","eslint-plugin-import":"^2.16.0","eslint-plugin-node":"^7.0.1","eslint-plugin-promise":"^3.8.0","gulp":"^4.0.0","gulp-clean":"^0.4.0","gulp-if":"^2.0.2","gulp-install":"^1.1.0","gulp-less":"^4.0.1","gulp-rename":"^1.4.0","gulp-sourcemaps":"^2.6.5","jest":"^23.5.0","miniprogram-api-typings":"^2.10.3-1","miniprogram-simulate":"^1.2.5","thread-loader":"^2.1.3","through2":"^2.0.3","ts-loader":"^7.0.0","typescript":"^3.8.3","vinyl":"^2.2.0","webpack":"^4.29.5","webpack-node-externals":"^1.7.2"},"dependencies":{},"gitHead":"c763da9ae4fe2b9bb16dce52c60032e0e67208d5","bugs":{"url":"https://github.com/7pou/westore/issues"},"homepage":"https://github.com/7pou/westore#readme","_id":"@7pound/westore@1.0.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-jPJWouG0fNk14Yk1N/8aFiHE8w+2iqzKSIR3HNJX3Ey/4e0TY0N64D/TbwmQXoLKNWOlAfd7xmxr7n9/X4jQhQ==","shasum":"f0ec1837caf4fc95483ce5ba704ccf8086f9b706","tarball":"https://registry.npmjs.org/@7pound/westore/-/westore-1.0.1.tgz","fileCount":10,"unpackedSize":22763,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQpm3NiVzflAoZtDxVzveFeGEIz99/DyejzoDl6ndt/QIhAMhRooYMB++t4t9jJ6rZrRvY07jZoTHZEnW1kvbOzFb5"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkN2npACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopCw/8CGYdasqSYak12u09sJlJHdlsd1x/y+ZBmolY6Ej46K9SmD/s\r\n8eCyvxiD0BeAecHJ6mnV+BAW5JddAZ/9grXQvXq146nMMEhrV0Mmnj1L3hpA\r\nVRyl3MeaRjuQgHyfUwhVk1jONr5g/egiF20syeQdTo3bOoA0oCE9AnsuK7Wk\r\nH27C4CesLQrHYMCzy2eF7Q+LM/ly9aEiL5XBGj9tyQBH+sXPZzP7zs8vjqHQ\r\nGrE5Sew+Fr3wgy5DvkQ0y6j4e1fBU/mCcRaQFIylhUx6BJuhZfPdvExlqvAV\r\nfXVcbVdP//R41RtQD8dn06f2PQ5NF83qo/g02BXZTbeAcsrxMBzYDvqpzedc\r\nps/hISy891WFsQRyo2DL1pWoAk/uyuBkzm2utXX5tLOjAO7VYMPAc8l5g2rJ\r\nLn9xaeRW+E+SB4pH0cNJhLDeMkRtce73NB93faa9gKtoajyaMeYGbrWUoWnx\r\noPQFoVuksj74NCsFj/ShXP5iXMB0mk84RaeLaMY1aNq2rDzqqYbepwEL5lMR\r\nZ/SE7JVDqqA2H5SWMGhtuAfOchqw6vqwdhvLaj65OEVXf3c6YM33EfTdIYym\r\n1FQwG/O9xytsBxjAJuV83vlVaObQglKovQnlf7oigiQXh7D+25Tgmv0Cwq9Y\r\nBdm3iCwbgW4HuX0KFvRfsEaNlf3fLIQTJMQ=\r\n=bvjJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"7pou","email":"7pou.com@gmail.com"},"directories":{},"maintainers":[{"name":"7pou","email":"7pou.com@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/westore_1.0.1_1681353192869_0.8210435329440762"},"_hasShrinkwrap":false}},"time":{"created":"2023-03-25T13:38:19.234Z","1.0.0":"2023-03-25T13:38:19.492Z","modified":"2023-04-13T02:33:13.185Z","1.0.1":"2023-04-13T02:33:13.052Z"},"maintainers":[{"name":"7pou","email":"7pou.com@gmail.com"}],"description":"miniprogram-westore","homepage":"https://github.com/7pou/westore#readme","keywords":["westore","miniprogram-westore","miniprogram-ministore","小程序状态管理"],"repository":{"type":"git","url":"git+https://github.com/7pou/westore.git"},"author":{"name":"赵 🍉"},"bugs":{"url":"https://github.com/7pou/westore/issues"},"license":"MIT","readme":"\n# westore\n\n基于发布订阅简单实现的状态管理，支持多模块，计算属性。\n\n# 小程序状态管理\n\n* API简单\n* 压缩后仅有1kb, 无其它依赖\n* 可按模块划分\n\n## 使用\n\n1. 安装\n\n``` js\nnpm install --save @7pound/westore\n```\n\n2. 构建npm\n\n在微信开发工具中 菜单 - 工具 - 构建npm\n\n3. 定义store\n\n``` js\nimport WeStore from '@7pound/westore'\n\nconst fetchUserScore = () => new Promise((resolve) => {\n  setTimeout(() => {\n    const score = Math.floor(Math.random() * 101)\n    resolve({code: 0, message: 'ok', data: {score}})\n  }, 500)\n})\nclass UserStore extends WeStore {\n  data = {\n    name: 'xigua',\n    age: 10,\n    score: 0,\n    say() {\n      // the this is UserStore instance\n      return this.data.name + ' say: my score is ' + this.data.score + '!'\n    }\n  }\n\n  getUserScore = async () => {\n    const res = await fetchUserScore()\n    this.data.score = res.data.score\n    this.update()\n  }\n\n  setName = (name) => {\n    this.data.name = name\n    this.update()\n  }\n}\n\nconst userStore = new UserStore()\n\nexport default userStore\n```\n\n4. 使用\n\n在page中使用\n\n``` js\nPage({\n  data: {\n\n  },\n  onLoad() {\n    userStore.bind(this, '$user')\n  },\n  onUnload() {\n    userStore.unBing(this)\n  },\n\n  handleSetName() {\n    const name = userStore.data.name.split('').reverse().join('')\n    userStore.setName(name)\n  },\n  handleNavMine() {\n    wx.navigateTo({url: '/pages/mine/mine'})\n  }\n})\n```\n\n``` html\n<view class=\"container\">\n    <!-- <view class=\"page-card\">\n      <UserInfo />\n    </view> -->\n\n\n    <view class=\"p\">\n      <text>userStore.name: </text>\n      <text>{{ $user.name }}</text>\n    </view>\n\n    <button type=\"primary\" bindtap=\"handleSetName\" class=\"btn\">更新name</button>\n    <button type=\"primary\" bindtap=\"handleNavMine\" class=\"btn\">跳转个人中心页</button>\n</view>\n```\n\n在Component中使用\n\n```js\nComponent({\n  lifetimes: {\n    ready() {\n      userStore.bind(this, '$user')\n    },\n    detached() {\n      userStore.unBind(this)\n    }\n  },\n  methods: {\n    handleGetScore() {\n      wx.showLoading({title: '加载中'})\n      userStore.getUserScore().then(() => {\n        wx.hideLoading()\n      }).catch(() => {})\n    }\n  }\n})\n```\n\n```html\n<view class=\"contaienr\">\n\n  <view class=\"title\">UserInfo组件</view>\n  <view class=\"p\">\n    <text>userStore.name: </text>\n    <text>{{ $user.name }}</text>\n  </view>\n   <view class=\"p\">\n    <text>userStore.score: </text>\n    <text>{{ $user.score }}</text>\n  </view>\n  <view class=\"p\">\n    <text>userStore.say: </text>\n    <text>{{ $user.say }}</text>\n  </view>\n\n  <button class=\"btn\" type=\"primary\" size=\"mini\" bindtap=\"handleGetScore\" >更新score</button>\n</view>\n```\n\n## DEMO示例\n1. 下载仓库\n```\ngit clone https://github.com/7pou/westore.git\n```\n\n\n2. 安装依赖\n```\nnpm install or yarn\n```\n3. 执行编译\n\n```\nnpm run dev or yarn dev\n```\n4. 导入项目\n\n打开微信开发工具，导入项目、目录在 `/miniprogram_dev`\n\n5. 编译\n\n## API说明\n\nstore.data\n\n> store中元数据\n\nstore.bind(instance, store_name)\n\n> 在页面中加载（onLoad）、组件挂载（lifetimes.ready）中调用。\n\n> 绑定store到 page 或 component 的data 中，data中的键值为store_name\n\n| 参数          | 说明           | 必填     |\n| ------------  | ------------- | ---------------  |\n| instance   |  page实例 or component实例        | 是   |\n| store_name   |  绑定到page实例 or component实例上data的名称        | 是   |\n\nstore.unBind(instance)\n\n> 在页面卸载（onUnload）、组件销毁（lifetimes.detached）调用。\n\n> 取消页面或组件中store绑定\n\n| 参数          | 说明           | 必填     |\n| ------------  | ------------- | ---------------  |\n| instance   |  page实例 or component实例        | 是   |\n\nstore.update()\n\n> 更新store的值到页面或组件的 data 中（修改store.data 后调用）\n\n基于[小程序npm模板](https://github.com/wechat-miniprogram/miniprogram-custom-component.git) 开发\n\n架构实现参考[Tencent/westore](https://github.com/Tencent/westore)\n\n下期计划\n\n* [ ] 加入diff算法，优化update方法中setData一把梭的性能问题\n* [ ] 加入action log\n* [ ] 支持class 和 defineStore() 两种store定义方法\n","readmeFilename":"README.md"}