{"_id":"zustand-middleware-computed-state","_rev":"4-549d420580156a296015567398612de6","name":"zustand-middleware-computed-state","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"zustand-middleware-computed-state","private":false,"version":"0.1.0","description":"Computed state middleware for Zustand","main":"index.cjs.js","module":"index.js","types":"index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/cmlarsen/zustand-middleware-computed-state.git"},"keywords":["react","state","manager","management","redux","store"],"author":{"name":"Caleb Larsen"},"license":"MIT","bugs":{"url":"https://github.com/cmlarsen/zustand-middleware-computed-state/issues"},"homepage":"https://github.com/cmlarsen/zustand-middleware-computed-state/zustand","_id":"zustand-middleware-computed-state@0.1.0","_nodeVersion":"15.2.1","_npmVersion":"7.0.8","dist":{"integrity":"sha512-QGrF8IKlgoNXA6pOz4XMxiklo1wsswZiddU9Yhi72WduIWImb+f1LXp9odTJMT5p4bSBhfPAtWDEKNRZcFZUig==","shasum":"2bf051237a33ead5e8a0b97ec329687aabd53728","tarball":"https://registry.npmjs.org/zustand-middleware-computed-state/-/zustand-middleware-computed-state-0.1.0.tgz","fileCount":7,"unpackedSize":6853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf89RdCRA9TVsSAnZWagAAEnIP/0Z+ibY9/dbfVKCkZa1L\nndamCA3SypiNMsTCPy2xJ+jv4sOkuRxDJZUZzYTEE9nxdBQN6RWT+51f8dXQ\nQDitpzTdC8FEyfA6U6NbBzu/yLP1dEyXf1/CHYk3Gf2RRg4Tme1sjREVM8uW\nqgw3o6YwRurqBXK7M5qQl+hGUXOZNNTe3gsMjJ0FzO3gxperckOek8PwyxNF\nogIfeRQHMwtzCAg5Xy30yNoWTDfEt22yLbYEIhnC48xIOHF+BqkDRbjZaBPG\nQRtCQ4Mcu0as3lLk1XP+vAWO0hTj6tP9RazHQqCzi25S69cn4W9zU/HSParA\neyyWHpYqvndUFdh2brEULzhHlvSBrUL33F/2AwXIupPhYWIqptvbZoxQBFwg\n+QHwztBdLsa+lHxVsa3Ti4CmGQUY037EujhqIi3r9iRGCAcS9QkR2pKshu7R\nA5/29osSKlGlYS8blhXScwlkzw4KiMXmpu55w5nTcWpn87EDvMGRwa0kspCF\ndrtHvM4VsImQ9kDQzqY7hjTEn0CbJ3ouxQJ0WMevNzJ4EzigseoKf0m2RTTx\npTQelaNTrOZTBMyMbtvxfPlU2AuQunYmN+t5j1l/68Oo1OqX02hDXrfQz4Np\nsYVgWPi5lD02WuK/lGlKdxuvhB4B1v2R0jugJV7mx1TyxWed/stPR+MmfH2C\nNXu2\r\n=Icnj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICAJTCWVgx6Gc16F+LUXi6fdnNowhWMRw3A3r9ClRlQTAiEA3cifGrS6l+EoVSKcH9OuqoIAVqyU265Uz5tqw4wyU6U="}]},"_npmUser":{"name":"cmlarsen","email":"cmlarsen@gmail.com"},"directories":{},"maintainers":[{"name":"cmlarsen","email":"cmlarsen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/zustand-middleware-computed-state_0.1.0_1609815132634_0.5015313293922203"},"_hasShrinkwrap":false},"0.1.1":{"name":"zustand-middleware-computed-state","private":false,"version":"0.1.1","description":"Computed state middleware for Zustand","main":"index.cjs.js","module":"index.js","types":"index.d.ts","sideEffects":false,"scripts":{"prebuild":"rimraf dist","build":"rollup -c --bundleConfigAsCjs","postbuild":"yarn copy","eslint":"eslint --fix 'src/**/*.{js,ts,jsx,tsx}'","eslint-examples":"eslint --fix 'examples/src/**/*.{js,ts,jsx,tsx}'","eslint:ci":"eslint '{src,examples/src}/**/*.{js,ts,jsx,tsx}'","prepare":"yarn build","postinstall":"husky install","pretest":"tsc --noEmit","test":"jest","test:dev":"jest --watch --no-coverage","test:coverage:watch":"jest --watch","copy":"mv dist/src/* dist && rm -rf dist/{src,tests} && copyfiles -f package.json readme.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.husky=undefined; this.prettier=undefined; this.jest=undefined; this['lint-staged']=undefined;\""},"prettier":{"semi":false,"trailingComma":"es5","singleQuote":true,"jsxBracketSameLine":true,"tabWidth":2,"printWidth":80},"lint-staged":{"*.{js,ts,tsx}":["prettier --write"]},"repository":{"type":"git","url":"git+https://github.com/cmlarsen/zustand-middleware-computed-state.git"},"keywords":["react","state","manager","management","redux","store","zustand","computed","derived","selector","middleware"],"author":{"name":"Caleb Larsen"},"license":"MIT","bugs":{"url":"https://github.com/cmlarsen/zustand-middleware-computed-state/issues"},"homepage":"https://github.com/cmlarsen/zustand-middleware-computed-state","jest":{"testRegex":"test.(js|ts|tsx)$","coverageDirectory":"./coverage/","collectCoverage":true,"coverageReporters":["json","html","text","text-summary"],"collectCoverageFrom":["src/**/*.{js,ts,tsx}","tests/**/*.{js,ts,tsx}"],"modulePathIgnorePatterns":["dist/"]},"devDependencies":{"@babel/core":"^7.20.12","@babel/plugin-external-helpers":"^7.18.6","@babel/plugin-transform-react-jsx":"^7.20.13","@babel/plugin-transform-runtime":"^7.19.6","@babel/plugin-transform-typescript":"^7.20.13","@babel/preset-env":"^7.20.2","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-node-resolve":"^15.0.1","@rollup/plugin-typescript":"^11.0.0","@testing-library/react":"^13.4.0","@types/jest":"^29.4.0","@types/react":"^18.0.27","@types/react-dom":"^18.0.10","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","copyfiles":"^2.4.1","eslint":"^8.33.0","eslint-config-prettier":"^8.6.0","eslint-import-resolver-alias":"^1.1.2","eslint-plugin-import":"^2.27.5","eslint-plugin-jest":"^27.2.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","husky":"^8.0.3","jest":"^29.4.1","json":"^11.0.0","lint-staged":"^13.1.0","prettier":"^2.8.3","react":"^18.2.0","react-dom":"^18.2.0","rimraf":"^4.1.2","rollup":"^3.12.0","rollup-plugin-size-snapshot":"^0.12.0","typescript":"^4.9.5","zustand":"^4.3.2"},"gitHead":"10399a5a76840cc81dcab61c061b952a68c3b499","_id":"zustand-middleware-computed-state@0.1.1","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-Sp5iihZk8FaMARvxONlF40+/kw/JD0pQKBUMC/mVI2RiKUdwAoWJm1Nb3IXj5zZKU2t4k+bCrZBmMFURSOM3vg==","shasum":"36747becc1bc00a3598662de89939f152775aac6","tarball":"https://registry.npmjs.org/zustand-middleware-computed-state/-/zustand-middleware-computed-state-0.1.1.tgz","fileCount":3728,"unpackedSize":23449431,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFRoQAEcHDfjuK1neUMM0Rv7KZtMtQl8ngb1AzuBy5MiAiAU4ViBSgWaDJNzJEZrhgfkVzN7vqnoq8klYA8YR0Wckg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNXE8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqbJRAAkeGdvZuAMwuIcSf9YDmOvj5HI3gx1WEDMJTafTIFm5Rp6rI/\r\nny8i6RrBF8OgIoiJAz3yRxni7s+ocGxX9lkR836dD+07+gBOXlAH6g/fgFPJ\r\nWWHkl3W53R3Rku9bPtR4sHIUjv9q/wI8i+lAl7uXy3zv0PPVf716d+zRUI5X\r\noxLtlch5OP5n5LUgF0wlfPW/Q5+7W+X1dVkZdBERC86jst8DHLq/mbcrIIka\r\n9/XE9Ol5qtVKghmgm24gTSdHUuC+pafE49VBLR8ZTGZgp2h21oWi8zvTC48i\r\nFYWeORaViQo/Spg4tjZEuqYhebYsGyt6dFntomZAEbbg63qNBdJJDVetExB9\r\nw01CH2czGGE6DA0NUYOgh1u9eOs5hCGv+TkLmts1zowabY+LDrfj2rXB/6vR\r\n0eRzlGyPb9ofOcntGTwfPFd1wsf7py4V8iK1eWsc38qaPI9uiD2kMClvYgLT\r\n+LLAviIbw0JrSona/52MBAIvb6ljZ4eXw+vbRmBrfHL/KEtms5wj8r8Bk0wt\r\nlXT47ksllnYIf9EKkbKPcqRgcOfj8tb/Ps8Y/NgURv8uV/VmhAJCJYY4GfMd\r\nwalVHmmDWTKJa85eWMLtvqQuoHIQzcVinJaqBTpah3paDntNN2Sjw+PNl5i5\r\ncmcoB42WnJ5jwCde1kUBgdKfapsqCpLybsM=\r\n=xQ8J\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cmlarsen","email":"cmlarsen@gmail.com"},"directories":{},"maintainers":[{"name":"cmlarsen","email":"cmlarsen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/zustand-middleware-computed-state_0.1.1_1681223995978_0.05194516546256578"},"_hasShrinkwrap":false},"0.1.2":{"name":"zustand-middleware-computed-state","private":false,"version":"0.1.2","description":"Computed state middleware for Zustand","main":"index.cjs.js","module":"index.js","types":"index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/cmlarsen/zustand-middleware-computed-state.git"},"keywords":["react","state","manager","management","redux","store","zustand","computed","derived","selector","middleware"],"author":{"name":"Caleb Larsen"},"license":"MIT","bugs":{"url":"https://github.com/cmlarsen/zustand-middleware-computed-state/issues"},"homepage":"https://github.com/cmlarsen/zustand-middleware-computed-state","gitHead":"10399a5a76840cc81dcab61c061b952a68c3b499","_id":"zustand-middleware-computed-state@0.1.2","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-gTng48M3hHjCvxRDKDwEgsvAeaLM3Ou1kKf46gVpAUFMqgUX5UbCwAA9nuNY8wH24piZvA5z3vkL7JaPQlFQvA==","shasum":"769b10a0cea1b5f4c58dc959586f732ed188fee9","tarball":"https://registry.npmjs.org/zustand-middleware-computed-state/-/zustand-middleware-computed-state-0.1.2.tgz","fileCount":7,"unpackedSize":6834,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7rJQeNbpidr7g0kutP+MQE8Fh45gaNugSBQGHb3CCfAiAGQvL3jTQwaaraxPRwIaNkJe9uiamcmV/08h8dJkEqfw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNxFtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIHQ//ZGDIHYupJlR3R+oLP1t0OT0sklM1YMeb0IZAqGRVqik9X03h\r\nI8vdj5++xz913jBmCxlT6KMHACIAu7vSrZXJimbnTJkBaAzcvWP+VWFB/fo+\r\nFY0BSPGJYgUzn86nPA++f4U9O5PLRiX4HppR1lNvMczom6M7OGirq6svXYWF\r\ne/p8DP9unZm6gtC0bJ/A9i5ZPRQKnm4h+tfwflv3fE0xi4PsYP/AWobJQhpD\r\nRg+eBCO5W4gGOcjFRazne+luWW9tHYd47gBN3heFUo3JcvFvafveTotZXoQe\r\n0TuI5kUZs9HWOv3Duw3Bgx6SptB9VVYnlVR6zuRw6GQI1Jk30ylTVT+B5yhE\r\nS7OsFE0ZBgCAnDSiWoPb4bzopmTz95GyathbNnuIb37s322aoOo7lL2SZSaI\r\nWzAia6Zo5UvyamZdaGPr/3LLY0HaBfGioBkvdlghTbtdNo050CfxJB7L72oV\r\neBB0s87fLYgf9Kb2VUxkZR9ZjwhxwKDebH3zj7VEhsti4bgjBFHk5Lp9ftXG\r\n+Sx1m9QPaXf+MEeIlCrClyisQybrvi2S3U90LGVWy/4MW+iowcB2Eim2xs+A\r\n0W8JcPgqFgFG9vodkF+tQu0Fto1tyAgFI51wrDjQJWqWoxXY1KfQFNXKM07u\r\nVgeeY+Y1DUuWlJ6MzAnZNfCc3JwHyOQ7cGo=\r\n=PY8Q\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cmlarsen","email":"cmlarsen@gmail.com"},"directories":{},"maintainers":[{"name":"cmlarsen","email":"cmlarsen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/zustand-middleware-computed-state_0.1.2_1681330541360_0.8047058952381458"},"_hasShrinkwrap":false},"0.1.3":{"name":"zustand-middleware-computed-state","private":false,"version":"0.1.3","description":"Computed state middleware for Zustand","main":"index.cjs.js","module":"index.js","types":"index.d.ts","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/cmlarsen/zustand-middleware-computed-state.git"},"keywords":["react","state","manager","management","redux","store","zustand","computed","derived","selector","middleware"],"author":{"name":"Caleb Larsen"},"license":"MIT","bugs":{"url":"https://github.com/cmlarsen/zustand-middleware-computed-state/issues"},"homepage":"https://github.com/cmlarsen/zustand-middleware-computed-state","gitHead":"34893deb3d230e4b865f5aea333c538ae39d5917","_id":"zustand-middleware-computed-state@0.1.3","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-Gkb3h/AxUKu6oG1RQXuGTXXu/lNmOSdWhqdw7TNFQ3rAZhNFllBPbciAZ/x5fR6Jz6xsu0ZE+ekbzSa1uTaI/Q==","shasum":"c6763fa9f4c594ed6ba08370d24390a57bc8c096","tarball":"https://registry.npmjs.org/zustand-middleware-computed-state/-/zustand-middleware-computed-state-0.1.3.tgz","fileCount":7,"unpackedSize":7774,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAUOm/GDV+qOSqEd5BHqCvRHrmbR8+jcBTH9FSX1cb5+AiAXuexfrjE4rPjHt7UTeey4iWJKDeolwRDhO+fOVCHZGw=="}]},"_npmUser":{"name":"cmlarsen","email":"cmlarsen@gmail.com"},"directories":{},"maintainers":[{"name":"cmlarsen","email":"cmlarsen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/zustand-middleware-computed-state_0.1.3_1684939517924_0.34617953068139307"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-05T02:52:12.634Z","0.1.0":"2021-01-05T02:52:12.732Z","modified":"2023-05-24T14:45:18.247Z","0.1.1":"2023-04-11T14:39:56.392Z","0.1.2":"2023-04-12T20:15:41.535Z","0.1.3":"2023-05-24T14:45:18.139Z"},"maintainers":[{"name":"cmlarsen","email":"cmlarsen@gmail.com"}],"description":"Computed state middleware for Zustand","homepage":"https://github.com/cmlarsen/zustand-middleware-computed-state","keywords":["react","state","manager","management","redux","store","zustand","computed","derived","selector","middleware"],"repository":{"type":"git","url":"git+https://github.com/cmlarsen/zustand-middleware-computed-state.git"},"author":{"name":"Caleb Larsen"},"bugs":{"url":"https://github.com/cmlarsen/zustand-middleware-computed-state/issues"},"license":"MIT","readme":"# Zustand Computed State Middleware\n\nThis is a dead simple middleware for adding computed state to state management library [Zustand](https://github.com/pmndrs/zustand).\n\n```\nnpm install zustand-middleware-computed-state\n-- or --\nyarn add zustand-middleware-computed-state\n```\n\nThe computed values are defined as a function passed as the second argument passed into the `computed(store, computedStore)` middleware. The resulting values will be merged into the store and accessible just like any other bit of Zustand state.\n\nSince this computed state is updated on every state change, these should be kept light.\n\n```javascript\nimport create from 'zustand'\nimport { computed } from 'zustand-middleware-computed-state'\n\nconst useState = create(computed(store, computedStore))\n```\n\n## Example\n\n```javascript\nimport create from 'zustand'\nimport { computed } from 'zustand-middleware-computed-state'\n\nconst useStore = create(\n  computed(\n    (set) => ({\n      count: 0,\n      inc: () => set((state) => ({ count: state.count + 1 })),\n    }),\n    (state) => {\n      function isEnough() {\n        if (state.count > 100) {\n          return 'Is enough'\n        } else {\n          return 'Is not enough'\n        }\n      }\n\n      return {\n        computedCount: state.count + 10,\n        isEnough: isEnough(),\n      }\n    }\n  )\n)\n\nfunction Counter() {\n  const { count, computedCount, isEnough, inc } = useStore()\n\n  return (\n    <div>\n      <button onClick={inc}>Increment</button>\n      <div>count: {count}</div> {/* output: 1*/}\n      <div>computedCount: {computedCount}</div> {/* output: 11*/}\n      <div>isEnough: {isEnough}</div> {/* output: \"Is not enough*/}\n    </div>\n  )\n}\n```\n\n## TypeScript\ncode below demonstrates how you can use it with Typescript:\n```typescript\nimport { create } from \"zustand\";\nimport { computed } from \"zustand-middleware-computed-state\";\n\ntype ComputedStore = {\n  sum: number;\n};\n\ntype Store = {\n  x: number;\n  y: number;\n  incX: (by: number) => void\n  incY: (by: number) => void\n};\n\ntype SetType = (\n  partial:\n    | Store\n    | Partial<Store>\n    | ((state: Store) => Store | Partial<Store>),\n  replace?: boolean | undefined\n) => void;\n\ntype CombinedStore = State & ComputedStore;\n\nfunction computedState(state: Store): ComputedStore {\n  return {\n    sum: state.x + state.y,\n  };\n}\n\nconst useSampleStore = create<CombinedStore>(\n  computed<Store, ComputedStore>(\n    (set: SetType) => ({\n      x: 0,\n      y: 0,\n      incX: (by) => set(store => ({x: state.x + by})),\n      incY: (by) => set(store => ({y: state.y + by}))\n    }),\n    computedState\n  )\n);\n\nexport default useSampleStore;\n\n```\n","readmeFilename":"readme.md"}