{"_id":"redux-watch","_rev":"10-f4867676ea7695f71b2ad55e1bf78bfa","name":"redux-watch","description":"Watch Redux state for changes.","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"redux-watch","version":"1.0.0","description":"Watch Redux state for changes.","main":"index.js","scripts":{"test":"standard && ava test.js"},"repository":{"type":"git","url":"git+https://github.com/jprichardson/redux-watch.git"},"keywords":["redux","watch","observe","monitor","notify","state","observer","watcher","react"],"author":{"name":"JP Richardson"},"license":"MIT","bugs":{"url":"https://github.com/jprichardson/redux-watch/issues"},"homepage":"https://github.com/jprichardson/redux-watch#readme","devDependencies":{"ava":"^0.7.0","redux":"^3.0.5","reselect":"^2.0.1","standard":"^5.4.1"},"dependencies":{"object-path":"^0.9.2"},"gitHead":"ffb0b6d30a70a894ff57d769fc52f100975c8c49","_id":"redux-watch@1.0.0","_shasum":"dca5368f9464bd49f22c78c64550e6f908f86df7","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.1","_npmUser":{"name":"jprichardson","email":"jprichardson@gmail.com"},"maintainers":[{"name":"jprichardson","email":"jprichardson@gmail.com"}],"dist":{"shasum":"dca5368f9464bd49f22c78c64550e6f908f86df7","tarball":"https://registry.npmjs.org/redux-watch/-/redux-watch-1.0.0.tgz","integrity":"sha512-SjrIzDCT5BPnyETjOw8OhV5i3znZKLRbBRjBKlQqthXxri2FbDhJihcWJcvWijeORmzt8AsJPom2DniXsFslIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvECba4B7OXf8V3k6hqvfPVJn34k0QetqMNBxaW4z35AIhAPeTHBie8uQ6z3efvPjv2OInoIS3J49u3rzfHOcKQ/kk"}]},"directories":{}},"1.1.0":{"name":"redux-watch","version":"1.1.0","description":"Watch Redux state for changes.","main":"index.js","scripts":{"test":"standard && ava test.js"},"repository":{"type":"git","url":"git+https://github.com/jprichardson/redux-watch.git"},"keywords":["redux","watch","observe","monitor","notify","state","observer","watcher","react"],"author":{"name":"JP Richardson"},"license":"MIT","bugs":{"url":"https://github.com/jprichardson/redux-watch/issues"},"homepage":"https://github.com/jprichardson/redux-watch#readme","devDependencies":{"ava":"^0.7.0","redux":"^3.0.5","reselect":"^2.0.1","standard":"^5.4.1"},"dependencies":{"object-path":"^0.9.2"},"gitHead":"a7e5cccbd1a1cc2de4bca2524e7c23689cced090","_id":"redux-watch@1.1.0","_shasum":"bfb99c99be3edddc0014bc8e5b39fa2f13d73b08","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.1","_npmUser":{"name":"jprichardson","email":"jprichardson@gmail.com"},"maintainers":[{"name":"jprichardson","email":"jprichardson@gmail.com"}],"dist":{"shasum":"bfb99c99be3edddc0014bc8e5b39fa2f13d73b08","tarball":"https://registry.npmjs.org/redux-watch/-/redux-watch-1.1.0.tgz","integrity":"sha512-MXjTfw5nmWCS7wQLLBaZ7wqIS24tQh2vZM10mHQhm3QPxUlwQ0RskIGivaRX6NOPAzclgCN/XdT+aFHFm2W8sQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNkNqG9nggctAcOCFODRrmGQpKmdWdNwbIgJiiyFlZ1wIhANUAnX/3yMpeR9VFup3WBygUp9RJ/rptdhTcxhn3cC2c"}]},"directories":{}},"1.1.1":{"name":"redux-watch","version":"1.1.1","description":"Watch Redux state for changes.","keywords":["redux","watch","observe","monitor","notify","state","observer","watcher","react"],"homepage":"https://github.com/jprichardson/redux-watch#readme","bugs":{"url":"https://github.com/jprichardson/redux-watch/issues"},"license":"MIT","author":{"name":"JP Richardson"},"files":["index.js"],"main":"index.js","repository":{"type":"git","url":"git+https://github.com/jprichardson/redux-watch.git"},"scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js | tap-spec"},"dependencies":{"object-path":"^0.9.2"},"devDependencies":{"redux":"^3.0.5","reselect":"^2.0.1","standard":"7.x","tap-spec":"^4.1.1","tape":"^4.5.1"},"gitHead":"5b40ba8d34b0b8d19186edfc00c7c5cd969656a3","_id":"redux-watch@1.1.1","_shasum":"a15a59220894a132c93f75fb71a420bc35cb7843","_from":".","_npmVersion":"3.5.3","_nodeVersion":"5.3.0","_npmUser":{"name":"jprichardson","email":"jprichardson@gmail.com"},"dist":{"shasum":"a15a59220894a132c93f75fb71a420bc35cb7843","tarball":"https://registry.npmjs.org/redux-watch/-/redux-watch-1.1.1.tgz","integrity":"sha512-9r9vKXbQPRXU/0Oko/IAFA6VBjft8YFbVDmjpRHHT9kIMBP14gYIUmZHcWdfRGSd7lqzvnDXzX9c7wOIS0D2Kw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFdl6fYkhoqv9gx8+9Hund9cPcrGdvI/Z8RJXGkQxHkXAiBd4whTMa5u9mCLhANHVXx33CrSSyymHLXIPEq31ZHD5A=="}]},"maintainers":[{"name":"jprichardson","email":"jprichardson@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/redux-watch-1.1.1.tgz_1462335721668_0.5910854458343238"},"directories":{}},"1.2.0":{"name":"redux-watch","version":"1.2.0","description":"Watch Redux state for changes.","keywords":["redux","watch","observe","monitor","notify","state","observer","watcher","react"],"homepage":"https://github.com/jprichardson/redux-watch#readme","bugs":{"url":"https://github.com/jprichardson/redux-watch/issues"},"license":"MIT","author":{"name":"JP Richardson"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/jprichardson/redux-watch.git"},"scripts":{"lint":"standard","test":"npm run lint && npm run unit","unit":"tape test/*.js | tap-spec"},"dependencies":{"object-path":"^0.11.5"},"devDependencies":{"redux":"^3.0.5","reselect":"^2.0.1","standard":"7.x","tap-spec":"^4.1.1","tape":"^4.5.1"},"gitHead":"6a368b15ee48d85c19a2c5b36ecd7bd7c88e7090","_id":"redux-watch@1.2.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Ws4Q+e5zFGMyy1H709c1Ws8apSd6MqoJRIzBDHbI4nikome/IZWVTYXdQNz+VJxPjyX/h2E+lYEo41fXgjCF8g==","shasum":"b3a745e15855ef72db0e06a60a4b2fe3676d79a7","tarball":"https://registry.npmjs.org/redux-watch/-/redux-watch-1.2.0.tgz","fileCount":4,"unpackedSize":5713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkF5zCRA9TVsSAnZWagAAX+IP/2ly14hoote+WP1VvNkF\nWZofaYubasHt/Os+LmGrTzBQtRddb+XjrnPwBwqn31LxndvckIfRCozxwdpx\nEEuHRcteE/Hins86zz1RwT0Ehw3HkbfMp8Me+fTj6dx9hGZtCxRj7/DwsSX5\nyTFpRzR9p2oScxnckDFJMLFndub6wFlwJA7eM3QLiKaMySbmrrogUWx41SJg\nUeNCRbSD66kjqaGOZikb4Lgl8Q5AMEI69WTBPqN2Q03S1KNvJ94G+iO/StY4\nI1ISgHulc0+x8Yee74gpWBTVK1Hwj8HWVkdjTlzA4MKh60lsjxAHk8slD3Wf\noT/IHDDuymFtkJGhZHkZhReMXTrkoxAHOj3EqCSBnuCm1816GcU7X6p2+x27\npbV03xLkZWwRHNW5XDi6oA+NG6CzPmuJKt0r22DzkT+VR0VJCcvSMNsza6ii\n76cquN8kTcvGnHZ8t/tLUjVxhRydzQx0NbQ/pxKdgI5yGOnwTAMCdeB0mXKi\ne+zCcIDYogEQo7YpY4Tkwfn4YuPYgRFsWol+zJ/ZQHOyFsWk9DQLjlrOIoqj\neNU7VypBbP9lT8L2kTlRd4cbh9chkywQJ55fQjze2AaYeXbNo0p7IzBe/PVh\nY0r8203Pi9ZCaC7c4j4ZuD9F68dlaB1dOIl/oHRwoqIgSrUAmbiVbEFg48bA\nnWcV\r\n=4Ai1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn/9ysFAr21hj5tNAGott3qe47xwOaf9xLgJdg4QEZmwIgJXwVbssG9m0PuQE04HjE1QMusk2Yhom6Dr/Lijgp9tE="}]},"maintainers":[{"name":"jprichardson","email":"jprichardson@gmail.com"},{"name":"chalker","email":"chalkerx@gmail.com"}],"_npmUser":{"name":"chalker","email":"chalkerx@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redux-watch_1.2.0_1603296883038_0.028311188541312537"},"_hasShrinkwrap":false}},"readme":"# redux-watch\n\n[![NPM Package](https://img.shields.io/npm/v/redux-watch.svg?style=flat-square)](https://www.npmjs.org/package/redux-watch)\n[![Build Status](https://img.shields.io/travis/jprichardson/redux-watch.svg?branch=master&style=flat-square)](https://travis-ci.org/jprichardson/redux-watch)\n\n[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nWatch/observe [Redux](http://redux.js.org/) store state changes.\n\n## Why?\n\nRedux provides you with a `subscribe()` method so that you can be notified when the state changes. However, it does not let you know what changed. `redux-watch` will let you know what changed.\n\n\n## Install\n\n```\nnpm i --save redux-watch\n```\n\n## Usage\n\n`watch(getState [, objectPath [, comparison]])` -> `function`\n\n- `getState`: A `function` that is used to return the state. Also useful in conjunction with selectors.\n- `objectPath`: An **optional** `string` or `Array` that represents the path in an object. Uses [object-path](https://www.npmjs.com/package/object-path) ([mariocasciaro/object-path](https://github.com/mariocasciaro/object-path)) for value extraction.\n- `comparison`: An **optional** function to pass for comparison of the fields. Defaults to strict equal comparison (`===`).\n\n## Example\n\n##### basic example\n\n```js\n// ... other imports/requires\nimport watch from 'redux-watch'\n\n// assuming you have an admin reducer / state slice\nconsole.log(store.getState().admin.name) // 'JP'\n\n// store is THE redux store\nlet w = watch(store.getState, 'admin.name')\nstore.subscribe(w((newVal, oldVal, objectPath) => {\n  console.log('%s changed from %s to %s', objectPath, oldVal, newVal)\n  // admin.name changed from JP to JOE\n}))\n\n// somewhere else, admin reducer handles ADMIN_UPDATE\nstore.dispatch({ type: 'ADMIN_UPDATE', payload: { name: 'JOE' }})\n```\n\n##### example (w/ [reselect](https://www.npmjs.com/package/reselect) ([reactjs/reselect](https://github.com/reactjs/reselect)) selectors)\n\nWhen using with selectors, you often times won't need to pass the object path. Most times the selectors will handle this for you.\n\n```js\n// ... other imports requires\nimport watch from 'redux-watch'\n\n// assuming mySelector is a reselect selector defined somewhere\nlet w = watch(() => mySelector(store.getState()))\nstore.subscribe(w((newVal, oldVal) => {\n  console.log(newVal)\n  console.log(oldVal)\n}))\n```\n\n#### Note on Comparisons.\n\nBy default, `redux-watch` uses `===` (strict equal) operator to check for changes. This may not be want you want. Sometimes you may want to do a deep inspection. You should use either [deep-equal](https://www.npmjs.com/package/deep-equal) ([substack/node-deep-equal](https://github.com/substack/node-deep-equal)) or [is-equal](https://www.npmjs.com/package/is-equal) ([ljharb/is-equal](https://github.com/ljharb/is-equal)). `is-equal` is better since it supports ES6 types like Maps/Sets.\n\n##### deep equal example\n\n```js\nimport isEqual from 'is-equal'\nimport watch from 'redux-watch'\n\nlet w = watch(store.getState, 'admin', isEqual)\nstore.subscribe(w((newVal, oldVal, objectPath) => {\n  // response to changes\n}))\n```\n\n## License\n\nMIT\n\nCopyright (c) [JP Richardson](https://github.com/jprichardson)\n","maintainers":[{"name":"jprichardson","email":"jprichardson@gmail.com"},{"name":"chalker","email":"chalkerx@gmail.com"}],"time":{"modified":"2022-06-26T10:32:46.434Z","created":"2015-12-14T20:18:57.380Z","1.0.0":"2015-12-14T20:18:57.380Z","1.1.0":"2015-12-14T22:30:19.332Z","1.1.1":"2016-05-04T04:22:02.940Z","1.2.0":"2020-10-21T16:14:43.212Z"},"homepage":"https://github.com/jprichardson/redux-watch#readme","keywords":["redux","watch","observe","monitor","notify","state","observer","watcher","react"],"repository":{"type":"git","url":"git+https://github.com/jprichardson/redux-watch.git"},"author":{"name":"JP Richardson"},"bugs":{"url":"https://github.com/jprichardson/redux-watch/issues"},"license":"MIT","readmeFilename":"README.md","users":{"belozyorcev":true,"rain1":true}}